@aoagents/ao-web 0.4.0 → 0.6.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 +141 -141
- package/.next/app-path-routes-manifest.json +6 -6
- package/.next/build-manifest.json +6 -6
- package/.next/prerender-manifest.json +31 -31
- package/.next/react-loadable-manifest.json +3 -3
- package/.next/required-server-files.json +3 -3
- 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 +7 -7
- 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 -1
- package/.next/server/app/api/browse-directory/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/filesystem/browse/route.js +1 -1
- package/.next/server/app/api/filesystem/browse/route_client-reference-manifest.js +1 -1
- 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 -1
- package/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/projects/reload/route.js +1 -1
- package/.next/server/app/api/projects/reload/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/reload/route_client-reference-manifest.js +1 -1
- 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_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/dev/terminal-test/page.js +4 -4
- 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 +8 -8
- 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/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/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 -2
- package/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/projects/[projectId]/sessions/[id]/page.js +2 -2
- package/.next/server/app/projects/[projectId]/sessions/[id]/page.js.nft.json +1 -1
- package/.next/server/app/projects/[projectId]/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/projects/[projectId]/settings/page.js +2 -2
- package/.next/server/app/projects/[projectId]/settings/page.js.nft.json +1 -1
- package/.next/server/app/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
- 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 -2
- 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 +8 -8
- package/.next/server/app-paths-manifest.json +6 -6
- package/.next/server/chunks/1172.js +1 -1
- package/.next/server/chunks/1271.js +1 -1
- package/.next/server/chunks/1876.js +2 -2
- package/.next/server/chunks/4520.js +1 -1
- package/.next/server/chunks/6811.js +3 -0
- package/.next/server/chunks/7167.js +1 -1
- package/.next/server/chunks/7173.js +1 -1
- package/.next/server/chunks/801.js +658 -0
- package/.next/server/chunks/9223.js +11 -11
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{1383.faf35b62c555f5a1.js → 1383.8f5f7d4606d356cc.js} +1 -1
- package/.next/static/chunks/3764.88619fb0d047cae8.js +1 -0
- package/.next/static/chunks/{3780-e20898ff49ddc867.js → 3780-52c4733ce6591b8d.js} +1 -1
- package/.next/static/chunks/{4465-0c7772f1499dffa4.js → 4465-17154f7a01abfe85.js} +1 -1
- package/.next/static/chunks/app/dev/terminal-test/page-59decd1aad4e02ad.js +1 -0
- package/.next/static/chunks/app/{error-3ebcf3275d91d60a.js → error-684a1c5596fa1e14.js} +1 -1
- package/.next/static/chunks/app/global-error-1a79bacfbd9b1ba4.js +1 -0
- package/.next/static/chunks/app/layout-0cda720d75f111b8.js +1 -0
- package/.next/static/chunks/app/not-found-315f4e5c106b425d.js +1 -0
- package/.next/static/chunks/app/orchestrators/page-e3a2c53b57dd8391.js +1 -0
- package/.next/static/chunks/app/page-e2e589ea11a0780a.js +1 -0
- package/.next/static/chunks/app/projects/[projectId]/page-19a6d4cc9951a9e4.js +1 -0
- package/.next/static/chunks/app/projects/[projectId]/sessions/[id]/page-75c536c9755754f7.js +1 -0
- package/.next/static/chunks/app/projects/[projectId]/settings/{page-ce2e904def1bef9c.js → page-f8c323b91978efff.js} +1 -1
- package/.next/static/chunks/app/prs/page-08f17d7dc341b6f1.js +1 -0
- package/.next/static/chunks/app/sessions/[id]/{error-5468aace23fd8872.js → error-62e9972b39d9cd16.js} +1 -1
- package/.next/static/chunks/app/sessions/[id]/not-found-315f4e5c106b425d.js +1 -0
- package/.next/static/chunks/app/sessions/[id]/page-d0b08722dec5a04a.js +1 -0
- package/.next/static/chunks/app/test-direct/{page-ab98dc9b04bacaa5.js → page-ee0944bcd355194e.js} +1 -1
- package/.next/static/chunks/main-app-b95f197c38e3b0a3.js +1 -0
- package/.next/static/chunks/{webpack-ab12779265bdb8f9.js → webpack-83d2d8248a30259c.js} +1 -1
- package/.next/static/css/cf9226160e230bf4.css +1 -0
- package/dist-server/mux-websocket.js +49 -7
- package/package.json +12 -12
- package/.next/server/chunks/8539.js +0 -3
- package/.next/server/chunks/9381.js +0 -658
- package/.next/static/chunks/3764.ba81c7b8d5b21136.js +0 -1
- package/.next/static/chunks/app/dev/terminal-test/page-095511c7a110fbc9.js +0 -1
- package/.next/static/chunks/app/global-error-8f082029a4cf6af1.js +0 -1
- package/.next/static/chunks/app/layout-be776dec5531d47b.js +0 -1
- package/.next/static/chunks/app/not-found-0eb78483b8277b8d.js +0 -1
- package/.next/static/chunks/app/orchestrators/page-406e530b0d4ad46f.js +0 -1
- package/.next/static/chunks/app/page-a92f3646b54545b0.js +0 -1
- package/.next/static/chunks/app/projects/[projectId]/page-d14fdcff4998d3bf.js +0 -1
- package/.next/static/chunks/app/projects/[projectId]/sessions/[id]/page-96fc04db76c65761.js +0 -1
- package/.next/static/chunks/app/prs/page-95dbbebb4d372535.js +0 -1
- package/.next/static/chunks/app/sessions/[id]/not-found-0eb78483b8277b8d.js +0 -1
- package/.next/static/chunks/app/sessions/[id]/page-8ef744531757185e.js +0 -1
- package/.next/static/chunks/main-app-4b27cdf1baf203ad.js +0 -1
- package/.next/static/css/397ea3e60645d3f3.css +0 -1
- /package/.next/static/{5nmlY5IOwz-Od3p2SB2hh → h0RXs0prE87a8wlbEXQKM}/_buildManifest.js +0 -0
- /package/.next/static/{5nmlY5IOwz-Od3p2SB2hh → h0RXs0prE87a8wlbEXQKM}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=4520,exports.ids=[4520],exports.modules={1747:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(67981),e=c(18655),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},9603:(a,b,c)=>{"use strict";c.d(b,{RepairDegradedProjectButton:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call RepairDegradedProjectButton() from the server but RepairDegradedProjectButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.worktrees/agent-orchestrator/ao-168/packages/web/src/components/RepairDegradedProjectButton.tsx","RepairDegradedProjectButton")},34054:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(3307).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},34391:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(1747),e=c(18655),f=c(52098),g=c(43747),h=c(34054),i=c(69714);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},43747:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(3307).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},46802:(a,b,c)=>{"use strict";c.d(b,{l:()=>g});var d=c(29685),e=c(89223),f=c(81249);let g=(0,d.cache)(async function(a){let{config:b}=await (0,e.Z1)(),c=b.projects[a]??null,d=b.degradedProjects[a]??null;return c||d?{projectId:a,project:c,degradedProject:d,projects:(0,f.cf)()}:null})},52098:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(3307).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},56591:(a,b,c)=>{"use strict";var d=c(34391);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}})},59281:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(2433),e=c(20674),f=c(9483),g=c(40959),h=c(26636),i=c(27170);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},68398:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(68844);function e(){return(0,d.jsxs)("aside",{className:"project-sidebar flex h-full flex-col","aria-hidden":"true",children:[(0,d.jsx)("div",{className:"project-sidebar__compact-hdr",children:(0,d.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"})}),(0,d.jsx)("div",{className:"project-sidebar__tree flex-1 overflow-y-auto overflow-x-hidden",children:(0,d.jsx)("div",{className:"py-2",children:["w-28","w-24","w-32","w-20"].map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-3 border-b border-[var(--color-border-subtle)] px-4 py-3",children:[(0,d.jsx)("div",{className:"h-3 w-3 animate-pulse bg-[color-mix(in_srgb,var(--color-text-primary)_8%,transparent)]"}),(0,d.jsx)("div",{className:`h-4 animate-pulse bg-[color-mix(in_srgb,var(--color-text-primary)_10%,transparent)] ${a}`}),(0,d.jsx)("div",{className:"ml-auto h-6 w-6 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-base)]"})]},`project-loading-row-${b}`))})}),(0,d.jsx)("div",{className:"project-sidebar__footer",children:(0,d.jsxs)("div",{className:"flex items-center gap-2 border-t border-[var(--color-border-subtle)] px-2 py-2",children:[(0,d.jsx)("div",{className:"h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"}),(0,d.jsx)("div",{className:"h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"}),(0,d.jsx)("div",{className:"h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"}),(0,d.jsx)("div",{className:"ml-auto h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"})]})})]})}function f(){return(0,d.jsx)("div",{className:"min-h-screen bg-[var(--color-bg-canvas)]",children:(0,d.jsxs)("div",{className:"dashboard-app-shell",children:[(0,d.jsxs)("header",{className:"dashboard-app-header","aria-hidden":"true",children:[(0,d.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle","aria-label":"Toggle sidebar",children:(0,d.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,d.jsx)("path",{d:"M9 3v18"})]})}),(0,d.jsxs)("div",{className:"dashboard-app-header__brand",children:[(0,d.jsx)("span",{className:"dashboard-app-header__brand-dot","aria-hidden":"true"}),(0,d.jsx)("span",{children:"Agent Orchestrator"})]}),(0,d.jsx)("span",{className:"dashboard-app-header__sep","aria-hidden":"true"}),(0,d.jsx)("span",{className:"dashboard-app-header__project",children:"Loading project…"}),(0,d.jsx)("div",{className:"dashboard-app-header__spacer"}),(0,d.jsx)("div",{className:"dashboard-app-header__actions",children:(0,d.jsx)("div",{className:"h-9 w-36 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"})})]}),(0,d.jsx)("div",{className:"sidebar-wrapper",children:(0,d.jsx)(e,{})}),(0,d.jsxs)("main",{className:"dashboard-main dashboard-main--desktop overflow-y-auto",children:[(0,d.jsxs)("div",{className:"dashboard-main__subhead",children:[(0,d.jsx)("div",{className:"h-8 w-40 animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_88%,transparent)]"}),(0,d.jsx)("div",{className:"mt-3 h-4 w-72 max-w-full animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_82%,transparent)]"})]}),(0,d.jsxs)("div",{className:"board-wrapper","aria-hidden":"true",children:[(0,d.jsx)("div",{className:"kanban-ghost",children:["Working","Pending","Review","Respond","Merge"].map(a=>(0,d.jsx)("div",{className:"kanban-ghost__col",children:(0,d.jsx)("div",{className:"kanban-ghost__head",children:a})},a))}),(0,d.jsx)("div",{className:"board-center",children:(0,d.jsxs)("div",{className:"empty-state",role:"status","aria-label":"Loading project dashboard",children:[(0,d.jsx)("div",{className:"empty-state__icon"}),(0,d.jsx)("div",{className:"h-5 w-40 animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_88%,transparent)]"}),(0,d.jsx)("div",{className:"h-4 w-56 animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_82%,transparent)]"})]})})]})]})]})})}},69714:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(59281).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},84818:(a,b,c)=>{"use strict";c.d(b,{d:()=>i});var d=c(68844),e=c(93423),f=c.n(e);function g(a){return`/projects/${encodeURIComponent(a)}`}var h=c(9603);function i({projectId:a,resolveError:b,projectPath:c,heading:e="This project's config failed to load"}){let i=b.match(/Local config at (.+?) (?:still uses|failed validation|must parse to an object|:)/)?.[1]??`${c}/agent-orchestrator.yaml or .yml`,j=b.includes("wrapped projects: format");return(0,d.jsx)("div",{className:"min-h-screen bg-[var(--color-bg-canvas)] px-6 py-10 text-[var(--color-text-primary)]",children:(0,d.jsxs)("div",{className:"mx-auto max-w-3xl rounded-2xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-8 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex items-start gap-4",children:[(0,d.jsx)("div",{className:"mt-1 rounded-full bg-[var(--color-tint-yellow)] p-2 text-[var(--color-status-attention)]",children:(0,d.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[(0,d.jsx)("path",{d:"M12 8v4m0 4h.01"}),(0,d.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,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:"Degraded Project"}),(0,d.jsx)("h1",{className:"mt-2 text-2xl font-semibold",children:e}),(0,d.jsxs)("p",{className:"mt-2 text-sm text-[var(--color-text-secondary)]",children:["Project ",(0,d.jsx)("span",{className:"font-medium text-[var(--color-text-primary)]",children:a})," could not be resolved into an effective runtime config."]})]})]}),(0,d.jsxs)("div",{className:"mt-6 rounded-xl border border-[var(--color-border-subtle)] bg-[var(--color-bg-elevated)] p-4",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:"Resolve Error"}),(0,d.jsx)("p",{className:"mt-2 text-sm text-[var(--color-status-error)]",children:b})]}),(0,d.jsxs)("div",{className:"mt-4 rounded-xl border border-[var(--color-border-subtle)] bg-[var(--color-bg-elevated)] p-4",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:"Local Config Path"}),(0,d.jsx)("p",{className:"mt-2 break-all font-[var(--font-mono)] text-sm text-[var(--color-text-primary)]",children:i})]}),j?(0,d.jsx)(h.RepairDegradedProjectButton,{projectId:a}):null,(0,d.jsxs)("div",{className:"mt-6 flex flex-wrap gap-3",children:[(0,d.jsx)(f(),{href:g(a),className:"rounded-lg border border-[var(--color-border-default)] px-4 py-2 text-sm font-medium text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-bg-elevated-hover)]",children:"Back to project"}),(0,d.jsx)(f(),{href:g(a),className:"rounded-lg border border-[var(--color-border-default)] px-4 py-2 text-sm font-medium text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-bg-elevated-hover)]",children:"Open dashboard view"})]})]})})}},90421:(a,b,c)=>{"use strict";c.d(b,{RepairDegradedProjectButton:()=>g});var d=c(33666),e=c(81115),f=c(50436);function g({projectId:a}){let b=(0,f.useRouter)(),[c,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(null),j=async()=>{g(!0),i(null);try{let c=await fetch(`/api/projects/${encodeURIComponent(a)}`,{method:"POST"}),d=await c.json().catch(()=>null);if(!c.ok)return void i(d?.error??"Failed to repair project config.");b.refresh()}catch{i("Network error while repairing project config.")}finally{g(!1)}};return(0,d.jsxs)("div",{className:"mt-6",children:[(0,d.jsx)("button",{type:"button",onClick:()=>void j(),disabled:c,className:"rounded-lg border border-[var(--color-accent)] bg-[var(--color-tint-blue)] px-4 py-2 text-sm font-semibold text-[var(--color-accent)] transition-colors hover:bg-[color-mix(in_srgb,var(--color-accent)_14%,transparent)] disabled:cursor-not-allowed disabled:opacity-60",children:c?"Repairing...":"Repair config"}),h?(0,d.jsx)("p",{className:"mt-3 text-sm text-[var(--color-status-error)]",children:h}):null]})}},93423:(a,b,c)=>{let{createProxy:d}=c(37815);a.exports=d("/Users/equinox/.worktrees/agent-orchestrator/ao-168/node_modules/.pnpm/next@15.5.15_@babel+core@7.29.0_@opentelemetry+api@1.9.0_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/client/app-dir/link.js")}};
|
|
1
|
+
exports.id=4520,exports.ids=[4520],exports.modules={1747:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(67981),e=c(18655),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},9603:(a,b,c)=>{"use strict";c.d(b,{RepairDegradedProjectButton:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call RepairDegradedProjectButton() from the server but RepairDegradedProjectButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/components/RepairDegradedProjectButton.tsx","RepairDegradedProjectButton")},34054:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(3307).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},34391:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(1747),e=c(18655),f=c(52098),g=c(43747),h=c(34054),i=c(69714);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},43747:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(3307).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},46802:(a,b,c)=>{"use strict";c.d(b,{l:()=>g});var d=c(29685),e=c(89223),f=c(81249);let g=(0,d.cache)(async function(a){let{config:b}=await (0,e.Z1)(),c=b.projects[a]??null,d=b.degradedProjects[a]??null;return c||d?{projectId:a,project:c,degradedProject:d,projects:(0,f.cf)()}:null})},52098:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(3307).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},56591:(a,b,c)=>{"use strict";var d=c(34391);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}})},59281:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(2433),e=c(20674),f=c(9483),g=c(40959),h=c(26636),i=c(27170);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},68398:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(68844);function e(){return(0,d.jsxs)("aside",{className:"project-sidebar flex h-full flex-col","aria-hidden":"true",children:[(0,d.jsx)("div",{className:"project-sidebar__compact-hdr",children:(0,d.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"})}),(0,d.jsx)("div",{className:"project-sidebar__tree flex-1 overflow-y-auto overflow-x-hidden",children:(0,d.jsx)("div",{className:"py-2",children:["w-28","w-24","w-32","w-20"].map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-3 border-b border-[var(--color-border-subtle)] px-4 py-3",children:[(0,d.jsx)("div",{className:"h-3 w-3 animate-pulse bg-[color-mix(in_srgb,var(--color-text-primary)_8%,transparent)]"}),(0,d.jsx)("div",{className:`h-4 animate-pulse bg-[color-mix(in_srgb,var(--color-text-primary)_10%,transparent)] ${a}`}),(0,d.jsx)("div",{className:"ml-auto h-6 w-6 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-base)]"})]},`project-loading-row-${b}`))})}),(0,d.jsx)("div",{className:"project-sidebar__footer",children:(0,d.jsxs)("div",{className:"flex items-center gap-2 border-t border-[var(--color-border-subtle)] px-2 py-2",children:[(0,d.jsx)("div",{className:"h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"}),(0,d.jsx)("div",{className:"h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"}),(0,d.jsx)("div",{className:"h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"}),(0,d.jsx)("div",{className:"ml-auto h-7 w-7 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"})]})})]})}function f(){return(0,d.jsx)("div",{className:"min-h-screen bg-[var(--color-bg-canvas)]",children:(0,d.jsxs)("div",{className:"dashboard-app-shell",children:[(0,d.jsxs)("header",{className:"dashboard-app-header","aria-hidden":"true",children:[(0,d.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle","aria-label":"Toggle sidebar",children:(0,d.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,d.jsx)("path",{d:"M9 3v18"})]})}),(0,d.jsxs)("div",{className:"dashboard-app-header__brand",children:[(0,d.jsx)("span",{className:"dashboard-app-header__brand-dot","aria-hidden":"true"}),(0,d.jsx)("span",{children:"Agent Orchestrator"})]}),(0,d.jsx)("span",{className:"dashboard-app-header__sep","aria-hidden":"true"}),(0,d.jsx)("span",{className:"dashboard-app-header__project",children:"Loading project…"}),(0,d.jsx)("div",{className:"dashboard-app-header__spacer"}),(0,d.jsx)("div",{className:"dashboard-app-header__actions",children:(0,d.jsx)("div",{className:"h-9 w-36 animate-pulse border border-[var(--color-border-default)] bg-[var(--color-bg-surface)]"})})]}),(0,d.jsx)("div",{className:"sidebar-wrapper",children:(0,d.jsx)(e,{})}),(0,d.jsxs)("main",{className:"dashboard-main dashboard-main--desktop overflow-y-auto",children:[(0,d.jsxs)("div",{className:"dashboard-main__subhead",children:[(0,d.jsx)("div",{className:"h-8 w-40 animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_88%,transparent)]"}),(0,d.jsx)("div",{className:"mt-3 h-4 w-72 max-w-full animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_82%,transparent)]"})]}),(0,d.jsxs)("div",{className:"board-wrapper","aria-hidden":"true",children:[(0,d.jsx)("div",{className:"kanban-ghost",children:["Working","Pending","Review","Respond","Merge"].map(a=>(0,d.jsx)("div",{className:"kanban-ghost__col",children:(0,d.jsx)("div",{className:"kanban-ghost__head",children:a})},a))}),(0,d.jsx)("div",{className:"board-center",children:(0,d.jsxs)("div",{className:"empty-state",role:"status","aria-label":"Loading project dashboard",children:[(0,d.jsx)("div",{className:"empty-state__icon"}),(0,d.jsx)("div",{className:"h-5 w-40 animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_88%,transparent)]"}),(0,d.jsx)("div",{className:"h-4 w-56 animate-pulse bg-[color-mix(in_srgb,var(--color-bg-elevated)_82%,transparent)]"})]})})]})]})]})})}},69714:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(59281).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},84818:(a,b,c)=>{"use strict";c.d(b,{d:()=>i});var d=c(68844),e=c(93423),f=c.n(e);function g(a){return`/projects/${encodeURIComponent(a)}`}var h=c(9603);function i({projectId:a,resolveError:b,projectPath:c,heading:e="This project's config failed to load"}){let i=b.match(/Local config at (.+?) (?:still uses|failed validation|must parse to an object|:)/)?.[1]??`${c}/agent-orchestrator.yaml or .yml`,j=b.includes("wrapped projects: format");return(0,d.jsx)("div",{className:"min-h-screen bg-[var(--color-bg-canvas)] px-6 py-10 text-[var(--color-text-primary)]",children:(0,d.jsxs)("div",{className:"mx-auto max-w-3xl rounded-2xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-8 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex items-start gap-4",children:[(0,d.jsx)("div",{className:"mt-1 rounded-full bg-[var(--color-tint-yellow)] p-2 text-[var(--color-status-attention)]",children:(0,d.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[(0,d.jsx)("path",{d:"M12 8v4m0 4h.01"}),(0,d.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,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:"Degraded Project"}),(0,d.jsx)("h1",{className:"mt-2 text-2xl font-semibold",children:e}),(0,d.jsxs)("p",{className:"mt-2 text-sm text-[var(--color-text-secondary)]",children:["Project ",(0,d.jsx)("span",{className:"font-medium text-[var(--color-text-primary)]",children:a})," could not be resolved into an effective runtime config."]})]})]}),(0,d.jsxs)("div",{className:"mt-6 rounded-xl border border-[var(--color-border-subtle)] bg-[var(--color-bg-elevated)] p-4",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:"Resolve Error"}),(0,d.jsx)("p",{className:"mt-2 text-sm text-[var(--color-status-error)]",children:b})]}),(0,d.jsxs)("div",{className:"mt-4 rounded-xl border border-[var(--color-border-subtle)] bg-[var(--color-bg-elevated)] p-4",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:"Local Config Path"}),(0,d.jsx)("p",{className:"mt-2 break-all font-[var(--font-mono)] text-sm text-[var(--color-text-primary)]",children:i})]}),j?(0,d.jsx)(h.RepairDegradedProjectButton,{projectId:a}):null,(0,d.jsxs)("div",{className:"mt-6 flex flex-wrap gap-3",children:[(0,d.jsx)(f(),{href:g(a),className:"rounded-lg border border-[var(--color-border-default)] px-4 py-2 text-sm font-medium text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-bg-elevated-hover)]",children:"Back to project"}),(0,d.jsx)(f(),{href:g(a),className:"rounded-lg border border-[var(--color-border-default)] px-4 py-2 text-sm font-medium text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-bg-elevated-hover)]",children:"Open dashboard view"})]})]})})}},90421:(a,b,c)=>{"use strict";c.d(b,{RepairDegradedProjectButton:()=>g});var d=c(33666),e=c(81115),f=c(50436);function g({projectId:a}){let b=(0,f.useRouter)(),[c,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(null),j=async()=>{g(!0),i(null);try{let c=await fetch(`/api/projects/${encodeURIComponent(a)}`,{method:"POST"}),d=await c.json().catch(()=>null);if(!c.ok)return void i(d?.error??"Failed to repair project config.");b.refresh()}catch{i("Network error while repairing project config.")}finally{g(!1)}};return(0,d.jsxs)("div",{className:"mt-6",children:[(0,d.jsx)("button",{type:"button",onClick:()=>void j(),disabled:c,className:"rounded-lg border border-[var(--color-accent)] bg-[var(--color-tint-blue)] px-4 py-2 text-sm font-semibold text-[var(--color-accent)] transition-colors hover:bg-[color-mix(in_srgb,var(--color-accent)_14%,transparent)] disabled:cursor-not-allowed disabled:opacity-60",children:c?"Repairing...":"Repair config"}),h?(0,d.jsx)("p",{className:"mt-3 text-sm text-[var(--color-status-error)]",children:h}):null]})}},93423:(a,b,c)=>{let{createProxy:d}=c(37815);a.exports=d("/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/node_modules/.pnpm/next@15.5.15_@babel+core@7.29.0_@opentelemetry+api@1.9.0_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/client/app-dir/link.js")}};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
exports.id=6811,exports.ids=[6811],exports.modules={2191:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f}),c(81249),c(13081);var d=c(6181);let e={size:{width:32,height:32},contentType:"image/png"};async function f(a){let{__metadata_id__:b,...c}=await a.params,f=(0,d.fillMetadataSegment)(".",c,"icon"),{generateImageMetadata:g}=e;function h(a,b){let c={alt:a.alt,type:a.contentType||"image/png",url:f+(b?"/"+b:"")+"?fde4afff4688df3a"},{size:d}=a;return d&&(c.sizes=d.width+"x"+d.height),c}return g?(await g({params:c})).map((a,b)=>{let c=(a.id||b)+"";return h(a,c)}):[h(e,"")]}},4155:(a,b,c)=>{Promise.resolve().then(c.bind(c,88496)),Promise.resolve().then(c.bind(c,49905))},8556:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(68844);function e(){return(0,d.jsx)("div",{className:"flex min-h-screen items-center justify-center bg-[var(--color-bg-base)]",children:(0,d.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,d.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,d.jsx)("path",{d:"M12 3a9 9 0 1 0 9 9"})}),(0,d.jsx)("p",{className:"text-[13px] text-[var(--color-text-tertiary)]",children:"Loading…"})]})})}},13081:(a,b,c)=>{"use strict";c.d(b,{Kk:()=>f,uy:()=>e});var d=c(68844);function e(a){return a.replace(/[^\w\s-]/g,"").slice(0,50)||"AO"}function f(a,b){let c=(b.charAt(0)||"A").toUpperCase(),e=function(a){let b=0;for(let c=0;c<a.length;c++)b=a.charCodeAt(c)+((b<<5)-b);return(b%360+360)%360}(b),f=Math.round(.19*a),g=Math.round(.625*a);return(0,d.jsx)("div",{style:{width:`${a}px`,height:`${a}px`,borderRadius:`${f}px`,background:`hsl(${e}, 60%, 45%)`,display:"flex",alignItems:"center",justifyContent:"center",color:"white",fontSize:`${g}px`,fontWeight:700,fontFamily:"sans-serif"},children:c})}},15120:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,57035,23)),Promise.resolve().then(c.t.bind(c,57543,23)),Promise.resolve().then(c.t.bind(c,970,23)),Promise.resolve().then(c.t.bind(c,84702,23)),Promise.resolve().then(c.t.bind(c,18706,23)),Promise.resolve().then(c.t.bind(c,11194,23)),Promise.resolve().then(c.t.bind(c,33151,23)),Promise.resolve().then(c.t.bind(c,75210,23))},16819:(a,b,c)=>{"use strict";c.d(b,{ErrorDisplay:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call ErrorDisplay() from the server but ErrorDisplay is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/components/ErrorDisplay.tsx","ErrorDisplay")},23041:(a,b,c)=>{"use strict";c.d(b,{ErrorDisplay:()=>j});var d=c(33666),e=c(47489),f=c.n(e);let g={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 h({accent:a}){return(0,d.jsx)("div",{className:"flex h-14 w-14 items-center justify-center rounded-2xl border",style:{background:`linear-gradient(180deg, color-mix(in srgb, ${a} 16%, var(--color-bg-elevated)) 0%, var(--color-bg-surface) 100%)`,borderColor:`color-mix(in srgb, ${a} 18%, var(--color-border-default))`,boxShadow:"var(--detail-card-shadow)"},children:(0,d.jsxs)("svg",{className:"h-7 w-7",fill:"none",stroke:"currentColor",strokeWidth:"1.6",style:{color:a},viewBox:"0 0 24 24",children:[(0,d.jsx)("rect",{x:"2.5",y:"4.5",width:"19",height:"15",rx:"3"}),(0,d.jsx)("path",{d:"M6.5 9.5l3.25 2.5-3.25 2.5M12.75 15h4.75"})]})})}function i({action:a,primary:b=!1}){let c=b?"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",e=b?{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 a.href?(0,d.jsx)(f(),{href:a.href,className:c,style:e,children:a.label}):(0,d.jsx)("button",{type:"button",onClick:a.onClick,className:c,style:e,children:a.label})}function j({title:a,message:b,tone:c="error",detailsTitle:e="Technical details",error:f,primaryAction:j,secondaryAction:k,compact:l=!1,chrome:m="page",children:n}){let o=g[c],p=!!(f?.digest||f?.message||f?.stack);return(0,d.jsx)("div",{className:`flex w-full items-center justify-center px-6 py-10 ${l?"min-h-[calc(100vh-4rem)]":"min-h-screen"}`,style:{background:"page"===m?"radial-gradient(circle at top, var(--color-body-gradient-blue), transparent 35%), var(--color-bg-base)":"transparent"},children:(0,d.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,d.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start",children:[(0,d.jsx)(h,{accent:o.accent}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.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:o.accent,background:o.bg,borderColor:o.border},children:o.label}),(0,d.jsx)("h1",{className:"text-[24px] font-semibold tracking-[-0.04em] text-[var(--color-text-primary)]",children:a}),(0,d.jsx)("p",{className:"mt-2 max-w-[34rem] text-[14px] leading-6 text-[var(--color-text-secondary)]",children:b})]})]}),(j||k)&&(0,d.jsxs)("div",{className:"flex flex-wrap gap-3",children:[j?(0,d.jsx)(i,{action:j,primary:!0}):null,k?(0,d.jsx)(i,{action:k}):null]}),n,p?(0,d.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,d.jsx)("summary",{className:"cursor-pointer list-none px-4 py-3 text-[12px] font-medium text-[var(--color-text-secondary)]",children:e}),(0,d.jsxs)("div",{className:"border-t px-4 py-4",style:{borderColor:"var(--color-border-subtle)"},children:[f?.digest?(0,d.jsxs)("p",{className:"mb-3 font-[var(--font-mono)] text-[11px] text-[var(--color-text-tertiary)]",children:["digest: ",f.digest]}):null,f?.message?(0,d.jsx)("p",{className:"mb-3 text-[12px] leading-5 text-[var(--color-text-secondary)]",children:f.message}):null,f?.stack?(0,d.jsx)("pre",{className:"overflow-x-auto whitespace-pre-wrap font-[var(--font-mono)] text-[11px] leading-5 text-[var(--color-text-tertiary)]",children:f.stack}):null]})]}):null]})})})}},24553:()=>{},24848:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,8125,23)),Promise.resolve().then(c.t.bind(c,6125,23)),Promise.resolve().then(c.t.bind(c,74148,23)),Promise.resolve().then(c.t.bind(c,10236,23)),Promise.resolve().then(c.t.bind(c,97760,23)),Promise.resolve().then(c.t.bind(c,9528,23)),Promise.resolve().then(c.t.bind(c,20225,23)),Promise.resolve().then(c.bind(c,23240))},26400:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(33666);c(81115);var e=c(23041);function f({error:a,reset:b}){return(0,d.jsx)("html",{lang:"en",className:"dark",children:(0,d.jsx)("body",{className:"bg-[var(--color-bg-base)] text-[var(--color-text-primary)] antialiased",children:(0,d.jsx)(e.ErrorDisplay,{title:"Something broke at the app shell",message:"The dashboard could not recover from this error at the layout level. Try again first, then reload the page if it still fails.",tone:"error",primaryAction:{label:"Try again",onClick:b},secondaryAction:{label:"Reload page",onClick:()=>window.location.reload()},error:a})})})}},27926:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/app/global-error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/app/global-error.tsx","default")},30356:(a,b,c)=>{Promise.resolve().then(c.bind(c,89252))},37728:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f}),c(81249),c(13081);var d=c(6181);let e={size:{width:180,height:180},contentType:"image/png"};async function f(a){let{__metadata_id__:b,...c}=await a.params,f=(0,d.fillMetadataSegment)(".",c,"apple-icon"),{generateImageMetadata:g}=e;function h(a,b){let c={alt:a.alt,type:a.contentType||"image/png",url:f+(b?"/"+b:"")+"?95aeb60ec7acf330"},{size:d}=a;return d&&(c.sizes=d.width+"x"+d.height),c}return g?(await g({params:c})).map((a,b)=>{let c=(a.id||b)+"";return h(a,c)}):[h(e,"")]}},38499:(a,b,c)=>{Promise.resolve().then(c.bind(c,94666)),Promise.resolve().then(c.bind(c,81871))},49078:(a,b,c)=>{Promise.resolve().then(c.bind(c,27926))},49905:(a,b,c)=>{"use strict";function d(){return null}c.d(b,{ServiceWorkerRegistrar:()=>d}),c(81115)},54324:(a,b,c)=>{Promise.resolve().then(c.bind(c,82834))},58791:(a,b,c)=>{Promise.resolve().then(c.bind(c,23041))},58976:(a,b,c)=>{"use strict";c.d(b,{eT:()=>h,i2:()=>j});var d=c(33666),e=c(81115),f=c.n(e);let g=f().createContext(void 0);function h(){return f().useContext(g)}function i(a,b){return b?`${b}:${a}`:a}function j({children:a}){let b=(0,e.useRef)(null),c=(0,e.useRef)(new Map),f=(0,e.useRef)(new Map),[h,j]=(0,e.useState)("connecting"),[k,l]=(0,e.useState)([]),[m,n]=(0,e.useState)(null),o=(0,e.useRef)(0),p=(0,e.useRef)(null),q=(0,e.useRef)({}),r=(0,e.useRef)(!1),s=(0,e.useCallback)(()=>{if(!b.current){j("connecting");try{let a=function(a){let b=window.location,c="https:"===b.protocol?"wss:":"ws:",d=a.proxyWsPath??process.env.NEXT_PUBLIC_TERMINAL_WS_PATH;if(d){let a=d.replace(/\/ws\/?$/,"");return`${c}//${b.host}${a}/mux`}if(""===b.port||"443"===b.port||"80"===b.port)return`${c}//${b.hostname}/ao-terminal-mux`;let e=a.directTerminalPort??process.env.NEXT_PUBLIC_DIRECT_TERMINAL_PORT??"14801";return`${c}//${b.hostname}:${e}/mux`}(q.current);console.log("[MuxProvider] Connecting to",a);let d=new WebSocket(a);b.current=d,d.addEventListener("open",()=>{if(r.current)return void d.close();for(let a of(console.log("[MuxProvider] Connected"),j("connected"),o.current=0,f.current.values())){let b={ch:"terminal",id:a.id,type:"open",...a.projectId&&{projectId:a.projectId},...a.tmuxName&&{tmuxName:a.tmuxName}};d.send(JSON.stringify(b))}d.send(JSON.stringify({ch:"subscribe",topics:["sessions"]}))}),d.addEventListener("message",a=>{try{let b=JSON.parse(a.data);if("terminal"===b.ch){let a=i(b.id,"projectId"in b?b.projectId:void 0);if("data"===b.type){let d=c.current.get(a);if(d)for(let a of d)a(b.data)}else if("opened"===b.type)f.current.has(a)||f.current.set(a,{id:b.id,..."projectId"in b&&b.projectId?{projectId:b.projectId}:{}});else if("exited"===b.type){f.current.delete(a);let d=c.current.get(a);if(d){let a=`\r
|
|
2
|
+
\x1b[31m[Terminal exited with code ${b.code}]\x1b[0m\r
|
|
3
|
+
`;for(let b of d)b(a)}}else"error"===b.type&&console.error(`[MuxProvider] Terminal error for ${b.id}:`,b.message)}else"sessions"===b.ch&&("snapshot"===b.type?(l(b.sessions),n(null)):"error"===b.type&&n(b.error))}catch(a){console.error("[MuxProvider] Error processing message:",a)}}),d.addEventListener("error",a=>{console.error("[MuxProvider] WebSocket error:",a)}),d.addEventListener("close",()=>{if(console.log("[MuxProvider] Disconnected"),b.current===d&&(b.current=null),r.current)return;let a=Math.min(1e3*Math.pow(2,o.current),3e4);o.current+=1,j("reconnecting"),p.current=setTimeout(()=>{console.log(`[MuxProvider] Reconnecting (attempt ${o.current})...`),s()},a)})}catch(a){console.error("[MuxProvider] Failed to create WebSocket:",a),j("disconnected")}}},[]),t=(0,e.useCallback)((a,d,e)=>{let g=i(a,e),h=c.current.get(g);if(h||(h=new Set,c.current.set(g,h)),h.add(d),!f.current.has(g)&&b.current?.readyState===WebSocket.OPEN){let c={ch:"terminal",id:a,type:"open",...e&&{projectId:e}};b.current.send(JSON.stringify(c))}return()=>{let a=c.current.get(g);a&&(a.delete(d),0===a.size&&c.current.delete(g))}},[]),u=(0,e.useCallback)((a,c,d)=>{if(b.current?.readyState===WebSocket.OPEN){let e={ch:"terminal",id:a,type:"data",data:c,...d&&{projectId:d}};b.current.send(JSON.stringify(e))}},[]),v=(0,e.useCallback)((a,c,d)=>{if(f.current.set(i(a,c),{id:a,projectId:c,tmuxName:d}),b.current?.readyState===WebSocket.OPEN){let e={ch:"terminal",id:a,type:"open",...c&&{projectId:c},...d&&{tmuxName:d}};b.current.send(JSON.stringify(e))}},[]),w=(0,e.useCallback)((a,c)=>{if(f.current.delete(i(a,c)),b.current?.readyState===WebSocket.OPEN){let d={ch:"terminal",id:a,type:"close",...c&&{projectId:c}};b.current.send(JSON.stringify(d))}},[]),x=(0,e.useCallback)((a,c,d,e)=>{if(b.current?.readyState===WebSocket.OPEN){let f={ch:"terminal",id:a,type:"resize",cols:c,rows:d,...e&&{projectId:e}};b.current.send(JSON.stringify(f))}},[]),y=(0,e.useMemo)(()=>({subscribeTerminal:t,writeTerminal:u,openTerminal:v,closeTerminal:w,resizeTerminal:x,status:h,sessions:k,lastError:m}),[t,u,v,w,x,h,k,m]);return(0,d.jsx)(g.Provider,{value:y,children:a})}},63028:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(68844),e=c(16819);function f(){return(0,d.jsx)(e.ErrorDisplay,{title:"Page not found",message:"This route does not exist in the dashboard. Return to the main view to pick an active project or session.",tone:"not-found",primaryAction:{label:"Back to dashboard",href:"/"}})}},69648:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>j,generateMetadata:()=>i,viewport:()=>h});var d=c(68844),e=c(81249),f=c(81871),g=c(94666);c(24553);let h={width:"device-width",initialScale:1,viewportFit:"cover",themeColor:[{media:"(prefers-color-scheme: light)",color:"#f5f3f0"},{media:"(prefers-color-scheme: dark)",color:"#121110"}]};async function i(){let a=(0,e.P_)();return{title:{template:`%s | ${a}`,default:`ao | ${a}`},description:"Dashboard for managing parallel AI coding agents",appleWebApp:{capable:!0,statusBarStyle:"black-translucent",title:`ao | ${a}`}}}function j({children:a}){return(0,d.jsx)("html",{lang:"en",className:"dark",suppressHydrationWarning:!0,children:(0,d.jsxs)("body",{className:"h-screen overflow-hidden bg-[var(--color-bg-base)] text-[var(--color-text-primary)] antialiased",children:[(0,d.jsx)(g.Providers,{children:a}),(0,d.jsx)(f.ServiceWorkerRegistrar,{})]})})}},72638:(a,b,c)=>{Promise.resolve().then(c.bind(c,26400))},75663:(a,b,c)=>{Promise.resolve().then(c.bind(c,16819))},81249:(a,b,c)=>{"use strict";c.d(b,{Bq:()=>m,P_:()=>l,cf:()=>n});var d=c(29685),e=c(73024),f=c(76760),g=c(35217);function h(){let a=(0,g.NoB)();try{return(0,g.Z9L)(a)}catch(a){if(a instanceof g.kw3||a instanceof Error&&"code"in a&&"ENOENT"===a.code)return(0,g.Z9L)();throw a}}function i(a){try{return(0,e.realpathSync)(a)}catch{return(0,f.resolve)(a)}}function j(a,b){let c=i(a);for(let[a,d]of Object.entries(b.projects))if("string"==typeof d.path&&i(d.path)===c)return a}function k(a=h()){try{let b=function(a){try{let b=function(a){let b=(0,f.resolve)(a);for(;;){for(let a of["agent-orchestrator.yaml","agent-orchestrator.yml"]){let c=(0,f.resolve)(b,a);if((0,e.existsSync)(c))return c}let a=(0,f.dirname)(b);if(a===b)return;b=a}}(process.cwd());if(!b)return;let c=(0,g.Z9L)(b),d=i((0,g.NoB)());if(i(c.configPath)!==d){for(let b of Object.values(c.projects)){if("string"!=typeof b.path)continue;let c=j(b.path,a);if(c)return c}return j((0,f.dirname)(c.configPath),a)}}catch{}}(a);if(b)return b;let c=i(process.cwd());return j(c,a)}catch{return}}let l=(0,d.cache)(()=>{try{let a=h(),b=k(a);if(b){let c=a.projects[b];return c?.name??b}let c=Object.keys(a.projects)[0];if(c)return(a.projects[c].name??c)||c||"ao"}catch{}return"ao"}),m=(0,d.cache)(()=>{try{let a=h(),b=k(a);if(b)return b;let c=Object.keys(a.projects)[0];if(c)return c}catch{}return"ao"}),n=(0,d.cache)(()=>{try{let a=h();return[...Object.entries(a.projects).map(([a,b])=>({id:a,name:b.name??a,sessionPrefix:b.sessionPrefix??a})),...Object.entries(a.degradedProjects).map(([a,b])=>({id:a,name:a,sessionPrefix:a,resolveError:b.resolveError}))]}catch{return[]}})},81871:(a,b,c)=>{"use strict";c.d(b,{ServiceWorkerRegistrar:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call ServiceWorkerRegistrar() from the server but ServiceWorkerRegistrar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/components/ServiceWorkerRegistrar.tsx","ServiceWorkerRegistrar")},82834:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/app/error.tsx","default")},88496:(a,b,c)=>{"use strict";c.d(b,{Providers:()=>g});var d=c(33666),e=c(93463),f=c(58976);function g({children:a}){return(0,d.jsx)(e.N,{attribute:"class",defaultTheme:"dark",enableSystem:!1,children:(0,d.jsx)(f.i2,{children:a})})}},89252:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(33666),e=c(50436);c(81115);var f=c(23041);function g({error:a,reset:b}){let c=(0,e.useRouter)();return(0,d.jsx)(f.ErrorDisplay,{title:"Something went wrong",message:"The dashboard hit an unexpected error. Try reloading the route data or head back to the main dashboard.",tone:"warning",primaryAction:{label:"Try again",onClick:()=>{b(),c.refresh()}},secondaryAction:{label:"Back to dashboard",href:"/"},error:a,compact:!0,chrome:"card"})}},94666:(a,b,c)=>{"use strict";c.d(b,{Providers:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call Providers() from the server but Providers is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/app/providers.tsx","Providers")}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=7167,exports.ids=[7167],exports.modules={5241:(a,b,c)=>{c.d(b,{CM:()=>f,N_:()=>h,Rt:()=>g,SB:()=>e,U1:()=>j,tT:()=>i,u3:()=>d});let d={ACTIVE:"active",READY:"ready",IDLE:"idle",WAITING_INPUT:"waiting_input",BLOCKED:"blocked",EXITED:"exited"},e={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"},f=new Set(["killed","terminated","done","cleanup","errored","merged"]),g=new Set(["exited"]),h=new Set([]);function i(a,b,c){if(a.metadata?.role==="orchestrator")return!0;if(!b)return!1;let d=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(a.id===`${b}-orchestrator`)return!0;if(!RegExp(`^${d}-orchestrator-\\d+$`).test(a.id))return!1;if(c){for(let d of c)if(d!==b&&RegExp(`^${d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}-\\d+$`).test(a.id))return!1}return!0}let j={PENDING:"pending",PASSING:"passing",FAILING:"failing",NONE:"none"}},20902:(a,b,c)=>{async function d(a){try{let b=await a.json(),c=b?.error??b?.message;if("string"==typeof c&&c.trim().length>0)return c.trim()}catch{}let b="string"==typeof a.statusText?a.statusText.trim():"";return b.length>0?`${a.status} ${b}`:`HTTP ${a.status}`}async function e(a,b={}){let{timeoutMs:c=8e3,timeoutMessage:f,signal:g,...h}=b,i=new AbortController,j=null,k=!1;try{let b=function(a){let b=a.filter(a=>!!a);if(0===b.length)return;if(1===b.length)return b[0];let c=new AbortController,d=()=>c.abort();for(let a of b){if(a.aborted){c.abort();break}a.addEventListener("abort",d,{once:!0})}return c.signal}([g,i.signal]),e={...h};b&&(e.signal=b);let l=new Promise((a,b)=>{j=setTimeout(()=>{k=!0,i.abort(),b(Error(f??`Request timed out after ${c}ms`))},c)}),m=await Promise.race([fetch(a,e).catch(a=>{if(k)throw Error(f??`Request timed out after ${c}ms`,{cause:a});throw a}),l]);if(!m.ok)throw Error(await d(m));return await m.json()}finally{j&&clearTimeout(j)}}c.d(b,{u:()=>e})},31849:(a,b,c)=>{c.d(b,{u:()=>C});var d=c(33666),e=c(47489),f=c.n(e),g=c(81115),h=c(50436),i=c(85489),j=c(37155),k=c(5241),l=c(61875),m=c(88950),n=c(74566);function o(a,b){return"~"===a?`~/${b}`:`${a.replace(/\/+$/,"")}/${b}`}function p({children:a,className:b,viewBox:c="0 0 16 16"}){return(0,d.jsx)("svg",{"aria-hidden":"true",viewBox:c,className:b,children:a})}let q={fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"square"},r={fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"miter"};function s(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"M10 3.5 6 8l4 4.5",...q})})}function t(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"m6 3.5 4 4.5L6 12.5",...q})})}function u(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"M8 12V4m0 0L5 7m3-3 3 3",...r})})}function v(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.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",...r})})}function w({open:a,onClose:b}){let c=(0,h.useRouter)(),e=(0,g.useRef)(null),[f,i]=(0,g.useState)(!1),[j,k]=(0,g.useState)(null),[l,m]=(0,g.useState)(null),[n,p]=(0,g.useState)(null),[q,r]=(0,g.useState)("~"),[w,x]=(0,g.useState)("~"),[y,z]=(0,g.useState)(["~"]),[A,B]=(0,g.useState)(0),[C,D]=(0,g.useState)([]),[E,F]=(0,g.useState)(!1),[G,H]=(0,g.useState)(null),[I,J]=(0,g.useState)(""),[K,L]=(0,g.useState)(""),M=async(a,b)=>{F(!0),H(null);try{let c=await fetch(`/api/filesystem/browse?path=${encodeURIComponent(a)}`).catch(()=>null);if(!c){D([]),x(b?.selectedPath??a),H("Failed to browse directories.");return}if(!c.ok){let d=await c.json().catch(()=>null);D([]),x(b?.selectedPath??a),H(d?.error??"Failed to browse directories.");return}let d=await c.json().catch(()=>null),e=b?.mode??"push",f=b?.historyIndex??A;r(a),x(b?.selectedPath??a),D(d?.entries??[]),"push"===e?z(b=>{let c=b.slice(0,f+1);return c[c.length-1]!==a&&c.push(a),B(c.length-1),c}):z(b=>{let c=[...b];return c[f]=a,c})}catch{H("Failed to browse directories.")}finally{F(!1)}},N=(0,g.useMemo)(()=>C.filter(a=>a.isDirectory),[C]),O=(0,g.useMemo)(()=>N.find(a=>o(q,a.name)===w)??null,[q,N,w]),P=function(a){if("~"===a)return null;let b=a.split("/").filter(Boolean);return b.length<=1?"~":"~"===b[0]?`~/${b.slice(1,-1).join("/")}`:b.slice(0,-1).join("/")}(q),Q=A<y.length-1,R=I.trim()||(w.trim()&&"~"!==w?(w.split("/").filter(Boolean).pop()??"project").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"project":""),S=K.trim()||(w.trim()&&"~"!==w?(w.split("/").filter(Boolean).pop()??"Project").replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase())||"Project":""),T=""!==w.trim()&&"~"!==w&&!G&&!!O?.isGitRepo&&R.length>0&&S.length>0;N.findIndex(a=>o(q,a.name)===w);let U=async(a=!1)=>{k(null),m(null),p(null),i(!0);let d=w.trim();try{let e=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:R,name:S,path:d,useDefaultProjectId:a})}),f=await e.json().catch(()=>null);if(409===e.status&&f?.existingProjectId&&f?.suggestedProjectId&&f?.suggestion){p({error:f.error??"A project with that ID already exists.",existingProjectId:f.existingProjectId,suggestedProjectId:f.suggestedProjectId,suggestion:f.suggestion}),J(f.suggestedProjectId);return}if(!e.ok){let a=f?.error??"Failed to add project.";e.status<500?k(a):m(a);return}let g=f?.projectId??R.trim();b(),c.push(`/projects/${encodeURIComponent(g)}`),c.refresh()}catch{m("Network error while adding project.")}finally{i(!1)}};if(!a)return null;let V=a=>{a<0||a>=y.length||(B(a),M(y[a]??"~",{mode:"replace",historyIndex:a}))},W=n?(0,d.jsxs)("div",{className:"add-project-modal__notice add-project-modal__notice--warning",children:[(0,d.jsx)("p",{className:"add-project-modal__notice-title",children:n.error}),(0,d.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Existing project: ",(0,d.jsx)("code",{children:n.existingProjectId})]}),(0,d.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Suggested project ID: ",(0,d.jsx)("code",{children:n.suggestedProjectId})]}),(0,d.jsxs)("div",{className:"add-project-modal__notice-actions",children:[(0,d.jsx)("button",{type:"button",onClick:()=>{b(),c.push(`/projects/${encodeURIComponent(n.existingProjectId)}`)},className:"add-project-modal__ghostbtn",children:"Open existing"}),(0,d.jsx)("button",{type:"button",onClick:()=>void U(!0),className:"add-project-modal__ghostbtn",children:"Use suggested ID"}),(0,d.jsx)("span",{className:"add-project-modal__notice-hint",children:"Edit the Project ID field or accept the suggested suffix."})]})]}):j?(0,d.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:j}):O&&!O.isGitRepo?(0,d.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:"Selected folder is not a git repository."}):l?(0,d.jsx)("div",{className:"add-project-modal__notice add-project-modal__notice--error",children:l}):null;return(0,d.jsx)("div",{className:"add-project-modal-backdrop",children:(0,d.jsxs)("div",{ref:e,role:"dialog","aria-modal":"true","aria-label":"Add project",className:"add-project-modal",tabIndex:-1,children:[(0,d.jsxs)("div",{className:"add-project-modal__titlebar",children:[(0,d.jsx)("h2",{className:"add-project-modal__windowtitle",children:"add project"}),(0,d.jsx)("button",{type:"button","aria-label":"Close",onClick:b,className:"add-project-modal__iconbtn",children:"\xd7"})]}),(0,d.jsxs)("div",{className:"add-project-modal__toolbar",children:[(0,d.jsxs)("div",{className:"add-project-modal__toolbarcluster",children:[(0,d.jsx)("button",{type:"button",onClick:()=>V(A-1),disabled:!(A>0),className:"add-project-modal__toolbtn","aria-label":"Go back",children:(0,d.jsx)(s,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>V(A+1),disabled:!Q,className:"add-project-modal__toolbtn","aria-label":"Go forward",children:(0,d.jsx)(t,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>P&&void M(P),disabled:!P,className:"add-project-modal__toolbtn","aria-label":"Go up",children:(0,d.jsx)(u,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>void M(q,{mode:"replace",selectedPath:w}),className:"add-project-modal__toolbtn","aria-label":"Refresh",children:(0,d.jsx)(v,{})})]}),(0,d.jsx)("div",{className:"add-project-modal__location",children:q})]}),(0,d.jsx)("div",{className:"add-project-modal__content",children:(0,d.jsxs)("div",{className:"add-project-browser",children:[(0,d.jsxs)("div",{className:"add-project-browser__current",children:[(0,d.jsx)("div",{className:"add-project-browser__current-label",children:"Current folder"}),(0,d.jsx)("div",{className:"add-project-browser__current-path",children:q})]}),G?(0,d.jsxs)("div",{className:"add-project-browser__state add-project-browser__state--error",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"Directory browser unavailable"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:G})]}):E?(0,d.jsxs)("div",{className:"add-project-browser__state",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"Loading folders"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:"Fetching directories for this location."})]}):0===N.length?(0,d.jsxs)("div",{className:"add-project-browser__state",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"No visible folders here"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:"Try navigating up or picking a different location."})]}):(0,d.jsxs)("div",{className:"add-project-browser__rows",children:[P?(0,d.jsx)("button",{type:"button",onClick:()=>void M(P),className:"add-project-browser__row add-project-browser__row--parent",children:".."}):null,N.map(a=>{let b=o(q,a.name);return(0,d.jsx)("button",{type:"button",onClick:()=>x(b),onDoubleClick:()=>void M(b),className:`add-project-browser__row${w===b?" is-selected":""}`,children:a.name},b)})]})]})}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("span",{className:"add-project-modal__selection-label",children:"Selected"}),(0,d.jsx)("span",{className:"add-project-modal__selection-path",children:w||"No directory selected"})]}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-id-input",children:"Project ID"}),(0,d.jsx)("input",{id:"project-id-input",value:I,onChange:a=>J(a.target.value),className:"add-project-modal__selection-path"})]}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-name-input",children:"Project name"}),(0,d.jsx)("input",{id:"project-name-input",value:K,onChange:a=>L(a.target.value),className:"add-project-modal__selection-path"})]}),W,(0,d.jsxs)("div",{className:"add-project-modal__footer",children:[(0,d.jsxs)("div",{className:"add-project-modal__foldercount",children:[N.length," folders"]}),(0,d.jsxs)("div",{className:"add-project-modal__actions",children:[(0,d.jsx)("button",{type:"button",onClick:b,className:"add-project-modal__ghostbtn",children:"Cancel"}),(0,d.jsx)("button",{type:"button",onClick:()=>void U(),disabled:!T||f,className:"add-project-modal__primarybtn",children:f?"Adding…":"Add project"})]})]})]})})}var x=c(81407);function y({open:a,projectId:b,onClose:c}){let e=(0,g.useRef)(null),[f,h]=(0,g.useState)(!1),[i,j]=(0,g.useState)(null),[k,l]=(0,g.useState)(null),m=(0,g.useMemo)(()=>k&&b?{agent:k.agent??"",runtime:k.runtime??"",trackerPlugin:k.tracker?.plugin??"",scmPlugin:k.scm?.plugin??"",reactions:JSON.stringify(k.reactions??{},null,2),identity:{projectId:b,path:k.path,repo:k.repo??"",defaultBranch:k.defaultBranch??"main"}}:null,[k,b]);return a&&b?(0,d.jsx)("div",{className:"project-settings-modal-backdrop",onClick:c,children:(0,d.jsxs)("div",{ref:e,role:"dialog","aria-modal":"true","aria-label":"Project settings",className:"project-settings-modal",tabIndex:-1,onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"project-settings-modal__header",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"project-settings-modal__eyebrow",children:"Project settings"}),(0,d.jsx)("h2",{className:"project-settings-modal__title",children:k?.name??b})]}),(0,d.jsx)("button",{type:"button","aria-label":"Close",onClick:c,className:"project-settings-modal__close",children:"\xd7"})]}),(0,d.jsxs)("div",{className:"project-settings-modal__body",children:[f?(0,d.jsx)("div",{className:"project-settings-modal__state",children:"Loading project settings…"}):null,!f&&i?(0,d.jsx)("div",{role:"alert",className:"project-settings-modal__state project-settings-modal__state--error",children:i}):null,f||i||!m?null:(0,d.jsx)(x.ProjectSettingsForm,{projectId:b,initialValues:m})]})]})}):null}function z({level:a}){return(0,d.jsx)("div",{className:(0,i.cn)("sidebar-session-dot shrink-0 rounded-full","working"===a&&"sidebar-session-dot--glow"),"data-level":a})}function A(){return!1}let B={working:"working",pending:"pending",review:"review",respond:"respond",action:"action",merge:"merge",done:"done"};function C(a){return 0===a.projects.length?null:(0,d.jsx)(D,{...a})}function D({projects:a,sessions:b,orchestrators:c,activeProjectId:e,activeSessionId:o,loading:p=!1,error:q=!1,onRetry:r,collapsed:s=!1,onToggleCollapsed:t,onMobileClose:u}){let v=(0,h.useRouter)(),x=p||null===b,[C,D]=(0,g.useState)(()=>new Set(e&&"all"!==e?[e]:[])),[E,F]=(0,g.useState)(!1),[G,H]=(0,g.useState)(!1),[I,J]=(0,g.useState)(A),[K,L]=(0,g.useState)(!1),[M,N]=(0,g.useState)(null),[O,P]=(0,g.useState)(null),[Q,R]=(0,g.useState)(null),[S,T]=(0,g.useState)(new Set),[U,V]=(0,g.useState)(!1),W=(0,g.useRef)(null),X=(0,g.useRef)(null),Y=(0,g.useRef)(null),Z=(0,g.useRef)(null),$=(0,g.useMemo)(()=>a.filter(a=>!S.has(a.id)),[a,S]),_=(0,g.useMemo)(()=>new Map($.map(a=>[a.id,a.sessionPrefix??a.id])),[$]),aa=(0,g.useMemo)(()=>$.map(a=>a.sessionPrefix??a.id),[$]),ab=(0,g.useMemo)(()=>new Map((c??[]).map(a=>[a.projectId,a])),[c]),ac=(0,g.useMemo)(()=>{let a=new Map,c=new Set($.map(a=>a.id));for(let d of b??[]){if(!c.has(d.projectId)||(0,k.tT)(d,_.get(d.projectId),aa)||"done"===(0,j.ng)(d)&&("killed"===d.status?!E&&!G:!G))continue;let b=a.get(d.projectId)??[];b.push(d),a.set(d.projectId,b)}return a},[b,_,aa,$,E,G]),ad=(a,b)=>{if(b)try{sessionStorage.setItem(`ao-session-nav:${b.id}`,JSON.stringify(b))}catch{}v.push(a),u?.()},ae=async a=>{if(window.confirm(`Remove project ${a.name} from AO? This clears its AO sessions/history and removes it from the portfolio, but keeps the repository folder on disk.`)){R(a.id);try{let b=await fetch(`/api/projects/${encodeURIComponent(a.id)}`,{method:"DELETE"}),c=await b.json().catch(()=>null);if(!b.ok)throw Error((c&&"object"==typeof c&&"error"in c&&"string"==typeof c.error?c.error:null)??"Failed to remove project.");T(b=>new Set(b).add(a.id)),D(b=>{let c=new Set(b);return c.delete(a.id),c}),N(null),e===a.id?v.push("/"):"refresh"in v&&"function"==typeof v.refresh&&v.refresh(),u?.()}catch(a){window.alert(a instanceof Error?a.message:"Failed to remove project.")}finally{R(null)}}};return s?(0,d.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:$.map((a,b)=>{let c=ac.get(a.id)??[],f=a.name.slice(0,2).toUpperCase();return(0,d.jsxs)("div",{className:"flex flex-col items-center gap-0.5 w-full px-1",children:[b>0&&(0,d.jsx)("div",{className:"project-sidebar__collapsed-divider","aria-hidden":"true"}),(0,d.jsx)("a",{href:(0,m.bn)(a.id),className:(0,i.cn)("project-sidebar__collapsed-icon",e===a.id&&"project-sidebar__collapsed-icon--active"),title:a.name,"aria-label":a.name,children:(0,d.jsx)("span",{className:"project-sidebar__collapsed-abbr",children:f})}),c.slice(0,5).map(b=>{let c=(0,j.ng)(b),e=b.branch??(0,l.Pn)(b),f=(b.branch&&(0,l.mC)(b.branch)||e).replace(/\s+/g,"").slice(0,3).toUpperCase(),g=o===b.id,h=(0,m.Nc)(a.id,b.id);return(0,d.jsxs)("a",{href:h,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ad(h,b))},className:(0,i.cn)("project-sidebar__collapsed-session-btn",g&&"project-sidebar__collapsed-session-btn--active"),"data-level":c,title:e,"aria-label":e,children:[(0,d.jsx)("span",{className:"project-sidebar__session-abbr-first",children:f[0]}),(0,d.jsx)("span",{className:"project-sidebar__session-abbr-rest",children:f.slice(1)})]},b.id)}),c.length>5&&(0,d.jsxs)("span",{className:"project-sidebar__collapsed-overflow",children:["+",c.length-5]})]},a.id)})}):(0,d.jsxs)("aside",{className:"project-sidebar flex h-full flex-col",children:[(0,d.jsxs)("div",{className:"project-sidebar__compact-hdr",children:[(0,d.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"}),(0,d.jsx)("button",{type:"button",className:"project-sidebar__add-btn","aria-label":"New project",onClick:()=>V(!0),children:(0,d.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),q&&b&&b.length>0?(0,d.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,d.jsx)("span",{children:"Failed to refresh \xb7 showing cached sessions"}),r?(0,d.jsx)("button",{type:"button",onClick:r,className:"font-medium text-[var(--color-link)] hover:underline",children:"Retry"}):null]}):null,(0,d.jsx)("div",{className:"project-sidebar__tree flex-1 overflow-y-auto overflow-x-hidden",children:$.map(a=>{let b=ac.get(a.id)??[],c=C.has(a.id),g=e===a.id,h=!!a.resolveError,k=(0,m.bn)(a.id),n=b.length>0,p=ab.get(a.id)??null;return(0,d.jsxs)("div",{className:"project-sidebar__project",children:[(0,d.jsxs)("div",{className:"project-sidebar__proj-row flex items-center",children:[h?(0,d.jsxs)("a",{href:k,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ad(k))},className:(0,i.cn)("project-sidebar__proj-toggle project-sidebar__proj-toggle--link project-sidebar__proj-toggle--degraded",g&&"project-sidebar__proj-toggle--active"),"aria-current":g?"page":void 0,children:[(0,d.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,d.jsx)("path",{d:"M12 9v4"}),(0,d.jsx)("path",{d:"M12 17h.01"}),(0,d.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,d.jsx)("span",{className:"project-sidebar__proj-name",children:a.name}),(0,d.jsx)("span",{className:"project-sidebar__proj-badge project-sidebar__proj-badge--degraded",children:"degraded"})]}):(0,d.jsxs)("button",{type:"button",onClick:()=>{var b;return b=a.id,void D(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:(0,i.cn)("project-sidebar__proj-toggle",g&&"project-sidebar__proj-toggle--active"),"aria-expanded":c,"aria-current":g?"page":void 0,children:[(0,d.jsx)("svg",{className:(0,i.cn)("project-sidebar__proj-chevron",c&&"project-sidebar__proj-chevron--open"),width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"m9 18 6-6-6-6"})}),(0,d.jsx)("span",{className:"project-sidebar__proj-name",children:a.name}),(0,d.jsx)("span",{className:(0,i.cn)("project-sidebar__proj-badge",n&&"project-sidebar__proj-badge--active"),children:b.length})]}),h?null:(0,d.jsx)(f(),{href:k,onClick:a=>{a.stopPropagation(),u?.()},className:"project-sidebar__proj-action","aria-label":`Open ${a.name} dashboard`,title:"Dashboard",children:(0,d.jsx)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})})}),!h&&p&&(0,d.jsx)(f(),{href:(0,m.Nc)(a.id,p.id),onClick:a=>{a.stopPropagation(),u?.()},className:"project-sidebar__proj-action","aria-label":`Open ${a.name} orchestrator`,title:"Orchestrator",children:(0,d.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,d.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,d.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"18",cy:"17",r:"2"})]})}),(0,d.jsxs)("div",{className:"project-sidebar__proj-menu",ref:M===a.id?Y:void 0,children:[(0,d.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),N(b=>b===a.id?null:a.id)},className:"project-sidebar__proj-action project-sidebar__proj-action--menu","aria-label":`Project actions for ${a.name}`,"aria-expanded":M===a.id,"aria-haspopup":"menu",title:"Project actions",children:(0,d.jsxs)("svg",{width:"12",height:"12",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"1.75"}),(0,d.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,d.jsx)("circle",{cx:"12",cy:"19",r:"1.75"})]})}),M===a.id?(0,d.jsxs)("div",{ref:Z,className:"project-sidebar__proj-menu-popover",role:"menu","aria-label":`${a.name} actions`,children:[p?(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{N(null),ad((0,m.Nc)(a.id,p.id))},children:"Open orchestrator"}):null,(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{N(null),P(a.id)},children:"Project settings"}),(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item project-sidebar__proj-menu-item--danger",role:"menuitem",onClick:()=>void ae(a),disabled:Q===a.id,children:Q===a.id?"Removing...":"Remove project"})]}):null]})]}),h?(0,d.jsx)("div",{className:"project-sidebar__degraded-note",children:"Config needs repair"}):null,!h&&c&&(0,d.jsx)("div",{className:"project-sidebar__sessions",children:x?(0,d.jsx)("div",{className:"space-y-2 px-3 py-2","aria-label":"Loading sessions",children:Array.from({length:3},(b,c)=>(0,d.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,d.jsx)("div",{className:"h-2 w-2 shrink-0 animate-pulse bg-[var(--color-border-strong)]"}),(0,d.jsx)("div",{className:"h-3 flex-1 animate-pulse bg-[var(--color-bg-primary)]"}),(0,d.jsx)("div",{className:"h-3 w-12 animate-pulse bg-[var(--color-bg-primary)]"})]},`${a.id}-loading-${c}`))}):b.length>0?b.map(b=>{let c=(0,j.ng)(b),e=o===b.id,f=b.branch??(0,l.Pn)(b),g=(0,m.Nc)(a.id,b.id);return(0,d.jsxs)("a",{href:g,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ad(g,b))},className:(0,i.cn)("project-sidebar__sess-row",e&&"project-sidebar__sess-row--active"),"aria-current":e?"page":void 0,"aria-label":`Open ${f}`,children:[(0,d.jsx)(z,{level:c}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("span",{className:(0,i.cn)("project-sidebar__sess-label",e&&"project-sidebar__sess-label--active"),children:f}),I?(0,d.jsxs)("div",{className:"project-sidebar__sess-meta",children:[(0,d.jsx)("span",{className:"project-sidebar__sess-id",children:b.id}),(0,d.jsx)("span",{className:"project-sidebar__sess-status",children:B[c]})]}):null]}),I?null:(0,d.jsx)("span",{className:"project-sidebar__sess-status project-sidebar__sess-status--inline",children:B[c]})]},b.id)}):q?(0,d.jsxs)("div",{className:"px-3 py-2",children:[(0,d.jsx)("div",{className:"project-sidebar__empty",children:"Failed to load sessions"}),(0,d.jsx)("button",{type:"button",className:"mt-2 text-xs font-medium text-[var(--color-link)] hover:underline",onClick:r,children:"Retry"})]}):(0,d.jsx)("div",{className:"project-sidebar__empty",children:"No sessions shown"})})]},a.id)})}),(0,d.jsx)("div",{className:"project-sidebar__footer",children:(0,d.jsxs)("div",{className:"flex items-center gap-1 border-t border-[var(--color-border-subtle)] px-2 py-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>F(!E),className:(0,i.cn)("project-sidebar__footer-btn",E&&"project-sidebar__footer-btn--active"),"aria-pressed":E,title:E?"Hide killed sessions":"Show killed sessions","aria-label":E?"Hide killed sessions":"Show killed sessions",children:(0,d.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.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,d.jsx)("circle",{cx:"9",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"}),(0,d.jsx)("circle",{cx:"15",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"})]})}),(0,d.jsx)("button",{type:"button",onClick:()=>H(!G),className:(0,i.cn)("project-sidebar__footer-btn",G&&"project-sidebar__footer-btn--active"),"aria-pressed":G,title:G?"Hide completed sessions":"Show completed sessions","aria-label":G?"Hide completed sessions":"Show completed sessions",children:(0,d.jsx)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M20 6 9 17l-5-5"})})}),(0,d.jsx)("div",{className:"flex-1"}),(0,d.jsxs)("div",{className:"project-sidebar__settings-wrap",ref:W,children:[(0,d.jsx)("button",{type:"button",onClick:()=>L(a=>!a),className:(0,i.cn)("project-sidebar__footer-btn",K&&"project-sidebar__footer-btn--active"),"aria-expanded":K,"aria-haspopup":"dialog",title:"Sidebar settings","aria-label":"Sidebar settings",children:(0,d.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,d.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"})]})}),K?(0,d.jsx)("div",{ref:X,className:"project-sidebar__settings-popover",role:"dialog","aria-label":"Sidebar settings",children:(0,d.jsxs)("label",{className:"project-sidebar__settings-row",children:[(0,d.jsx)("input",{type:"checkbox",checked:I,onChange:a=>J(a.target.checked)}),(0,d.jsx)("span",{children:"Show session ID"})]})}):null]}),(0,d.jsx)(n.U,{className:"project-sidebar__theme-toggle"})]})}),(0,d.jsx)(w,{open:U,onClose:()=>V(!1)}),(0,d.jsx)(y,{open:null!==O,projectId:O,onClose:()=>P(null)})]})}},37155:(a,b,c)=>{c.d(b,{CM:()=>d.CM,Kw:()=>k,N_:()=>d.N_,Ou:()=>i,QN:()=>g,U1:()=>d.U1,dG:()=>l,fZ:()=>e,nH:()=>m,ng:()=>o,of:()=>j,sZ:()=>f,wy:()=>n});var d=c(5241);function e(a){return a.mergeability.blockers.includes("API rate limited or unavailable")}function f(a){return!1===a.enriched}function g(a){return"open"===a.state&&a.mergeability.mergeable&&a.mergeability.ciPassing&&a.mergeability.approved&&a.mergeability.noConflicts}function h(a){return a.replace(/_/g," ")}function i(a){return a.lifecycle?.session?.label??h(a.status)}function j(a){return a.lifecycle?.pr?.label?a.lifecycle.pr.label:a.pr?.state?h(a.pr.state):"not created"}function k(a){return a.lifecycle?.runtime?.label??"unknown"}function l(a){return a.lifecycle?"done"===a.lifecycle.sessionState||"terminated"===a.lifecycle.sessionState||"merged"===a.lifecycle.prState:"merged"===a.status||"killed"===a.status||"cleanup"===a.status||"done"===a.status||"terminated"===a.status||a.pr?.state==="merged"}function m(a){return a.lifecycle?l(a)||"missing"===a.lifecycle.runtimeState||"exited"===a.lifecycle.runtimeState:d.CM.has(a.status)||null!==a.activity&&d.Rt.has(a.activity)}function n(a){return a.lifecycle?("done"===a.lifecycle.sessionState||"terminated"===a.lifecycle.sessionState||"missing"===a.lifecycle.runtimeState||"exited"===a.lifecycle.runtimeState)&&"merged"!==a.lifecycle.prState&&"merged"!==a.status:!!m(a)&&a.pr?.state!=="merged"&&"merged"!==a.status}function o(a,b="detailed"){let c=function(a){if(l(a))return"done";if(a.lifecycle?.prReason==="merge_ready"||a.lifecycle?.prReason==="approved"||"mergeable"===a.status||"approved"===a.status||a.pr&&!f(a.pr)&&a.pr.mergeability.mergeable)return"merge";if(a.lifecycle?.sessionState==="detecting"||a.lifecycle?.sessionState==="needs_input"||a.lifecycle?.sessionState==="stuck"||a.status===d.SB.ERRORED||a.status===d.SB.NEEDS_INPUT||a.status===d.SB.STUCK||a.activity===d.u3.WAITING_INPUT||a.activity===d.u3.BLOCKED||a.activity===d.u3.EXITED)return"respond";if(a.lifecycle?.prReason==="ci_failing"||a.lifecycle?.prReason==="changes_requested"||"ci_failed"===a.status||"changes_requested"===a.status)return"review";if(a.pr&&!e(a.pr)&&!f(a.pr)){let b=a.pr;if(b.ciStatus===d.U1.FAILING||"changes_requested"===b.reviewDecision||!b.mergeability.noConflicts)return"review"}if(a.lifecycle?.prReason==="review_pending"||a.lifecycle?.prReason==="closed_unmerged"||"review_pending"===a.status)return"pending";if(a.pr&&!e(a.pr)&&!f(a.pr)){let b=a.pr;if(!b.isDraft&&b.unresolvedThreads>0||!b.isDraft&&("pending"===b.reviewDecision||"none"===b.reviewDecision))return"pending"}return"working"}(a);return"simple"===b&&("respond"===c||"review"===c)?"action":c}},52754:(a,b,c)=>{c.d(b,{D:()=>e,U:()=>f});var d=c(81115);let e=767;function f(a){let[b,c]=(0,d.useState)(!1);return b}},61875:(a,b,c)=>{function d(a,b){let c=a.replace(/^(?:feat|fix|chore|refactor|docs|test|ci|session|orchestrator|release|hotfix|feature|bugfix|build|wip|improvement)\//,"");return b&&c===b?"":c.replace(/[-_]/g," ").replace(/\b\w/g,a=>a.toUpperCase()).trim()}function e(a){if(a.pr?.title)return a.pr.title;if(a.issueTitle)return a.issueTitle;if(a.displayName)return a.displayName;if(a.userPrompt)return a.userPrompt;if(a.branch){let b=d(a.branch,a.id);if(b)return b}let b=a.metadata.pinnedSummary;return b||(a.summary&&!a.summaryIsFallback||a.summary?a.summary:a.status)}function f(a){let b=Date.now()-a;if(b<6e4)return"just now";let c=Math.floor(b/6e4);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);if(e<7)return`${e}d ago`;let f=Math.floor(e/7);return`${f}w ago`}c.d(b,{Pn:()=>e,fw:()=>f,mC:()=>d})},71276:(a,b,c)=>{c.d(b,{d:()=>j,t:()=>i});var d=c(33666),e=c(81115),f=c(85489);function g(a,b){return"SHOW"===b.type?{message:b.message,variant:b.variant,key:b.key}:null}let h=(0,e.createContext)(null);function i({children:a}){let[b,c]=(0,e.useReducer)(g,null),i=(0,e.useRef)(null),j=(0,e.useRef)(0),k=(0,e.useCallback)((a,b="info")=>{null!==i.current&&clearTimeout(i.current),j.current+=1,c({type:"SHOW",message:a,variant:b,key:j.current}),i.current=setTimeout(()=>{c({type:"HIDE"}),i.current=null},3e3)},[]);return(0,d.jsxs)(h.Provider,{value:{showToast:k},children:[a,(0,d.jsx)("div",{className:"toast-container",role:"status","aria-live":"polite","aria-atomic":"true",children:b&&(0,d.jsxs)("div",{className:(0,f.cn)("toast","success"===b.variant&&"toast--success","error"===b.variant&&"toast--error","info"===b.variant&&"toast--info"),children:[(0,d.jsx)("span",{className:"toast__icon","aria-hidden":"true"}),(0,d.jsx)("span",{className:"toast__message",children:b.message})]},b.key)})]})}function j(){let a=(0,e.useContext)(h);if(!a)throw Error("useToast must be used within a ToastProvider");return a}},74566:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(33666),e=c(93463),f=c(81115);function g({className:a,label:b}){let{resolvedTheme:c,setTheme:g}=(0,e.D)(),[h,i]=(0,f.useState)(!1);if(!h)return(0,d.jsx)("div",{className:a??"h-9 w-9"});let j="dark"===c;return(0,d.jsxs)("button",{onClick:()=>g(j?"light":"dark"),className:a??"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 ${j?"light":"dark"} mode`,title:`Switch to ${j?"light":"dark"} mode`,children:[j?(0,d.jsxs)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,d.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,d.jsx)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"})}),b?(0,d.jsx)("span",{children:b}):null]})}},81407:(a,b,c)=>{c.d(b,{ProjectSettingsForm:()=>l});var d=c(33666),e=c(81115),f=c(50436),g=c(71276);let h="These describe which repo this is. Change them via `ao project relink`.";function i({projectId:a,initialValues:b}){let c=(0,f.useRouter)(),{showToast:h}=(0,g.d)(),[i,l]=(0,e.useState)(b.agent),[m,n]=(0,e.useState)(b.runtime),[o,p]=(0,e.useState)(b.trackerPlugin),[q,r]=(0,e.useState)(b.scmPlugin),[s,t]=(0,e.useState)(b.reactions),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),A=(0,e.useMemo)(()=>({agent:i.trim()||null,runtime:m.trim()||null,tracker:o.trim()?{plugin:o.trim()}:null,scm:q.trim()?{plugin:q.trim()}:null,reactions:s}),[i,m,o,q,s]),B=async()=>{let b;x(null),z(null);try{let a=s.trim();b=a?JSON.parse(a):void 0}catch{x("Reactions must be valid JSON.");return}v(!0);try{let d=await fetch(`/api/projects/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:A.agent,runtime:A.runtime,tracker:A.tracker,scm:A.scm,reactions:b??null})}),e=await d.json().catch(()=>null);if(!d.ok){let a=e?.error??"Failed to save project settings.";400===d.status?x(a):z(a);return}h("Project settings updated.","success"),c.refresh()}catch{z("Network error while saving project settings.")}finally{v(!1)}};return(0,d.jsxs)("div",{className:"project-settings-form",children:[(0,d.jsxs)("section",{className:"project-settings-form__section",children:[(0,d.jsxs)("div",{className:"project-settings-form__section-header",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"project-settings-form__eyebrow",children:"Behavior"}),(0,d.jsx)("h2",{className:"project-settings-form__section-title",children:"Runtime configuration"}),(0,d.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,d.jsx)("button",{type:"button",onClick:()=>void B(),disabled:u,className:"project-settings-form__save",children:u?"Saving...":"Save changes"})]}),(0,d.jsxs)("div",{className:"project-settings-form__grid",children:[(0,d.jsx)(j,{id:"agent",label:"Agent",value:i,onChange:l,placeholder:"claude-code"}),(0,d.jsx)(j,{id:"runtime",label:"Runtime",value:m,onChange:n,placeholder:"tmux"}),(0,d.jsx)(j,{id:"tracker-plugin",label:"Tracker plugin",value:o,onChange:p,placeholder:"github"}),(0,d.jsx)(j,{id:"scm-plugin",label:"SCM plugin",value:q,onChange:r,placeholder:"github"})]}),(0,d.jsxs)("div",{className:"project-settings-form__reactions",children:[(0,d.jsx)("label",{htmlFor:"reactions",className:"project-settings-form__label",children:"Reactions"}),(0,d.jsx)("p",{className:"project-settings-form__hint",children:"JSON object keyed by reaction name. This PATCH only sends behavior fields."}),(0,d.jsx)("textarea",{id:"reactions",value:s,onChange:a=>t(a.target.value),spellCheck:!1,rows:12,className:"project-settings-form__textarea project-settings-form__textarea--mono"})]}),w?(0,d.jsx)("div",{role:"alert",className:"project-settings-form__alert project-settings-form__alert--error",children:w}):null,y?(0,d.jsxs)("div",{className:"project-settings-form__alert project-settings-form__alert--surface",children:[(0,d.jsx)("p",{className:"project-settings-form__alert-copy",children:y}),(0,d.jsx)("button",{type:"button",onClick:()=>void B(),className:"project-settings-form__retry",children:"Retry"})]}):null]}),(0,d.jsxs)("section",{className:"project-settings-form__section",children:[(0,d.jsx)("p",{className:"project-settings-form__eyebrow",children:"Identity"}),(0,d.jsx)("h2",{className:"project-settings-form__section-title",children:"Repository identity"}),(0,d.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,d.jsxs)("div",{className:"project-settings-form__grid",children:[(0,d.jsx)(k,{id:"identity-project-id",label:"Project ID",value:b.identity.projectId}),(0,d.jsx)(k,{id:"identity-path",label:"Path",value:b.identity.path}),(0,d.jsx)(k,{id:"identity-repo",label:"Repo",value:b.identity.repo}),(0,d.jsx)(k,{id:"identity-default-branch",label:"Default branch",value:b.identity.defaultBranch})]})]})]})}function j({id:a,label:b,value:c,onChange:e,placeholder:f}){return(0,d.jsxs)("label",{htmlFor:a,className:"project-settings-form__field",children:[(0,d.jsx)("span",{className:"project-settings-form__label",children:b}),(0,d.jsx)("input",{id:a,value:c,onChange:a=>e(a.target.value),placeholder:f,className:"project-settings-form__input"})]})}function k({id:a,label:b,value:c}){return(0,d.jsxs)("label",{htmlFor:a,className:"project-settings-form__field",children:[(0,d.jsx)("span",{className:"project-settings-form__label",children:b}),(0,d.jsx)("input",{id:a,value:c,disabled:!0,readOnly:!0,title:h,"aria-describedby":`${a}-tooltip`,className:"project-settings-form__input project-settings-form__input--readonly"}),(0,d.jsx)("span",{id:`${a}-tooltip`,className:"project-settings-form__hint",children:h})]})}function l(a){return(0,d.jsx)(g.t,{children:(0,d.jsx)(i,{...a})})}},85489:(a,b,c)=>{c.d(b,{cn:()=>d});function d(...a){return a.filter(Boolean).join(" ")}},88950:(a,b,c)=>{function d(a){return`/projects/${encodeURIComponent(a)}`}function e(a,b){return`${d(a)}/sessions/${encodeURIComponent(b)}`}function f(a,b,c){return`${e(a,b)}${c}`}c.d(b,{$l:()=>f,Nc:()=>e,bn:()=>d})}};
|
|
1
|
+
"use strict";exports.id=7167,exports.ids=[7167],exports.modules={5241:(a,b,c)=>{c.d(b,{CM:()=>f,N_:()=>h,Rt:()=>g,SB:()=>e,U1:()=>j,tT:()=>i,u3:()=>d});let d={ACTIVE:"active",READY:"ready",IDLE:"idle",WAITING_INPUT:"waiting_input",BLOCKED:"blocked",EXITED:"exited"},e={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"},f=new Set(["killed","terminated","done","cleanup","errored","merged"]),g=new Set(["exited"]),h=new Set([]);function i(a,b,c){if(a.metadata?.role==="orchestrator")return!0;if(!b)return!1;let d=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(a.id===`${b}-orchestrator`)return!0;if(!RegExp(`^${d}-orchestrator-\\d+$`).test(a.id))return!1;if(c){for(let d of c)if(d!==b&&RegExp(`^${d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}-\\d+$`).test(a.id))return!1}return!0}let j={PENDING:"pending",PASSING:"passing",FAILING:"failing",NONE:"none"}},20902:(a,b,c)=>{async function d(a){try{let b=await a.json(),c=b?.error??b?.message;if("string"==typeof c&&c.trim().length>0)return c.trim()}catch{}let b="string"==typeof a.statusText?a.statusText.trim():"";return b.length>0?`${a.status} ${b}`:`HTTP ${a.status}`}async function e(a,b={}){let{timeoutMs:c=8e3,timeoutMessage:f,signal:g,...h}=b,i=new AbortController,j=null,k=!1;try{let b=function(a){let b=a.filter(a=>!!a);if(0===b.length)return;if(1===b.length)return b[0];let c=new AbortController,d=()=>c.abort();for(let a of b){if(a.aborted){c.abort();break}a.addEventListener("abort",d,{once:!0})}return c.signal}([g,i.signal]),e={...h};b&&(e.signal=b);let l=new Promise((a,b)=>{j=setTimeout(()=>{k=!0,i.abort(),b(Error(f??`Request timed out after ${c}ms`))},c)}),m=await Promise.race([fetch(a,e).catch(a=>{if(k)throw Error(f??`Request timed out after ${c}ms`,{cause:a});throw a}),l]);if(!m.ok)throw Error(await d(m));return await m.json()}finally{j&&clearTimeout(j)}}c.d(b,{u:()=>e})},31849:(a,b,c)=>{c.d(b,{u:()=>C});var d=c(33666),e=c(47489),f=c.n(e),g=c(81115),h=c(50436),i=c(85489),j=c(37155),k=c(5241),l=c(61875),m=c(88950),n=c(74566);function o(a,b){return"~"===a?`~/${b}`:`${a.replace(/\/+$/,"")}/${b}`}function p({children:a,className:b,viewBox:c="0 0 16 16"}){return(0,d.jsx)("svg",{"aria-hidden":"true",viewBox:c,className:b,children:a})}let q={fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"square"},r={fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"miter"};function s(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"M10 3.5 6 8l4 4.5",...q})})}function t(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"m6 3.5 4 4.5L6 12.5",...q})})}function u(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"M8 12V4m0 0L5 7m3-3 3 3",...r})})}function v(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.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",...r})})}function w({open:a,onClose:b}){let c=(0,h.useRouter)(),e=(0,g.useRef)(null),[f,i]=(0,g.useState)(!1),[j,k]=(0,g.useState)(null),[l,m]=(0,g.useState)(null),[n,p]=(0,g.useState)(null),[q,r]=(0,g.useState)("~"),[w,x]=(0,g.useState)("~"),[y,z]=(0,g.useState)(["~"]),[A,B]=(0,g.useState)(0),[C,D]=(0,g.useState)([]),[E,F]=(0,g.useState)(!1),[G,H]=(0,g.useState)(null),[I,J]=(0,g.useState)(""),[K,L]=(0,g.useState)(""),M=async(a,b)=>{F(!0),H(null);try{let c=await fetch(`/api/filesystem/browse?path=${encodeURIComponent(a)}`).catch(()=>null);if(!c){D([]),x(b?.selectedPath??a),H("Failed to browse directories.");return}if(!c.ok){let d=await c.json().catch(()=>null);D([]),x(b?.selectedPath??a),H(d?.error??"Failed to browse directories.");return}let d=await c.json().catch(()=>null),e=b?.mode??"push",f=b?.historyIndex??A;r(a),x(b?.selectedPath??a),D(d?.entries??[]),"push"===e?z(b=>{let c=b.slice(0,f+1);return c[c.length-1]!==a&&c.push(a),B(c.length-1),c}):z(b=>{let c=[...b];return c[f]=a,c})}catch{H("Failed to browse directories.")}finally{F(!1)}},N=(0,g.useMemo)(()=>C.filter(a=>a.isDirectory),[C]),O=(0,g.useMemo)(()=>N.find(a=>o(q,a.name)===w)??null,[q,N,w]),P=function(a){if("~"===a)return null;let b=a.split("/").filter(Boolean);return b.length<=1?"~":"~"===b[0]?`~/${b.slice(1,-1).join("/")}`:b.slice(0,-1).join("/")}(q),Q=A<y.length-1,R=I.trim()||(w.trim()&&"~"!==w?(w.split("/").filter(Boolean).pop()??"project").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"project":""),S=K.trim()||(w.trim()&&"~"!==w?(w.split("/").filter(Boolean).pop()??"Project").replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase())||"Project":""),T=""!==w.trim()&&"~"!==w&&!G&&!!O?.isGitRepo&&R.length>0&&S.length>0;N.findIndex(a=>o(q,a.name)===w);let U=async(a=!1)=>{k(null),m(null),p(null),i(!0);let d=w.trim();try{let e=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:R,name:S,path:d,useDefaultProjectId:a})}),f=await e.json().catch(()=>null);if(409===e.status&&f?.existingProjectId&&f?.suggestedProjectId&&f?.suggestion){p({error:f.error??"A project with that ID already exists.",existingProjectId:f.existingProjectId,suggestedProjectId:f.suggestedProjectId,suggestion:f.suggestion}),J(f.suggestedProjectId);return}if(!e.ok){let a=f?.error??"Failed to add project.";e.status<500?k(a):m(a);return}let g=f?.projectId??R.trim();b(),c.push(`/projects/${encodeURIComponent(g)}`),c.refresh()}catch{m("Network error while adding project.")}finally{i(!1)}};if(!a)return null;let V=a=>{a<0||a>=y.length||(B(a),M(y[a]??"~",{mode:"replace",historyIndex:a}))},W=n?(0,d.jsxs)("div",{className:"add-project-modal__notice add-project-modal__notice--warning",children:[(0,d.jsx)("p",{className:"add-project-modal__notice-title",children:n.error}),(0,d.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Existing project: ",(0,d.jsx)("code",{children:n.existingProjectId})]}),(0,d.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Suggested project ID: ",(0,d.jsx)("code",{children:n.suggestedProjectId})]}),(0,d.jsxs)("div",{className:"add-project-modal__notice-actions",children:[(0,d.jsx)("button",{type:"button",onClick:()=>{b(),c.push(`/projects/${encodeURIComponent(n.existingProjectId)}`)},className:"add-project-modal__ghostbtn",children:"Open existing"}),(0,d.jsx)("button",{type:"button",onClick:()=>void U(!0),className:"add-project-modal__ghostbtn",children:"Use suggested ID"}),(0,d.jsx)("span",{className:"add-project-modal__notice-hint",children:"Edit the Project ID field or accept the suggested suffix."})]})]}):j?(0,d.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:j}):O&&!O.isGitRepo?(0,d.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:"Selected folder is not a git repository."}):l?(0,d.jsx)("div",{className:"add-project-modal__notice add-project-modal__notice--error",children:l}):null;return(0,d.jsx)("div",{className:"add-project-modal-backdrop",children:(0,d.jsxs)("div",{ref:e,role:"dialog","aria-modal":"true","aria-label":"Add project",className:"add-project-modal",tabIndex:-1,children:[(0,d.jsxs)("div",{className:"add-project-modal__titlebar",children:[(0,d.jsx)("h2",{className:"add-project-modal__windowtitle",children:"add project"}),(0,d.jsx)("button",{type:"button","aria-label":"Close",onClick:b,className:"add-project-modal__iconbtn",children:"\xd7"})]}),(0,d.jsxs)("div",{className:"add-project-modal__toolbar",children:[(0,d.jsxs)("div",{className:"add-project-modal__toolbarcluster",children:[(0,d.jsx)("button",{type:"button",onClick:()=>V(A-1),disabled:!(A>0),className:"add-project-modal__toolbtn","aria-label":"Go back",children:(0,d.jsx)(s,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>V(A+1),disabled:!Q,className:"add-project-modal__toolbtn","aria-label":"Go forward",children:(0,d.jsx)(t,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>P&&void M(P),disabled:!P,className:"add-project-modal__toolbtn","aria-label":"Go up",children:(0,d.jsx)(u,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>void M(q,{mode:"replace",selectedPath:w}),className:"add-project-modal__toolbtn","aria-label":"Refresh",children:(0,d.jsx)(v,{})})]}),(0,d.jsx)("div",{className:"add-project-modal__location",children:q})]}),(0,d.jsx)("div",{className:"add-project-modal__content",children:(0,d.jsxs)("div",{className:"add-project-browser",children:[(0,d.jsxs)("div",{className:"add-project-browser__current",children:[(0,d.jsx)("div",{className:"add-project-browser__current-label",children:"Current folder"}),(0,d.jsx)("div",{className:"add-project-browser__current-path",children:q})]}),G?(0,d.jsxs)("div",{className:"add-project-browser__state add-project-browser__state--error",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"Directory browser unavailable"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:G})]}):E?(0,d.jsxs)("div",{className:"add-project-browser__state",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"Loading folders"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:"Fetching directories for this location."})]}):0===N.length?(0,d.jsxs)("div",{className:"add-project-browser__state",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"No visible folders here"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:"Try navigating up or picking a different location."})]}):(0,d.jsxs)("div",{className:"add-project-browser__rows",children:[P?(0,d.jsx)("button",{type:"button",onClick:()=>void M(P),className:"add-project-browser__row add-project-browser__row--parent",children:".."}):null,N.map(a=>{let b=o(q,a.name);return(0,d.jsx)("button",{type:"button",onClick:()=>x(b),onDoubleClick:()=>void M(b),className:`add-project-browser__row${w===b?" is-selected":""}`,children:a.name},b)})]})]})}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("span",{className:"add-project-modal__selection-label",children:"Selected"}),(0,d.jsx)("span",{className:"add-project-modal__selection-path",children:w||"No directory selected"})]}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-id-input",children:"Project ID"}),(0,d.jsx)("input",{id:"project-id-input",value:I,onChange:a=>J(a.target.value),className:"add-project-modal__selection-path"})]}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-name-input",children:"Project name"}),(0,d.jsx)("input",{id:"project-name-input",value:K,onChange:a=>L(a.target.value),className:"add-project-modal__selection-path"})]}),W,(0,d.jsxs)("div",{className:"add-project-modal__footer",children:[(0,d.jsxs)("div",{className:"add-project-modal__foldercount",children:[N.length," folders"]}),(0,d.jsxs)("div",{className:"add-project-modal__actions",children:[(0,d.jsx)("button",{type:"button",onClick:b,className:"add-project-modal__ghostbtn",children:"Cancel"}),(0,d.jsx)("button",{type:"button",onClick:()=>void U(),disabled:!T||f,className:"add-project-modal__primarybtn",children:f?"Adding…":"Add project"})]})]})]})})}var x=c(81407);function y({open:a,projectId:b,onClose:c}){let e=(0,g.useRef)(null),[f,h]=(0,g.useState)(!1),[i,j]=(0,g.useState)(null),[k,l]=(0,g.useState)(null),m=(0,g.useMemo)(()=>k&&b?{agent:k.agent??"",runtime:k.runtime??"",trackerPlugin:k.tracker?.plugin??"",scmPlugin:k.scm?.plugin??"",reactions:JSON.stringify(k.reactions??{},null,2),identity:{projectId:b,path:k.path,repo:k.repo??"",defaultBranch:k.defaultBranch??"main"}}:null,[k,b]);return a&&b?(0,d.jsx)("div",{className:"project-settings-modal-backdrop",onClick:c,children:(0,d.jsxs)("div",{ref:e,role:"dialog","aria-modal":"true","aria-label":"Project settings",className:"project-settings-modal",tabIndex:-1,onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"project-settings-modal__header",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"project-settings-modal__eyebrow",children:"Project settings"}),(0,d.jsx)("h2",{className:"project-settings-modal__title",children:k?.name??b})]}),(0,d.jsx)("button",{type:"button","aria-label":"Close",onClick:c,className:"project-settings-modal__close",children:"\xd7"})]}),(0,d.jsxs)("div",{className:"project-settings-modal__body",children:[f?(0,d.jsx)("div",{className:"project-settings-modal__state",children:"Loading project settings…"}):null,!f&&i?(0,d.jsx)("div",{role:"alert",className:"project-settings-modal__state project-settings-modal__state--error",children:i}):null,f||i||!m?null:(0,d.jsx)(x.ProjectSettingsForm,{projectId:b,initialValues:m})]})]})}):null}function z({level:a}){return(0,d.jsx)("div",{className:(0,i.cn)("sidebar-session-dot shrink-0 rounded-full","working"===a&&"sidebar-session-dot--glow"),"data-level":a})}function A(){return!1}let B={working:"working",pending:"pending",review:"review",respond:"respond",action:"action",merge:"merge",done:"done"};function C(a){return 0===a.projects.length?(0,d.jsx)(D,{collapsed:a.collapsed}):(0,d.jsx)(E,{...a})}function D({collapsed:a=!1}){let[b,c]=(0,g.useState)(!1);return a?(0,d.jsxs)("aside",{className:"project-sidebar project-sidebar--collapsed flex h-full flex-col items-center gap-1 py-2",children:[(0,d.jsx)("button",{type:"button",className:"project-sidebar__add-btn","aria-label":"New project",onClick:()=>c(!0),children:(0,d.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 5v14M5 12h14"})})}),(0,d.jsx)(w,{open:b,onClose:()=>c(!1)})]}):(0,d.jsxs)("aside",{className:"project-sidebar flex h-full flex-col",children:[(0,d.jsxs)("div",{className:"project-sidebar__compact-hdr",children:[(0,d.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"}),(0,d.jsx)("button",{type:"button",className:"project-sidebar__add-btn","aria-label":"New project",onClick:()=>c(!0),children:(0,d.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),(0,d.jsx)("div",{className:"project-sidebar__empty flex-1 text-[var(--color-text-tertiary)]",children:"No projects yet. Click + to add one."}),(0,d.jsx)("div",{className:"project-sidebar__footer",children:(0,d.jsx)("div",{className:"flex items-center justify-end gap-1 border-t border-[var(--color-border-subtle)] px-2 py-2",children:(0,d.jsx)(n.U,{className:"project-sidebar__theme-toggle"})})}),(0,d.jsx)(w,{open:b,onClose:()=>c(!1)})]})}function E({projects:a,sessions:b,orchestrators:c,activeProjectId:e,activeSessionId:o,loading:p=!1,error:q=!1,onRetry:r,collapsed:s=!1,onToggleCollapsed:t,onMobileClose:u}){let v=(0,h.useRouter)(),x=p||null===b,[C,D]=(0,g.useState)(()=>new Set(e&&"all"!==e?[e]:[])),[E,F]=(0,g.useState)(!1),[G,H]=(0,g.useState)(!1),[I,J]=(0,g.useState)(A),[K,L]=(0,g.useState)(!1),[M,N]=(0,g.useState)(null),[O,P]=(0,g.useState)(null),[Q,R]=(0,g.useState)(null),[S,T]=(0,g.useState)(new Set),[U,V]=(0,g.useState)(!1),W=(0,g.useRef)(null),X=(0,g.useRef)(null),Y=(0,g.useRef)(null),Z=(0,g.useRef)(null),$=(0,g.useMemo)(()=>a.filter(a=>!S.has(a.id)),[a,S]),_=(0,g.useMemo)(()=>new Map($.map(a=>[a.id,a.sessionPrefix??a.id])),[$]),aa=(0,g.useMemo)(()=>$.map(a=>a.sessionPrefix??a.id),[$]),ab=(0,g.useMemo)(()=>new Map((c??[]).map(a=>[a.projectId,a])),[c]),ac=(0,g.useMemo)(()=>{let a=new Map,c=new Set($.map(a=>a.id));for(let d of b??[]){if(!c.has(d.projectId)||(0,k.tT)(d,_.get(d.projectId),aa)||"done"===(0,j.ng)(d)&&("killed"===d.status?!E&&!G:!G))continue;let b=a.get(d.projectId)??[];b.push(d),a.set(d.projectId,b)}return a},[b,_,aa,$,E,G]),ad=(a,b)=>{if(b)try{sessionStorage.setItem(`ao-session-nav:${b.id}`,JSON.stringify(b))}catch{}v.push(a),u?.()},ae=async a=>{if(window.confirm(`Remove project ${a.name} from AO? This clears its AO sessions/history and removes it from the portfolio, but keeps the repository folder on disk.`)){R(a.id);try{let b=await fetch(`/api/projects/${encodeURIComponent(a.id)}`,{method:"DELETE"}),c=await b.json().catch(()=>null);if(!b.ok)throw Error((c&&"object"==typeof c&&"error"in c&&"string"==typeof c.error?c.error:null)??"Failed to remove project.");T(b=>new Set(b).add(a.id)),D(b=>{let c=new Set(b);return c.delete(a.id),c}),N(null),e===a.id?v.push("/"):"refresh"in v&&"function"==typeof v.refresh&&v.refresh(),u?.()}catch(a){window.alert(a instanceof Error?a.message:"Failed to remove project.")}finally{R(null)}}};return s?(0,d.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:$.map((a,b)=>{let c=ac.get(a.id)??[],f=a.name.slice(0,2).toUpperCase();return(0,d.jsxs)("div",{className:"flex flex-col items-center gap-0.5 w-full px-1",children:[b>0&&(0,d.jsx)("div",{className:"project-sidebar__collapsed-divider","aria-hidden":"true"}),(0,d.jsx)("a",{href:(0,m.bn)(a.id),className:(0,i.cn)("project-sidebar__collapsed-icon",e===a.id&&"project-sidebar__collapsed-icon--active"),title:a.name,"aria-label":a.name,children:(0,d.jsx)("span",{className:"project-sidebar__collapsed-abbr",children:f})}),c.slice(0,5).map(b=>{let c=(0,j.ng)(b),e=b.branch??(0,l.Pn)(b),f=(b.branch&&(0,l.mC)(b.branch)||e).replace(/\s+/g,"").slice(0,3).toUpperCase(),g=o===b.id,h=(0,m.Nc)(a.id,b.id);return(0,d.jsxs)("a",{href:h,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ad(h,b))},className:(0,i.cn)("project-sidebar__collapsed-session-btn",g&&"project-sidebar__collapsed-session-btn--active"),"data-level":c,title:e,"aria-label":e,children:[(0,d.jsx)("span",{className:"project-sidebar__session-abbr-first",children:f[0]}),(0,d.jsx)("span",{className:"project-sidebar__session-abbr-rest",children:f.slice(1)})]},b.id)}),c.length>5&&(0,d.jsxs)("span",{className:"project-sidebar__collapsed-overflow",children:["+",c.length-5]})]},a.id)})}):(0,d.jsxs)("aside",{className:"project-sidebar flex h-full flex-col",children:[(0,d.jsxs)("div",{className:"project-sidebar__compact-hdr",children:[(0,d.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"}),(0,d.jsx)("button",{type:"button",className:"project-sidebar__add-btn","aria-label":"New project",onClick:()=>V(!0),children:(0,d.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),q&&b&&b.length>0?(0,d.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,d.jsx)("span",{children:"Failed to refresh \xb7 showing cached sessions"}),r?(0,d.jsx)("button",{type:"button",onClick:r,className:"font-medium text-[var(--color-link)] hover:underline",children:"Retry"}):null]}):null,(0,d.jsx)("div",{className:"project-sidebar__tree flex-1 overflow-y-auto overflow-x-hidden",children:$.map(a=>{let b=ac.get(a.id)??[],c=C.has(a.id),g=e===a.id,h=!!a.resolveError,k=(0,m.bn)(a.id),n=b.length>0,p=ab.get(a.id)??null;return(0,d.jsxs)("div",{className:"project-sidebar__project",children:[(0,d.jsxs)("div",{className:"project-sidebar__proj-row flex items-center",children:[h?(0,d.jsxs)("a",{href:k,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ad(k))},className:(0,i.cn)("project-sidebar__proj-toggle project-sidebar__proj-toggle--link project-sidebar__proj-toggle--degraded",g&&"project-sidebar__proj-toggle--active"),"aria-current":g?"page":void 0,children:[(0,d.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,d.jsx)("path",{d:"M12 9v4"}),(0,d.jsx)("path",{d:"M12 17h.01"}),(0,d.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,d.jsx)("span",{className:"project-sidebar__proj-name",children:a.name}),(0,d.jsx)("span",{className:"project-sidebar__proj-badge project-sidebar__proj-badge--degraded",children:"degraded"})]}):(0,d.jsxs)("button",{type:"button",onClick:()=>{var b;return b=a.id,void D(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:(0,i.cn)("project-sidebar__proj-toggle",g&&"project-sidebar__proj-toggle--active"),"aria-expanded":c,"aria-current":g?"page":void 0,children:[(0,d.jsx)("svg",{className:(0,i.cn)("project-sidebar__proj-chevron",c&&"project-sidebar__proj-chevron--open"),width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"m9 18 6-6-6-6"})}),(0,d.jsx)("span",{className:"project-sidebar__proj-name",children:a.name}),(0,d.jsx)("span",{className:(0,i.cn)("project-sidebar__proj-badge",n&&"project-sidebar__proj-badge--active"),children:b.length})]}),h?null:(0,d.jsx)(f(),{href:k,onClick:a=>{a.stopPropagation(),u?.()},className:"project-sidebar__proj-action","aria-label":`Open ${a.name} dashboard`,title:"Dashboard",children:(0,d.jsx)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})})}),!h&&p&&(0,d.jsx)(f(),{href:(0,m.Nc)(a.id,p.id),onClick:a=>{a.stopPropagation(),u?.()},className:"project-sidebar__proj-action","aria-label":`Open ${a.name} orchestrator`,title:"Orchestrator",children:(0,d.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,d.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,d.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"18",cy:"17",r:"2"})]})}),(0,d.jsxs)("div",{className:"project-sidebar__proj-menu",ref:M===a.id?Y:void 0,children:[(0,d.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),N(b=>b===a.id?null:a.id)},className:"project-sidebar__proj-action project-sidebar__proj-action--menu","aria-label":`Project actions for ${a.name}`,"aria-expanded":M===a.id,"aria-haspopup":"menu",title:"Project actions",children:(0,d.jsxs)("svg",{width:"12",height:"12",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"1.75"}),(0,d.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,d.jsx)("circle",{cx:"12",cy:"19",r:"1.75"})]})}),M===a.id?(0,d.jsxs)("div",{ref:Z,className:"project-sidebar__proj-menu-popover",role:"menu","aria-label":`${a.name} actions`,children:[p?(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{N(null),ad((0,m.Nc)(a.id,p.id))},children:"Open orchestrator"}):null,(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{N(null),P(a.id)},children:"Project settings"}),(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item project-sidebar__proj-menu-item--danger",role:"menuitem",onClick:()=>void ae(a),disabled:Q===a.id,children:Q===a.id?"Removing...":"Remove project"})]}):null]})]}),h?(0,d.jsx)("div",{className:"project-sidebar__degraded-note",children:"Config needs repair"}):null,!h&&c&&(0,d.jsx)("div",{className:"project-sidebar__sessions",children:x?(0,d.jsx)("div",{className:"space-y-2 px-3 py-2","aria-label":"Loading sessions",children:Array.from({length:3},(b,c)=>(0,d.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,d.jsx)("div",{className:"h-2 w-2 shrink-0 animate-pulse bg-[var(--color-border-strong)]"}),(0,d.jsx)("div",{className:"h-3 flex-1 animate-pulse bg-[var(--color-bg-primary)]"}),(0,d.jsx)("div",{className:"h-3 w-12 animate-pulse bg-[var(--color-bg-primary)]"})]},`${a.id}-loading-${c}`))}):b.length>0?b.map(b=>{let c=(0,j.ng)(b),e=o===b.id,f=b.branch??(0,l.Pn)(b),g=(0,m.Nc)(a.id,b.id);return(0,d.jsxs)("a",{href:g,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ad(g,b))},className:(0,i.cn)("project-sidebar__sess-row",e&&"project-sidebar__sess-row--active"),"aria-current":e?"page":void 0,"aria-label":`Open ${f}`,children:[(0,d.jsx)(z,{level:c}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("span",{className:(0,i.cn)("project-sidebar__sess-label",e&&"project-sidebar__sess-label--active"),children:f}),I?(0,d.jsxs)("div",{className:"project-sidebar__sess-meta",children:[(0,d.jsx)("span",{className:"project-sidebar__sess-id",children:b.id}),(0,d.jsx)("span",{className:"project-sidebar__sess-status",children:B[c]})]}):null]}),I?null:(0,d.jsx)("span",{className:"project-sidebar__sess-status project-sidebar__sess-status--inline",children:B[c]})]},b.id)}):q?(0,d.jsxs)("div",{className:"px-3 py-2",children:[(0,d.jsx)("div",{className:"project-sidebar__empty",children:"Failed to load sessions"}),(0,d.jsx)("button",{type:"button",className:"mt-2 text-xs font-medium text-[var(--color-link)] hover:underline",onClick:r,children:"Retry"})]}):(0,d.jsx)("div",{className:"project-sidebar__empty",children:"No sessions shown"})})]},a.id)})}),(0,d.jsx)("div",{className:"project-sidebar__footer",children:(0,d.jsxs)("div",{className:"flex items-center gap-1 border-t border-[var(--color-border-subtle)] px-2 py-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>F(!E),className:(0,i.cn)("project-sidebar__footer-btn",E&&"project-sidebar__footer-btn--active"),"aria-pressed":E,title:E?"Hide killed sessions":"Show killed sessions","aria-label":E?"Hide killed sessions":"Show killed sessions",children:(0,d.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.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,d.jsx)("circle",{cx:"9",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"}),(0,d.jsx)("circle",{cx:"15",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"})]})}),(0,d.jsx)("button",{type:"button",onClick:()=>H(!G),className:(0,i.cn)("project-sidebar__footer-btn",G&&"project-sidebar__footer-btn--active"),"aria-pressed":G,title:G?"Hide completed sessions":"Show completed sessions","aria-label":G?"Hide completed sessions":"Show completed sessions",children:(0,d.jsx)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M20 6 9 17l-5-5"})})}),(0,d.jsx)("div",{className:"flex-1"}),(0,d.jsxs)("div",{className:"project-sidebar__settings-wrap",ref:W,children:[(0,d.jsx)("button",{type:"button",onClick:()=>L(a=>!a),className:(0,i.cn)("project-sidebar__footer-btn",K&&"project-sidebar__footer-btn--active"),"aria-expanded":K,"aria-haspopup":"dialog",title:"Sidebar settings","aria-label":"Sidebar settings",children:(0,d.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,d.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"})]})}),K?(0,d.jsx)("div",{ref:X,className:"project-sidebar__settings-popover",role:"dialog","aria-label":"Sidebar settings",children:(0,d.jsxs)("label",{className:"project-sidebar__settings-row",children:[(0,d.jsx)("input",{type:"checkbox",checked:I,onChange:a=>J(a.target.checked)}),(0,d.jsx)("span",{children:"Show session ID"})]})}):null]}),(0,d.jsx)(n.U,{className:"project-sidebar__theme-toggle"})]})}),(0,d.jsx)(w,{open:U,onClose:()=>V(!1)}),(0,d.jsx)(y,{open:null!==O,projectId:O,onClose:()=>P(null)})]})}},37155:(a,b,c)=>{c.d(b,{CM:()=>d.CM,Kw:()=>k,N_:()=>d.N_,Ou:()=>i,QN:()=>g,U1:()=>d.U1,dG:()=>l,fZ:()=>e,nH:()=>m,ng:()=>o,of:()=>j,sZ:()=>f,wy:()=>n});var d=c(5241);function e(a){return a.mergeability.blockers.includes("API rate limited or unavailable")}function f(a){return!1===a.enriched}function g(a){return"open"===a.state&&a.mergeability.mergeable&&a.mergeability.ciPassing&&a.mergeability.approved&&a.mergeability.noConflicts}function h(a){return a.replace(/_/g," ")}function i(a){return a.lifecycle?.session?.label??h(a.status)}function j(a){return a.lifecycle?.pr?.label?a.lifecycle.pr.label:a.pr?.state?h(a.pr.state):"not created"}function k(a){return a.lifecycle?.runtime?.label??"unknown"}function l(a){return a.lifecycle?"done"===a.lifecycle.sessionState||"terminated"===a.lifecycle.sessionState||"merged"===a.lifecycle.prState:"merged"===a.status||"killed"===a.status||"cleanup"===a.status||"done"===a.status||"terminated"===a.status||a.pr?.state==="merged"}function m(a){return a.lifecycle?l(a)||"missing"===a.lifecycle.runtimeState||"exited"===a.lifecycle.runtimeState:d.CM.has(a.status)||null!==a.activity&&d.Rt.has(a.activity)}function n(a){return a.lifecycle?("done"===a.lifecycle.sessionState||"terminated"===a.lifecycle.sessionState||"missing"===a.lifecycle.runtimeState||"exited"===a.lifecycle.runtimeState)&&"merged"!==a.lifecycle.prState&&"merged"!==a.status:!!m(a)&&a.pr?.state!=="merged"&&"merged"!==a.status}function o(a,b="detailed"){let c=function(a){if(l(a))return"done";if(a.lifecycle?.prReason==="merge_ready"||a.lifecycle?.prReason==="approved"||"mergeable"===a.status||"approved"===a.status||a.pr&&!f(a.pr)&&a.pr.mergeability.mergeable)return"merge";if(a.lifecycle?.sessionState==="detecting"||a.lifecycle?.sessionState==="needs_input"||a.lifecycle?.sessionState==="stuck"||a.status===d.SB.ERRORED||a.status===d.SB.NEEDS_INPUT||a.status===d.SB.STUCK||a.activity===d.u3.WAITING_INPUT||a.activity===d.u3.BLOCKED||a.activity===d.u3.EXITED)return"respond";if(a.lifecycle?.prReason==="ci_failing"||a.lifecycle?.prReason==="changes_requested"||"ci_failed"===a.status||"changes_requested"===a.status)return"review";if(a.pr&&!e(a.pr)&&!f(a.pr)){let b=a.pr;if(b.ciStatus===d.U1.FAILING||"changes_requested"===b.reviewDecision||!b.mergeability.noConflicts)return"review"}if(a.lifecycle?.prReason==="review_pending"||a.lifecycle?.prReason==="closed_unmerged"||"review_pending"===a.status)return"pending";if(a.pr&&!e(a.pr)&&!f(a.pr)){let b=a.pr;if(!b.isDraft&&b.unresolvedThreads>0||!b.isDraft&&("pending"===b.reviewDecision||"none"===b.reviewDecision))return"pending"}return"working"}(a);return"simple"===b&&("respond"===c||"review"===c)?"action":c}},52754:(a,b,c)=>{c.d(b,{D:()=>e,U:()=>f});var d=c(81115);let e=767;function f(a){let[b,c]=(0,d.useState)(!1);return b}},61875:(a,b,c)=>{function d(a,b){let c=a.replace(/^(?:feat|fix|chore|refactor|docs|test|ci|session|orchestrator|release|hotfix|feature|bugfix|build|wip|improvement)\//,"");return b&&c===b?"":c.replace(/[-_]/g," ").replace(/\b\w/g,a=>a.toUpperCase()).trim()}function e(a){if(a.pr?.title)return a.pr.title;if(a.issueTitle)return a.issueTitle;if(a.displayName)return a.displayName;if(a.userPrompt)return a.userPrompt;if(a.branch){let b=d(a.branch,a.id);if(b)return b}let b=a.metadata.pinnedSummary;return b||(a.summary&&!a.summaryIsFallback||a.summary?a.summary:a.status)}function f(a){let b=Date.now()-a;if(b<6e4)return"just now";let c=Math.floor(b/6e4);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);if(e<7)return`${e}d ago`;let f=Math.floor(e/7);return`${f}w ago`}c.d(b,{Pn:()=>e,fw:()=>f,mC:()=>d})},71276:(a,b,c)=>{c.d(b,{d:()=>j,t:()=>i});var d=c(33666),e=c(81115),f=c(85489);function g(a,b){return"SHOW"===b.type?{message:b.message,variant:b.variant,key:b.key}:null}let h=(0,e.createContext)(null);function i({children:a}){let[b,c]=(0,e.useReducer)(g,null),i=(0,e.useRef)(null),j=(0,e.useRef)(0),k=(0,e.useCallback)((a,b="info")=>{null!==i.current&&clearTimeout(i.current),j.current+=1,c({type:"SHOW",message:a,variant:b,key:j.current}),i.current=setTimeout(()=>{c({type:"HIDE"}),i.current=null},3e3)},[]);return(0,d.jsxs)(h.Provider,{value:{showToast:k},children:[a,(0,d.jsx)("div",{className:"toast-container",role:"status","aria-live":"polite","aria-atomic":"true",children:b&&(0,d.jsxs)("div",{className:(0,f.cn)("toast","success"===b.variant&&"toast--success","error"===b.variant&&"toast--error","info"===b.variant&&"toast--info"),children:[(0,d.jsx)("span",{className:"toast__icon","aria-hidden":"true"}),(0,d.jsx)("span",{className:"toast__message",children:b.message})]},b.key)})]})}function j(){let a=(0,e.useContext)(h);if(!a)throw Error("useToast must be used within a ToastProvider");return a}},74566:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(33666),e=c(93463),f=c(81115);function g({className:a,label:b}){let{resolvedTheme:c,setTheme:g}=(0,e.D)(),[h,i]=(0,f.useState)(!1);if(!h)return(0,d.jsx)("div",{className:a??"h-9 w-9"});let j="dark"===c;return(0,d.jsxs)("button",{onClick:()=>g(j?"light":"dark"),className:a??"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 ${j?"light":"dark"} mode`,title:`Switch to ${j?"light":"dark"} mode`,children:[j?(0,d.jsxs)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,d.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,d.jsx)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"})}),b?(0,d.jsx)("span",{children:b}):null]})}},81407:(a,b,c)=>{c.d(b,{ProjectSettingsForm:()=>l});var d=c(33666),e=c(81115),f=c(50436),g=c(71276);let h="These describe which repo this is. Change them via `ao project relink`.";function i({projectId:a,initialValues:b}){let c=(0,f.useRouter)(),{showToast:h}=(0,g.d)(),[i,l]=(0,e.useState)(b.agent),[m,n]=(0,e.useState)(b.runtime),[o,p]=(0,e.useState)(b.trackerPlugin),[q,r]=(0,e.useState)(b.scmPlugin),[s,t]=(0,e.useState)(b.reactions),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),A=(0,e.useMemo)(()=>({agent:i.trim()||null,runtime:m.trim()||null,tracker:o.trim()?{plugin:o.trim()}:null,scm:q.trim()?{plugin:q.trim()}:null,reactions:s}),[i,m,o,q,s]),B=async()=>{let b;x(null),z(null);try{let a=s.trim();b=a?JSON.parse(a):void 0}catch{x("Reactions must be valid JSON.");return}v(!0);try{let d=await fetch(`/api/projects/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:A.agent,runtime:A.runtime,tracker:A.tracker,scm:A.scm,reactions:b??null})}),e=await d.json().catch(()=>null);if(!d.ok){let a=e?.error??"Failed to save project settings.";400===d.status?x(a):z(a);return}h("Project settings updated.","success"),c.refresh()}catch{z("Network error while saving project settings.")}finally{v(!1)}};return(0,d.jsxs)("div",{className:"project-settings-form",children:[(0,d.jsxs)("section",{className:"project-settings-form__section",children:[(0,d.jsxs)("div",{className:"project-settings-form__section-header",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"project-settings-form__eyebrow",children:"Behavior"}),(0,d.jsx)("h2",{className:"project-settings-form__section-title",children:"Runtime configuration"}),(0,d.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,d.jsx)("button",{type:"button",onClick:()=>void B(),disabled:u,className:"project-settings-form__save",children:u?"Saving...":"Save changes"})]}),(0,d.jsxs)("div",{className:"project-settings-form__grid",children:[(0,d.jsx)(j,{id:"agent",label:"Agent",value:i,onChange:l,placeholder:"claude-code"}),(0,d.jsx)(j,{id:"runtime",label:"Runtime",value:m,onChange:n,placeholder:"tmux"}),(0,d.jsx)(j,{id:"tracker-plugin",label:"Tracker plugin",value:o,onChange:p,placeholder:"github"}),(0,d.jsx)(j,{id:"scm-plugin",label:"SCM plugin",value:q,onChange:r,placeholder:"github"})]}),(0,d.jsxs)("div",{className:"project-settings-form__reactions",children:[(0,d.jsx)("label",{htmlFor:"reactions",className:"project-settings-form__label",children:"Reactions"}),(0,d.jsx)("p",{className:"project-settings-form__hint",children:"JSON object keyed by reaction name. This PATCH only sends behavior fields."}),(0,d.jsx)("textarea",{id:"reactions",value:s,onChange:a=>t(a.target.value),spellCheck:!1,rows:12,className:"project-settings-form__textarea project-settings-form__textarea--mono"})]}),w?(0,d.jsx)("div",{role:"alert",className:"project-settings-form__alert project-settings-form__alert--error",children:w}):null,y?(0,d.jsxs)("div",{className:"project-settings-form__alert project-settings-form__alert--surface",children:[(0,d.jsx)("p",{className:"project-settings-form__alert-copy",children:y}),(0,d.jsx)("button",{type:"button",onClick:()=>void B(),className:"project-settings-form__retry",children:"Retry"})]}):null]}),(0,d.jsxs)("section",{className:"project-settings-form__section",children:[(0,d.jsx)("p",{className:"project-settings-form__eyebrow",children:"Identity"}),(0,d.jsx)("h2",{className:"project-settings-form__section-title",children:"Repository identity"}),(0,d.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,d.jsxs)("div",{className:"project-settings-form__grid",children:[(0,d.jsx)(k,{id:"identity-project-id",label:"Project ID",value:b.identity.projectId}),(0,d.jsx)(k,{id:"identity-path",label:"Path",value:b.identity.path}),(0,d.jsx)(k,{id:"identity-repo",label:"Repo",value:b.identity.repo}),(0,d.jsx)(k,{id:"identity-default-branch",label:"Default branch",value:b.identity.defaultBranch})]})]})]})}function j({id:a,label:b,value:c,onChange:e,placeholder:f}){return(0,d.jsxs)("label",{htmlFor:a,className:"project-settings-form__field",children:[(0,d.jsx)("span",{className:"project-settings-form__label",children:b}),(0,d.jsx)("input",{id:a,value:c,onChange:a=>e(a.target.value),placeholder:f,className:"project-settings-form__input"})]})}function k({id:a,label:b,value:c}){return(0,d.jsxs)("label",{htmlFor:a,className:"project-settings-form__field",children:[(0,d.jsx)("span",{className:"project-settings-form__label",children:b}),(0,d.jsx)("input",{id:a,value:c,disabled:!0,readOnly:!0,title:h,"aria-describedby":`${a}-tooltip`,className:"project-settings-form__input project-settings-form__input--readonly"}),(0,d.jsx)("span",{id:`${a}-tooltip`,className:"project-settings-form__hint",children:h})]})}function l(a){return(0,d.jsx)(g.t,{children:(0,d.jsx)(i,{...a})})}},85489:(a,b,c)=>{c.d(b,{cn:()=>d});function d(...a){return a.filter(Boolean).join(" ")}},88950:(a,b,c)=>{function d(a){return`/projects/${encodeURIComponent(a)}`}function e(a,b){return`${d(a)}/sessions/${encodeURIComponent(b)}`}function f(a,b,c){return`${e(a,b)}${c}`}c.d(b,{$l:()=>f,Nc:()=>e,bn:()=>d})}};
|
|
@@ -6,4 +6,4 @@ Description: ${v(c,7500)}
|
|
|
6
6
|
|
|
7
7
|
Resolve the comment at ${a.url} after fixing it.`;return v(d,9500)}(b),e=await fetch(`/api/sessions/${encodeURIComponent(a)}/message`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:d})});if(!e.ok)throw Error(`HTTP ${e.status}`);c()}catch(a){console.error("Failed to send message to agent:",a),d()}}function x({zones:a}){let b=[{value:a.merge,label:"merge",toneClass:"topbar-zone-pill--merge"},{value:a.respond,label:"respond",toneClass:"topbar-zone-pill--respond"},{value:a.review,label:"review",toneClass:"topbar-zone-pill--review"},{value:a.working,label:"working",toneClass:"topbar-zone-pill--working"},{value:a.pending,label:"pending",toneClass:"topbar-zone-pill--pending"},{value:a.done,label:"done",toneClass:"topbar-zone-pill--done"}].filter(a=>a.value>0);return 0===b.length?null:(0,d.jsx)(d.Fragment,{children:b.map(a=>(0,d.jsxs)("span",{className:(0,p.cn)("topbar-zone-pill",a.toneClass),children:[(0,d.jsx)("span",{className:"topbar-zone-pill__value",children:a.value}),(0,d.jsx)("span",{className:"topbar-zone-pill__label",children:a.label})]},a.label))})}function y({session:a,isOrchestrator:b,isMobile:c,terminalEnded:f,isRestorable:h,activity:j,headline:k,projects:l,orchestratorHref:m,orchestratorZones:n,onToggleSidebar:o,onRestore:q,onKill:r}){let s=a.pr,t=!!s&&(0,i.QN)(s),[v,y]=(0,e.useState)(!1),z=(0,e.useRef)(null),A=l.find(b=>b.id===a.projectId)?.name??a.projectId,B="agent orchestrator"!==A.trim().toLowerCase();return(0,d.jsxs)("header",{className:"dashboard-app-header",children:[l.length>0?(0,d.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:o,"aria-label":"Toggle sidebar",children:c?(0,d.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,d.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,d.jsx)("path",{d:"M9 3v18"})]})}):null,(0,d.jsx)("div",{className:"dashboard-app-header__brand dashboard-app-header__brand--hide-mobile",children:(0,d.jsx)("span",{children:"Agent Orchestrator"})}),B&&(0,d.jsx)("span",{className:"dashboard-app-header__sep topbar-desktop-only","aria-hidden":"true"}),(0,d.jsxs)("div",{className:"topbar-project-pills-group",children:[(0,d.jsxs)("div",{className:"topbar-project-line",children:[B&&(0,d.jsx)("span",{className:"dashboard-app-header__project",children:A}),(0,d.jsx)("span",{className:"dashboard-app-header__session-id topbar-mobile-only",children:a.id}),b&&(0,d.jsx)("span",{className:"session-detail-mode-badge",children:"orchestrator"})]}),(0,d.jsxs)("div",{className:"topbar-session-pills",children:[(0,d.jsxs)("div",{className:(0,p.cn)("topbar-status-pill",`topbar-status-pill--${j.label.toLowerCase().replace(/\s+/g,"-")}`),children:[(0,d.jsx)("span",{className:"topbar-status-pill__dot",style:{background:j.color}}),(0,d.jsx)("span",{className:"topbar-status-pill__label",children:j.label})]}),a.branch?s?(0,d.jsx)("a",{href:function(a){let b="https://github.com";try{b=new URL(a.url).origin}catch{}return`${b}/${a.owner}/${a.repo}/tree/${a.branch}`}(s),target:"_blank",rel:"noopener noreferrer",className:"topbar-branch-pill topbar-branch-pill--link",children:a.branch}):(0,d.jsx)("span",{className:"topbar-branch-pill",children:a.branch}):null,b&&n?(0,d.jsx)(x,{zones:n}):null]})]}),(0,d.jsx)("span",{className:"dashboard-app-header__sep topbar-desktop-only","aria-hidden":"true"}),(0,d.jsx)("span",{className:"dashboard-app-header__session-title topbar-desktop-only",children:k}),(0,d.jsx)("span",{className:"dashboard-app-header__session-id topbar-desktop-only",children:a.id}),(0,d.jsx)("div",{className:"dashboard-app-header__spacer"}),(0,d.jsxs)("div",{className:"dashboard-app-header__actions",children:[s?(0,d.jsxs)("div",{className:"topbar-pr-btn-wrap",ref:z,children:[(0,d.jsxs)("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:(0,p.cn)("dashboard-app-btn topbar-pr-btn",v&&"topbar-pr-btn--open"),onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),y(a=>!a))},"aria-expanded":v,"aria-label":`PR #${s.number}`,children:[(0,d.jsx)("span",{className:(0,p.cn)("topbar-pr-dot",t?"topbar-pr-dot--green":s.ciStatus===g.U1.FAILING||"changes_requested"===s.reviewDecision?"topbar-pr-dot--red":"topbar-pr-dot--amber")}),"PR #",s.number,(0,d.jsx)("svg",{width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:v?"M18 15l-6-6-6 6":"M6 9l6 6 6-6"})})]}),v&&(0,d.jsx)("div",{className:"topbar-pr-popover",children:(0,d.jsx)(u,{pr:s,metadata:a.metadata,lifecyclePrReason:a.lifecycle?.prReason??void 0,onAskAgentToFix:(b,c,d)=>w(a.id,b,c,d)})})]}):null,h?(0,d.jsxs)("button",{type:"button",className:"dashboard-app-btn dashboard-app-btn--restore",onClick:q,children:[(0,d.jsxs)("svg",{className:"topbar-action-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,d.jsx)("path",{d:"M20 11a8 8 0 0 0-14.9-3.98"}),(0,d.jsx)("path",{d:"M4 5v4h4"}),(0,d.jsx)("path",{d:"M4 13a8 8 0 0 0 14.9 3.98"}),(0,d.jsx)("path",{d:"M20 19v-4h-4"})]}),(0,d.jsx)("span",{className:"topbar-btn-label",children:"Restore"})]}):b||f?null:(0,d.jsxs)("button",{type:"button",className:"dashboard-app-btn dashboard-app-btn--danger",onClick:r,children:[(0,d.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.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,d.jsx)("span",{className:"topbar-btn-label",children:"Kill"})]}),m?(0,d.jsxs)("a",{href:m,className:"dashboard-app-btn dashboard-app-btn--amber topbar-desktop-only","aria-label":"Orchestrator",children:[(0,d.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,d.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,d.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),(0,d.jsx)("span",{className:"topbar-btn-label",children:"Orchestrator"})]}):null]})]})}function z({session:a,headline:b,pr:c,dashboardHref:e}){let f=a.lifecycle?.runtime.reasonLabel?a.lifecycle.runtime.reasonLabel:"killed"===a.status?"Manually stopped":"terminated"===a.status?"Runtime unavailable":"done"===a.status||"merged"===a.status?"Work completed":"Terminal ended",g=function(a,b){let c=a.metadata.pinnedSummary;return c||(a.summary&&!a.summaryIsFallback?a.summary:a.lifecycle?.summary?a.lifecycle.summary:a.userPrompt?a.userPrompt:a.summary?a.summary:b)}(a,b),h=a.lifecycle?.session.terminatedAt??a.lifecycle?.session.completedAt??a.lifecycle?.session.lastTransitionAt??a.lastActivityAt,i=a.lifecycle?.runtime.label??"Unavailable",j=c?"merged"===c.state?"Merged":"closed"===c.state?"Closed":c.mergeability.mergeable?"Open, merge-ready":"Open":"No PR";return(0,d.jsx)("section",{className:"session-ended-summary","aria-label":"Session ended summary",children:(0,d.jsxs)("div",{className:"session-ended-summary__panel",children:[(0,d.jsx)("div",{className:"session-ended-summary__eyebrow",children:"Terminal ended"}),(0,d.jsxs)("div",{className:"session-ended-summary__header",children:[(0,d.jsx)("div",{className:"session-ended-summary__icon","aria-hidden":"true",children:(0,d.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"1.8",viewBox:"0 0 24 24",children:[(0,d.jsx)("rect",{x:"3",y:"5",width:"18",height:"14",rx:"3"}),(0,d.jsx)("path",{d:"M7 10l3 2-3 2"}),(0,d.jsx)("path",{d:"M13 15h4"})]})}),(0,d.jsxs)("div",{className:"session-ended-summary__title-group",children:[(0,d.jsx)("h2",{className:"session-ended-summary__title",children:b}),(0,d.jsxs)("p",{className:"session-ended-summary__subtitle",children:[f,". The live terminal is gone, but the session context is still available."]})]})]}),(0,d.jsxs)("div",{className:"session-ended-summary__body",children:[(0,d.jsxs)("div",{className:"session-ended-summary__section",children:[(0,d.jsx)("div",{className:"session-ended-summary__label",children:"What happened"}),(0,d.jsx)("p",{className:"session-ended-summary__copy",children:g})]}),(0,d.jsxs)("div",{className:"session-ended-summary__facts","aria-label":"Session facts",children:[(0,d.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,d.jsx)("span",{children:"Session"}),(0,d.jsx)("strong",{children:a.id})]}),(0,d.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,d.jsx)("span",{children:"Ended"}),(0,d.jsx)("strong",{children:function(a){if(!a)return"Unknown";let b=new Date(a).getTime();return Number.isFinite(b)?(0,k.fw)(b):"Unknown"}(h)})]}),(0,d.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,d.jsx)("span",{children:"Runtime"}),(0,d.jsx)("strong",{children:i})]}),(0,d.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,d.jsx)("span",{children:"PR"}),(0,d.jsx)("strong",{children:j})]})]}),(0,d.jsxs)("div",{className:"session-ended-summary__links",children:[c?(0,d.jsxs)("a",{href:c.url,target:"_blank",rel:"noopener noreferrer",className:"session-ended-summary__primary",children:["Open PR #",c.number]}):null,(0,d.jsx)("a",{href:e,className:"session-ended-summary__secondary",children:"Back to dashboard"})]}),a.lifecycle?.evidence?(0,d.jsxs)("div",{className:"session-ended-summary__evidence",children:[(0,d.jsx)("span",{children:"Evidence"}),(0,d.jsx)("code",{children:a.lifecycle.evidence})]}):null]})]})})}let A=(0,j.default)(async()=>{},{loadableGenerated:{modules:["components/SessionDetail.tsx -> ./DirectTerminal"]},ssr:!1,loading:()=>(0,d.jsx)("div",{className:"h-full w-full animate-pulse rounded bg-[var(--color-bg-primary)]"})});function B({session:a,isOrchestrator:b=!1,orchestratorZones:c,projectOrchestratorId:g=null,projects:j=[],sidebarSessions:p=[],sidebarOrchestrators:r,sidebarLoading:s=!1,sidebarError:t=!1,onRetrySidebar:u}){let v=(0,f.useRouter)(),w=(0,f.useSearchParams)(),x=(0,h.U)(h.D),B="true"===w.get("fullscreen"),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)(!1),I=a.pr,J=i.CM.has(a.status),K=J&&!i.N_.has(a.status),L=(a.activity&&q[a.activity])??{label:a.activity??"unknown",color:"var(--color-text-muted)"},M=(0,k.Pn)(a),N=b?"orchestrator":"agent",O="opencode"===a.metadata.agent,P="string"==typeof a.metadata.opencodeSessionId&&a.metadata.opencodeSessionId.length>0?a.metadata.opencodeSessionId:void 0,Q=P?`/exit
|
|
8
8
|
opencode --session ${P}
|
|
9
|
-
`:void 0,R=a.projectId?(0,m.bn)(a.projectId):"/",S=(0,e.useCallback)(async()=>{try{let b=await fetch(`/api/sessions/${encodeURIComponent(a.id)}/kill`,{method:"POST"});if(!b.ok)throw Error(`HTTP ${b.status}`);if(g)return void v.push((0,m.Nc)(a.projectId,g));v.push(R)}catch(a){console.error("Failed to kill session:",a)}},[R,g,v,a.id,a.projectId]),T=(0,e.useCallback)(async()=>{try{let b=await fetch(`/api/sessions/${encodeURIComponent(a.id)}/restore`,{method:"POST"});if(!b.ok){let a=await b.text().catch(()=>"");throw Error(a||`HTTP ${b.status}`)}window.location.reload()}catch(a){console.error("Failed to restore session:",a)}},[a.id]),U=(0,e.useMemo)(()=>b?(0,m.Nc)(a.projectId,a.id):g?(0,m.Nc)(a.projectId,g):null,[b,g,a.id,a.projectId]),V=(0,e.useCallback)(()=>{x?F(a=>!a):D(a=>!a)},[x]);return(0,d.jsx)(l.I.Provider,{value:{onToggleSidebar:V,mobileSidebarOpen:E},children:(0,d.jsxs)("div",{className:"dashboard-app-shell",children:[(0,d.jsx)(y,{session:a,isOrchestrator:b,isMobile:x,terminalEnded:J,isRestorable:K,activity:L,headline:M,projects:j,orchestratorHref:U,orchestratorZones:c,onToggleSidebar:V,onRestore:T,onKill:S}),(0,d.jsxs)("div",{className:`dashboard-shell dashboard-shell--desktop${C?" dashboard-shell--sidebar-collapsed":""}`,children:[j.length>0?(0,d.jsx)("div",{className:`sidebar-wrapper${E?" sidebar-wrapper--mobile-open":""}`,children:(0,d.jsx)(n.u,{projects:j,sessions:p,orchestrators:r,loading:s,error:t,onRetry:u,activeProjectId:a.projectId,activeSessionId:a.id,collapsed:C,onToggleCollapsed:()=>D(a=>!a),onMobileClose:()=>F(!1)})}):null,E&&(0,d.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>F(!1)}),(0,d.jsx)("div",{className:"dashboard-main dashboard-main--desktop",children:(0,d.jsx)("main",{className:"session-detail-page flex-1 min-h-0 flex flex-col bg-[var(--color-bg-base)]",children:(0,d.jsx)("div",{className:"flex-1 min-h-0 flex flex-col",children:G?J?(0,d.jsx)(z,{session:a,headline:M,pr:I,dashboardHref:R}):(0,d.jsx)(A,{sessionId:a.id,projectId:a.projectId,tmuxName:a.metadata?.tmuxName,startFullscreen:B,variant:N,appearance:"dark",height:"100%",isOpenCodeSession:O,reloadCommand:O?Q:void 0,autoFocus:!0}):(0,d.jsx)("div",{className:"session-detail-terminal-placeholder h-full"})})})})]}),(0,d.jsx)(o.X,{ariaLabel:"Session navigation",activeTab:b?"orchestrator":void 0,dashboardHref:R,prsHref:a.projectId?`/?project=${encodeURIComponent(a.projectId)}&tab=prs`:"/",showOrchestrator:!!U,orchestratorHref:U})]})})}var C=c(23041),D=c(58976),E=c(20902);let F=null,G=null,H=new Set(Object.values(g.SB)),I=new Set(Object.values(g.u3)),J=new Set;function K(a){if(a instanceof DOMException)return"AbortError"===a.name;if(a instanceof Error){let b=a.message.toLowerCase();return b.includes("aborted")||b.includes("aborterror")}return!1}function L({message:a}){return(0,d.jsx)("div",{className:"project-sidebar h-full",children:(0,d.jsxs)("div",{className:"space-y-3 px-3 py-4",children:[(0,d.jsx)("div",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--color-text-tertiary)]",children:"Projects"}),(0,d.jsx)("div",{className:"space-y-2",children:Array.from({length:3},(a,b)=>(0,d.jsx)("div",{className:"h-10 animate-pulse border border-[var(--color-border-subtle)] bg-[var(--color-bg-surface)]"},`sidebar-placeholder-${b}`))}),(0,d.jsx)("div",{className:"pt-2 text-[12px] text-[var(--color-text-tertiary)]",children:a})]})})}function M({projects:a,projectsLoading:b,sidebarSessions:c,sidebarOrchestrators:f,sidebarLoading:g,sidebarError:i,onRetrySidebar:j,activeProjectId:k,activeSessionId:l,children:m}){let o=(0,h.U)(h.D),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),t=(0,e.useCallback)(()=>{if(o)return void s(a=>!a);q(a=>!a)},[o]);return(0,d.jsxs)("div",{className:"dashboard-app-shell",children:[(0,d.jsxs)("header",{className:"dashboard-app-header",children:[(0,d.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:t,"aria-label":"Toggle sidebar",children:o?(0,d.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,d.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,d.jsx)("path",{d:"M9 3v18"})]})}),(0,d.jsx)("div",{className:"dashboard-app-header__brand",children:(0,d.jsx)("span",{children:"Agent Orchestrator"})}),(0,d.jsx)("div",{className:"dashboard-app-header__spacer"})]}),(0,d.jsxs)("div",{className:`dashboard-shell dashboard-shell--desktop${p?" dashboard-shell--sidebar-collapsed":""}`,children:[(0,d.jsx)("div",{className:`sidebar-wrapper${r?" sidebar-wrapper--mobile-open":""}`,children:a.length>0?(0,d.jsx)(n.u,{projects:a,sessions:c,orchestrators:f,loading:g,error:i,onRetry:j,activeProjectId:k,activeSessionId:l,collapsed:p,onToggleCollapsed:()=>q(a=>!a),onMobileClose:()=>s(!1)}):(0,d.jsx)(L,{message:b?"Loading projects...":"Projects unavailable."})}),r&&(0,d.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>s(!1)}),(0,d.jsx)("div",{className:"dashboard-main dashboard-main--desktop",children:(0,d.jsx)("main",{className:"session-detail-page flex-1 min-h-0 flex flex-col bg-[var(--color-bg-base)]",children:(0,d.jsx)("div",{className:"flex-1 min-h-0",children:m})})})]})]})}function N(){let a=(0,f.useParams)();(0,f.usePathname)(),(0,f.useRouter)();let b=a.id,c="string"==typeof a.projectId?a.projectId:Array.isArray(a.projectId)?a.projectId[0]:null;(0,D.eT)();let h=(()=>{if("undefined"==typeof sessionStorage)return null;try{let a=sessionStorage.getItem(`ao-session-nav:${b}`);if(a)return sessionStorage.removeItem(`ao-session-nav:${b}`),JSON.parse(a)}catch{}return null})(),[j,k]=(0,e.useState)(h),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(void 0),[p,q]=(0,e.useState)([]),[r,s]=(0,e.useState)(null===F),[t,u]=(0,e.useState)(()=>G),[v,w]=(0,e.useState)(void 0),[x,y]=(0,e.useState)(null===h),[z,A]=(0,e.useState)(null),[L,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(!1),[Q,R]=(0,e.useState)(new Map);j?.projectId;let S=[...Q.values()],T=!!j&&(0,g.tT)(j,Q.get(j.projectId),S),U=(0,e.useRef)(null),V=(0,e.useRef)(!1),W=(0,e.useRef)(null),X=(0,e.useRef)(new Map),Y=(0,e.useRef)(null!==h),Z=(0,e.useRef)(null),$=(0,e.useRef)(!1),_=(0,e.useRef)(!1),aa=(0,e.useRef)(!1),ab=(0,e.useRef)(null),ac=(0,e.useRef)(null),ad=(0,e.useRef)(null),ae=(0,e.useRef)(!1),af=(0,e.useCallback)(async()=>{F&&(q(F),R(new Map(F.map(a=>[a.id,a.sessionPrefix??a.id]))),s(!1));try{var a,b;let c=await (0,E.u)("/api/projects",{timeoutMs:5e3,timeoutMessage:"Projects request timed out after 5000ms"});if(!c?.projects)return;a=F,b=c.projects,a&&a.length===b.length&&a.every((a,c)=>{let d=b[c];return JSON.stringify(a)===JSON.stringify(d)})||(F=c.projects,q(c.projects),R(new Map(c.projects.map(a=>[a.id,a.sessionPrefix??a.id]))))}catch(a){console.error("Failed to fetch projects:",a)}finally{s(!1)}},[]);var ag=b;let ah=(0,D.eT)(),ai=ah?.sessions.find(a=>a.id===ag);(0,e.useMemo)(()=>ai?{activity:ai.activity??null}:null,[ai]);let aj=(0,e.useCallback)(async()=>{if($.current)return;$.current=!0;let a=new AbortController;ab.current=a;try{let c=await (0,E.u)(`/api/sessions/${encodeURIComponent(b)}`,{signal:a.signal,timeoutMs:8e3,timeoutMessage:"Session request timed out after 8000ms"});k(c),A(null),N(!1),Y.current=!0}catch(c){if(ae.current||a.signal.aborted||K(c))return;let b=(c instanceof Error?c.message:"Failed to load session").toLowerCase();if(b.includes("session not found")||b.includes("http 404")){Y.current||N(!0),y(!1);return}console.error("Failed to fetch session:",c),Y.current||A(c instanceof Error?c:Error("Failed to load session"))}finally{y(!1),$.current=!1,ab.current===a&&(ab.current=null)}},[b]);(0,e.useCallback)(async()=>{if(_.current)return;let a=U.current;if(!a)return;let b=V.current,c=`${a}:${b?"orchestrator":"worker"}`;if(!b&&W.current===c)return;_.current=!0;let d=new AbortController;ac.current=d;try{let e=b?`/api/sessions?project=${encodeURIComponent(a)}&fresh=true`:`/api/sessions?project=${encodeURIComponent(a)}&orchestratorOnly=true&fresh=true`,f=await (0,E.u)(e,{signal:d.signal,timeoutMs:5e3,timeoutMessage:"Project sessions request timed out after 5000ms"}),h=f.sessions??[],j=f.orchestratorId??f.orchestrators?.find(b=>b.projectId===a)?.id??null;if(o(a=>a===j?a:j),!b){W.current=c;return}let k={merge:0,respond:0,review:0,pending:0,working:0,done:0},l=[...X.current.values()];for(let a of h)if(!(0,g.tT)(a,X.current.get(a.projectId),l)){let b=(0,i.ng)(a);if("action"===b)continue;k[b]++}m(k)}catch(a){if(ae.current||d.signal.aborted||K(a))return;console.error("Failed to fetch project sessions:",a)}finally{_.current=!1,ac.current===d&&(ac.current=null)}},[]);let ak=(0,e.useCallback)(async()=>{if(aa.current)return;aa.current=!0;let a=new AbortController;ad.current=a;try{let b=await (0,E.u)("/api/sessions?fresh=true",{signal:a.signal,timeoutMs:5e3,timeoutMessage:"Sidebar sessions request timed out after 5000ms"}),c=b?.sessions??[],d=function(a,b){if(!a||0===b.length)return a;let c=new Map(b.map(a=>[a.id,a])),d=!1,e=a.map(a=>{var b,e;let f=c.get(a.id);if(!f)return a;if(b=f.status,!H.has(b)){let b=`status:${f.status}`;return J.has(b)||(J.add(b),console.warn("Ignoring mux session patch with unknown status",{sessionId:f.id,status:f.status})),a}if(null!==f.activity&&(e=f.activity,!I.has(e))){let b=`activity:${f.activity}`;return J.has(b)||(J.add(b),console.warn("Ignoring mux session patch with unknown activity",{sessionId:f.id,activity:f.activity})),a}return a.status===f.status&&a.activity===f.activity&&a.lastActivityAt===f.lastActivityAt?a:(d=!0,{...a,status:f.status,activity:f.activity,lastActivityAt:f.lastActivityAt})});return d?e:a}(c,Z.current??[])??c;G=d,w(b?.orchestrators),P(!1),u(a=>a&&a.length===d.length&&a.every((a,b)=>{let c=d[b];return JSON.stringify(a)===JSON.stringify(c)})?a:d)}catch(b){if(ae.current||a.signal.aborted||K(b))return;console.error("Failed to fetch sidebar sessions:",b),P(!0),u(a=>null===a?[]:a)}finally{aa.current=!1,ad.current===a&&(ad.current=null)}},[]);return x?(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:c??void 0,activeSessionId:b,children:(0,d.jsx)("div",{className:"flex h-full min-h-screen items-center justify-center bg-[var(--color-bg-base)]",children:(0,d.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,d.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,d.jsx)("path",{d:"M12 3a9 9 0 1 0 9 9"})}),(0,d.jsx)("div",{className:"text-[13px] text-[var(--color-text-tertiary)]",children:"Loading session…"})]})})}):L?(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:c??void 0,activeSessionId:b,children:(0,d.jsx)(C.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:c?`/projects/${c}`:"/"},secondaryAction:{label:"Retry",onClick:()=>void aj()},compact:!0,chrome:"card"})}):z?(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:j?.projectId??c??void 0,activeSessionId:b,children:(0,d.jsx)(C.ErrorDisplay,{title:"Failed to load session",message:function(a){let b=a.message.toLowerCase();return b.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.":b.includes("network")?"The session request failed before the dashboard got a response. Check the local server connection and try again.":b.includes("404")?"This session is no longer available. It may have been removed while the page was open.":b.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."}(z),tone:"error",primaryAction:{label:"Try again",onClick:()=>{A(null),N(!1),y(!0),Promise.all([af(),aj(),ak()])}},secondaryAction:{label:"Back to dashboard",href:j?.projectId?`/projects/${j.projectId}`:"/"},error:z,compact:!0,chrome:"card"})}):j?(0,d.jsx)(B,{session:j,isOrchestrator:T,orchestratorZones:l??void 0,projectOrchestratorId:n,projects:p,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak}):(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:c??void 0,activeSessionId:b,children:(0,d.jsx)(C.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 aj()},secondaryAction:{label:"Back to dashboard",href:c?`/projects/${c}`:"/"},compact:!0,chrome:"card"})})}},18287:(a,b,c)=>{c.d(b,{default:()=>e.a});var d=c(26050),e=c.n(d)},26050:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return e}});let d=c(32697)._(c(90994));function e(a,b){var c;let e={};"function"==typeof a&&(e.loader=a);let f={...e,...b};return(0,d.default)({...f,modules:null==(c=f.loadableGenerated)?void 0:c.modules})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},26745:(a,b,c)=>{c.r(b),c.d(b,{default:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/equinox/.worktrees/agent-orchestrator/ao-168/packages/web/src/app/sessions/[id]/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.worktrees/agent-orchestrator/ao-168/packages/web/src/app/sessions/[id]/page.tsx","default")},54170:(a,b)=>{function c(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"encodeURIPath",{enumerable:!0,get:function(){return c}})},70162:(a,b,c)=>{c.d(b,{I:()=>d});let d=(0,c(81115).createContext)(null)},70424:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"PreloadChunks",{enumerable:!0,get:function(){return h}});let d=c(33666),e=c(51538),f=c(29294),g=c(54170);function h(a){let{moduleIds:b}=a,c=f.workAsyncStorage.getStore();if(void 0===c)return null;let h=[];if(c.reactLoadableManifest&&b){let a=c.reactLoadableManifest;for(let c of b){if(!a[c])continue;let b=a[c].files;h.push(...b)}}return 0===h.length?null:(0,d.jsx)(d.Fragment,{children:h.map(a=>{let b=c.assetPrefix+"/_next/"+(0,g.encodeURIPath)(a);return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:b,rel:"stylesheet",as:"style"},a):((0,e.preload)(b,{as:"script",fetchPriority:"low"}),null)})})}},88087:(a,b,c)=>{c.d(b,{X:()=>g});var d=c(33666),e=c(47489),f=c.n(e);function g({ariaLabel:a,activeTab:b,dashboardHref:c,prsHref:e,showOrchestrator:g=!0,orchestratorHref:h=null}){return(0,d.jsxs)("nav",{className:"mobile-bottom-nav","aria-label":a,children:[(0,d.jsxs)(f(),{href:c,className:"mobile-bottom-nav__item","data-active":"dashboard"===b?"true":"false","aria-current":"dashboard"===b?"page":void 0,children:[(0,d.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})}),(0,d.jsx)("span",{children:"Dashboard"})]}),(0,d.jsxs)(f(),{href:e,className:"mobile-bottom-nav__item","data-active":"prs"===b?"true":"false","aria-current":"prs"===b?"page":void 0,children:[(0,d.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"})}),(0,d.jsx)("span",{children:"PRs"})]}),g?h?(0,d.jsxs)(f(),{href:h,className:"mobile-bottom-nav__item","data-active":"orchestrator"===b?"true":"false","aria-current":"orchestrator"===b?"page":void 0,children:[(0,d.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.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,d.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,d.jsx)("span",{children:"Orchestrator"})]}):(0,d.jsxs)("button",{type:"button",className:"mobile-bottom-nav__item",disabled:!0,children:[(0,d.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.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,d.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,d.jsx)("span",{children:"Orchestrator"})]}):null]})}},90994:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return j}});let d=c(33666),e=c(81115),f=c(97053),g=c(70424);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},97053:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=c(35945);function e(a){let{reason:b,children:c}=a;throw Object.defineProperty(new d.BailoutToCSRError(b),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}}};
|
|
9
|
+
`:void 0,R=a.projectId?(0,m.bn)(a.projectId):"/",S=(0,e.useCallback)(async()=>{try{let b=await fetch(`/api/sessions/${encodeURIComponent(a.id)}/kill`,{method:"POST"});if(!b.ok)throw Error(`HTTP ${b.status}`);if(g)return void v.push((0,m.Nc)(a.projectId,g));v.push(R)}catch(a){console.error("Failed to kill session:",a)}},[R,g,v,a.id,a.projectId]),T=(0,e.useCallback)(async()=>{try{let b=await fetch(`/api/sessions/${encodeURIComponent(a.id)}/restore`,{method:"POST"});if(!b.ok){let a=await b.text().catch(()=>"");throw Error(a||`HTTP ${b.status}`)}window.location.reload()}catch(a){console.error("Failed to restore session:",a)}},[a.id]),U=(0,e.useMemo)(()=>b?(0,m.Nc)(a.projectId,a.id):g?(0,m.Nc)(a.projectId,g):null,[b,g,a.id,a.projectId]),V=(0,e.useCallback)(()=>{x?F(a=>!a):D(a=>!a)},[x]);return(0,d.jsx)(l.I.Provider,{value:{onToggleSidebar:V,mobileSidebarOpen:E},children:(0,d.jsxs)("div",{className:"dashboard-app-shell",children:[(0,d.jsx)(y,{session:a,isOrchestrator:b,isMobile:x,terminalEnded:J,isRestorable:K,activity:L,headline:M,projects:j,orchestratorHref:U,orchestratorZones:c,onToggleSidebar:V,onRestore:T,onKill:S}),(0,d.jsxs)("div",{className:`dashboard-shell dashboard-shell--desktop${C?" dashboard-shell--sidebar-collapsed":""}`,children:[j.length>0?(0,d.jsx)("div",{className:`sidebar-wrapper${E?" sidebar-wrapper--mobile-open":""}`,children:(0,d.jsx)(n.u,{projects:j,sessions:p,orchestrators:r,loading:s,error:t,onRetry:u,activeProjectId:a.projectId,activeSessionId:a.id,collapsed:C,onToggleCollapsed:()=>D(a=>!a),onMobileClose:()=>F(!1)})}):null,E&&(0,d.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>F(!1)}),(0,d.jsx)("div",{className:"dashboard-main dashboard-main--desktop",children:(0,d.jsx)("main",{className:"session-detail-page flex-1 min-h-0 flex flex-col bg-[var(--color-bg-base)]",children:(0,d.jsx)("div",{className:"flex-1 min-h-0 flex flex-col",children:G?J?(0,d.jsx)(z,{session:a,headline:M,pr:I,dashboardHref:R}):(0,d.jsx)(A,{sessionId:a.id,projectId:a.projectId,tmuxName:a.metadata?.tmuxName,startFullscreen:B,variant:N,appearance:"dark",height:"100%",isOpenCodeSession:O,reloadCommand:O?Q:void 0,autoFocus:!0}):(0,d.jsx)("div",{className:"session-detail-terminal-placeholder h-full"})})})})]}),(0,d.jsx)(o.X,{ariaLabel:"Session navigation",activeTab:b?"orchestrator":void 0,dashboardHref:R,prsHref:a.projectId?`/?project=${encodeURIComponent(a.projectId)}&tab=prs`:"/",showOrchestrator:!!U,orchestratorHref:U})]})})}var C=c(23041),D=c(58976),E=c(20902);let F=null,G=null,H=new Set(Object.values(g.SB)),I=new Set(Object.values(g.u3)),J=new Set;function K(a){if(a instanceof DOMException)return"AbortError"===a.name;if(a instanceof Error){let b=a.message.toLowerCase();return b.includes("aborted")||b.includes("aborterror")}return!1}function L({message:a}){return(0,d.jsx)("div",{className:"project-sidebar h-full",children:(0,d.jsxs)("div",{className:"space-y-3 px-3 py-4",children:[(0,d.jsx)("div",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--color-text-tertiary)]",children:"Projects"}),(0,d.jsx)("div",{className:"space-y-2",children:Array.from({length:3},(a,b)=>(0,d.jsx)("div",{className:"h-10 animate-pulse border border-[var(--color-border-subtle)] bg-[var(--color-bg-surface)]"},`sidebar-placeholder-${b}`))}),(0,d.jsx)("div",{className:"pt-2 text-[12px] text-[var(--color-text-tertiary)]",children:a})]})})}function M({projects:a,projectsLoading:b,sidebarSessions:c,sidebarOrchestrators:f,sidebarLoading:g,sidebarError:i,onRetrySidebar:j,activeProjectId:k,activeSessionId:l,children:m}){let o=(0,h.U)(h.D),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),t=(0,e.useCallback)(()=>{if(o)return void s(a=>!a);q(a=>!a)},[o]);return(0,d.jsxs)("div",{className:"dashboard-app-shell",children:[(0,d.jsxs)("header",{className:"dashboard-app-header",children:[(0,d.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:t,"aria-label":"Toggle sidebar",children:o?(0,d.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,d.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,d.jsx)("path",{d:"M9 3v18"})]})}),(0,d.jsx)("div",{className:"dashboard-app-header__brand",children:(0,d.jsx)("span",{children:"Agent Orchestrator"})}),(0,d.jsx)("div",{className:"dashboard-app-header__spacer"})]}),(0,d.jsxs)("div",{className:`dashboard-shell dashboard-shell--desktop${p?" dashboard-shell--sidebar-collapsed":""}`,children:[(0,d.jsx)("div",{className:`sidebar-wrapper${r?" sidebar-wrapper--mobile-open":""}`,children:a.length>0?(0,d.jsx)(n.u,{projects:a,sessions:c,orchestrators:f,loading:g,error:i,onRetry:j,activeProjectId:k,activeSessionId:l,collapsed:p,onToggleCollapsed:()=>q(a=>!a),onMobileClose:()=>s(!1)}):(0,d.jsx)(L,{message:b?"Loading projects...":"Projects unavailable."})}),r&&(0,d.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>s(!1)}),(0,d.jsx)("div",{className:"dashboard-main dashboard-main--desktop",children:(0,d.jsx)("main",{className:"session-detail-page flex-1 min-h-0 flex flex-col bg-[var(--color-bg-base)]",children:(0,d.jsx)("div",{className:"flex-1 min-h-0",children:m})})})]})]})}function N(){let a=(0,f.useParams)();(0,f.usePathname)(),(0,f.useRouter)();let b=a.id,c="string"==typeof a.projectId?a.projectId:Array.isArray(a.projectId)?a.projectId[0]:null;(0,D.eT)();let h=(()=>{if("undefined"==typeof sessionStorage)return null;try{let a=sessionStorage.getItem(`ao-session-nav:${b}`);if(a)return sessionStorage.removeItem(`ao-session-nav:${b}`),JSON.parse(a)}catch{}return null})(),[j,k]=(0,e.useState)(h),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(void 0),[p,q]=(0,e.useState)([]),[r,s]=(0,e.useState)(null===F),[t,u]=(0,e.useState)(()=>G),[v,w]=(0,e.useState)(void 0),[x,y]=(0,e.useState)(null===h),[z,A]=(0,e.useState)(null),[L,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(!1),[Q,R]=(0,e.useState)(new Map);j?.projectId;let S=[...Q.values()],T=!!j&&(0,g.tT)(j,Q.get(j.projectId),S),U=(0,e.useRef)(null),V=(0,e.useRef)(!1),W=(0,e.useRef)(null),X=(0,e.useRef)(new Map),Y=(0,e.useRef)(null!==h),Z=(0,e.useRef)(null),$=(0,e.useRef)(!1),_=(0,e.useRef)(!1),aa=(0,e.useRef)(!1),ab=(0,e.useRef)(null),ac=(0,e.useRef)(null),ad=(0,e.useRef)(null),ae=(0,e.useRef)(!1),af=(0,e.useCallback)(async()=>{F&&(q(F),R(new Map(F.map(a=>[a.id,a.sessionPrefix??a.id]))),s(!1));try{var a,b;let c=await (0,E.u)("/api/projects",{timeoutMs:5e3,timeoutMessage:"Projects request timed out after 5000ms"});if(!c?.projects)return;a=F,b=c.projects,a&&a.length===b.length&&a.every((a,c)=>{let d=b[c];return JSON.stringify(a)===JSON.stringify(d)})||(F=c.projects,q(c.projects),R(new Map(c.projects.map(a=>[a.id,a.sessionPrefix??a.id]))))}catch(a){console.error("Failed to fetch projects:",a)}finally{s(!1)}},[]);var ag=b;let ah=(0,D.eT)(),ai=ah?.sessions.find(a=>a.id===ag);(0,e.useMemo)(()=>ai?{activity:ai.activity??null}:null,[ai]);let aj=(0,e.useCallback)(async()=>{if($.current)return;$.current=!0;let a=new AbortController;ab.current=a;try{let c=await (0,E.u)(`/api/sessions/${encodeURIComponent(b)}`,{signal:a.signal,timeoutMs:8e3,timeoutMessage:"Session request timed out after 8000ms"});k(c),A(null),N(!1),Y.current=!0}catch(c){if(ae.current||a.signal.aborted||K(c))return;let b=(c instanceof Error?c.message:"Failed to load session").toLowerCase();if(b.includes("session not found")||b.includes("http 404")){Y.current||N(!0),y(!1);return}console.error("Failed to fetch session:",c),Y.current||A(c instanceof Error?c:Error("Failed to load session"))}finally{y(!1),$.current=!1,ab.current===a&&(ab.current=null)}},[b]);(0,e.useCallback)(async()=>{if(_.current)return;let a=U.current;if(!a)return;let b=V.current,c=`${a}:${b?"orchestrator":"worker"}`;if(!b&&W.current===c)return;_.current=!0;let d=new AbortController;ac.current=d;try{let e=b?`/api/sessions?project=${encodeURIComponent(a)}&fresh=true`:`/api/sessions?project=${encodeURIComponent(a)}&orchestratorOnly=true&fresh=true`,f=await (0,E.u)(e,{signal:d.signal,timeoutMs:5e3,timeoutMessage:"Project sessions request timed out after 5000ms"}),h=f.sessions??[],j=f.orchestratorId??f.orchestrators?.find(b=>b.projectId===a)?.id??null;if(o(a=>a===j?a:j),!b){W.current=c;return}let k={merge:0,respond:0,review:0,pending:0,working:0,done:0},l=[...X.current.values()];for(let a of h)if(!(0,g.tT)(a,X.current.get(a.projectId),l)){let b=(0,i.ng)(a);if("action"===b)continue;k[b]++}m(k)}catch(a){if(ae.current||d.signal.aborted||K(a))return;console.error("Failed to fetch project sessions:",a)}finally{_.current=!1,ac.current===d&&(ac.current=null)}},[]);let ak=(0,e.useCallback)(async()=>{if(aa.current)return;aa.current=!0;let a=new AbortController;ad.current=a;try{let b=await (0,E.u)("/api/sessions?fresh=true",{signal:a.signal,timeoutMs:5e3,timeoutMessage:"Sidebar sessions request timed out after 5000ms"}),c=b?.sessions??[],d=function(a,b){if(!a||0===b.length)return a;let c=new Map(b.map(a=>[a.id,a])),d=!1,e=a.map(a=>{var b,e;let f=c.get(a.id);if(!f)return a;if(b=f.status,!H.has(b)){let b=`status:${f.status}`;return J.has(b)||(J.add(b),console.warn("Ignoring mux session patch with unknown status",{sessionId:f.id,status:f.status})),a}if(null!==f.activity&&(e=f.activity,!I.has(e))){let b=`activity:${f.activity}`;return J.has(b)||(J.add(b),console.warn("Ignoring mux session patch with unknown activity",{sessionId:f.id,activity:f.activity})),a}return a.status===f.status&&a.activity===f.activity&&a.lastActivityAt===f.lastActivityAt?a:(d=!0,{...a,status:f.status,activity:f.activity,lastActivityAt:f.lastActivityAt})});return d?e:a}(c,Z.current??[])??c;G=d,w(b?.orchestrators),P(!1),u(a=>a&&a.length===d.length&&a.every((a,b)=>{let c=d[b];return JSON.stringify(a)===JSON.stringify(c)})?a:d)}catch(b){if(ae.current||a.signal.aborted||K(b))return;console.error("Failed to fetch sidebar sessions:",b),P(!0),u(a=>null===a?[]:a)}finally{aa.current=!1,ad.current===a&&(ad.current=null)}},[]);return x?(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:c??void 0,activeSessionId:b,children:(0,d.jsx)("div",{className:"flex h-full min-h-screen items-center justify-center bg-[var(--color-bg-base)]",children:(0,d.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,d.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,d.jsx)("path",{d:"M12 3a9 9 0 1 0 9 9"})}),(0,d.jsx)("div",{className:"text-[13px] text-[var(--color-text-tertiary)]",children:"Loading session…"})]})})}):L?(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:c??void 0,activeSessionId:b,children:(0,d.jsx)(C.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:c?`/projects/${c}`:"/"},secondaryAction:{label:"Retry",onClick:()=>void aj()},compact:!0,chrome:"card"})}):z?(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:j?.projectId??c??void 0,activeSessionId:b,children:(0,d.jsx)(C.ErrorDisplay,{title:"Failed to load session",message:function(a){let b=a.message.toLowerCase();return b.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.":b.includes("network")?"The session request failed before the dashboard got a response. Check the local server connection and try again.":b.includes("404")?"This session is no longer available. It may have been removed while the page was open.":b.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."}(z),tone:"error",primaryAction:{label:"Try again",onClick:()=>{A(null),N(!1),y(!0),Promise.all([af(),aj(),ak()])}},secondaryAction:{label:"Back to dashboard",href:j?.projectId?`/projects/${j.projectId}`:"/"},error:z,compact:!0,chrome:"card"})}):j?(0,d.jsx)(B,{session:j,isOrchestrator:T,orchestratorZones:l??void 0,projectOrchestratorId:n,projects:p,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak}):(0,d.jsx)(M,{projects:p,projectsLoading:r,sidebarSessions:t,sidebarOrchestrators:v,sidebarLoading:null===t,sidebarError:O,onRetrySidebar:ak,activeProjectId:c??void 0,activeSessionId:b,children:(0,d.jsx)(C.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 aj()},secondaryAction:{label:"Back to dashboard",href:c?`/projects/${c}`:"/"},compact:!0,chrome:"card"})})}},18287:(a,b,c)=>{c.d(b,{default:()=>e.a});var d=c(26050),e=c.n(d)},26050:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return e}});let d=c(32697)._(c(90994));function e(a,b){var c;let e={};"function"==typeof a&&(e.loader=a);let f={...e,...b};return(0,d.default)({...f,modules:null==(c=f.loadableGenerated)?void 0:c.modules})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},26745:(a,b,c)=>{c.r(b),c.d(b,{default:()=>d});let d=(0,c(10864).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/app/sessions/[id]/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/equinox/.agent-orchestrator/projects/agent-orchestrator/worktrees/ao-179/packages/web/src/app/sessions/[id]/page.tsx","default")},54170:(a,b)=>{function c(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"encodeURIPath",{enumerable:!0,get:function(){return c}})},70162:(a,b,c)=>{c.d(b,{I:()=>d});let d=(0,c(81115).createContext)(null)},70424:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"PreloadChunks",{enumerable:!0,get:function(){return h}});let d=c(33666),e=c(51538),f=c(29294),g=c(54170);function h(a){let{moduleIds:b}=a,c=f.workAsyncStorage.getStore();if(void 0===c)return null;let h=[];if(c.reactLoadableManifest&&b){let a=c.reactLoadableManifest;for(let c of b){if(!a[c])continue;let b=a[c].files;h.push(...b)}}return 0===h.length?null:(0,d.jsx)(d.Fragment,{children:h.map(a=>{let b=c.assetPrefix+"/_next/"+(0,g.encodeURIPath)(a);return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:b,rel:"stylesheet",as:"style"},a):((0,e.preload)(b,{as:"script",fetchPriority:"low"}),null)})})}},88087:(a,b,c)=>{c.d(b,{X:()=>g});var d=c(33666),e=c(47489),f=c.n(e);function g({ariaLabel:a,activeTab:b,dashboardHref:c,prsHref:e,showOrchestrator:g=!0,orchestratorHref:h=null}){return(0,d.jsxs)("nav",{className:"mobile-bottom-nav","aria-label":a,children:[(0,d.jsxs)(f(),{href:c,className:"mobile-bottom-nav__item","data-active":"dashboard"===b?"true":"false","aria-current":"dashboard"===b?"page":void 0,children:[(0,d.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})}),(0,d.jsx)("span",{children:"Dashboard"})]}),(0,d.jsxs)(f(),{href:e,className:"mobile-bottom-nav__item","data-active":"prs"===b?"true":"false","aria-current":"prs"===b?"page":void 0,children:[(0,d.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"})}),(0,d.jsx)("span",{children:"PRs"})]}),g?h?(0,d.jsxs)(f(),{href:h,className:"mobile-bottom-nav__item","data-active":"orchestrator"===b?"true":"false","aria-current":"orchestrator"===b?"page":void 0,children:[(0,d.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.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,d.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,d.jsx)("span",{children:"Orchestrator"})]}):(0,d.jsxs)("button",{type:"button",className:"mobile-bottom-nav__item",disabled:!0,children:[(0,d.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.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,d.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,d.jsx)("span",{children:"Orchestrator"})]}):null]})}},90994:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return j}});let d=c(33666),e=c(81115),f=c(97053),g=c(70424);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},97053:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=c(35945);function e(a){let{reason:b,children:c}=a;throw Object.defineProperty(new d.BailoutToCSRError(b),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}}};
|