@nilsr0711/drydock 0.1.3 → 0.1.5
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/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +4 -2
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +12 -0
- package/.next/standalone/.next/server/app/_global-error/page.js +2 -2
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/adrs/page.js +2 -2
- package/.next/standalone/.next/server/app/adrs/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/adrs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/analytics/page.js +2 -0
- package/.next/standalone/.next/server/app/analytics/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/analytics/page_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/cost/export/route.js +2 -1
- package/.next/standalone/.next/server/app/api/cost/export/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sse/dashboard/route.js +15 -2
- package/.next/standalone/.next/server/app/api/sse/dashboard/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sse/jobs/[id]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/sse/jobs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/webhooks/[repoId]/route.js +14 -1
- package/.next/standalone/.next/server/app/api/webhooks/[repoId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/costs/page.js +2 -2
- package/.next/standalone/.next/server/app/costs/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/costs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/jobs/[id]/page.js +3 -5
- package/.next/standalone/.next/server/app/jobs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/jobs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/jobs/page.js +2 -0
- package/.next/standalone/.next/server/app/jobs/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/jobs/page_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/needs-human/page.js +2 -2
- package/.next/standalone/.next/server/app/needs-human/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/needs-human/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/prompts/page.js +2 -2
- package/.next/standalone/.next/server/app/prompts/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/prompts/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/repos/[id]/page.js +2 -2
- package/.next/standalone/.next/server/app/repos/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/repos/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +4 -2
- package/.next/standalone/.next/server/chunks/198.js +1 -0
- package/.next/standalone/.next/server/chunks/279.js +1 -0
- package/.next/standalone/.next/server/chunks/318.js +14 -0
- package/.next/standalone/.next/server/chunks/417.js +1 -0
- package/.next/standalone/.next/server/chunks/468.js +24 -0
- package/.next/standalone/.next/server/chunks/471.js +1 -0
- package/.next/standalone/.next/server/chunks/49.js +3 -0
- package/.next/standalone/.next/server/chunks/496.js +1 -0
- package/.next/standalone/.next/server/chunks/511.js +1 -0
- package/.next/standalone/.next/server/chunks/541.js +1 -1
- package/.next/standalone/.next/server/chunks/665.js +9 -0
- package/.next/standalone/.next/server/chunks/847.js +93 -0
- package/.next/standalone/.next/server/chunks/{868.js → 997.js} +2 -2
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/ImQS3LTFl-iHwI2K1uXy0/_buildManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/165-f2c11a8b0992483d.js +1 -0
- package/.next/standalone/.next/static/chunks/174-34fe81abafec07fe.js +1 -0
- package/.next/standalone/.next/static/chunks/188-14494263cefd30a4.js +1 -0
- package/.next/standalone/.next/static/chunks/312-5ab18c6fbb20b9cc.js +1 -0
- package/.next/standalone/.next/static/chunks/381-b0d5a35969fad985.js +1 -0
- package/.next/standalone/.next/static/chunks/540-b0819a434d7516b1.js +1 -0
- package/.next/standalone/.next/static/chunks/586-d7d6e7d3794dcf02.js +32 -0
- package/.next/standalone/.next/static/chunks/730-ae05580815adb9b2.js +1 -0
- package/.next/standalone/.next/static/chunks/736-503f37bb672c129b.js +1 -0
- package/.next/standalone/.next/static/chunks/878-f08fd91a6c00d84b.js +62 -0
- package/.next/standalone/.next/static/chunks/app/_global-error/page-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/app/_not-found/page-aa469cca9dc68961.js +1 -0
- package/.next/standalone/.next/static/chunks/app/adrs/page-ed0f94a800ba51c8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/analytics/page-2d61245dbc9dd300.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cost/export/route-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sse/dashboard/route-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sse/jobs/[id]/route-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/webhooks/[repoId]/route-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/app/costs/page-3eca75e55c68e079.js +1 -0
- package/.next/standalone/.next/static/chunks/app/jobs/[id]/page-528826c79cab6cbb.js +1 -0
- package/.next/standalone/.next/static/chunks/app/jobs/page-70bd2189d7249e3f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/layout-0e04e8b455f51432.js +1 -0
- package/.next/standalone/.next/static/chunks/app/needs-human/page-90cc5147aadb3ebe.js +1 -0
- package/.next/standalone/.next/static/chunks/app/page-a142f2aa01a429d9.js +1 -0
- package/.next/standalone/.next/static/chunks/app/prompts/page-fba107f32faa6568.js +1 -0
- package/.next/standalone/.next/static/chunks/app/repos/[id]/page-0da8e297142d8567.js +1 -0
- package/.next/standalone/.next/static/chunks/app/settings/page-bd473b1d183c3db6.js +1 -0
- package/.next/standalone/.next/static/chunks/ec24c40a-fc218f196ad8b89e.js +1 -0
- package/.next/standalone/.next/static/chunks/framework-3631188fe017d11d.js +1 -0
- package/.next/standalone/.next/static/chunks/main-app-2ce5d113f02aa743.js +1 -0
- package/.next/standalone/.next/static/chunks/main-c73a28f721635e7a.js +5 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-3d82ee7a5f817d84.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-03b9886f969453ed.js +1 -0
- package/.next/standalone/.next/static/css/96c4f935104c1f9a.css +3 -0
- package/.next/standalone/drizzle/0010_one_shot_costs.sql +12 -0
- package/.next/standalone/drizzle/0021_robust_wind_dancer.sql +48 -0
- package/.next/standalone/drizzle/0022_issue_model_override.sql +2 -0
- package/.next/standalone/drizzle/meta/0021_snapshot.json +1780 -0
- package/.next/standalone/drizzle/meta/_journal.json +7 -0
- package/.next/standalone/package.json +2 -1
- package/.next/static/ImQS3LTFl-iHwI2K1uXy0/_buildManifest.js +1 -0
- package/.next/static/chunks/165-f2c11a8b0992483d.js +1 -0
- package/.next/static/chunks/174-34fe81abafec07fe.js +1 -0
- package/.next/static/chunks/188-14494263cefd30a4.js +1 -0
- package/.next/static/chunks/312-5ab18c6fbb20b9cc.js +1 -0
- package/.next/static/chunks/381-b0d5a35969fad985.js +1 -0
- package/.next/static/chunks/540-b0819a434d7516b1.js +1 -0
- package/.next/static/chunks/586-d7d6e7d3794dcf02.js +32 -0
- package/.next/static/chunks/730-ae05580815adb9b2.js +1 -0
- package/.next/static/chunks/736-503f37bb672c129b.js +1 -0
- package/.next/static/chunks/878-f08fd91a6c00d84b.js +62 -0
- package/.next/static/chunks/app/_global-error/page-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/app/_not-found/page-aa469cca9dc68961.js +1 -0
- package/.next/static/chunks/app/adrs/page-ed0f94a800ba51c8.js +1 -0
- package/.next/static/chunks/app/analytics/page-2d61245dbc9dd300.js +1 -0
- package/.next/static/chunks/app/api/cost/export/route-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/app/api/sse/dashboard/route-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/app/api/sse/jobs/[id]/route-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[repoId]/route-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/app/costs/page-3eca75e55c68e079.js +1 -0
- package/.next/static/chunks/app/jobs/[id]/page-528826c79cab6cbb.js +1 -0
- package/.next/static/chunks/app/jobs/page-70bd2189d7249e3f.js +1 -0
- package/.next/static/chunks/app/layout-0e04e8b455f51432.js +1 -0
- package/.next/static/chunks/app/needs-human/page-90cc5147aadb3ebe.js +1 -0
- package/.next/static/chunks/app/page-a142f2aa01a429d9.js +1 -0
- package/.next/static/chunks/app/prompts/page-fba107f32faa6568.js +1 -0
- package/.next/static/chunks/app/repos/[id]/page-0da8e297142d8567.js +1 -0
- package/.next/static/chunks/app/settings/page-bd473b1d183c3db6.js +1 -0
- package/.next/static/chunks/ec24c40a-fc218f196ad8b89e.js +1 -0
- package/.next/static/chunks/framework-3631188fe017d11d.js +1 -0
- package/.next/static/chunks/main-app-2ce5d113f02aa743.js +1 -0
- package/.next/static/chunks/main-c73a28f721635e7a.js +5 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-3d82ee7a5f817d84.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-03b9886f969453ed.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-03b9886f969453ed.js +1 -0
- package/.next/static/css/96c4f935104c1f9a.css +3 -0
- package/README.md +11 -3
- package/bin/drydock.mjs +32 -0
- package/drizzle/0010_one_shot_costs.sql +12 -0
- package/drizzle/0021_robust_wind_dancer.sql +48 -0
- package/drizzle/0022_issue_model_override.sql +2 -0
- package/drizzle/meta/0021_snapshot.json +1780 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +2 -1
- package/.next/standalone/.next/server/chunks/185.js +0 -32
- package/.next/standalone/.next/server/chunks/235.js +0 -1
- package/.next/standalone/.next/server/chunks/309.js +0 -1
- package/.next/standalone/.next/server/chunks/350.js +0 -9
- package/.next/standalone/.next/server/chunks/39.js +0 -3
- package/.next/standalone/.next/server/chunks/447.js +0 -1
- package/.next/standalone/.next/server/chunks/462.js +0 -1
- package/.next/standalone/.next/server/chunks/507.js +0 -9
- package/.next/standalone/.next/server/chunks/537.js +0 -1
- package/.next/standalone/.next/server/chunks/579.js +0 -62
- package/.next/standalone/.next/server/chunks/710.js +0 -1
- package/.next/standalone/.next/server/chunks/777.js +0 -1
- package/.next/standalone/.next/server/chunks/9.js +0 -3
- package/.next/standalone/.next/static/chunks/0-539cfb6a78b205f0.js +0 -1
- package/.next/standalone/.next/static/chunks/586-4f743a204f11d627.js +0 -32
- package/.next/standalone/.next/static/chunks/66-a23941cbbf88d6cd.js +0 -1
- package/.next/standalone/.next/static/chunks/700-c294ac6d353097ec.js +0 -1
- package/.next/standalone/.next/static/chunks/744-6b71dbc0b45f3dee.js +0 -1
- package/.next/standalone/.next/static/chunks/750-1062dd98095cb147.js +0 -62
- package/.next/standalone/.next/static/chunks/77-ff0a9221f1786b0e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/_global-error/page-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/app/_not-found/page-fbc46f6809bf01bc.js +0 -1
- package/.next/standalone/.next/static/chunks/app/adrs/page-54954f500bc3e3c6.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cost/export/route-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/sse/dashboard/route-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/sse/jobs/[id]/route-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/webhooks/[repoId]/route-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/app/costs/page-737c89e70adff98b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/jobs/[id]/page-217e04f338b50a7e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-f6048a8c9f541e0d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/needs-human/page-c047e3e842681979.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-382b7fef1f749214.js +0 -1
- package/.next/standalone/.next/static/chunks/app/prompts/page-9e32fb8f51e7873e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/repos/[id]/page-55b03bdcf107eefe.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/page-5b2b8683fa6afdf4.js +0 -1
- package/.next/standalone/.next/static/chunks/ec24c40a-96b312d151fe54b7.js +0 -1
- package/.next/standalone/.next/static/chunks/framework-79acb3679912dc5b.js +0 -1
- package/.next/standalone/.next/static/chunks/main-a0c070ad11c80668.js +0 -5
- package/.next/standalone/.next/static/chunks/main-app-94b142817f01731e.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-0d321d74b6d9f17c.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-abc1c30fe033f680.js +0 -1
- package/.next/standalone/.next/static/css/64af283f7f467bc0.css +0 -3
- package/.next/standalone/.next/static/g7t6i0qpogjrDGpmNgFei/_buildManifest.js +0 -1
- package/.next/static/chunks/0-539cfb6a78b205f0.js +0 -1
- package/.next/static/chunks/586-4f743a204f11d627.js +0 -32
- package/.next/static/chunks/66-a23941cbbf88d6cd.js +0 -1
- package/.next/static/chunks/700-c294ac6d353097ec.js +0 -1
- package/.next/static/chunks/744-6b71dbc0b45f3dee.js +0 -1
- package/.next/static/chunks/750-1062dd98095cb147.js +0 -62
- package/.next/static/chunks/77-ff0a9221f1786b0e.js +0 -1
- package/.next/static/chunks/app/_global-error/page-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/app/_not-found/page-fbc46f6809bf01bc.js +0 -1
- package/.next/static/chunks/app/adrs/page-54954f500bc3e3c6.js +0 -1
- package/.next/static/chunks/app/api/cost/export/route-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/app/api/sse/dashboard/route-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/app/api/sse/jobs/[id]/route-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[repoId]/route-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/app/costs/page-737c89e70adff98b.js +0 -1
- package/.next/static/chunks/app/jobs/[id]/page-217e04f338b50a7e.js +0 -1
- package/.next/static/chunks/app/layout-f6048a8c9f541e0d.js +0 -1
- package/.next/static/chunks/app/needs-human/page-c047e3e842681979.js +0 -1
- package/.next/static/chunks/app/page-382b7fef1f749214.js +0 -1
- package/.next/static/chunks/app/prompts/page-9e32fb8f51e7873e.js +0 -1
- package/.next/static/chunks/app/repos/[id]/page-55b03bdcf107eefe.js +0 -1
- package/.next/static/chunks/app/settings/page-5b2b8683fa6afdf4.js +0 -1
- package/.next/static/chunks/ec24c40a-96b312d151fe54b7.js +0 -1
- package/.next/static/chunks/framework-79acb3679912dc5b.js +0 -1
- package/.next/static/chunks/main-a0c070ad11c80668.js +0 -5
- package/.next/static/chunks/main-app-94b142817f01731e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-0d321d74b6d9f17c.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-abc1c30fe033f680.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-abc1c30fe033f680.js +0 -1
- package/.next/static/css/64af283f7f467bc0.css +0 -3
- package/.next/static/g7t6i0qpogjrDGpmNgFei/_buildManifest.js +0 -1
- /package/.next/standalone/.next/static/{g7t6i0qpogjrDGpmNgFei → ImQS3LTFl-iHwI2K1uXy0}/_ssgManifest.js +0 -0
- /package/.next/static/{g7t6i0qpogjrDGpmNgFei → ImQS3LTFl-iHwI2K1uXy0}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=235,exports.ids=[235],exports.modules={2568:(a,b,c)=>{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)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(93034),e=c(76151),f=c(81604),g=c(96808),h=c(99689),i=c(82781);("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)},16081:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(2568).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)},18351:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(18106),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw a.digest=e,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)},21878:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(81873),g=c(46271),h=c(18351),i=c(87050),j=c(79893),k=c(16081);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("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)},39829:(a,b,c)=>{c.d(b,{T9:()=>g});var d=c(17283),e=c(6384),f=c(94448);function g(a){return(0,f.ll)`max(${a})`.mapWith((0,e.is)(a,d.V)?a:String)}},46271:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(23578),g=c(88536),h=c(19121).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?"push":"replace",f.RedirectStatusCode.TemporaryRedirect)}function k(a,b="replace"){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.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 n(a){if(!(0,g.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)},70780:(a,b,c)=>{c.d(b,{aY:()=>bR});var d=c(37477),e=c(54848),f=c(61393);function g(a){a()}function h(a,b){return c=>a(b(c))}function i(a){return void 0!==a}function j(){}function k(a,b){return b(a)}function l(...a){return a}function m(a){a(2)}function n(a){return a(4)}function o(a,b){return a(1,a=>b(0,a))}function p(a,b){let c=a(1,a=>{c(),b(a)});return c}function q(a){let b,c;return d=>e=>{b=e,c&&clearTimeout(c),c=setTimeout(()=>{d(b)},a)}}function r(a,b){return a===b}function s(a=r){let b;return c=>d=>{a(b,d)||(b=d,c(d))}}function t(a){return b=>c=>{a(c)&&b(c)}}function u(a){return b=>h(b,a)}function v(a){return b=>()=>{b(a)}}function w(a,...b){let c=function(...a){return b=>a.reduceRight(k,b)}(...b);return(b,d)=>{switch(b){case 2:m(a);return;case 1:return a(1,c(d))}}}function x(a,b){return c=>d=>{c(b=a(b,d))}}function y(a){return b=>c=>{a>0?a--:b(c)}}function z(a){let b=null,c;return d=>e=>{b=e,c||(c=setTimeout(()=>{c=void 0,d(b)},a))}}function A(...a){let b=Array(a.length),c=0,d=null,e=2**a.length-1;return a.forEach((a,f)=>{let g=2**f;a(1,a=>{let h=c;c|=g,b[f]=a,h!==e&&c===e&&d&&(d(),d=null)})}),a=>f=>{let g=()=>{a([f].concat(b))};c===e?g():d=g}}function B(a){let b=a,c=D();return(a,d)=>{switch(a){case 0:b=d;break;case 1:d(b);break;case 4:return b}return c(a,d)}}function C(a,b){var c;return c=B(b),o(a,c),c}function D(){let a=[];return(b,c)=>{switch(b){case 0:a.slice().forEach(a=>{a(c)});return;case 2:a.splice(0,a.length);return;case 1:return a.push(c),()=>{let b=a.indexOf(c);b>-1&&a.splice(b,1)}}}}function E(a){var b;return b=D(),o(a,b),b}function F(a,b=[],{singleton:c}={singleton:!0}){return{constructor:a,dependencies:b,id:G(),singleton:c}}let G=()=>Symbol();function H(...a){let b=D(),c=Array(a.length),d=0,e=2**a.length-1;return a.forEach((a,f)=>{let g=2**f;a(1,a=>{c[f]=a,(d|=g)===e&&b(0,c)})}),function(a,f){switch(a){case 2:return void m(b);case 1:return d===e&&f(c),b(1,f)}}}function I(a,b=r){return w(a,s(b))}function J(...a){return function(b,c){switch(b){case 2:return;case 1:return function(...a){return()=>{a.map(g)}}(...a.map(a=>a(1,c)))}}}let K=1,L={0:"debug",3:"error",[K]:"log",2:"warn"},M=F(()=>{let a=B(3);return{log:B((b,c,d=K)=>{d>=((typeof globalThis>"u"?window:globalThis).VIRTUOSO_LOG_LEVEL??n(a))&&console[L[d]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",b,c)}),logLevel:a}},[],{singleton:!0}),N=new WeakMap;function O(a){return"self"in a?a.document.documentElement:a}function P(a){N.delete(O(a))}function Q(a,b){return!function(a){let b=O(a),c=N.get(b);if(void 0!==c)return c;let d="rtl"===b.ownerDocument.defaultView.getComputedStyle(b).direction;return N.set(b,d),d}(a)?b:-b}function R(a,b,c){return S(a,b,c).callbackRef}function S(a,b,c){let d=e.useRef(null),f=e.useMemo(()=>"u">typeof ResizeObserver?new ResizeObserver(b=>{let d=()=>{let c=b[0].target;null!==c.offsetParent&&a(c)};c?d():requestAnimationFrame(d)}):null,[a,c]);return{callbackRef:a=>{a&&b?(f?.observe(a),d.current=a):(d.current&&f?.unobserve(d.current),d.current=null)},ref:d}}function T(a,b,c,d,f,g,h,i,j){return S(e.useCallback(c=>{let e,j=function(a,b,c,d){let e=a.length;if(0===e)return null;let f=[];for(let g=0;g<e;g++){let e=a.item(g);if(void 0===e.dataset.index)continue;let h=parseInt(e.dataset.index),i=parseFloat(e.dataset.knownSize),j=b(e,c);if(0===j&&d("Zero-sized element, this should not happen",{child:e},3),j===i)continue;let k=f[f.length-1];0===f.length||k.size!==j||k.endIndex!==h-1?f.push({endIndex:h,size:j,startIndex:h}):f[f.length-1].endIndex++}return f}(c.children,b,i?"offsetWidth":"offsetHeight",f),k=c.parentElement;for(;void 0===k.dataset.virtuosoScroller;)k=k.parentElement;let l="window"===k.lastElementChild.dataset.viewportType;l&&(e=k.ownerDocument.defaultView);let m=h?i?h.scrollWidth:h.scrollHeight:l?i?e.document.documentElement.scrollWidth:e.document.documentElement.scrollHeight:i?k.scrollWidth:k.scrollHeight,n=h?i?h.offsetWidth:h.offsetHeight:l?i?e.innerWidth:e.innerHeight:i?k.offsetWidth:k.offsetHeight;d({scrollHeight:m,scrollTop:Math.max(h?i?Q(h,h.scrollLeft):h.scrollTop:l?i?Q(e,e.scrollX||e.document.documentElement.scrollLeft):e.scrollY||e.document.documentElement.scrollTop:i?Q(k,k.scrollLeft):k.scrollTop,0),viewportHeight:n}),g?.(i?U("column-gap",getComputedStyle(c).columnGap,f):U("row-gap",getComputedStyle(c).rowGap,f)),null!==j&&a(j)},[a,b,f,g,h,d,i]),c,j)}function U(a,b,c){return"normal"!==b&&b?.endsWith("px")!==!0&&c(`${a} was not resolved to pixel value correctly`,b,2),"normal"===b?0:parseInt(b??"0",10)}function V(a,b,c){let d=e.useRef(null),f=e.useCallback(c=>{let e,f;if(!c?.offsetParent)return;let g=c.getBoundingClientRect(),i=g.width;if(b){let a=b.getBoundingClientRect(),c=g.top-a.top;f=a.height-Math.max(0,c),e=c+b.scrollTop}else{let a=h.current.ownerDocument.defaultView;f=a.innerHeight-Math.max(0,g.top),e=g.top+a.scrollY}d.current={listHeight:g.height,offsetTop:e,visibleHeight:f,visibleWidth:i},a(d.current)},[a,b]),{callbackRef:g,ref:h}=S(f,!0,c),i=e.useCallback(()=>{f(h.current)},[f,h]);return e.useEffect(()=>{if(b){b.addEventListener("scroll",i);let a=new ResizeObserver(()=>{requestAnimationFrame(i)});return a.observe(b),()=>{b.removeEventListener("scroll",i),a.unobserve(b)}}let a=h.current?.ownerDocument.defaultView;return a?.addEventListener("scroll",i),a?.addEventListener("resize",i),()=>{a?.removeEventListener("scroll",i),a?.removeEventListener("resize",i)}},[i,b,h]),g}let W=F(()=>{let a=D(),b=D(),c=B(0),d=D(),e=B(0),f=D(),g=D(),h=B(0),i=B(0),j=B(0),k=B(0),l=D(),m=D(),n=B(!1),p=B(!1),q=B(!1);return o(w(a,u(({scrollTop:a})=>a)),b),o(w(a,u(({scrollHeight:a})=>a)),g),o(b,e),{deviation:c,fixedFooterHeight:j,fixedHeaderHeight:i,footerHeight:k,headerHeight:h,horizontalDirection:p,scrollBy:m,scrollContainerState:a,scrollHeight:g,scrollingInProgress:n,scrollTo:l,scrollTop:b,skipAnimationFrameInResizeObserver:q,smoothScrollTargetReached:d,statefulScrollTop:e,viewportHeight:f}},[],{singleton:!0}),X={lvl:0};function Y(a,b){let c=a.length;if(0===c)return[];let{index:d,value:e}=b(a[0]),f=[];for(let g=1;g<c;g++){let{index:c,value:h}=b(a[g]);f.push({end:c-1,start:d,value:e}),d=c,e=h}return f.push({end:1/0,start:d,value:e}),f}function Z(a){return a===X}function $(a,b){if(!Z(a))return b===a.k?a.v:b<a.k?$(a.l,b):$(a.r,b)}function _(a,b,c="k"){if(Z(a))return[-1/0,void 0];if(Number(a[c])===b)return[a.k,a.v];if(Number(a[c])<b){let d=_(a.r,b,c);return d[0]===-1/0?[a.k,a.v]:d}return _(a.l,b,c)}function aa(a,b,c){return Z(a)?ag(b,c,1):b===a.k?ae(a,{k:b,v:c}):b<a.k?ai(ah(ae(a,{l:aa(a.l,b,c)}))):ai(ah(ae(a,{r:aa(a.r,b,c)})))}function ab(a,b,c){if(Z(a))return[];let d=_(a,b)[0];return Y(function a(b,c,d){if(Z(b))return[];let{k:e,l:f,r:g,v:h}=b,i=[];return e>c&&(i=i.concat(a(f,c,d))),e>=c&&e<=d&&i.push({k:e,v:h}),e<=d&&(i=i.concat(a(g,c,d))),i}(a,d,c),({k:a,v:b})=>({index:a,value:b}))}function ac(a){return Z(a)?[]:[...ac(a.l),{k:a.k,v:a.v},...ac(a.r)]}function ad(a){let{l:b,lvl:c,r:d}=a;if(d.lvl>=c-1&&b.lvl>=c-1)return a;if(c>d.lvl+1){if(af(b))return ah(ae(a,{lvl:c-1}));if(!Z(b)&&!Z(b.r))return ae(b.r,{l:ae(b,{r:b.r.l}),lvl:c,r:ae(a,{l:b.r.r,lvl:c-1})});throw Error("Unexpected empty nodes")}if(af(a))return ai(ae(a,{lvl:c-1}));if(!Z(d)&&!Z(d.l)){let b=d.l,e=af(b)?d.lvl-1:d.lvl;return ae(b,{l:ae(a,{lvl:c-1,r:b.l}),lvl:b.lvl+1,r:ai(ae(d,{l:b.r,lvl:e}))})}throw Error("Unexpected empty nodes")}function ae(a,b){return ag(void 0!==b.k?b.k:a.k,void 0!==b.v?b.v:a.v,void 0!==b.lvl?b.lvl:a.lvl,void 0!==b.l?b.l:a.l,void 0!==b.r?b.r:a.r)}function af(a){return Z(a)||a.lvl>a.r.lvl}function ag(a,b,c,d=X,e=X){return{k:a,l:d,lvl:c,r:e,v:b}}function ah(a){let{l:b}=a;return Z(b)||b.lvl!==a.lvl?a:ae(b,{r:ae(a,{l:b.r})})}function ai(a){let{lvl:b,r:c}=a;return Z(c)||Z(c.r)||c.lvl!==b||c.r.lvl!==b?a:ae(c,{l:ae(a,{r:c.l}),lvl:b+1})}function aj(a,b){return!!(a&&a.startIndex===b.startIndex&&a.endIndex===b.endIndex)}function ak(a,b){return!!(a&&a[0]===b[0]&&a[1]===b[1])}let al=F(()=>({recalcInProgress:B(!1)}),[],{singleton:!0});function am(a,b,c,d=0){let e=a.length-1;for(;d<=e;){let f=Math.floor((d+e)/2),g=c(a[f],b);if(0===g)return f;if(-1===g){if(e-d<2)return f-1;e=f-1}else{if(e===d)return f;d=f+1}}throw Error(`Failed binary finding record in array - ${a.join(",")}, searched for ${b}`)}function an(a,b){return Math.round(a.getBoundingClientRect()[b])}function ao(a){return!Z(a.groupOffsetTree)}function ap({index:a},b){return b===a?0:b<a?-1:1}function aq({offset:a},b){return b===a?0:b<a?-1:1}function ar(a,b,c){if(0===b.length)return 0;let{index:d,offset:e,size:f}=b[am(b,a,ap)],g=a-d,h=f*g+(g-1)*c+e;return h>0?h+c:h}function as(a,b){if(!ao(b))return a;let c=0;for(;b.groupIndices[c]<=a+c;)c++;return a+c}function at(a,b,c){if("u">typeof a.groupIndex)return b.groupIndices[a.groupIndex]+1;let d=as("LAST"===a.index?c:a.index,b);return Math.max(0,d,Math.min(c,d))}function au(a,[b,c,d,e]){b.length>0&&d("received item sizes",b,0);let f=a.sizeTree,g=f,h=0;if(c.length>0&&Z(f)&&2===b.length){let a=b[0].size,d=b[1].size;g=c.reduce((b,c)=>aa(aa(b,c,a),c+1,d),g)}else[g,h]=function(a,b){let c=Z(a)?0:1/0;for(let d of b){let{endIndex:b,size:e,startIndex:f}=d;if(c=Math.min(c,f),Z(a)){a=aa(a,0,e);continue}let g=ab(a,f-1,b+1);if(g.some(function(a){let{endIndex:b,size:c,startIndex:d}=a;return a=>a.start===d&&(a.end===b||a.end===1/0)&&a.value===c}(d)))continue;let h=!1,i=!1;for(let{end:c,start:d,value:f}of g)h?(b>=d||e===f)&&(a=function a(b,c){if(Z(b))return X;let{k:d,l:e,r:f}=b;if(c===d){if(Z(e))return f;if(Z(f))return e;let[a,c]=function a(b){return Z(b.r)?[b.k,b.v]:a(b.r)}(e);return ad(ae(b,{k:a,l:function a(b){return Z(b.r)?b.l:ad(ae(b,{r:a(b.r)}))}(e),v:c}))}return c<d?ad(ae(b,{l:a(e,c)})):ad(ae(b,{r:a(f,c)}))}(a,d)):(i=f!==e,h=!0),c>b&&b>=d&&f!==e&&(a=aa(a,b+1,f));i&&(a=aa(a,f,e))}return[a,c]}(g,b);if(g===f)return a;let{lastIndex:i,lastOffset:j,lastSize:k,offsetTree:l}=aw(a.offsetTree,h,g,e);return{groupIndices:c,groupOffsetTree:c.reduce((a,b)=>aa(a,b,ar(b,l,e)),X),lastIndex:i,lastOffset:j,lastSize:k,offsetTree:l,sizeTree:g}}function av(a,b){let c=0,d=0;for(;c<a;)c+=b[d+1]-b[d]-1,d++;return d-(c!==a)}function aw(a,b,c,d){let e=a,f=0,g=0,h=0,i=0;if(0!==b){i=am(e,b-1,ap),h=e[i].offset;let a=_(c,b-1);f=a[0],g=a[1],e.length&&e[i].size===_(c,b)[1]&&(i-=1),e=e.slice(0,i+1)}else e=[];for(let{start:a,value:i}of ab(c,b,1/0)){let b=a-f,c=b*g+h+b*d;e.push({index:a,offset:c,size:i}),f=a,h=c,g=i}return{lastIndex:f,lastOffset:h,lastSize:g,offsetTree:e}}function ax(a){return{index:a.index,value:a}}let ay={offsetHeight:"height",offsetWidth:"width"},az=F(([{log:a},{recalcInProgress:b}])=>{let c=D(),d=D(),e=C(d,0),f=D(),g=D(),h=B(0),i=B([]),j=B(void 0),k=B(void 0),l=B(void 0),m=B(void 0),p=B((a,b)=>an(a,ay[b])),q=B(void 0),r=B(0),v={groupIndices:[],groupOffsetTree:X,lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:X},y=C(w(c,A(i,a,r),x(au,v),s()),v),z=C(w(i,s(),x((a,b)=>({current:b,prev:a.current}),{current:[],prev:[]}),u(({prev:a})=>a)),[]);o(w(i,t(a=>a.length>0),A(y,r),u(([a,b,c])=>{let d=a.reduce((a,d,e)=>aa(a,d,ar(d,b.offsetTree,c)||e),X);return{...b,groupIndices:a,groupOffsetTree:d}})),y),o(w(d,A(y),t(([a,{lastIndex:b}])=>a<b),u(([a,{lastIndex:b,lastSize:c}])=>[{endIndex:b,size:c,startIndex:a}])),c),o(j,k);let F=C(w(j,u(a=>void 0===a)),!0);o(w(k,t(a=>void 0!==a&&Z(n(y).sizeTree)),u(a=>{let b=n(l),c=n(i).length>0;return void 0!==b&&0!==b?c?[{endIndex:0,size:b,startIndex:0},{endIndex:1,size:a,startIndex:1}]:[]:[{endIndex:0,size:a,startIndex:0}]})),c),o(w(m,t(a=>void 0!==a&&a.length>0&&Z(n(y).sizeTree)),u(a=>{let b=[],c=a[0],d=0;for(let e=1;e<a.length;e++){let f=a[e];f!==c&&(b.push({endIndex:e-1,size:c,startIndex:d}),c=f,d=e)}return b.push({endIndex:a.length-1,size:c,startIndex:d}),b})),c),o(w(i,A(l,k),t(([,a,b])=>void 0!==a&&void 0!==b),u(([a,b,c])=>{let d=[];for(let e=0;e<a.length;e++){let f=a[e],g=a[e+1];d.push({startIndex:f,endIndex:f,size:b}),void 0!==g&&d.push({startIndex:f+1,endIndex:g-1,size:c})}return d})),c);let G=E(w(c,A(y),x(({sizes:a},[b,c])=>({changed:c!==a,sizes:c}),{changed:!1,sizes:v}),u(a=>a.changed)));w(h,x((a,b)=>({diff:a.prev-b,prev:b}),{diff:0,prev:0}),u(a=>a.diff))(1,a=>{let{groupIndices:c}=n(y);if(a>0)b(0,!0),f(0,a+av(a,c));else if(a<0){let b=n(z);b.length>0&&(a-=av(-a,b)),g(0,a)}}),w(h,A(a))(1,([a,b])=>{a<0&&b("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:h},3)});let H=E(f);o(w(f,A(y),u(([a,b])=>{let c=b.groupIndices.length>0,d=[],e=b.lastSize;if(c){let c=$(b.sizeTree,0),f=0,g=0;for(;f<a;){let a=b.groupIndices[g],h=b.groupIndices.length===g+1?1/0:b.groupIndices[g+1]-a-1;d.push({endIndex:a,size:c,startIndex:a}),d.push({endIndex:a+1+h-1,size:e,startIndex:a+1}),g++,f+=h+1}let h=ac(b.sizeTree);return f!==a&&h.shift(),h.reduce((b,{k:c,v:d})=>{let e=b.ranges;return 0!==b.prevSize&&(e=[...b.ranges,{endIndex:c+a-1,size:b.prevSize,startIndex:b.prevIndex}]),{prevIndex:c+a,prevSize:d,ranges:e}},{prevIndex:a,prevSize:0,ranges:d}).ranges}return ac(b.sizeTree).reduce((b,{k:c,v:d})=>({prevIndex:c+a,prevSize:d,ranges:[...b.ranges,{endIndex:c+a-1,size:b.prevSize,startIndex:b.prevIndex}]}),{prevIndex:0,prevSize:e,ranges:[]}).ranges})),c);let I=E(w(g,A(y,r),u(([a,{offsetTree:b},c])=>ar(-a,b,c))));return o(w(g,A(y,r),u(([a,b,c])=>{if(b.groupIndices.length>0){if(Z(b.sizeTree))return b;let d=X,e=n(z),f=0,g=0,h=0;for(;f<-a;){h=e[g];let a=e[g+1]-h-1;g++,f+=a+1}return d=ac(b.sizeTree).reduce((b,{k:c,v:d})=>aa(b,Math.max(0,c+a),d),d),f!==-a&&(d=aa(d,0,$(b.sizeTree,h)),d=aa(d,1,_(b.sizeTree,-a+1)[1])),{...b,sizeTree:d,...aw(b.offsetTree,0,d,c)}}let d=ac(b.sizeTree).reduce((b,{k:c,v:d})=>aa(b,Math.max(0,c+a),d),X);return{...b,sizeTree:d,...aw(b.offsetTree,0,d,c)}})),y),{beforeUnshiftWith:H,data:q,defaultItemSize:k,firstItemIndex:h,fixedItemSize:j,fixedGroupSize:l,gap:r,groupIndices:i,heightEstimates:m,itemSize:p,listRefresh:G,shiftWith:g,shiftWithOffset:I,sizeRanges:c,sizes:y,statefulTotalCount:e,totalCount:d,trackItemSizes:F,unshiftWith:f}},l(M,al),{singleton:!0});function aA(a){return a.reduce((a,b)=>(a.groupIndices.push(a.totalCount),a.totalCount+=b+1,a),{groupIndices:[],totalCount:0})}let aB=F(([{groupIndices:a,sizes:b,totalCount:c},{headerHeight:d,scrollTop:e}])=>{let f=D(),g=D(),h=E(w(f,u(aA)));return o(w(h,u(a=>a.totalCount)),c),o(w(h,u(a=>a.groupIndices)),a),o(w(H(e,b,d),t(([a,b])=>ao(b)),u(([a,b,c])=>_(b.groupOffsetTree,Math.max(a-c,0),"v")[0]),s(),u(a=>[a])),g),{groupCounts:f,topItemsIndexes:g}},l(az,W)),aC=F(([{log:a}])=>{let b=B(!1),c=E(w(b,t(a=>a),s()));return b(1,b=>{b&&n(a)("props updated",{},0)}),{didMount:c,propsReady:b}},l(M),{singleton:!0}),aD="u">typeof document&&"scrollBehavior"in document.documentElement.style;function aE(a){let b="number"==typeof a?{index:a}:a;return b.align||(b.align="start"),b.behavior&&aD||(b.behavior="auto"),void 0===b.offset&&(b.offset=0),b}let aF=F(([{gap:a,listRefresh:b,sizes:c,totalCount:d},{fixedFooterHeight:e,fixedHeaderHeight:f,footerHeight:g,headerHeight:h,scrollingInProgress:i,scrollTo:j,smoothScrollTargetReached:k,viewportHeight:l},{log:m}])=>{let n=D(),q=D(),r=B(0),s=null,t=null,v=null;function x(){null!==s&&(s(),s=null),null!==v&&(v(),v=null),t&&(clearTimeout(t),t=null),i(0,!1)}return o(w(n,A(c,l,d,r,h,g,m),A(a,f,e),u(([[a,c,d,e,f,g,h,j],l,m,o])=>{let r=aE(a),{align:u,behavior:y,offset:z}=r,A=e-1,B=at(r,c,A),C=ar(B,c.offsetTree,l)+g;"end"===u?(C+=m+_(c.sizeTree,B)[1]-d+o,B===A&&(C+=h)):"center"===u?C+=(m+_(c.sizeTree,B)[1]-d+o)/2:C-=f,void 0!==z&&0!==z&&(C+=z);let D=b=>{x(),b?(j("retrying to scroll to",{location:a},0),n(0,a)):(q(0,!0),j("list did not change, scroll successful",{},0))};if(x(),"smooth"===y){let a=!1;v=b(1,b=>{a=a||b}),s=p(k,()=>{D(a)})}else s=p(w(b,a=>{let b=setTimeout(()=>{a(!1)},150);return c=>{c&&(a(!0),clearTimeout(b))}}),D);return t=setTimeout(()=>{x()},1200),i(0,!0),j("scrolling from index to",{behavior:y,index:B,top:C},0),{behavior:y,top:C}})),j),{scrollTargetReached:q,scrollToIndex:n,topListHeight:r}},l(az,W,M),{singleton:!0});function aG(a,b){0===a?b():requestAnimationFrame(()=>{aG(a-1,b)})}function aH(a,b){return"number"==typeof a?a:"LAST"===a.index?b-1:a.index}let aI=F(([{defaultItemSize:a,listRefresh:b,sizes:c},{scrollTop:d},{scrollTargetReached:e,scrollToIndex:f},{didMount:g}])=>{let h=B(!0),j=B(0),k=B(!0);return o(w(g,A(j),t(([a,b])=>0!==b),v(!1)),h),o(w(g,A(j),t(([a,b])=>0!==b),v(!1)),k),w(H(b,g),A(h,c,a,k),t(([[,a],b,{sizeTree:c},d,e])=>a&&(!Z(c)||i(d))&&!b&&!e),A(j))(1,([,a])=>{p(e,()=>{k(0,!0)}),aG(4,()=>{p(d,()=>{h(0,!0)}),f(0,a)})}),{initialItemFinalLocationReached:k,initialTopMostItemIndex:j,scrolledToInitialItem:h}},l(az,W,aF,aC),{singleton:!0});function aJ(a,b){return 1.01>Math.abs(a-b)}let aK="down",aL={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},aM=F(([{footerHeight:a,headerHeight:b,scrollBy:c,scrollContainerState:d,scrollTop:e,viewportHeight:f}])=>{let g=B(!1),h=B(!0),i=D(),j=D(),k=B(4),l=B(0),m=C(w(J(w(I(e),y(1),v(!0)),w(I(e),y(1),v(!1),q(100))),s()),!1),p=C(w(J(w(c,v(!0)),w(c,v(!1),q(200))),s()),!1);o(w(H(I(e),I(l)),u(([a,b])=>a<=b),s()),h),o(w(h,z(50)),j);let r=E(w(H(d,I(f),I(b),I(a),I(k)),x((a,[{scrollHeight:b,scrollTop:c},d,e,f,g])=>{let h={scrollHeight:b,scrollTop:c,viewportHeight:d};if(c+d-b>-g){let b,d;return c>a.state.scrollTop?(b="SCROLLED_DOWN",d=a.state.scrollTop-c):(b="SIZE_DECREASED",d=a.state.scrollTop-c||a.scrollTopDelta),{atBottom:!0,atBottomBecause:b,scrollTopDelta:d,state:h}}return{atBottom:!1,notAtBottomBecause:h.scrollHeight>a.state.scrollHeight?"SIZE_INCREASED":d<a.state.viewportHeight?"VIEWPORT_HEIGHT_DECREASING":c<a.state.scrollTop?"SCROLLING_UPWARDS":"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",state:h}},aL),s((a,b)=>void 0!==a&&a.atBottom===b.atBottom))),F=C(w(d,x((a,{scrollHeight:b,scrollTop:c,viewportHeight:d})=>{if(!aJ(a.scrollHeight,b)){let e=b-(c+d)<1;return a.scrollTop!==c&&e?{changed:!0,jump:a.scrollTop-c,scrollHeight:b,scrollTop:c}:{changed:!0,jump:0,scrollHeight:b,scrollTop:c}}return{changed:!1,jump:0,scrollHeight:b,scrollTop:c}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),t(a=>a.changed),u(a=>a.jump)),0);o(w(r,u(a=>a.atBottom)),g),o(w(g,z(50)),i);let G=B(aK);o(w(d,u(({scrollTop:a})=>a),s(),x((a,b)=>n(p)?{direction:a.direction,prevScrollTop:b}:{direction:b<a.prevScrollTop?"up":aK,prevScrollTop:b},{direction:aK,prevScrollTop:0}),u(a=>a.direction)),G),o(w(d,z(50),v("none")),G);let K=B(0);return o(w(m,t(a=>!a),v(0)),K),o(w(e,z(100),A(m),t(([a,b])=>b),x(([a,b],[c])=>[b,c],[0,0]),u(([a,b])=>b-a)),K),{atBottomState:r,atBottomStateChange:i,atBottomThreshold:k,atTopStateChange:j,atTopThreshold:l,isAtBottom:g,isAtTop:h,isScrolling:m,lastJumpDueToItemResize:F,scrollDirection:G,scrollVelocity:K}},l(W)),aN="bottom",aO="none";function aP(a,b,c){return"number"==typeof a?"up"===c&&"top"===b||c===aK&&b===aN?a:0:"up"===c?"top"===b?a.main:a.reverse:b===aN?a.main:a.reverse}function aQ(a,b){return"number"==typeof a?a:a[b]??0}let aR=F(([{deviation:a,fixedHeaderHeight:b,headerHeight:c,scrollTop:d,viewportHeight:e}])=>{let f=D(),g=B(0),h=B(0),i=B(0),j=C(w(H(I(d),I(e),I(c),I(f,ak),I(i),I(g),I(b),I(a),I(h)),u(([a,b,c,[d,e],f,g,h,i,j])=>{let k=a-i,l=Math.max(c-k,0),m=aO,n=aQ(j,"top"),o=aQ(j,aN);return d-=i,d+=c+h,e+=c+h,d>a+(g+h)-n&&(m="up"),(e-=i)<a-l+b+o&&(m=aK),m!==aO?[Math.max(k-c-aP(f,"top",m)-n,0),k-l-h+b+aP(f,aN,m)+o]:null}),t(a=>null!==a),s(ak)),[0,0]);return{increaseViewportBy:h,listBoundary:f,overscan:i,topListHeight:g,visibleRange:j}},l(W),{singleton:!0}),aS={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function aT(a,b,c,d,e,f){let{lastIndex:g,lastOffset:h,lastSize:i}=e,j=0,k=0;if(a.length>0){j=a[0].offset;let b=a[a.length-1];k=b.offset+b.size}let l=c-g,m=j,n=h+l*i+(l-1)*d-k;return{bottom:k,firstItemIndex:f,items:aV(a,e,f),offsetBottom:n,offsetTop:j,top:m,topItems:aV(b,e,f),topListHeight:b.reduce((a,b)=>b.size+a,0),totalCount:c}}function aU(a,b,c,d,e,f){let g=0;if(c.groupIndices.length>0)for(let b of c.groupIndices){if(b-g>=a)break;g++}let h=a+g,i=aH(b,h);return aT(Array.from({length:h}).map((a,b)=>({data:f[b+i],index:b+i,offset:0,size:0})),[],h,e,c,d)}function aV(a,b,c){if(0===a.length)return[];if(!ao(b))return a.map(a=>({...a,index:a.index+c,originalIndex:a.index}));let d=a[0].index,e=a[a.length-1].index,f=[],g=ab(b.groupOffsetTree,d,e),h,i=0;for(let d of a){let a;(!h||h.end<d.index)&&(h=g.shift(),i=b.groupIndices.indexOf(h.start)),a=d.index===h.start?{index:i,type:"group"}:{groupIndex:i,index:d.index-(i+1)+c},f.push({...a,data:d.data,offset:d.offset,originalIndex:d.index,size:d.size})}return f}function aW(a,b){return void 0===a?0:"number"==typeof a?a:a[b]??0}let aX=F(([{data:a,firstItemIndex:b,gap:c,sizes:d,totalCount:e},f,{listBoundary:g,topListHeight:h,visibleRange:j},{initialTopMostItemIndex:k,scrolledToInitialItem:l},{topListHeight:m},p,{didMount:q},{recalcInProgress:r}])=>{let v=B([]),x=B(0),y=D(),F=B(0);o(f.topItemsIndexes,v);let G=C(w(H(q,r,I(j,ak),I(e),I(d),I(k),l,I(v),I(b),I(c),I(F),a),t(([a,b,,c,,,,,,,,d])=>{let e=void 0!==d&&d.length!==c;return a&&!b&&!e}),u(([,,[a,b],c,d,e,f,g,h,i,j,k])=>{var l;let{offsetTree:m,sizeTree:o}=d,p=n(x);if(0===c)return{...aS,totalCount:c};if(0===a&&0===b)return 0===p?{...aS,totalCount:c}:aU(p,e,d,h,i,k||[]);if(Z(o))return p>0?null:aT(function(a,b,c){if(ao(b)){let d=as(a,b);return[{index:_(b.groupOffsetTree,d)[0],offset:0,size:0},{data:c?.[0],index:d,offset:0,size:0}]}return[{data:c?.[0],index:a,offset:0,size:0}]}(aH(e,c),d,k),[],c,i,d,h);let q=[];if(g.length>0){let a=g[0],b=g[g.length-1],c=0;for(let d of ab(o,a,b)){let e=d.value,f=Math.max(d.start,a),g=Math.min(d.end,b);for(let a=f;a<=g;a++)q.push({data:k?.[a],index:a,offset:c,size:e}),c+=e}}if(!f)return aT([],q,c,i,d,h);let r=g.length>0?g[g.length-1]+1:0,s=function(a,b,c,d=0){let e,f;return d>0&&(b=Math.max(b,a[am(a,d,ap)].offset)),Y((e=am(a,b,aq),f=am(a,c,aq,e),a.slice(e,f+1)),ax)}(m,a,b,r);if(0===s.length)return null;let t=c-1,u=((c=>{for(let d of s){let e=d.value,f=e.offset,g=d.start,h=e.size;if(e.offset<a){let b=(g+=Math.floor((a-e.offset+i)/(h+i)))-d.start;f+=b*h+b*i}g<r&&(f+=(r-g)*h,g=r);let j=Math.min(d.end,t);for(let a=g;a<=j&&!(f>=b);a++)c.push({data:k?.[a],index:a,offset:f,size:h}),f+=h+i}})(l=[]),l),v=aW(j,"top"),w=aW(j,aN);if(u.length>0&&(v>0||w>0)){let a=u[0],b=u[u.length-1];if(v>0&&a.index>r){let b=Math.min(v,a.index-r),c=[],d=a.offset;for(let e=a.index-1;e>=a.index-b;e--){let b=ab(o,e,e)[0]?.value??a.size;d-=b+i,c.unshift({data:k?.[e],index:e,offset:d,size:b})}u.unshift(...c)}if(w>0&&b.index<t){let a=Math.min(w,t-b.index),c=b.offset+b.size+i;for(let d=b.index+1;d<=b.index+a;d++){let a=ab(o,d,d)[0]?.value??b.size;u.push({data:k?.[d],index:d,offset:c,size:a}),c+=a+i}}}return aT(u,q,c,i,d,h)}),t(a=>null!==a),s()),aS);o(w(a,t(i),u(a=>a?.length)),e),o(w(G,u(a=>a.topListHeight)),m),o(m,h),o(w(G,u(a=>[a.top,a.bottom])),g),o(w(G,u(a=>a.items)),y);let J=E(w(G,t(({items:a})=>a.length>0),A(e,a),t(([{items:a},b])=>a[a.length-1].originalIndex===b-1),u(([,a,b])=>[a-1,b]),s(ak),u(([a])=>a))),K=E(w(G,z(200),t(({items:a,topItems:b})=>a.length>0&&a[0].originalIndex===b.length),u(({items:a})=>a[0].index),s())),L=E(w(G,t(({items:a})=>a.length>0),u(({items:a})=>{let b=0,c=a.length-1;for(;"group"===a[b].type&&b<c;)b++;for(;"group"===a[c].type&&c>b;)c--;return{endIndex:a[c].index,startIndex:a[b].index}}),s(aj)));return{endReached:J,initialItemCount:x,itemsRendered:y,listState:G,minOverscanItemCount:F,rangeChanged:L,startReached:K,topItemsIndexes:v,...p}},l(az,aB,aR,aI,aF,aM,aC,al),{singleton:!0}),aY=F(([{fixedFooterHeight:a,fixedHeaderHeight:b,footerHeight:c,headerHeight:d},{listState:e}])=>{let f=D(),g=C(w(H(c,a,d,b,e),u(([a,b,c,d,e])=>a+b+c+d+e.offsetBottom+e.bottom)),0);return o(I(g),f),{totalListHeight:g,totalListHeightChanged:f}},l(W,aX),{singleton:!0}),aZ=F(([{viewportHeight:a},{totalListHeight:b}])=>{let c=B(!1),d=C(w(H(c,a,b),t(([a])=>a),u(([,a,b])=>Math.max(0,a-b)),z(0),s()),0);return{alignToBottom:c,paddingTopAddition:d}},l(W,aY),{singleton:!0}),a$=F(()=>({context:B(null)})),a_=({itemBottom:a,itemTop:b,locationParams:{align:c,behavior:d,...e},viewportBottom:f,viewportTop:g})=>b<g?{...e,align:c??"start",...void 0!==d?{behavior:d}:{}}:a>f?{...e,align:c??"end",...void 0!==d?{behavior:d}:{}}:null,a0=F(([{gap:a,sizes:b,totalCount:c},{fixedFooterHeight:d,fixedHeaderHeight:e,headerHeight:f,scrollingInProgress:g,scrollTop:h,viewportHeight:i},{scrollToIndex:j}])=>{let k=D();return o(w(k,A(b,i,c,f,e,d,h),A(a),u(([[a,b,c,d,e,f,h,i],j])=>{let{calculateViewLocation:k=a_,done:l,...m}=a,o=at(a,b,d-1),q=ar(o,b.offsetTree,j)+e+f,r=k({itemBottom:q+_(b.sizeTree,o)[1],itemTop:q,locationParams:m,viewportBottom:i+c-h,viewportTop:i+f});return null!==r?l&&p(w(g,t(a=>!a),y(n(g)?1:2)),l):l?.(),r}),t(a=>null!==a)),j),{scrollIntoView:k}},l(az,W,aF,aX,M),{singleton:!0});function a1(a){return!1!==a&&("smooth"===a?"smooth":"auto")}let a2=F(([{listRefresh:a,totalCount:b,fixedItemSize:c,data:d},{atBottomState:e,isAtBottom:f},{scrollToIndex:g},{scrolledToInitialItem:h},{didMount:i,propsReady:j},{log:k},{scrollingInProgress:l},{context:m},{scrollIntoView:q}])=>{let r=B(!1),s=D(),v=null;function C(a){g(0,{align:"end",behavior:a,index:"LAST"})}function E(a){setTimeout(p(e,b=>{a&&!b.atBottom&&"SIZE_INCREASED"===b.notAtBottomBecause&&null===v&&(n(k)("scrolling to bottom due to increased size",{},0),C("auto"))}),100)}w(H(w(I(b),y(1)),i),A(I(r),f,h,l),u(([[a,b],c,d,e,f])=>{let g,h=b&&e,i="auto";return h&&(g=d||f,i="function"==typeof c?a1(c(g)):g&&a1(c),h=h&&!1!==i),{followOutputBehavior:i,shouldFollow:h,totalCount:a}}),t(({shouldFollow:a})=>a))(1,({followOutputBehavior:b,totalCount:d})=>{null!==v&&(v(),v=null),void 0!==n(c)?requestAnimationFrame(()=>{n(k)("following output to ",{totalCount:d},0),C(b)}):v=p(a,()=>{n(k)("following output to ",{totalCount:d},0),C(b),v=null})}),w(H(I(r),b,j),t(([a,,b])=>!1!==a&&b),x(({value:a},[,b])=>({refreshed:a===b,value:b}),{refreshed:!1,value:0}),t(({refreshed:a})=>a),A(r,b))(1,([,a])=>{n(h)&&E(!1!==a)}),s(1,()=>{E(!1!==n(r))}),H(I(r),e)(1,([a,b])=>{!1===a||b.atBottom||"VIEWPORT_HEIGHT_DECREASING"!==b.notAtBottomBecause||C("auto")});let F=B(null),G=D();return o(J(w(I(d),u(a=>a?.length??0)),w(I(b))),G),w(H(w(G,y(1)),i),A(I(F),h,l,m),u(([[a,b],c,d,e,f])=>b&&d&&c?.({context:f,totalCount:a,scrollingInProgress:e})),t(a=>!!a),z(0))(1,b=>{null!==v&&(v(),v=null),void 0!==n(c)?requestAnimationFrame(()=>{n(k)("scrolling into view",{}),q(0,b)}):v=p(a,()=>{n(k)("scrolling into view",{}),q(0,b),v=null})}),{autoscrollToBottom:s,followOutput:r,scrollIntoViewOnChange:F}},l(az,aM,aF,aI,aC,M,W,a$,a0)),a3=F(([{data:a,firstItemIndex:b,gap:c,sizes:d},{initialTopMostItemIndex:e},{initialItemCount:f,listState:g},{didMount:h}])=>(o(w(h,A(f),t(([,a])=>0!==a),A(e,d,b,c,a),u(([[,a],b,c,d,e,f=[]])=>aU(a,b,c,d,e,f))),g),{}),l(az,aI,aX,aC),{singleton:!0}),a4=F(([{didMount:a},{scrollTo:b},{listState:c}])=>{let d=B(0);return w(a,A(d),t(([,a])=>0!==a),u(([,a])=>({top:a})))(1,a=>{p(w(c,y(1),t(a=>a.items.length>1)),()=>{requestAnimationFrame(()=>{b(0,a)})})}),{initialScrollTop:d}},l(aC,W,aX),{singleton:!0}),a5=F(([{scrollVelocity:a}])=>{let b=B(!1),c=D(),d=B(!1);return o(w(a,A(d,b,c),t(([a,b])=>!1!==b&&void 0!==b),u(([a,b,c,d])=>{let{enter:e,exit:f}=b;if(c){if(f(a,d))return!1}else if(e(a,d))return!0;return c}),s()),b),w(H(b,a,c),A(d))(1,([[a,b,c],d])=>{a&&!1!==d&&void 0!==d&&d.change&&d.change(b,c)}),{isSeeking:b,scrollSeekConfiguration:d,scrollSeekRangeChanged:c,scrollVelocity:a}},l(aM),{singleton:!0}),a6=F(([{scrollContainerState:a,scrollTo:b}])=>{let c=D(),d=D(),e=D(),f=B(!1),g=B(void 0);return o(w(H(c,d),u(([{scrollTop:a,viewportHeight:b},{offsetTop:c,listHeight:d}])=>({scrollHeight:d,scrollTop:Math.max(0,a-c),viewportHeight:b}))),a),o(w(b,A(d),u(([a,{offsetTop:b}])=>({...a,top:a.top+b}))),e),{customScrollParent:g,useWindowScroll:f,windowScrollContainerState:c,windowScrollTo:e,windowViewportRect:d}},l(W)),a7=F(([{sizeRanges:a,sizes:b},{headerHeight:c,scrollTop:d},{initialTopMostItemIndex:e},{didMount:f},{useWindowScroll:g,windowScrollContainerState:h,windowViewportRect:j}])=>{let k=D(),l=B(void 0),m=B(null),n=B(null);return o(h,m),o(j,n),w(k,A(b,d,g,m,n,c))(1,([a,b,c,d,e,f,g])=>{let h=ac(b.sizeTree).map(({k:a,v:b},c,d)=>{let e=d[c+1];return{endIndex:void 0!==e?e.k-1:1/0,size:b,startIndex:a}});d&&null!==e&&null!==f&&(c=e.scrollTop-f.offsetTop),a({ranges:h,scrollTop:c-=g})}),o(w(l,t(i),u(a8)),e),o(w(f,A(l),t(([,a])=>void 0!==a),s(),u(([,a])=>a.ranges)),a),{getState:k,restoreStateFrom:l}},l(az,W,aI,aC,a6));function a8(a){return{align:"start",index:0,offset:a.scrollTop}}let a9=F(([{topItemsIndexes:a}])=>{let b=B(0);return o(w(b,t(a=>a>=0),u(a=>Array.from({length:a}).map((a,b)=>b))),a),{topItemCount:b}},l(aX));function ba(a){let b=!1,c;return()=>(b||(b=!0,c=a()),c)}let bb=ba(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),bc=F(([{deviation:a,scrollBy:b,scrollingInProgress:c,scrollTop:d},{isAtBottom:e,isScrolling:f,lastJumpDueToItemResize:g,scrollDirection:h},{listState:i},{beforeUnshiftWith:j,gap:k,shiftWithOffset:l,sizes:m},{log:n},{recalcInProgress:p}])=>{let q=E(w(i,A(g),x(([,a,b,c],[{bottom:d,items:e,offsetBottom:f,totalCount:g},h])=>{let i=d+f,j=0;return b===g&&a.length>0&&e.length>0&&(0===e[0].originalIndex&&0===a[0].originalIndex||0!=(j=i-c)&&(j+=h)),[j,e,g,i]},[0,[],0,0]),t(([a])=>0!==a),A(d,h,c,e,n,p),t(([,a,b,c,,,d])=>!d&&!c&&0!==a&&"up"===b),u(([[a],,,,,b])=>(b("Upward scrolling compensation",{amount:a},0),a))));function r(c){c>0?(b(0,{behavior:"auto",top:-c}),a(0,0)):(a(0,0),b(0,{behavior:"auto",top:-c}))}return w(q,A(a,f))(1,([b,c,d])=>{d&&bb()?a(0,c-b):r(-b)}),w(H(C(f,!1),a,p),t(([a,b,c])=>!a&&!c&&0!==b),u(([a,b])=>b),z(1))(1,r),o(w(l,u(a=>({top:-a}))),b),w(j,A(m,k),u(([a,{groupIndices:b,lastSize:c,sizeTree:d},e])=>{if(0===b.length)return a*(c+e);let f=0,g=$(d,0),h=0,i=0;for(;h<a;){h++,f+=g;let d=b.length===i+1?1/0:b[i+1]-b[i]-1;h+d>a&&(f-=g,d=a-h+1),h+=d,f+=d*(c+e),i++}return f}))(1,c=>{a(0,c),requestAnimationFrame(()=>{b(0,{top:c}),requestAnimationFrame(()=>{a(0,0),p(0,!1)})})}),{deviation:a}},l(W,aM,aX,az,M,al)),bd=F(([a,b,c,d,e,f,g,h,i,j,k])=>({...a,...b,...c,...d,...e,...f,...g,...h,...i,...j,...k}),l(aR,a3,aC,a5,aY,a4,aZ,a6,a0,M,a$)),be=F(([{data:a,defaultItemSize:b,firstItemIndex:c,fixedItemSize:d,fixedGroupSize:e,gap:f,groupIndices:g,heightEstimates:h,itemSize:i,sizeRanges:j,sizes:k,statefulTotalCount:l,totalCount:m,trackItemSizes:n},{initialItemFinalLocationReached:p,initialTopMostItemIndex:q,scrolledToInitialItem:r},s,t,v,x,{scrollToIndex:y},z,{topItemCount:A},{groupCounts:B},C])=>{let{listState:D,minOverscanItemCount:E,topItemsIndexes:F,rangeChanged:G,...H}=x;return o(G,C.scrollSeekRangeChanged),o(w(C.windowViewportRect,u(a=>a.visibleHeight)),s.viewportHeight),{data:a,defaultItemHeight:b,firstItemIndex:c,fixedItemHeight:d,fixedGroupHeight:e,gap:f,groupCounts:B,heightEstimates:h,initialItemFinalLocationReached:p,initialTopMostItemIndex:q,scrolledToInitialItem:r,sizeRanges:j,topItemCount:A,topItemsIndexes:F,totalCount:m,...v,groupIndices:g,itemSize:i,listState:D,minOverscanItemCount:E,scrollToIndex:y,statefulTotalCount:l,trackItemSizes:n,rangeChanged:G,...H,...C,...s,sizes:k,...t}},l(az,aI,W,a7,a2,aX,aF,bc,a9,aB,bd)),bf="u">typeof document?e.useLayoutEffect:e.useEffect;function bg(a,b,c){let f=Object.keys(b.required||{}),g=Object.keys(b.optional||{}),h=Object.keys(b.methods||{}),i=Object.keys(b.events||{}),k=e.createContext({});function l(a,c){for(let d of(void 0!==a.propsReady&&(0,a.propsReady)(0,!1),f))(0,a[b.required[d]])(0,c[d]);for(let d of g)d in c&&(0,a[b.optional[d]])(0,c[d]);void 0!==a.propsReady&&(0,a.propsReady)(0,!0)}function o(a){return i.reduce((c,d)=>{var e;let f,g,h;return c[d]=(e=a[b.events[d]],h=()=>f?.(),function(a,b){switch(a){case 1:return b?g===b?void 0:(h(),g=b,f=e(1,b)):(h(),j);case 2:h(),g=null;return}}),c},{})}return{Component:e.forwardRef(function(j,n){var p;let{children:q,...r}=j,[s]=e.useState(()=>{var b;let c,d;return c=new Map,l(b=(d=({constructor:a,dependencies:b,id:e,singleton:f})=>{if(f&&c.has(e))return c.get(e);let g=a(b.map(a=>d(a)));return f&&c.set(e,g),g})(a),r),b}),[t]=e.useState(()=>o(s));return bf(()=>{for(let a of i)a in r&&(0,t[a])(1,r[a]);return()=>{Object.values(t).map(m)}},[r,t,s]),bf(()=>{l(s,r)}),e.useImperativeHandle(n,(p=h.reduce((a,c)=>(a[c]=a=>{(0,s[b.methods[c]])(0,a)},a),{}),()=>p)),(0,d.jsx)(k.Provider,{value:s,children:void 0!==c?(0,d.jsx)(c,{...function(a,b){let c={},d={},e=0,f=a.length;for(;e<f;)d[a[e]]=1,e+=1;for(let a in b)Object.hasOwn(d,a)||(c[a]=b[a]);return c}([...f,...g,...i],r),children:q}):q})}),useEmitter:(a,b)=>{let c=e.useContext(k)[a];bf(()=>c(1,b),[b,c])},useEmitterValue:parseInt(e.version)>=18?a=>{let b=e.useContext(k)[a],c=e.useCallback(a=>b(1,a),[b]);return e.useSyncExternalStore(c,()=>n(b),()=>n(b))}:a=>{let b=e.useContext(k)[a],[c,d]=e.useState(()=>n(b));return bf(()=>b(1,a=>{a!==c&&d(()=>a)}),[b,c]),c},usePublisher:a=>{let b=e.useContext(k);return e.useCallback(c=>{(0,b[a])(0,c)},[b,a])}}}let bh=e.createContext(void 0),bi=e.createContext(void 0),bj="-webkit-sticky",bk="sticky",bl=ba(()=>{if(typeof document>"u")return bk;let a=document.createElement("div");return a.style.position=bj,a.style.position===bj?bj:bk}),bm="u">typeof document?e.useLayoutEffect:e.useEffect;function bn(a){return"self"in a}function bo(a,b,c,d=j,g,h){let i=e.useRef(null),k=e.useRef(null),l=e.useRef(null),m=e.useCallback(c=>{let d,e,g,i=c.target;if("body"in i||bn(i)){let a=bn(i)?i:i.defaultView;g=!0===h?Q(a,a.scrollX):a.scrollY,d=!0===h?a.document.documentElement.scrollWidth:a.document.documentElement.scrollHeight,e=!0===h?a.innerWidth:a.innerHeight}else g=!0===h?Q(i,i.scrollLeft):i.scrollTop,d=!0===h?i.scrollWidth:i.scrollHeight,e=!0===h?i.offsetWidth:i.offsetHeight;let j=()=>{a({scrollHeight:d,scrollTop:Math.max(g,0),viewportHeight:e})};!0===c.suppressFlushSync?j():f.flushSync(j),null!==k.current&&(g===k.current||g<=0||g===d-e)&&(k.current=null,b(!0),l.current&&(clearTimeout(l.current),l.current=null))},[a,b,h]);return e.useEffect(()=>{let a=g||i.current;return P(a),d(g||i.current),m({suppressFlushSync:!0,target:a}),a.addEventListener("scroll",m,{passive:!0}),()=>{P(a),d(null),a.removeEventListener("scroll",m)}},[i,m,c,d,g]),{scrollByCallback:function(a){!0===h&&(a={...void 0!==a.behavior?{behavior:a.behavior}:{},...void 0!==a.top?{left:Q(i.current,a.top)}:{}}),i.current.scrollBy(a)},scrollerRef:i,scrollToCallback:function(c){let d,e,f,g=i.current;if(!g||(!0===h?"offsetWidth"in g&&0===g.offsetWidth:"offsetHeight"in g&&0===g.offsetHeight))return;let j="smooth"===c.behavior;bn(g)?(e=Math.max(an(g.document.documentElement,!0===h?"width":"height"),!0===h?g.document.documentElement.scrollWidth:g.document.documentElement.scrollHeight),d=!0===h?g.innerWidth:g.innerHeight,f=!0===h?Q(g,g.scrollX):g.scrollY):(e=g[!0===h?"scrollWidth":"scrollHeight"],d=an(g,!0===h?"width":"height"),f=!0===h?Q(g,g.scrollLeft):g.scrollTop);let m=e-d;if(void 0===c.top)return void g.scrollTo(c);let n=Math.ceil(Math.max(Math.min(m,c.top),0));if(c.top=n,aJ(d,e)||n===f){a({scrollHeight:e,scrollTop:f,viewportHeight:d}),j&&b(!0);return}j?(k.current=n,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,k.current=null,b(!0)},1e3)):k.current=null,!0===h&&(c={...void 0!==c.behavior?{behavior:c.behavior}:{},left:Q(g,n)}),g.scrollTo(c)}}}function bp(a){return a}let bq=F(()=>{let a=B(a=>`Item ${a}`),b=B(a=>`Group ${a}`),c=B({}),d=B(bp),e=B("div"),f=B(j),g=(a,b=null)=>C(w(c,u(b=>b[a]),s()),b);return{components:c,computeItemKey:d,EmptyPlaceholder:g("EmptyPlaceholder"),FooterComponent:g("Footer"),GroupComponent:g("Group","div"),groupContent:b,HeaderComponent:g("Header"),HeaderFooterTag:e,ItemComponent:g("Item","div"),itemContent:a,ListComponent:g("List","div"),ScrollerComponent:g("Scroller","div"),scrollerRef:f,ScrollSeekPlaceholder:g("ScrollSeekPlaceholder"),TopItemListComponent:g("TopItemList")}}),br=F(([a,b])=>({...a,...b}),l(be,bq)),bs=({height:a})=>(0,d.jsx)("div",{style:{height:a}}),bt={overflowAnchor:"none",position:bl(),zIndex:1},bu={overflowAnchor:"none"},bv={...bu,display:"inline-block",height:"100%"},bw=e.memo(function({showTopList:a=!1}){let b=bN("listState"),c=bO("sizeRanges"),f=bN("useWindowScroll"),g=bN("customScrollParent"),h=bO("windowScrollContainerState"),i=bO("scrollContainerState"),k=bN("itemContent"),l=bN("context"),m=bN("groupContent"),n=bN("trackItemSizes"),o=bN("itemSize"),p=bN("log"),q=bO("gap"),r=bN("horizontalDirection"),{callbackRef:s}=T(c,o,n,a?j:g||f?h:i,p,q,g,r,bN("skipAnimationFrameInResizeObserver")),[t,u]=e.useState(0);bM("deviation",a=>{t!==a&&u(a)});let v=bN("EmptyPlaceholder"),w=bN("ScrollSeekPlaceholder")??bs,x=bN("ListComponent"),y=bN("ItemComponent"),z=bN("GroupComponent"),A=bN("computeItemKey"),B=bN("isSeeking"),C=bN("groupIndices").length>0,D=bN("alignToBottom"),E=bN("initialItemFinalLocationReached"),F=a?{}:{boxSizing:"border-box",...r?{display:"inline-block",height:"100%",marginInlineStart:0!==t?t:D?"auto":0,paddingInlineEnd:b.offsetBottom,paddingInlineStart:b.offsetTop,whiteSpace:"nowrap"}:{marginTop:0!==t?t:D?"auto":0,paddingBottom:b.offsetBottom,paddingTop:b.offsetTop},...E?{}:{visibility:"hidden"}};return a||0!==b.totalCount||null==v?(0,d.jsx)(x,{...bC(x,l),"data-testid":a?"virtuoso-top-item-list":"virtuoso-item-list",ref:s,style:F,children:(a?b.topItems:b.items).map(a=>{let c=a.originalIndex,d=A(c+b.firstItemIndex,a.data,l);return B?(0,e.createElement)(w,{...bC(w,l),height:a.size,index:a.index,key:d,type:a.type||"item",..."group"===a.type?{}:{groupIndex:a.groupIndex}}):"group"===a.type?(0,e.createElement)(z,{...bC(z,l),"data-index":c,"data-item-index":a.index,"data-known-size":a.size,key:d,style:bt},m(a.index,l)):(0,e.createElement)(y,{...bC(y,l),...bD(y,a.data),"data-index":c,"data-item-group-index":a.groupIndex,"data-item-index":a.index,"data-known-size":a.size,key:d,style:r?bv:bu},C?k(a.index,a.groupIndex,a.data,l):k(a.index,a.data,l))})}):(0,d.jsx)(v,{...bC(v,l)})}),bx={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},by={outline:"none",overflowX:"auto",position:"relative"},bz=a=>({height:"100%",position:"absolute",top:0,width:"100%",...a?{display:"flex",flexDirection:"column"}:void 0}),bA=(a,b,c=0)=>({...bz(a),position:b?"relative":"absolute",top:b?-c:0}),bB={position:bl(),top:0,width:"100%",zIndex:1};function bC(a,b){if("string"!=typeof a)return{context:b}}function bD(a,b){return{item:"string"==typeof a?void 0:b}}let bE=e.memo(function(){let a=bN("HeaderComponent"),b=bO("headerHeight"),c=bN("HeaderFooterTag"),f=R(e.useMemo(()=>a=>{b(an(a,"height"))},[b]),!0,bN("skipAnimationFrameInResizeObserver")),g=bN("context");return null!=a?(0,d.jsx)(c,{ref:f,children:(0,d.jsx)(a,{...bC(a,g)})}):null}),bF=e.memo(function(){let a=bN("FooterComponent"),b=bO("footerHeight"),c=bN("HeaderFooterTag"),f=R(e.useMemo(()=>a=>{b(an(a,"height"))},[b]),!0,bN("skipAnimationFrameInResizeObserver")),g=bN("context");return null!=a?(0,d.jsx)(c,{ref:f,children:(0,d.jsx)(a,{...bC(a,g)})}):null});function bG({useEmitter:a,useEmitterValue:b,usePublisher:c}){return e.memo(function({children:e,style:f,context:g,...h}){let i=c("scrollContainerState"),j=b("ScrollerComponent"),k=c("smoothScrollTargetReached"),l=b("scrollerRef"),m=b("horizontalDirection")||!1,{scrollByCallback:n,scrollerRef:o,scrollToCallback:p}=bo(i,k,j,l,void 0,m);return a("scrollTo",p),a("scrollBy",n),(0,d.jsx)(j,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:o,style:{...m?by:bx,...f},tabIndex:0,...h,...bC(j,g),children:e})})}function bH({useEmitter:a,useEmitterValue:b,usePublisher:c}){return e.memo(function({children:f,style:g,context:h,...i}){let j=c("windowScrollContainerState"),k=b("ScrollerComponent"),l=c("smoothScrollTargetReached"),m=b("totalListHeight"),n=b("deviation"),o=b("customScrollParent"),p=e.useRef(null),{scrollByCallback:q,scrollerRef:r,scrollToCallback:s}=bo(j,l,k,b("scrollerRef"),o);return bm(()=>(r.current=o||p.current?.ownerDocument.defaultView,()=>{r.current=null}),[r,o]),a("windowScrollTo",s),a("scrollBy",q),(0,d.jsx)(k,{ref:p,"data-virtuoso-scroller":!0,style:{position:"relative",...g,...0!==m?{height:m+n}:void 0},...i,...bC(k,h),children:f})})}let bI=({children:a})=>{let b=e.useContext(bh),c=bO("viewportHeight"),f=bO("fixedItemHeight"),g=bN("alignToBottom"),i=bN("horizontalDirection"),j=R(e.useMemo(()=>h(c,a=>an(a,i?"width":"height")),[c,i]),!0,bN("skipAnimationFrameInResizeObserver"));return e.useEffect(()=>{b&&(c(b.viewportHeight),f(b.itemHeight))},[b,c,f]),(0,d.jsx)("div",{"data-viewport-type":"element",ref:j,style:bz(g),children:a})},bJ=({children:a})=>{let b=e.useContext(bh),c=bO("windowViewportRect"),f=bO("fixedItemHeight"),g=bN("customScrollParent"),h=bN("useWindowScroll"),i=bN("topListHeight"),j=V(c,g,bN("skipAnimationFrameInResizeObserver")),k=bN("alignToBottom");return e.useEffect(()=>{b&&(f(b.itemHeight),c({listHeight:0,offsetTop:0,visibleHeight:b.viewportHeight,visibleWidth:100}))},[b,c,f]),(0,d.jsx)("div",{"data-viewport-type":"window",ref:j,style:bA(k,h,i),children:a})},bK=({children:a})=>{let b=bN("TopItemListComponent")??"div",c=bN("headerHeight"),e={...bB,marginTop:`${c}px`},f=bN("context");return(0,d.jsx)(b,{style:e,...bC(b,f),children:a})},{Component:bL,useEmitter:bM,useEmitterValue:bN,usePublisher:bO}=bg(br,{optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},e.memo(function(a){let b=bN("useWindowScroll"),c=bN("topItemsIndexes").length>0,e=bN("customScrollParent"),f=bN("context");return(0,d.jsxs)(e||b?bQ:bP,{...a,context:f,children:[c&&(0,d.jsx)(bK,{children:(0,d.jsx)(bw,{showTopList:!0})}),(0,d.jsxs)(e||b?bJ:bI,{children:[(0,d.jsx)(bE,{}),(0,d.jsx)(bw,{}),(0,d.jsx)(bF,{})]})]})})),bP=bG({useEmitter:bM,useEmitterValue:bN,usePublisher:bO}),bQ=bH({useEmitter:bM,useEmitterValue:bN,usePublisher:bO}),bR=bL,bS=F(()=>{let a=B(a=>(0,d.jsxs)("td",{children:["Item $",a]})),b=B(null),c=B(a=>(0,d.jsxs)("td",{colSpan:1e3,children:["Group ",a]})),e=B(null),f=B(null),g=B({}),h=B(bp),i=B(j),k=(a,b=null)=>C(w(g,u(b=>b[a]),s()),b);return{components:g,computeItemKey:h,context:b,EmptyPlaceholder:k("EmptyPlaceholder"),FillerRow:k("FillerRow"),fixedFooterContent:f,fixedHeaderContent:e,itemContent:a,groupContent:c,ScrollerComponent:k("Scroller","div"),scrollerRef:i,ScrollSeekPlaceholder:k("ScrollSeekPlaceholder"),TableBodyComponent:k("TableBody","tbody"),TableComponent:k("Table","table"),TableFooterComponent:k("TableFoot","tfoot"),TableHeadComponent:k("TableHead","thead"),TableRowComponent:k("TableRow","tr"),GroupComponent:k("Group","tr")}}),bT=F(([a,b])=>({...a,...b}),l(be,bS)),bU=({height:a})=>(0,d.jsx)("tr",{children:(0,d.jsx)("td",{style:{height:a}})}),bV=({height:a})=>(0,d.jsx)("tr",{children:(0,d.jsx)("td",{style:{border:0,height:a,padding:0}})}),bW={overflowAnchor:"none"},bX={position:bl(),zIndex:2,overflowAnchor:"none"},bY=e.memo(function({showTopList:a=!1}){let b=b1("listState"),c=b1("computeItemKey"),d=b1("firstItemIndex"),f=b1("context"),g=b1("isSeeking"),h=b1("fixedHeaderHeight"),i=b1("groupIndices").length>0,j=b1("itemContent"),k=b1("groupContent"),l=b1("ScrollSeekPlaceholder")??bU,m=b1("GroupComponent"),n=b1("TableRowComponent"),o=(a?b.topItems:[]).reduce((a,b,c)=>(0===c?a.push(b.size):a.push(a[c-1]+b.size),a),[]);return(a?b.topItems:b.items).map(b=>{let p=b.originalIndex,q=c(p+d,b.data,f),r=a?0===p?0:o[p-1]:0;return g?(0,e.createElement)(l,{...bC(l,f),height:b.size,index:b.index,key:q,type:b.type||"item"}):"group"===b.type?(0,e.createElement)(m,{...bC(m,f),"data-index":p,"data-item-index":b.index,"data-known-size":b.size,key:q,style:{...bX,top:h}},k(b.index,f)):(0,e.createElement)(n,{...bC(n,f),...bD(n,b.data),"data-index":p,"data-item-index":b.index,"data-known-size":b.size,"data-item-group-index":b.groupIndex,key:q,style:a?{...bX,top:h+r}:bW},i?j(b.index,b.groupIndex,b.data,f):j(b.index,b.data,f))})}),bZ=e.memo(function(){let a=b1("listState"),b=b1("topItemsIndexes").length>0,c=b2("sizeRanges"),f=b1("useWindowScroll"),g=b1("customScrollParent"),h=b2("windowScrollContainerState"),i=b2("scrollContainerState"),j=b1("trackItemSizes"),{callbackRef:k,ref:l}=T(c,b1("itemSize"),j,g||f?h:i,b1("log"),void 0,g,!1,b1("skipAnimationFrameInResizeObserver")),[m,n]=e.useState(0);b0("deviation",a=>{m!==a&&(l.current.style.marginTop=`${a}px`,n(a))});let o=b1("EmptyPlaceholder"),p=b1("FillerRow")??bV,q=b1("TableBodyComponent"),r=b1("paddingTopAddition"),s=b1("statefulTotalCount"),t=b1("context");if(0===s&&null!=o)return(0,d.jsx)(o,{...bC(o,t)});let u=(b?a.topItems:[]).reduce((a,b)=>a+b.size,0),v=a.offsetTop+r+m-u,w=a.offsetBottom,x=v>0?(0,d.jsx)(p,{context:t,height:v},"padding-top"):null,y=w>0?(0,d.jsx)(p,{context:t,height:w},"padding-bottom"):null;return(0,d.jsxs)(q,{"data-testid":"virtuoso-item-list",ref:k,...bC(q,t),children:[x,b&&(0,d.jsx)(bY,{showTopList:!0}),(0,d.jsx)(bY,{}),y]})}),b$=({children:a})=>{let b=e.useContext(bh),c=b2("viewportHeight"),f=b2("fixedItemHeight"),g=R(e.useMemo(()=>h(c,a=>an(a,"height")),[c]),!0,b1("skipAnimationFrameInResizeObserver"));return e.useEffect(()=>{b&&(c(b.viewportHeight),f(b.itemHeight))},[b,c,f]),(0,d.jsx)("div",{"data-viewport-type":"element",ref:g,style:bz(!1),children:a})},b_=({children:a})=>{let b=e.useContext(bh),c=b2("windowViewportRect"),f=b2("fixedItemHeight"),g=b1("customScrollParent"),h=b1("useWindowScroll"),i=V(c,g,b1("skipAnimationFrameInResizeObserver"));return e.useEffect(()=>{b&&(f(b.itemHeight),c({listHeight:0,offsetTop:0,visibleHeight:b.viewportHeight,visibleWidth:100}))},[b,c,f]),(0,d.jsx)("div",{"data-viewport-type":"window",ref:i,style:bA(!1,h),children:a})},{useEmitter:b0,useEmitterValue:b1,usePublisher:b2}=bg(bT,{optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",groupContent:"groupContent",fixedHeaderContent:"fixedHeaderContent",fixedFooterContent:"fixedFooterContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},e.memo(function(a){let b=b1("useWindowScroll"),c=b1("customScrollParent"),f=b2("fixedHeaderHeight"),g=b2("fixedFooterHeight"),i=b1("fixedHeaderContent"),j=b1("fixedFooterContent"),k=b1("context"),l=R(e.useMemo(()=>h(f,a=>an(a,"height")),[f]),!0,b1("skipAnimationFrameInResizeObserver")),m=R(e.useMemo(()=>h(g,a=>an(a,"height")),[g]),!0,b1("skipAnimationFrameInResizeObserver")),n=c||b?b4:b3,o=c||b?b_:b$,p=b1("TableComponent"),q=b1("TableHeadComponent"),r=b1("TableFooterComponent"),s=i?(0,d.jsx)(q,{ref:l,style:{position:"sticky",top:0,zIndex:2},...bC(q,k),children:i()},"TableHead"):null,t=j?(0,d.jsx)(r,{ref:m,style:{bottom:0,position:"sticky",zIndex:1},...bC(r,k),children:j()},"TableFoot"):null;return(0,d.jsx)(n,{...a,...bC(n,k),children:(0,d.jsx)(o,{children:(0,d.jsxs)(p,{style:{borderSpacing:0,overflowAnchor:"none"},...bC(p,k),children:[s,(0,d.jsx)(bZ,{},"TableBody"),t]})})})})),b3=bG({useEmitter:b0,useEmitterValue:b1,usePublisher:b2}),b4=bH({useEmitter:b0,useEmitterValue:b1,usePublisher:b2}),b5={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},b6={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:b7,floor:b8,max:b9,min:ca,round:cb}=Math;function cc(a,b,c){return Array.from({length:b-a+1}).map((b,d)=>({data:null===c?null:c[d+a],index:d+a}))}function cd(a,b){return void 0!==a&&a.width===b.width&&a.height===b.height}function ce(a,b){return void 0!==a&&a.column===b.column&&a.row===b.row}let cf=F(([{increaseViewportBy:a,listBoundary:b,overscan:c,visibleRange:d},{footerHeight:e,headerHeight:f,scrollBy:g,scrollContainerState:h,scrollTo:i,scrollTop:j,smoothScrollTargetReached:k,viewportHeight:l},m,n,{didMount:q,propsReady:r},{customScrollParent:x,useWindowScroll:F,windowScrollContainerState:G,windowScrollTo:J,windowViewportRect:K},L])=>{let M=B(0),N=B(0),O=B(b5),P=B({height:0,width:0}),Q=B({height:0,width:0}),R=D(),S=D(),T=B(0),U=B(null),V=B({column:0,row:0}),W=D(),X=D(),Y=B(!1),Z=B(0),$=B(!0),_=B(!1),aa=B(!1);w(q,A(Z),t(([a,b])=>0!==b))(1,()=>{$(0,!1)}),w(H(q,$,Q,P,Z,_),t(([a,b,c,d,,e])=>a&&!b&&0!==c.height&&0!==d.height&&!e))(1,([,,,,a])=>{_(0,!0),aG(1,()=>{R(0,a)}),p(w(j),()=>{b(0,[0,0]),$(0,!0)})}),o(w(X,t(a=>null!=a&&a.scrollTop>0),v(0)),N),w(q,A(X),t(([,a])=>null!=a))(1,([,a])=>{a&&(P(0,a.viewport),Q(0,a.item),V(0,a.gap),a.scrollTop>0&&(Y(0,!0),p(w(j,y(1)),a=>{Y(0,!1)}),i(0,{top:a.scrollTop})))}),o(w(P,u(({height:a})=>a)),l),o(w(H(I(P,cd),I(Q,cd),I(V,(a,b)=>void 0!==a&&a.column===b.column&&a.row===b.row),I(j)),u(([a,b,c,d])=>({gap:c,item:b,scrollTop:d,viewport:a}))),W),o(w(H(I(M),d,I(V,ce),I(Q,cd),I(P,cd),I(U),I(N),I(Y),I($),I(Z)),t(([,,,,,,,a])=>!a),u(([a,[b,c],d,e,f,g,h,,i,j])=>{let k,l,{column:m,row:n}=d,{height:o,width:p}=e,{width:q}=f;if(0===h&&(0===a||0===q))return b5;if(0===p){var r;let b=aH(j,a),c=b+Math.max(h-1,0);return r=cc(b,c,g),{...b6,items:r}}let s=cg(q,p,m);i?0===b&&0===c&&h>0?(k=0,l=h-1):(k=s*b8((b+n)/(o+n)),l=ca(a-1,b9(l=s*b7((c+n)/(o+n))-1,s-1)),k=ca(l,b9(0,k))):(k=0,l=-1);let t=cc(k,l,g),{bottom:u,top:v}=ch(f,d,e,t),w=b7(a/s);return{bottom:u,itemHeight:o,items:t,itemWidth:p,offsetBottom:w*o+(w-1)*n-u,offsetTop:v,top:v}})),O),o(w(U,t(a=>null!==a),u(a=>a.length)),M),o(w(H(P,Q,O,V),t(([a,b,{items:c}])=>c.length>0&&0!==b.height&&0!==a.height),u(([a,b,{items:c},d])=>{let{bottom:e,top:f}=ch(a,d,b,c);return[f,e]}),s(ak)),b);let ab=B(!1);o(w(j,A(ab),u(([a,b])=>b||0!==a)),ab);let ac=E(w(H(O,M),t(([{items:a}])=>a.length>0),A(ab),t(([[a,b],c])=>{let d=a.items[a.items.length-1].index===b-1;return(c||a.bottom>0&&a.itemHeight>0&&0===a.offsetBottom&&a.items.length===b)&&d}),u(([[,a]])=>a-1),s())),ad=E(w(I(O),t(({items:a})=>a.length>0&&0===a[0].index),v(0),s())),ae=E(w(I(O),A(Y),t(([{items:a},b])=>a.length>0&&!b),u(([{items:a}])=>({endIndex:a[a.length-1].index,startIndex:a[0].index})),s(aj),z(0)));o(ae,n.scrollSeekRangeChanged),o(w(R,A(P,Q,M,V),u(([a,b,c,d,e])=>{let f=aE(a),{align:g,behavior:h,offset:i}=f,j=f.index;"LAST"===j&&(j=d-1);let k=ci(b,e,c,j=b9(0,j,ca(d-1,j)));return"end"===g?k=cb(k-b.height+c.height):"center"===g&&(k=cb(k-b.height/2+c.height/2)),void 0!==i&&0!==i&&(k+=i),{behavior:h,top:k}})),i);let af=C(w(O,u(a=>a.offsetBottom+a.bottom)),0);return o(w(K,u(a=>({height:a.visibleHeight,width:a.visibleWidth}))),P),{customScrollParent:x,data:U,deviation:T,footerHeight:e,gap:V,headerHeight:f,increaseViewportBy:a,initialItemCount:N,itemDimensions:Q,overscan:c,restoreStateFrom:X,scrollBy:g,scrollContainerState:h,scrollHeight:S,scrollTo:i,scrollToIndex:R,scrollTop:j,smoothScrollTargetReached:k,totalCount:M,useWindowScroll:F,viewportDimensions:P,windowScrollContainerState:G,windowScrollTo:J,windowViewportRect:K,...n,gridState:O,horizontalDirection:aa,initialTopMostItemIndex:Z,totalListHeight:af,...m,endReached:ac,propsReady:r,rangeChanged:ae,startReached:ad,stateChanged:W,stateRestoreInProgress:Y,...L}},l(aR,W,aM,a5,aC,a6,M));function cg(a,b,c){return b9(1,b8((a+c)/(b8(b)+c)))}function ch(a,b,c,d){let{height:e}=c;if(void 0===e||0===d.length)return{bottom:0,top:0};let f=ci(a,b,c,d[0].index);return{bottom:ci(a,b,c,d[d.length-1].index)+e,top:f}}function ci(a,b,c,d){let e=b8(d/cg(a.width,c.width,b.column)),f=e*c.height+b9(0,e-1)*b.row;return f>0?f+b.row:f}let cj=F(()=>{let a=B(a=>`Item ${a}`),b=B({}),c=B(null),d=B("virtuoso-grid-item"),e=B("virtuoso-grid-list"),f=B(bp),g=B("div"),h=B(j),i=(a,c=null)=>C(w(b,u(b=>b[a]),s()),c),k=B(!1),l=B(!1);return o(I(l),k),{components:b,computeItemKey:f,context:c,FooterComponent:i("Footer"),HeaderComponent:i("Header"),headerFooterTag:g,itemClassName:d,ItemComponent:i("Item","div"),itemContent:a,listClassName:e,ListComponent:i("List","div"),readyStateChanged:k,reportReadyState:l,ScrollerComponent:i("Scroller","div"),scrollerRef:h,ScrollSeekPlaceholder:i("ScrollSeekPlaceholder","div")}}),ck=F(([a,b])=>({...a,...b}),l(cf,cj)),cl=e.memo(function(){let a=cr("gridState"),b=cr("listClassName"),c=cr("itemClassName"),f=cr("itemContent"),g=cr("computeItemKey"),h=cr("isSeeking"),i=cs("scrollHeight"),j=cr("ItemComponent"),k=cr("ListComponent"),l=cr("ScrollSeekPlaceholder"),m=cr("context"),n=cs("itemDimensions"),o=cs("gap"),p=cr("log"),q=cr("stateRestoreInProgress"),r=cs("reportReadyState"),s=R(e.useMemo(()=>a=>{i(a.parentElement.parentElement.scrollHeight);let b=a.firstChild;if(null!==b){let{height:a,width:c}=b.getBoundingClientRect();n({height:a,width:c})}o({column:cv("column-gap",getComputedStyle(a).columnGap,p),row:cv("row-gap",getComputedStyle(a).rowGap,p)})},[i,n,o,p]),!0,!1);return bm(()=>{a.itemHeight>0&&a.itemWidth>0&&r(!0)},[a]),q?null:(0,d.jsx)(k,{className:b,ref:s,...bC(k,m),"data-testid":"virtuoso-item-list",style:{paddingBottom:a.offsetBottom,paddingTop:a.offsetTop},children:a.items.map(b=>{let i=g(b.index,b.data,m);return h?(0,d.jsx)(l,{...bC(l,m),height:a.itemHeight,index:b.index,width:a.itemWidth},i):(0,e.createElement)(j,{...bC(j,m),className:c,"data-index":b.index,key:i},f(b.index,b.data,m))})})}),cm=e.memo(function(){let a=cr("HeaderComponent"),b=cs("headerHeight"),c=cr("headerFooterTag"),f=R(e.useMemo(()=>a=>{b(an(a,"height"))},[b]),!0,!1),g=cr("context");return null!=a?(0,d.jsx)(c,{ref:f,children:(0,d.jsx)(a,{...bC(a,g)})}):null}),cn=e.memo(function(){let a=cr("FooterComponent"),b=cs("footerHeight"),c=cr("headerFooterTag"),f=R(e.useMemo(()=>a=>{b(an(a,"height"))},[b]),!0,!1),g=cr("context");return null!=a?(0,d.jsx)(c,{ref:f,children:(0,d.jsx)(a,{...bC(a,g)})}):null}),co=({children:a})=>{let b=e.useContext(bi),c=cs("itemDimensions"),f=cs("viewportDimensions"),g=R(e.useMemo(()=>a=>{f(a.getBoundingClientRect())},[f]),!0,!1);return e.useEffect(()=>{b&&(f({height:b.viewportHeight,width:b.viewportWidth}),c({height:b.itemHeight,width:b.itemWidth}))},[b,f,c]),(0,d.jsx)("div",{ref:g,style:bz(!1),children:a})},cp=({children:a})=>{let b=e.useContext(bi),c=cs("windowViewportRect"),f=cs("itemDimensions"),g=cr("customScrollParent"),h=cr("useWindowScroll"),i=V(c,g,!1);return e.useEffect(()=>{b&&(f({height:b.itemHeight,width:b.itemWidth}),c({listHeight:0,offsetTop:0,visibleHeight:b.viewportHeight,visibleWidth:b.viewportWidth}))},[b,c,f]),(0,d.jsx)("div",{ref:i,style:bA(!1,h),children:a})},{useEmitter:cq,useEmitterValue:cr,usePublisher:cs}=bg(ck,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},e.memo(function({...a}){let b=cr("useWindowScroll"),c=cr("customScrollParent"),e=c||b?cu:ct,f=c||b?cp:co,g=cr("context");return(0,d.jsx)(e,{...a,...bC(e,g),children:(0,d.jsxs)(f,{children:[(0,d.jsx)(cm,{}),(0,d.jsx)(cl,{}),(0,d.jsx)(cn,{})]})})})),ct=bG({useEmitter:cq,useEmitterValue:cr,usePublisher:cs}),cu=bH({useEmitter:cq,useEmitterValue:cr,usePublisher:cs});function cv(a,b,c){return"normal"!==b&&b?.endsWith("px")!==!0&&c(`${a} was not resolved to pixel value correctly`,b,2),"normal"===b?0:parseInt(b??"0",10)}},79893:(a,b,c)=>{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(18106).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)},81873:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("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)},87050:(a,b,c)=>{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(18106).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)},95430:(a,b,c)=>{var d=c(21878);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=309,exports.ids=[309],exports.modules={1087:(a,b,c)=>{"use strict";var d=c(11131);c.o(d,"usePathname")&&c.d(b,{usePathname:function(){return d.usePathname}}),c.o(d,"useRouter")&&c.d(b,{useRouter:function(){return d.useRouter}})},6409:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={formatUrl:function(){return h},formatWithValidation:function(){return j},urlObjectKeys:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(13354)._(c(62305)),g=/https?|ftp|gopher|file/;function h(a){let{auth:b,hostname:c}=a,d=a.protocol||"",e=a.pathname||"",h=a.hash||"",i=a.query||"",j=!1;b=b?encodeURIComponent(b).replace(/%3A/i,":")+"@":"",a.host?j=b+a.host:c&&(j=b+(~c.indexOf(":")?`[${c}]`:c),a.port&&(j+=":"+a.port)),i&&"object"==typeof i&&(i=String(f.urlQueryToSearchParams(i)));let k=a.search||i&&`?${i}`||"";return d&&!d.endsWith(":")&&(d+=":"),a.slashes||(!d||g.test(d))&&!1!==j?(j="//"+(j||""),e&&"/"!==e[0]&&(e="/"+e)):j||(j=""),h&&"#"!==h[0]&&(h="#"+h),k&&"?"!==k[0]&&(k="?"+k),e=e.replace(/[?#]/g,encodeURIComponent),k=k.replace("#","%23"),`${d}${j}${e}${k}${h}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function j(a){return h(a)}},10093:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"pathHasPrefix",{enumerable:!0,get:function(){return e}});let d=c(67007);function e(a,b){if("string"!=typeof a)return!1;let{pathname:c}=(0,d.parsePath)(a);return c===b||c.startsWith(b+"/")}},18034:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"hasBasePath",{enumerable:!0,get:function(){return e}});let d=c(10093);function e(a){return(0,d.pathHasPrefix)(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)},20820:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"addPathPrefix",{enumerable:!0,get:function(){return e}});let d=c(67007);function e(a,b){if(!a.startsWith("/")||!b)return a;let{pathname:c,query:e,hash:f}=(0,d.parsePath)(a);return`${b}${c}${e}${f}`}},35178:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("circle-pause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]])},37412:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]])},37561:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},42117:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"addBasePath",{enumerable:!0,get:function(){return f}});let d=c(20820),e=c(48552);function f(a,b){return(0,e.normalizePathTrailingSlash)((0,d.addPathPrefix)(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)},42700:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},43207:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]])},43453:a=>{a.exports={style:{fontFamily:"'JetBrains Mono', 'JetBrains Mono Fallback'",fontStyle:"normal"},className:"__className_3c557b",variable:"__variable_3c557b"}},46031:(a,b,c)=>{"use strict";c.d(b,{A:()=>j});var d=c(54848);let e=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),f=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var g={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let h=(0,d.createContext)({}),i=(0,d.forwardRef)(({color:a,size:b,strokeWidth:c,absoluteStrokeWidth:f,className:i="",children:j,iconNode:k,...l},m)=>{let{size:n=24,strokeWidth:o=2,absoluteStrokeWidth:p=!1,color:q="currentColor",className:r=""}=(0,d.useContext)(h)??{},s=f??p?24*Number(c??o)/Number(b??n):c??o;return(0,d.createElement)("svg",{ref:m,...g,width:b??n??g.width,height:b??n??g.height,stroke:a??q,strokeWidth:s,className:e("lucide",r,i),...!j&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(l)&&{"aria-hidden":"true"},...l},[...k.map(([a,b])=>(0,d.createElement)(a,b)),...Array.isArray(j)?j:[j]])}),j=(a,b)=>{let c=(0,d.forwardRef)(({className:c,...g},h)=>(0,d.createElement)(i,{ref:h,iconNode:b,className:e(`lucide-${f(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,c),...g}));return c.displayName=f(a),c}},48552:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return f}});let d=c(78511),e=c(67007),f=a=>{if(!a.startsWith("/"))return a;let{pathname:b,query:c,hash:f}=(0,e.parsePath)(a);return`${(0,d.removeTrailingSlash)(b)}${c}${f}`};("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)},51499:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},56556:(a,b,c)=>{"use strict";c.d(b,{D:()=>j,N:()=>k});var d=c(54848),e=(a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}},f=["light","dark"],g="(prefers-color-scheme: dark)",h=d.createContext(void 0),i={setTheme:a=>{},themes:[]},j=()=>{var a;return null!=(a=d.useContext(h))?a:i},k=a=>d.useContext(h)?d.createElement(d.Fragment,null,a.children):d.createElement(m,{...a}),l=["light","dark"],m=({forcedTheme:a,disableTransitionOnChange:b=!1,enableSystem:c=!0,enableColorScheme:e=!0,storageKey:i="theme",themes:j=l,defaultTheme:k=c?"system":"light",attribute:m="data-theme",value:r,children:s,nonce:t,scriptProps:u})=>{let[v,w]=d.useState(()=>o(i,k)),[x,y]=d.useState(()=>"system"===v?q():v),z=r?Object.values(r):j,A=d.useCallback(a=>{let d=a;if(!d)return;"system"===a&&c&&(d=q());let g=r?r[d]:d,h=b?p(t):null,i=document.documentElement,j=a=>{"class"===a?(i.classList.remove(...z),g&&i.classList.add(g)):a.startsWith("data-")&&(g?i.setAttribute(a,g):i.removeAttribute(a))};if(Array.isArray(m)?m.forEach(j):j(m),e){let a=f.includes(k)?k:null,b=f.includes(d)?d:a;i.style.colorScheme=b}null==h||h()},[t]),B=d.useCallback(a=>{let b="function"==typeof a?a(v):a;w(b);try{localStorage.setItem(i,b)}catch(a){}},[v]),C=d.useCallback(b=>{y(q(b)),"system"===v&&c&&!a&&A("system")},[v,a]);d.useEffect(()=>{let a=window.matchMedia(g);return a.addListener(C),C(a),()=>a.removeListener(C)},[C]),d.useEffect(()=>{let a=a=>{a.key===i&&(a.newValue?w(a.newValue):B(k))};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[B]),d.useEffect(()=>{A(null!=a?a:v)},[a,v]);let D=d.useMemo(()=>({theme:v,setTheme:B,forcedTheme:a,resolvedTheme:"system"===v?x:v,themes:c?[...j,"system"]:j,systemTheme:c?x:void 0}),[v,B,a,x,c,j]);return d.createElement(h.Provider,{value:D},d.createElement(n,{forcedTheme:a,storageKey:i,attribute:m,enableSystem:c,enableColorScheme:e,defaultTheme:k,value:r,themes:j,nonce:t,scriptProps:u}),s)},n=d.memo(({forcedTheme:a,storageKey:b,attribute:c,enableSystem:f,enableColorScheme:g,defaultTheme:h,value:i,themes:j,nonce:k,scriptProps:l})=>{let m=JSON.stringify([c,b,h,a,j,i,f,g]).slice(1,-1);return d.createElement("script",{...l,suppressHydrationWarning:!0,nonce:k,dangerouslySetInnerHTML:{__html:`(${e.toString()})(${m})`}})}),o=(a,b)=>{},p=a=>{let b=document.createElement("style");return a&&b.setAttribute("nonce",a),b.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(b),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(b)},1)}},q=a=>(a||(a=window.matchMedia(g)),a.matches?"dark":"light")},58672:a=>{a.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_f367f3",variable:"__variable_f367f3"}},60372:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("anchor",[["path",{d:"M12 6v16",key:"nqf5sj"}],["path",{d:"m19 13 2-1a9 9 0 0 1-18 0l2 1",key:"y7qv08"}],["path",{d:"M9 11h6",key:"1fldmi"}],["circle",{cx:"12",cy:"4",r:"2",key:"muu5ef"}]])},64018:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"errorOnce",{enumerable:!0,get:function(){return c}});let c=a=>{}},67007:(a,b)=>{"use strict";function c(a){let b=a.indexOf("#"),c=a.indexOf("?"),d=c>-1&&(b<0||c<b);return d||b>-1?{pathname:a.substring(0,d?c:b),query:d?a.substring(c,b>-1?b:void 0):"",hash:b>-1?a.slice(b):""}:{pathname:a,query:"",hash:""}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"parsePath",{enumerable:!0,get:function(){return c}})},71416:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={default:function(){return p},useLinkStatus:function(){return r}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(13354),g=c(37477),h=f._(c(54848)),i=c(6409),j=c(55416),k=c(94268),l=c(19411),m=c(42117);c(94474),c(47240);let n=c(14640);c(92008);let o=c(32949);function p(a){var b,c;let d,e,f,[p,r]=(0,h.useOptimistic)(n.IDLE_LINK_STATUS),s=(0,h.useRef)(null),{href:t,as:u,children:v,prefetch:w=null,passHref:x,replace:y,shallow:z,scroll:A,onClick:B,onMouseEnter:C,onTouchStart:D,legacyBehavior:E=!1,onNavigate:F,transitionTypes:G,ref:H,unstable_dynamicOnHover:I,...J}=a;d=v,E&&("string"==typeof d||"number"==typeof d)&&(d=(0,g.jsx)("a",{children:d}));let K=h.default.useContext(j.AppRouterContext),L=!1!==w,M=!1!==w?null===(c=w)||"auto"===c?o.FetchStrategy.PPR:o.FetchStrategy.Full:o.FetchStrategy.PPR,N="string"==typeof(b=u||t)?b:(0,i.formatUrl)(b);if(E){if(d?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});e=h.default.Children.only(d)}let O=E?e&&"object"==typeof e&&e.ref:H,P=h.default.useCallback(a=>(null!==K&&(s.current=(0,n.mountLinkInstance)(a,N,K,M,L,r)),()=>{s.current&&((0,n.unmountLinkForCurrentNavigation)(s.current),s.current=null),(0,n.unmountPrefetchableInstance)(a)}),[L,N,K,M,r]),Q={ref:(0,k.useMergedRef)(P,O),onClick(a){E||"function"!=typeof B||B(a),E&&e.props&&"function"==typeof e.props.onClick&&e.props.onClick(a),K&&a.defaultPrevented},onMouseEnter(a){E||"function"!=typeof C||C(a),E&&e.props&&"function"==typeof e.props.onMouseEnter&&e.props.onMouseEnter(a),K&&L&&(0,n.onNavigationIntent)(a.currentTarget,!0===I)},onTouchStart:function(a){E||"function"!=typeof D||D(a),E&&e.props&&"function"==typeof e.props.onTouchStart&&e.props.onTouchStart(a),K&&L&&(0,n.onNavigationIntent)(a.currentTarget,!0===I)}};return(0,l.isAbsoluteUrl)(N)?Q.href=N:E&&!x&&("a"!==e.type||"href"in e.props)||(Q.href=(0,m.addBasePath)(N)),f=E?h.default.cloneElement(e,Q):(0,g.jsx)("a",{...J,...Q,children:d}),(0,g.jsx)(q.Provider,{value:p,children:f})}c(64018);let q=(0,h.createContext)(n.IDLE_LINK_STATUS),r=()=>(0,h.useContext)(q);("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)},76335:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return f}});let d=c(39747),e=c(6599);function f(){return(0,d.jsx)(e.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})}("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)},78511:(a,b)=>{"use strict";function c(a){return a.replace(/\/$/,"")||"/"}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"removeTrailingSlash",{enumerable:!0,get:function(){return c}})},78916:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]])},92008:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isLocalURL",{enumerable:!0,get:function(){return f}});let d=c(19411),e=c(18034);function f(a){if(!(0,d.isAbsoluteUrl)(a))return!0;try{let b=(0,d.getLocationOrigin)(),c=new URL(a,b);return c.origin===b&&(0,e.hasBasePath)(c.pathname)}catch(a){return!1}}},94268:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"useMergedRef",{enumerable:!0,get:function(){return e}});let d=c(54848);function e(a,b){let c=(0,d.useRef)(null),e=(0,d.useRef)(null);return(0,d.useCallback)(d=>{if(null===d){let a=c.current;a&&(c.current=null,a());let b=e.current;b&&(e.current=null,b())}else a&&(c.current=f(a,d)),b&&(e.current=f(b,d))},[a,b])}function f(a,b){if("function"!=typeof a)return a.current=b,()=>{a.current=null};{let c=a(b);return"function"==typeof c?c:()=>a(null)}}("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)},95024:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(46031).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])}};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=350,exports.ids=[350],exports.modules={10520:(a,b,c)=>{c.d(b,{MQ:()=>h,kf:()=>e,mU:()=>f,rr:()=>g});let d=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function e(a){let b=d.exec(a.trim());return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3]),prerelease:b[4]??null}:null}function f(a,b){var c,d;let f=e(a),g=e(b);if(!f||!g)throw Error(`cannot compare versions: "${a}" vs "${b}"`);return f.major!==g.major?f.major-g.major:f.minor!==g.minor?f.minor-g.minor:f.patch!==g.patch?f.patch-g.patch:(c=f.prerelease,c===(d=g.prerelease)?0:null===c?1:null===d||c<d?-1:1)}function g(a,b){let c=e(a);if(!c)throw Error(`cannot bump unparseable version: "${a}"`);let{major:d,minor:f,patch:g}=c;return"major"===b?`${d+1}.0.0`:"minor"===b?`${d}.${f+1}.0`:`${d}.${f}.${g+1}`}function h(a,b){return!!e(a)&&!!e(b)&&f(a,b)>0}},20031:(a,b,c)=>{c.d(b,{E:()=>e,_:()=>d});let d={main:"default",ciFix:"ci-fix"},e={default:'You are working on GitHub issue #$ISSUE_NUM in the repository "$REPO_NAME".\nYou are on branch "$BRANCH". Implement the change the issue asks for.\nKeep the change focused and commit-ready. Do not push or open a PR yourself.',"ci-fix":"CI failed. Fix the failure and keep changes minimal.\n\nFailed CI log:\n$CI_LOG"}},22157:(a,b,c)=>{let d;c.d(b,{k:()=>j});var e=c(37003),f=c(2937),g=c(93929),h=c(36639);class i{constructor(a=(0,f.Lf)()){this.db=a,this.subs=new Map}subscribe(a,b){let c=this.subs.get(a);c||(c=new Set,this.subs.set(a,c)),c.add(b)}unsubscribe(a,b){let c=this.subs.get(a);c&&(c.delete(b),0===c.size&&this.subs.delete(a))}subscriberCount(a){return this.subs.get(a)?.size??0}publish(a,b){let c=(0,h.f)(JSON.stringify(b.payload??{})),d=JSON.parse(c),e=this.db.insert(g.jobEvents).values({jobId:a,type:b.type,payload:c}).returning().get(),f=this.subs.get(a);if(f)for(let a of f)a.send({id:e.id,type:e.type,payload:d});return e}replay(a,b=200){return this.db.select().from(g.jobEvents).where((0,e.eq)(g.jobEvents.jobId,a)).orderBy(g.jobEvents.ts,g.jobEvents.id).all().slice(-b)}}function j(){return d||(d=new i),d}},23791:(a,b,c)=>{c.d(b,{QJ:()=>g,kl:()=>e});let d={queued:["working","aborted","interrupted"],working:["ci_running","needs_human","aborted","interrupted"],ci_running:["ci_failed","merged","needs_human","aborted","interrupted"],ci_failed:["retrying","needs_human","aborted","interrupted"],retrying:["ci_running","needs_human","aborted","interrupted"],merged:[],needs_human:["queued","aborted"],aborted:[],interrupted:["queued","aborted"]},e=["merged","aborted"];class f extends Error{constructor(a,b){super(`invalid job transition: ${a} -> ${b}`)}}function g(a,b){if(!d[a].includes(b))throw new f(a,b)}},24532:(a,b,c)=>{c.d(b,{Pe:()=>g,dj:()=>h});var d=c(37003),e=c(2937),f=c(93929);function g(a,b=(0,e.Lf)(),c){let h=[];return a&&h.push((0,d.eq)(f.adrs.status,a)),void 0!==c&&h.push((0,d.eq)(f.adrs.repoId,c)),(h.length?b.select().from(f.adrs).where((0,d.Uo)(...h)).all():b.select().from(f.adrs).all()).sort((a,b)=>b.createdAt-a.createdAt)}function h(a=(0,e.Lf)()){return a.select().from(f.adrs).where((0,d.eq)(f.adrs.status,"pending_review")).all().length}},36639:(a,b,c)=>{c.d(b,{f:()=>f});let d="[REDACTED]",e=[/\bgh[pousr]_[A-Za-z0-9]{36,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{50,}\b/g,/\bglpat-[A-Za-z0-9_-]{20,}\b/g,/(Bearer )[A-Za-z0-9._~+/-]+=*/g,/(https?:\/\/)[^\s/@:]+:[^\s/@]+(?=@)/g,/(PRIVATE-TOKEN:\s*)\S+/gi,/(Basic )[A-Za-z0-9+/]+=*/g,/\b(?:AKIA|ASIA|AGPA|AIDA|ANPA|AROA)[0-9A-Z]{16}\b/g];function f(a){let b=a;for(let a of e)b=b.replace(a,(a,b)=>"string"==typeof b?`${b}${d}`:d);return b}},50813:(a,b,c)=>{c.d(b,{F1:()=>l,yO:()=>n,Xm:()=>k,yx:()=>m});var d=c(37003),e=c(97337),f=c(35895),g=c(2937),h=c(93929),i=c(20031);let j=["$ISSUE_NUM","$BRANCH","$REPO_NAME","$CI_LOG"];function k(a,b){let c={$ISSUE_NUM:void 0!==b.ISSUE_NUM?String(b.ISSUE_NUM):"$ISSUE_NUM",$BRANCH:b.BRANCH??"$BRANCH",$REPO_NAME:b.REPO_NAME??"$REPO_NAME",$CI_LOG:b.CI_LOG??"$CI_LOG"},d=a;for(let a of[...j].sort((a,b)=>b.length-a.length))d=d.split(a).join(c[a]??a);return d}function l(a,b,c=(0,g.Lf)()){return c.select().from(h.promptTemplates).where((0,d.Uo)((0,d.eq)(h.promptTemplates.repoId,a),(0,d.eq)(h.promptTemplates.name,b))).orderBy((0,e.i)(h.promptTemplates.version)).get()}function m(a,b,c=(0,g.Lf)()){return l(a,b,c)?.content??i.E[b]??""}function n(a,b,c=(0,g.Lf)()){return c.select().from(h.promptTemplates).where((0,d.Uo)((0,d.eq)(h.promptTemplates.repoId,a),(0,d.eq)(h.promptTemplates.name,b))).orderBy((0,e.i)(h.promptTemplates.version)).all()}f.Ik({repoId:f.ai().int().positive(),name:f.Yj().min(1),content:f.Yj()})},68476:(a,b,c)=>{c.d(b,{N6:()=>n,_S:()=>j,ax:()=>k,dk:()=>m,i1:()=>o,yM:()=>l});var d=c(37003),e=c(97337),f=c(2937),g=c(93929),h=c(24525),i=c(23791);function j(a,b=(0,f.Lf)()){let c=b.insert(g.jobs).values({repoId:a.repoId,issueNumber:a.issueNumber,status:"queued",model:a.model,agent:a.agent??"claude",maxTurns:a.maxTurns??40,dedupeKey:a.dedupeKey??null}).returning().get();return(0,h.ej)(),c}function k(a,b=(0,f.Lf)()){return b.select().from(g.jobs).where((0,d.eq)(g.jobs.id,a)).get()}function l(a,b,c,d=(0,f.Lf)()){d.insert(g.jobEvents).values({jobId:a,type:b,payload:JSON.stringify(c??{})}).run()}function m(a,b,c={},e=(0,f.Lf)()){let j=k(a,e);if(!j)throw Error(`job ${a} not found`);(0,i.QJ)(j.status,b);let n=Math.floor(Date.now()/1e3),o={};"working"!==b||j.startedAt||(o.startedAt=n),["merged","needs_human","aborted"].includes(b)&&(o.finishedAt=n);let p=e.update(g.jobs).set({...o,...c,status:b}).where((0,d.eq)(g.jobs.id,a)).returning().get();return l(a,"status",{from:j.status,to:b},e),(0,h.ej)(),p}function n(a,b=(0,f.Lf)()){return b.select().from(g.jobs).where((0,d.eq)(g.jobs.repoId,a)).orderBy((0,e.i)(g.jobs.createdAt)).all()}function o(a,b=(0,f.Lf)()){return b.select().from(g.jobs).where((0,d.RV)(g.jobs.status,a)).all()}},78293:(a,b,c)=>{c.d(b,{mt:()=>k,Jf:()=>l,DA:()=>m});var d=c(37003),e=c(35895),f=c(2937),g=c(51026),h=c(93929);let i=["needs_human","job_failed","pr_opened","pr_merged","release_published","cost_limit","automation_paused"],j=e.Ik({paused:e.zM().default(!1),dailyCostLimitUsd:e.ai().nonnegative().default(10),pollIntervalSec:e.ai().int().positive().default(30),maxTurns:e.ai().int().positive().default(40),maxJobMinutes:e.ai().int().positive().default(30),maxCiWaitMinutes:e.ai().int().positive().default(60),maxJobCostUsd:e.ai().nonnegative().default(0),releaseManagementEnabled:e.zM().default(!1),defaultModel:e.Yj().default("claude-opus-4-7"),defaultAgent:e.k5(["claude","codex"]).default("claude"),claudePath:e.Yj().default("claude"),codexPath:e.Yj().default("codex"),ghPath:e.Yj().default("gh"),maxParallelJobs:e.ai().int().positive().default(3),telegramBotToken:e.Yj().default(""),telegramChatId:e.Yj().default(""),slackWebhookUrl:e.Yj().default(""),smtpHost:e.Yj().default(""),smtpPort:e.ai().int().positive().default(587),smtpUser:e.Yj().default(""),smtpPass:e.Yj().default(""),emailFrom:e.Yj().default(""),emailTo:e.Yj().default(""),notifyEvents:e.YO(e.k5(i)).default([...i]),retentionDays:e.ai().int().positive().default(30)});function k(a=(0,f.Lf)()){let b=a.select().from(h.settings).where((0,d.eq)(h.settings.key,"global")).get();if(!b)return j.parse({});try{return j.parse(JSON.parse(b.value))}catch{return j.parse({})}}function l(a=(0,f.Lf)()){let b=k(a);return b.paused?{allowed:!1,reason:"paused"}:(0,g.Bt)(a)>=b.dailyCostLimitUsd?{allowed:!1,reason:"cost_limit"}:{allowed:!0}}function m(a,b=(0,f.Lf)()){let c=b.select().from(h.repos).where((0,d.eq)(h.repos.id,a)).get();return!c||(0,g.Bt)(b,a)>=c.dailyCostLimitUsd?{allowed:!1,reason:"repo_cost_limit"}:{allowed:!0}}},89350:(a,b,c)=>{let d,e;c.r(b),c.d(b,{clearAbort:()=>bZ,gracefulShutdown:()=>b$,registerAbort:()=>bY,startOrchestrator:()=>b_});var f=c(37003),g=c(2937),h=c(90109),i=c(78293),j=c(93929),k=c(36639);let l=[{id:"telegram",isConfigured:a=>!!(a.telegramBotToken&&a.telegramChatId),send:(a,b,c)=>c.postJson(`https://api.telegram.org/bot${b.telegramBotToken}/sendMessage`,{chat_id:b.telegramChatId,text:a})},{id:"slack",isConfigured:a=>!!a.slackWebhookUrl,send:(a,b,c)=>c.postJson(b.slackWebhookUrl,{text:a})},{id:"email",isConfigured:a=>!!(a.smtpHost&&a.emailFrom&&a.emailTo),send:(a,b,c)=>c.sendMail({to:b.emailTo,from:b.emailFrom,subject:"Drydock notification",text:a},{host:b.smtpHost,port:b.smtpPort,user:b.smtpUser,pass:b.smtpPass})}];async function m(a,b,c=(0,g.Lf)(),d=n){let e=(0,i.mt)(c);if(e.notifyEvents.includes(a)){for(let a of l.filter(a=>a.isConfigured(e)))try{await a.send(b,e,d)}catch(b){console.error(`[notify] ${a.id} delivery failed`,(0,k.f)(String(b)))}}}let n={postJson:async(a,b)=>{let c=await fetch(a,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(b)});if(!c.ok)throw Error(`HTTP ${c.status}`)},sendMail:async(a,b)=>{let d=(await c.e(537).then(c.t.bind(c,83537,19))).createTransport({host:b.host,port:b.port,secure:465===b.port,auth:b.user?{user:b.user,pass:b.pass}:void 0});await d.sendMail(a)}};async function o(a,b,c=(0,g.Lf)(),d=n){a?b.active||(b.active=!0,await m("cost_limit","\uD83D\uDCB8 Daily cost limit reached — new jobs are paused until the budget resets.",c,d)):b.active=!1}async function p(a=(0,g.Lf)(),b=n){await m("automation_paused","\uD83C\uDF19 Automation draining — finishing in-flight jobs, then shutting down.",a,b)}var q=c(68476),r=c(77598),s=c(48161),t=c(23791);let u=()=>Math.floor(Date.now()/1e3);function v(){return d||(d=`${(0,s.hostname)()}#${process.pid}`),d}let w=["ci_running","ci_failed","retrying"],x={"claude-opus-4-7":{inputPerMTok:15,outputPerMTok:75},"claude-sonnet-4-5":{inputPerMTok:3,outputPerMTok:15},"claude-haiku-4-5":{inputPerMTok:1,outputPerMTok:5}},y=x["claude-sonnet-4-5"];var z=c(35895);let A=z.Ik({input_tokens:z.ai().optional(),output_tokens:z.ai().optional(),cache_creation_input_tokens:z.ai().optional(),cache_read_input_tokens:z.ai().optional()}).passthrough(),B=z.Ik({type:z.eu("system"),subtype:z.Yj().optional(),session_id:z.Yj().optional(),model:z.Yj().optional()}),C=z.Ik({type:z.eu("assistant"),message:z.Ik({role:z.eu("assistant"),content:z.YO(z.g1(z.Yj(),z.L5())),usage:A.optional()})}),D=z.Ik({type:z.eu("user"),message:z.Ik({role:z.eu("user"),content:z.YO(z.g1(z.Yj(),z.L5()))})}),E=z.Ik({type:z.eu("result"),subtype:z.Yj().optional(),session_id:z.Yj().optional(),is_error:z.zM().optional(),total_cost_usd:z.ai().optional(),usage:A.optional()}),F=z.gM("type",[B,C,D,E]);function G(a){return a instanceof Error?a.message:String(a)}function H(a){let b=[];for(let c of a)"text"===c.type&&"string"==typeof c.text?b.push({kind:"text",text:c.text}):"tool_use"===c.type?b.push({kind:"tool_use",name:String(c.name??"unknown"),id:String(c.id??""),input:c.input}):"tool_result"===c.type&&b.push({kind:"tool_result",toolUseId:String(c.tool_use_id??""),isError:!!c.is_error});return b}class I{push(a){this.buffer+=a;let b=[],c=this.buffer.indexOf("\n");for(;-1!==c;){let a=this.buffer.slice(0,c);this.buffer=this.buffer.slice(c+1);let d=this.consume(a);d&&b.push(d),c=this.buffer.indexOf("\n")}return b}flush(){let a=this.buffer;this.buffer="";let b=this.consume(a);return b?[b]:[]}consume(a){let b;try{b=function(a){var b;let c,d=a.trim();if(!d)return null;let e=JSON.parse(d);return c={type:(b=F.parse(e)).type,chunks:[],inputTokens:0,outputTokens:0,isError:!1,raw:b},"system"===b.type?(c.sessionId=b.session_id,c.model=b.model):"assistant"===b.type?(c.chunks=H(b.message.content),c.inputTokens=b.message.usage?.input_tokens??0,c.outputTokens=b.message.usage?.output_tokens??0):"user"===b.type?c.chunks=H(b.message.content):(c.sessionId=b.session_id,c.costUsd=b.total_cost_usd,c.inputTokens=b.usage?.input_tokens??0,c.outputTokens=b.usage?.output_tokens??0,c.isError=b.is_error??!1),c}(a)}catch(b){return this.onParseError?.({line:a.trim(),message:G(b)}),null}return b?(b.sessionId&&(this.sessionId=b.sessionId),b.model&&(this.model=b.model),this.totalInputTokens+=b.inputTokens,this.totalOutputTokens+=b.outputTokens,"result"===b.type&&void 0!==b.costUsd&&(this.costUsd=b.costUsd),b):null}constructor(){this.buffer="",this.totalInputTokens=0,this.totalOutputTokens=0,this.costUsd=0}}let J="gpt-5-codex",K={"gpt-5-codex":{inputPerMTok:1.25,outputPerMTok:10},"gpt-5":{inputPerMTok:1.25,outputPerMTok:10},"gpt-5-mini":{inputPerMTok:.25,outputPerMTok:2}},L=K[J],M=z.Ik({input_tokens:z.ai().optional(),cached_input_tokens:z.ai().optional(),output_tokens:z.ai().optional(),reasoning_output_tokens:z.ai().optional()}).passthrough(),N=z.Ik({id:z.Yj().optional(),item_type:z.Yj().optional(),text:z.Yj().optional(),command:z.Yj().optional(),exit_code:z.ai().optional(),server:z.Yj().optional(),tool:z.Yj().optional()}).passthrough(),O=z.Ik({type:z.Yj(),thread_id:z.Yj().optional(),usage:M.optional(),item:N.optional()}).passthrough();class P{push(a){this.buffer+=a;let b=[],c=this.buffer.indexOf("\n");for(;-1!==c;){let a=this.buffer.slice(0,c);this.buffer=this.buffer.slice(c+1);let d=this.consume(a);d&&b.push(d),c=this.buffer.indexOf("\n")}return b}flush(){let a=this.buffer;this.buffer="";let b=this.consume(a);return b?[b]:[]}consume(a){let b;try{b=function(a){let b=a.trim();if(!b)return null;let c=JSON.parse(b);var d=O.parse(c);let e={type:"assistant",chunks:[],inputTokens:0,outputTokens:0,isError:!1,raw:d};if("thread.started"===d.type)return{...e,type:"system",sessionId:d.thread_id};if("item.completed"===d.type&&d.item)return{...e,type:"assistant",chunks:function(a){let b=a.id??"";switch(a.item_type){case"assistant_message":case"reasoning":return a.text?[{kind:"text",text:a.text}]:[];case"command_execution":return[{kind:"tool_use",name:"command",id:b,input:{command:a.command,exit_code:a.exit_code}}];case"file_change":return[{kind:"tool_use",name:"edit",id:b,input:a}];case"mcp_tool_call":return[{kind:"tool_use",name:`${a.server??"mcp"}/${a.tool??"tool"}`,id:b,input:a}];default:return[]}}(d.item)};if("turn.completed"===d.type){let a=d.usage;return{...e,type:"result",inputTokens:a?.input_tokens??0,outputTokens:(a?.output_tokens??0)+(a?.reasoning_output_tokens??0)}}return"turn.failed"===d.type||"error"===d.type?{...e,type:"result",isError:!0}:null}(a)}catch(b){return this.onParseError?.({line:a.trim(),message:G(b)}),null}return b?(b.sessionId&&(this.sessionId=b.sessionId),this.totalInputTokens+=b.inputTokens,this.totalOutputTokens+=b.outputTokens,b):null}constructor(){this.buffer="",this.totalInputTokens=0,this.totalOutputTokens=0,this.costUsd=0}}let Q={claude:{id:"claude",label:"Claude Code",defaultCommand:"claude",supportsResume:!0,resumeModel:"claude-haiku-4-5",resumeMaxTurns:15,defaultModel:"claude-opus-4-7",buildStartArgs:({prompt:a,model:b,maxTurns:c})=>["-p",a,"--max-turns",String(c),"--permission-mode","acceptEdits","--model",b,"--output-format","stream-json","--verbose"],buildResumeArgs:({prompt:a,sessionId:b,model:c,maxTurns:d})=>["-p",a,"--resume",b,"--max-turns",String(d),"--model",c,"--output-format","stream-json","--verbose"],buildOneShotArgs:({prompt:a,model:b})=>["-p",a,"--model",b],createParser:()=>new I,estimateCost:function(a,b,c){let d=a?x[a]??y:y;return b/1e6*d.inputPerMTok+c/1e6*d.outputPerMTok}},codex:{id:"codex",label:"Codex CLI",defaultCommand:"codex",supportsResume:!0,resumeModel:J,resumeMaxTurns:15,defaultModel:J,buildStartArgs:({prompt:a,model:b})=>["exec","--json","--sandbox","workspace-write","--model",b,a],buildResumeArgs:({prompt:a,sessionId:b,model:c})=>["exec","resume",b,"--json","--sandbox","workspace-write","--model",c,a],buildOneShotArgs:({prompt:a,model:b})=>["exec","--model",b,a],createParser:()=>new P,estimateCost:function(a,b,c){let d=a?K[a]??L:L;return b/1e6*d.inputPerMTok+c/1e6*d.outputPerMTok}}},R=["claude","codex"];function S(a){return"string"==typeof a&&R.includes(a)?Q[a]:Q.claude}var T=c(68464),U=c(50095),V=c(23601),W=c(12717);let X=["blocked","wontfix","question","needs-human","needs-discussion"],Y=[{label:"destructive command",re:/\brm\s+-rf\b|\bdrop\s+table\b|\bgit\s+push\s+--force\b|disable\s+auth/i},{label:"secret material",re:/\bapi[_-]?key\b|\bpassword\b|\bsecret\b|\.env\b|\bsk-[a-z0-9]/i},{label:"exfiltration",re:/\bcurl\b|\bwget\b|webhook|pastebin/i},{label:"privileged area",re:/\bauth(entication|orization)?\b|\bpayment|\bbilling\b|\bdeploy|\bsecurity\b|\bci\/cd\b/i}];function Z(a){let b=[],c=a.labels.map(a=>a.toLowerCase()).find(a=>X.includes(a));if(c)return{decision:"blocked",reasons:[`blocking label: ${c}`]};let d=`${a.title}
|
|
2
|
-
${a.body??""}`;for(let{label:a,re:c}of Y)c.test(d)&&b.push(`${a} detected`);return b.length>0?{decision:"needs_review",reasons:b}:{decision:"approved",reasons:[]}}var $=c(13459);let _=new Set(["OWNER","MEMBER","COLLABORATOR"]);function aa(a){try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(a=>"string"==typeof a):[]}catch{return[]}}function ab(a){return{autoTriageEnabled:a.autoTriageEnabled,autoProcessEnabled:a.autoProcessEnabled,autoHealCi:a.autoHealCi,autoReviewFeedback:a.autoReviewFeedback,autoResolveMergeConflicts:a.autoResolveMergeConflicts,includeProgressReplies:a.includeProgressReplies,autoDecompose:a.autoDecompose,verifyPr:a.verifyPr,autoHealDeployments:a.autoHealDeployments,releaseEnabled:a.releaseEnabled,deploymentPlatform:a.deploymentPlatform,readyLabels:aa(a.readyLabels),blockingLabels:aa(a.blockingLabels),autoLabelWhitelist:aa(a.autoLabelWhitelist),priorityAuthors:aa(a.priorityAuthors),trustedReviewers:aa(a.trustedReviewers),ignoredBots:aa(a.ignoredBots),minAuthorAssociation:"any"===a.minAuthorAssociation?"any":"approved",maxAttempts:a.maxAttempts}}function ac(a,b){return"any"===a.minAuthorAssociation||null!=b&&_.has(b.toUpperCase())}let ad=[{label:"bug",re:/\b(bug|crash|crashes|broken|error|exception|fails?|regression|defect)\b/i},{label:"enhancement",re:/\b(add|support|feature|implement|enhancement|would be nice|allow|introduce)\b/i},{label:"documentation",re:/\b(docs?|documentation|readme|typo|wording|clarify)\b/i}];function ae(a,b,c,d){d.update(j.issues).set({triageHash:c,triagedAt:Math.floor(Date.now()/1e3)}).where((0,f.Uo)((0,f.eq)(j.issues.repoId,a),(0,f.eq)(j.issues.number,b))).run()}async function af(a,b,c,d=(0,g.Lf)()){let e=ab(a),h=function(a){let b=JSON.stringify([a.title,a.labels.map(a=>a.name).sort()]),c=5381;for(let a=0;a<b.length;a++)c=(c<<5)+c+b.charCodeAt(a)|0;return(c>>>0).toString(16)}(c),i=d.select().from(j.issues).where((0,f.Uo)((0,f.eq)(j.issues.repoId,a.id),(0,f.eq)(j.issues.number,c.number))).get();if(i?.triagedAt&&i.triageHash===h)return{number:c.number,applied:[],reasons:[],skipped:"unchanged"};if(!ac(e,c.authorAssociation))return ae(a.id,c.number,h,d),{number:c.number,applied:[],reasons:["author not approved"],skipped:"author"};let k=await b.viewIssue(c.number),l=Z({number:k.number,title:k.title,body:k.body,labels:k.labels}),m=[],n=function(a,b){let c=new Set(b),d=`${a.title}
|
|
3
|
-
${a.body}`,e=[];for(let{label:a,re:b}of ad)c.has(a)&&b.test(d)&&!e.includes(a)&&e.push(a);return e}(k,e.autoLabelWhitelist);for(let a of n)m.push(`classified as ${a}`);if("approved"===l.decision){let a=e.readyLabels[0];a&&(n.push(a),m.push("safe and well-specified"))}else{let a=e.blockingLabels[0];a&&(n.push(a),m.push(...l.reasons.length?l.reasons:["flagged for human review"]))}let o=new Set([...e.autoLabelWhitelist,...e.readyLabels,...e.blockingLabels]),p=new Set(k.labels),q=[...new Set(n)].filter(a=>o.has(a)&&!p.has(a));if(q.length>0){for(let a of q)await b.ensureLabel(a);await b.addLabels(c.number,q);let e=q.map(a=>`\`${a}\``).join(", ");await b.commentIssue(c.number,`auto-triage: applied ${e} — reasons: ${m.join("; ")}.`),function(a,b,c,d){let e,g=d.select().from(j.issues).where((0,f.Uo)((0,f.eq)(j.issues.repoId,a),(0,f.eq)(j.issues.number,b))).get();if(!g)return;try{let a=JSON.parse(g.labels);e=Array.isArray(a)?a:[]}catch{e=[]}let h=[...e];for(let a of c)h.includes(a)||h.push(a);d.update(j.issues).set({labels:JSON.stringify(h)}).where((0,f.eq)(j.issues.id,g.id)).run()}(a.id,c.number,q,d)}return ae(a.id,c.number,h,d),{number:c.number,applied:q,reasons:m}}async function ag(a,b,c,d=(0,g.Lf)()){let e=[];for(let f of c)try{e.push(await af(a,b,f,d))}catch(b){console.error(`[triage] issue #${f.number} failed for ${a.name}`,b)}return e}function ah(a,b){let c=(0,i.mt)(b);return"codex"===a.id?c.codexPath:c.claudePath}var ai=c(71117),aj=c(76760);function ak(){return process.env.DRYDOCK_HOME??(0,aj.join)((0,s.homedir)(),".drydock")}function al(a){return a.replace(/[^a-zA-Z0-9._-]/g,"-")}function am(a){return(0,aj.join)(ak(),"worktrees",al(a))}class an extends Error{}class ao extends an{constructor(){super("nothing to commit")}}class ap{constructor(a=ai.S){this.run=a,this.locks=new Map}withRepoLock(a,b){let c=(this.locks.get(a)??Promise.resolve()).then(b,b);return this.locks.set(a,c.then(()=>void 0,()=>void 0)),c}async git(a,b){let c=await this.run("git",a,b);if(0!==c.exitCode)throw new an(c.stderr.trim()||`git ${a[0]} failed`);return c.stdout}async prepare(a,b,c=0){let d=`drydock/issue-${c}-job-${b}`,e=(0,aj.join)(am(a.name),`job-${b}`);return await this.withRepoLock(a.path,()=>this.git(["-C",a.path,"worktree","add","-b",d,e,a.defaultBranch])),{path:e,branch:d}}async prepareForBranch(a,b,c){let d=(0,aj.join)(am(a.name),`fb-${al(c)}`);return await this.withRepoLock(a.path,async()=>{await this.git(["-C",a.path,"fetch","origin",b]),await this.git(["-C",a.path,"worktree","add",d,b])}),{path:d,branch:b}}async prepareForNewBranch(a,b,c){let d=(0,aj.join)(am(a.name),`dh-${al(c)}`);return await this.withRepoLock(a.path,()=>this.git(["-C",a.path,"worktree","add","-b",b,d,a.defaultBranch])),{path:d,branch:b}}async commitAndPush(a,b){if(await this.git(["add","-A"],a.path),""===(await this.git(["status","--porcelain"],a.path)).trim())throw new ao;await this.git(["commit","-m",b],a.path),await this.git(["push","-u","origin",a.branch],a.path)}async remove(a,b){await this.withRepoLock(b,async()=>{await this.git(["-C",b,"worktree","remove","--force",a.path]),await this.git(["-C",b,"worktree","prune"])})}}var aq=c(31421);let ar=(a,b,c,d)=>{let e=(0,aq.spawn)(a,b,{cwd:c,env:process.env});return e.stdout?.setEncoding("utf8"),e.stderr?.setEncoding("utf8"),e.stdout?.on("data",a=>d.onStdout(a)),e.stderr?.on("data",a=>d.onStderr?.(a)),{done:new Promise(a=>{e.on("close",b=>a(b??0)),e.on("error",()=>a(1))}),abort:(a=5e3)=>{e.kill("SIGTERM");let b=setTimeout(()=>e.kill("SIGKILL"),a);e.on("close",()=>clearTimeout(b))}}};var as=c(20031),at=c(50813),au=c(22157);function av(a,b){let c=()=>{},d=!1;return{tripped:new Promise(a=>{c=a}),observe(){!d&&b()>=a&&(d=!0,c())}}}function aw(a,b={}){let{timeoutMs:c,costTripped:d}=b,e=!!c&&c>0;return e||d?new Promise(b=>{let f,g=!1,h=a=>{g||(g=!0,b(a))};e&&(f=setTimeout(()=>{a.abort(),h({exitCode:-1,timedOut:!0,costExceeded:!1})},c),f.unref?.()),d?.then(()=>{a.abort(),h({exitCode:-2,timedOut:!1,costExceeded:!0})}),a.done.then(a=>{f&&clearTimeout(f),h({exitCode:a,timedOut:!1,costExceeded:!1})})}):a.done.then(a=>({exitCode:a,timedOut:!1,costExceeded:!1}))}function ax(a){return{chunks:a.chunks,costUsd:a.costUsd}}async function ay(a,b,c,d={}){let e=d.db??(0,g.Lf)(),h=d.runner??ar,i=d.broker??(0,au.k)(),k=d.provider??S(a.agent),l=d.command??k.defaultCommand,m=a.model??k.defaultModel,n=k.createParser();n.onParseError=b=>i.publish(a.id,{type:"parse_error",payload:b}),"working"!==a.status?(0,q.dk)(a.id,"working",{model:m},e):e.update(j.jobs).set({model:m}).where((0,f.eq)(j.jobs.id,a.id)).run();let o=d.costCapUsd&&d.costCapUsd>0?av(d.costCapUsd,()=>n.costUsd>0?n.costUsd:k.estimateCost(m,n.totalInputTokens,n.totalOutputTokens)):void 0,p=h(l,k.buildStartArgs({prompt:b,model:m,maxTurns:a.maxTurns}),c,{onStdout:b=>{for(let c of n.push(b))i.publish(a.id,{type:c.type,payload:ax(c)});o?.observe()},onStderr:b=>i.publish(a.id,{type:"error",payload:{stderr:b}})});bY(a.id,p.abort);let{exitCode:r,timedOut:s,costExceeded:t}=await aw(p,{timeoutMs:d.timeoutMs,costTripped:o?.tripped});for(let b of(bZ(a.id),s&&i.publish(a.id,{type:"error",payload:{stderr:`session timed out after ${d.timeoutMs}ms`}}),t&&i.publish(a.id,{type:"error",payload:{stderr:`session aborted: per-job cost limit of $${d.costCapUsd} reached`}}),n.flush()))i.publish(a.id,{type:b.type,payload:ax(b)});let u=n.costUsd>0?n.costUsd:k.estimateCost(m,n.totalInputTokens,n.totalOutputTokens);return e.update(j.jobs).set({sessionId:n.sessionId,totalInputTokens:n.totalInputTokens,totalOutputTokens:n.totalOutputTokens,costUsd:u}).where((0,f.eq)(j.jobs.id,a.id)).run(),{exitCode:r,sessionId:n.sessionId,costUsd:u,inputTokens:n.totalInputTokens,outputTokens:n.totalOutputTokens,timedOut:s,costExceeded:t}}async function az(a,b,c,d,e={}){let h=e.db??(0,g.Lf)(),i=e.runner??ar,k=e.broker??(0,au.k)(),l=e.provider??S(a.agent),m=e.command??l.defaultCommand,n=a.model??l.resumeModel,o=l.createParser();o.onParseError=b=>k.publish(a.id,{type:"parse_error",payload:b});let p=(0,at.Xm)((0,at.yx)(a.repoId,as._.ciFix,h),{CI_LOG:c}),q=e.costCapUsd&&e.costCapUsd>0?av(e.costCapUsd,()=>o.costUsd>0?o.costUsd:l.estimateCost(n,o.totalInputTokens,o.totalOutputTokens)):void 0,r=i(m,(l.supportsResume?l.buildResumeArgs({prompt:p,sessionId:b,model:l.resumeModel,maxTurns:l.resumeMaxTurns}):null)??l.buildStartArgs({prompt:p,model:l.resumeModel,maxTurns:l.resumeMaxTurns}),d,{onStdout:b=>{for(let c of o.push(b))k.publish(a.id,{type:c.type,payload:{chunks:c.chunks}});q?.observe()},onStderr:b=>k.publish(a.id,{type:"error",payload:{stderr:b}})});bY(a.id,r.abort);let{exitCode:s,timedOut:t,costExceeded:u}=await aw(r,{timeoutMs:e.timeoutMs,costTripped:q?.tripped});for(let b of(bZ(a.id),t&&k.publish(a.id,{type:"error",payload:{stderr:`session timed out after ${e.timeoutMs}ms`}}),u&&k.publish(a.id,{type:"error",payload:{stderr:`session aborted: per-job cost limit of $${e.costCapUsd} reached`}}),o.flush()))k.publish(a.id,{type:b.type,payload:{chunks:b.chunks}});let v=o.costUsd>0?o.costUsd:l.estimateCost(n,o.totalInputTokens,o.totalOutputTokens),w=h.select().from(j.jobs).where((0,f.eq)(j.jobs.id,a.id)).get();return h.update(j.jobs).set({sessionId:o.sessionId??b,totalInputTokens:(w?.totalInputTokens??0)+o.totalInputTokens,totalOutputTokens:(w?.totalOutputTokens??0)+o.totalOutputTokens,costUsd:(w?.costUsd??0)+v}).where((0,f.eq)(j.jobs.id,a.id)).run(),{exitCode:s,sessionId:o.sessionId??b,costUsd:v,inputTokens:o.totalInputTokens,outputTokens:o.totalOutputTokens,timedOut:t,costExceeded:u}}var aA=c(73024);let aB=["vercel","railway"];function aC(a){return a.exists??aA.existsSync}class aD{async detect(a){let b=aC(a);return b((0,aj.join)(a.cwd,"railway.json"))||b((0,aj.join)(a.cwd,"railway.toml"))||b((0,aj.join)(a.cwd,".railway"))}async getStatus(a){let b=await a.run("railway",["status"],a.cwd);return function(a,b){if(0!==b)return"not_found";let c=a.toLowerCase();return/\bfailed\b|\bcrashed\b|\berror\b/.test(c)?"error":/\bsuccess\b|\bdeployed\b|\bready\b/.test(c)?"ready":/\bbuilding\b/.test(c)?"building":/\bdeploying\b|\binitializing\b|\bqueued\b/.test(c)?"deploying":"not_found"}(b.stdout,b.exitCode)}async getLogs(a){let b=await a.run("railway",["logs"],a.cwd);return[b.stdout,b.stderr].filter(Boolean).join("\n").trim()}constructor(){this.id="railway",this.label="Railway"}}class aE{async detect(a){let b=aC(a);return b((0,aj.join)(a.cwd,"vercel.json"))||b((0,aj.join)(a.cwd,".vercel"))}async getStatus(a){let b=await a.run("vercel",["list"],a.cwd);return function(a,b,c){let d;if(0!==b)return"not_found";let e=a.split("\n").map(a=>a.trim()).filter(Boolean),f=c?c.slice(0,7):null;if(f){if(!(d=e.find(a=>a.includes(f))))return"not_found"}else d=e.find(a=>/●|ready|error|building|queued|initializing/i.test(a));let g=(d??a).toLowerCase();return/\berror\b|\bfailed\b|canceled/.test(g)?"error":/\bready\b/.test(g)?"ready":/\bbuilding\b/.test(g)?"building":/\bqueued\b|initializing|deploying/.test(g)?"deploying":"not_found"}(b.stdout,b.exitCode,a.ref)}async getLogs(a){let b=a.ref?["inspect","--logs",a.ref]:["logs"],c=await a.run("vercel",b,a.cwd);return[c.stdout,c.stderr].filter(Boolean).join("\n").trim()}constructor(){this.id="vercel",this.label="Vercel"}}let aF=[new aE,new aD];async function aG(a,b){if(b)return aB.includes(b)?function(a){let b=aF.find(b=>b.id===a);if(!b)throw Error(`unsupported deployment platform: ${a}`);return b}(b):null;for(let b of aF)if(await b.detect(a))return b;return null}var aH=c(46146);function aI(a,b){return{cwd:a.path,ref:b,run:ai.S}}async function aJ(a={}){let b=a.db??(0,g.Lf)(),c=a.now??Date.now,d=a.budgets??aH.ad;for(let e of(0,T.uP)(b))if(ab(e).autoHealDeployments)try{let f=a.forgeFor?.(e)??(0,U.Ie)(e),g=a.adapterFor??(a=>aG(aI(a,null),a.deploymentPlatform)),h=await g(e);if(!h)continue;let i=a.openFixPr??aM;await aK(e,f,h,{db:b,now:c,budgets:d,openFixPr:i})}catch(a){console.error(`[deploy-heal] sweep failed for ${e.name}`,a)}}async function aK(a,b,c,d){let{db:e,now:f,budgets:g}=d,h=(0,q.N6)(a.id,e);for(let a of h){let d;if("merged"!==a.status||null==a.prNumber)continue;let h=(a.finishedAt??a.createdAt)*1e3;if(!(f()-h>g.monitorWindowMs)){try{d=await b.prHeadSha(a.prNumber)}catch(b){console.error(`[deploy-heal] head sha lookup failed for job ${a.id}`,b);continue}(0,aH.SR)(a.id,d,e)||(0,aH.eY)(a.id,a.prNumber,c.id,d,e)}}for(let b of e.select().from(j.deploymentHealingSessions).all().filter(a=>"monitoring"===a.status)){let e=h.find(a=>a.id===b.jobId);if(e)try{await aL(a,e,c,b,d)}catch(c){console.error(`[deploy-heal] session ${b.id} failed for ${a.name}`,c)}}}async function aL(a,b,c,d,e){let{db:f,now:g,budgets:h}=e,i=(0,aH.FL)({createdAt:1e3*d.createdAt,lastPolledAt:1e3*d.updatedAt,now:g(),initialDelayMs:h.initialDelayMs,intervalMs:h.intervalMs,timeoutMs:h.timeoutMs});if("wait"===i)return;if("timeout"===i)return void(0,aH.X)(d.id,"escalated",{},f);let j=aI(a,d.commitSha),k=(0,aH.eV)(await c.getStatus(j));if("ready"===k)return void(0,aH.X)(d.id,"healthy",{},f);if("pending"===k)return void(0,aH.LR)(d.id,f);let l=(await c.getLogs(j).catch(()=>"")).split("\n").slice(-h.maxLogLines).join("\n").trim(),m=(0,aH.X)(d.id,"failed",{logsExcerpt:l||null},f);(0,aH.X)(d.id,"repairing",{},f);try{let c=await e.openFixPr(a,b,m,l);(0,aH.X)(d.id,"repaired",{followupPrNumber:c},f)}catch(a){console.error(`[deploy-heal] fix PR failed for session ${d.id}`,a),(0,aH.X)(d.id,"escalated",{},f)}}async function aM(a,b,c,d){let e=(0,g.Lf)(),f=S(b.agent),h=ah(f,e),i=new ap,j=c.commitSha.slice(0,7),k=`drydock/deploy-fix-${b.id}-${j}`,l=(0,U.Ie)(a),m=await i.prepareForNewBranch(a,k,`${b.id}-${j}`);try{let g=await ay(b,[`The deployment of the merged pull request #${c.prNumber} failed on`,`${c.platform} (commit ${c.commitSha.slice(0,7)}).`,"\nDeployment logs:\n```",d||"(no logs captured)","```\n\nDiagnose the deployment failure and make the minimal change that fixes it.\nEnsure the project builds and tests pass, then stop — the commit, push, and\npull request are handled for you."].join("\n"),m.path,{db:e,provider:f,command:h});if(0!==g.exitCode)throw Error(`${f.label} exited non-zero`);return await i.commitAndPush(m,`Fix failed ${c.platform} deployment for PR #${c.prNumber}`),l.createPr({head:k,base:a.defaultBranch,title:`Fix failed ${c.platform} deployment (PR #${c.prNumber})`,body:`The deployment for #${c.prNumber} (commit ${j}) failed. This PR addresses the deployment failure.`})}finally{try{await i.remove(m,a.path)}catch(a){console.error(`[deploy-heal] worktree cleanup failed for job ${b.id}`,a)}}}var aN=c(34717),aO=c(51455),aP=c(10520);let aQ=z.Ik({release:z.zM(),bump:z.k5(["patch","minor","major"]),title:z.Yj().default(""),notes:z.Yj().default("")});async function aR(a){var b;let c,d=await a.listReleases(),e=function(a){let b=null;for(let c of a)(0,aP.kf)(c)&&(null===b||(0,aP.mU)(c,b)>0)&&(b=c);return b}(d.map(a=>a.tagName)),f=e?d.find(a=>a.tagName===e)?.createdAt??null:null;return{fromTag:e,releases:d,prs:(b=(await a.listMergedPrs(100)).map(a=>({number:a.number,title:a.title,labels:a.labels,mergedAt:a.mergedAt})),c=null===f?null:Date.parse(f),b.filter(a=>{let b=Date.parse(a.mergedAt);return!Number.isNaN(b)&&(null===c||b>c)}).sort((a,b)=>a.number-b.number))}}async function aS(a,b){let c=b.db??(0,g.Lf)(),d=(0,aN.tm)(a,c);if(!d)throw Error(`release run ${a} not found`);let e=d.mode;(0,aN.Cq)(a,"evaluating",{},c);try{var f;let{fromTag:g,releases:h,prs:i}=await aR(b.forge),j=await b.generate({fromTag:g,prs:i});if("auto"===e&&!j)return(0,aN.Cq)(a,"error",{errorMessage:"release evaluation failed"},c);if("auto"===e&&j&&!j.release)return(0,aN.Cq)(a,"skipped",{fromTag:g},c);let k=function(a,b,c){let d="manual"===a?"patch":b?.bump??"patch",e=b?.title?.trim()??"";return{bump:d,title:e,notes:b?.notes?.trim()||(0===c.length?"No changes since the last release.":c.map(a=>`- #${a.number} ${a.title}`).join("\n"))}}(e,j,i),l=d.tag??(f=k.bump,`v${(0,aP.rr)(g??"0.0.0",f)}`);if((0,aN.Cq)(a,"proposed",{bump:k.bump,fromTag:g,tag:l,title:k.title||l,notes:k.notes,prNumbers:i.map(a=>a.number)},c),h.some(a=>a.tagName===l))return(0,aN.Cq)(a,"publishing",{},c),(0,aN.Cq)(a,"published",{},c);return(0,aN.Cq)(a,"publishing",{},c),await b.forge.createRelease({tag:l,title:k.title||l,notes:k.notes,target:b.repo.defaultBranch}),(0,aN.Cq)(a,"published",{},c)}catch(f){let b=f instanceof Error?f.message:String(f),d=(0,aN.tm)(a,c),e=d?.status??"evaluating";if("evaluating"===e||"proposed"===e||"publishing"===e)return(0,aN.Cq)(a,"error",{errorMessage:b.slice(0,500)},c);return(0,aN.tm)(a,c)}}async function aT(a,b){let c=await (0,aO.mkdtemp)((0,aj.join)((0,s.tmpdir)(),"drydock-release-"));try{var d;let e,f,g=(e=(d={provider:a.provider,command:a.command,model:a.model,cwd:c,runner:a.runner}).runner??ai.S,f=d.timeoutMs??18e4,async a=>{let b,c,g=d.provider.buildOneShotArgs({prompt:(c=(b=a.prs.slice(0,200)).length>0?b.map(a=>{let b=a.labels.length>0?` [${a.labels.join(", ")}]`:"";return`- #${a.number} ${a.title}${b}`}).join("\n"):"(no merged pull requests)",["You are deciding whether to cut a new software release. Given the most\nrecent release and the pull requests merged since then, decide whether a\nrelease is warranted, which semantic-version bump it should be, and write\nconcise Markdown release notes.\n",a.fromTag?`The most recent release is ${a.fromTag}.`:"There is no prior release (this would be the first).","\n## Pull requests merged since the last release\n",c,'\n## How to choose the bump\n\n- "major": incompatible / breaking changes.\n- "minor": new, backwards-compatible features.\n- "patch": backwards-compatible bug fixes or internal-only changes.\n\n## Response format\n\nRespond with ONLY a JSON object (no prose, no code fences) of the shape:\n\n{"release": <true|false>, "bump": "patch"|"minor"|"major",\n "title": "<short release title>", "notes": "<Markdown release notes>"}\n\nSet "release" to false when the changes do not warrant a release yet (e.g.\nonly docs/CI tweaks). When false, the other fields are ignored.'].join("\n")),model:d.model});try{let a=await e(d.command,g,d.cwd,{timeoutMs:f});if(0!==a.exitCode)return null;return function(a){let b,c=a.match(/\{[\s\S]*\}/);if(!c)return null;try{b=JSON.parse(c[0])}catch{return null}let d=aQ.safeParse(b);return d.success?d.data:null}(a.stdout)}catch{return null}});return await b(g)}finally{try{await (0,aO.rm)(c,{recursive:!0,force:!0})}catch{}}}async function aU(a={}){let b=a.db??(0,g.Lf)();if(!(0,i.mt)(b).releaseManagementEnabled)return;let c=a.now??Date.now,d=a.windowMs??36e5,e=a.notify??((a,c)=>m(a,c,b));for(let f of(0,T.uP)(b))if(ab(f).releaseEnabled)try{let g=a.forgeFor?.(f)??(0,U.Ie)(f),h="function"==typeof g.listReleases&&"function"==typeof g.listMergedPrs&&"function"==typeof g.createRelease?g:null;if(!h)continue;let i=a.generatorFor?.(f)??function(a,b){let c=S(a.agent),d=ah(c,b),e=a.defaultModel;return a=>aT({provider:c,command:d,model:e},b=>b(a))}(f,b);await aV(f,g,h,i,{db:b,now:c,windowMs:d,notify:e})}catch(a){console.error(`[release] sweep failed for ${f.name}`,a)}}async function aV(a,b,c,d,e){let{db:f,now:g,windowMs:h}=e;for(let i of(0,q.N6)(a.id,f)){if("merged"!==i.status||null==i.prNumber)continue;let f=(i.finishedAt??i.createdAt)*1e3;if(!(g()-f>h))try{await aW(a,i,b,c,d,e)}catch(b){console.error(`[release] job ${i.id} failed for ${a.name}`,b)}}}async function aW(a,b,c,d,e,f){let{db:g,notify:h}=f,i=b.prNumber,j=await c.prHeadSha(i),k=(0,aN.v0)({repoId:a.id,mode:"auto",triggerPrNumber:i,triggerSha:j},g);if("detected"!==k.status)return;let l=await aS(k.id,{repo:a,forge:d,db:g,generate:e});"published"===l.status&&l.tag&&await h("release_published",`🚀 Released ${a.name} ${l.tag}.`)}let aX=["resolved","failed","rejected","flagged"],aY={pending:["queued","rejected","flagged"],queued:["in_progress","flagged","rejected"],in_progress:["resolved","failed","flagged","queued"],resolved:[],failed:[],rejected:[],flagged:[]};class aZ extends Error{constructor(a,b){super(`invalid feedback transition: ${a} -> ${b}`)}}let a$=/\b(out of scope|follow[- ]?up|separate pr|different pr|unrelated|won'?t fix|nevermind|never mind|ignore this)\b/i,a_=/\b(please|change|rename|fix|add|remove|delete|use|extract|refactor|move|replace|guard|handle|update|simplify|inline|should be|consider|nit)\b/i;function a0(a,b,c={},d=(0,g.Lf)()){let e=d.select().from(j.reviewFeedbackItems).where((0,f.eq)(j.reviewFeedbackItems.id,a)).get();if(!e)throw Error(`review feedback item ${a} not found`);var h=e.status;if(!aY[h].includes(b))throw new aZ(h,b);return d.update(j.reviewFeedbackItems).set({status:b,detail:c.detail??e.detail,attempts:"in_progress"===b?e.attempts+1:e.attempts,updatedAt:Math.floor(Date.now()/1e3)}).where((0,f.eq)(j.reviewFeedbackItems.id,a)).returning().get()}let a1={maxItemsPerSweep:3,maxAttemptsPerItem:2};async function a2(a,b,c){var d;let e=(d=b.id,`<!-- drydock:review-feedback:${d} -->`),f=`${c}
|
|
4
|
-
|
|
5
|
-
${e}`,g=b.comments.find(a=>a.body.includes(e));g?await a.updateReviewComment(g.id,f):await a.replyToReviewThread(b.id,f)}async function a3(a,b,c){let d=c.db??(0,g.Lf)(),e=c.budgets??a1,h={processed:0,resolved:0,flagged:0,rejected:0,failed:0,skipped:0},i=await c.forge.listReviewThreads(b),k=0;for(let m of i){var l;if(m.isResolved){h.skipped++;continue}let i=m.comments[0];if(!i||!function(a,b){let c=a.toLowerCase();return!(c.endsWith("[bot]")||b.ignoredBots.some(a=>a.toLowerCase()===c))&&b.trustedReviewers.some(a=>a.toLowerCase()===c)}(i.author,c.gate)){h.skipped++;continue}let n=function(a){let b=a.trim();return a$.test(b)?"out_of_scope":a_.test(b)?"actionable":b.includes("?")?"question":"actionable"}(i.body),o=function(a,b=(0,g.Lf)()){let c=function(a,b,c=(0,g.Lf)()){return c.select().from(j.reviewFeedbackItems).where((0,f.Uo)((0,f.eq)(j.reviewFeedbackItems.jobId,a),(0,f.eq)(j.reviewFeedbackItems.threadId,b))).get()}(a.jobId,a.threadId,b);return c||b.insert(j.reviewFeedbackItems).values({jobId:a.jobId,prNumber:a.prNumber,threadId:a.threadId,reviewer:a.reviewer,classification:a.classification}).returning().get()}({jobId:a,prNumber:b,threadId:m.id,reviewer:i.author,classification:n},d);if(l=o.status,aX.includes(l)){h.skipped++;continue}if("pending"===o.status)try{await c.forge.reactToReviewComment(i.id,"EYES")}catch{}if("pending"===o.status){if("question"===n){o=a0(o.id,"flagged",{},d),await a2(c.forge,m,"Drydock: this looks like a question rather than a change request, so it's flagged for a human reviewer."),h.flagged++,h.processed++;continue}if("out_of_scope"===n){o=a0(o.id,"rejected",{},d),await a2(c.forge,m,"Drydock: treating this as out of scope for this PR — please open a follow-up issue if it should be tracked."),await c.forge.resolveReviewThread(m.id),h.rejected++,h.processed++;continue}o=a0(o.id,"queued",{},d)}if("queued"===o.status){if(k>=e.maxItemsPerSweep)continue;if(o.attempts>=e.maxAttemptsPerItem){o=a0(o.id,"flagged",{},d),await a2(c.forge,m,`Drydock: could not resolve this after ${o.attempts} attempt(s); flagging for a human.`),h.flagged++,h.processed++;continue}k++,o=a0(o.id,"in_progress",{},d),c.includeProgressReplies&&await a2(c.forge,m,"Drydock: working on this now…");let a=await c.applyFeedback(o,m);h.processed++,a.ok?(a0(o.id,"resolved",{detail:a.detail},d),await a2(c.forge,m,"Drydock: applied this change and pushed a commit. ✅"),await c.forge.resolveReviewThread(m.id),h.resolved++):o.attempts>=e.maxAttemptsPerItem?(a0(o.id,"failed",{detail:a.detail},d),await a2(c.forge,m,`Drydock: could not apply this automatically (${a.detail??"no change produced"}); flagging for a human.`),h.failed++):a0(o.id,"queued",{detail:a.detail},d)}}return h}let a4=new Set(["ci_running","ci_failed","retrying","needs_human"]);function a5(a){return"function"==typeof a.listReviewThreads&&"function"==typeof a.replyToReviewThread&&"function"==typeof a.updateReviewComment&&"function"==typeof a.resolveReviewThread&&"function"==typeof a.reactToReviewComment}async function a6(a={}){let b=a.db??(0,g.Lf)(),c=a.processJob??a7;for(let d of(0,T.uP)(b))if(ab(d).autoReviewFeedback)try{let e=a.forgeFor?.(d)??(0,U.Ie)(d);if(!a5(e))continue;for(let a of(0,q.N6)(d.id,b).filter(a=>null!=a.prNumber&&a4.has(a.status)))try{await c(d,a,e)}catch(b){console.error(`[review-feedback] job ${a.id} failed for ${d.name}`,b)}}catch(a){console.error(`[review-feedback] sweep failed for ${d.name}`,a)}}async function a7(a,b,c){var d;if(!a5(c)||null==b.prNumber)return;let e=(0,g.Lf)(),f=ab(a),h=S(b.agent),i=ah(h,e),j=(d={repo:a,job:b,worktrees:new ap,runSession:(a,b,c)=>ay(a,b,c,{db:e,provider:h,command:i}).then(a=>({exitCode:a.exitCode}))},async(a,b)=>{if(!d.job.branch)return{ok:!1,detail:"job has no branch"};let c=await d.worktrees.prepareForBranch(d.repo,d.job.branch,`${d.job.id}-${b.id}`);try{let a,e,f=await d.runSession(d.job,(a=b.comments[0],e=b.path?`${b.path}${b.line?`:${b.line}`:""}`:"this PR",[`A reviewer left this comment on ${e} of the current pull request:`,"",(a?.body??"").trim(),"\nMake only the change this comment asks for. Do not address anything else.\nWhen done, ensure the working tree builds and tests pass, then stop — the\ncommit and push are handled for you."].join("\n")),c.path);if(0!==f.exitCode)return{ok:!1,detail:"agent exited non-zero"};try{await d.worktrees.commitAndPush(c,`Address review feedback on ${b.path??"PR"}`)}catch{return{ok:!1,detail:"no change produced"}}return{ok:!0}}finally{try{await d.worktrees.remove(c,d.repo.path)}catch(a){console.error(`[review-feedback] worktree cleanup failed for job ${d.job.id}`,a)}}});await a3(b.id,b.prNumber,{forge:c,db:e,gate:{trustedReviewers:f.trustedReviewers,ignoredBots:f.ignoredBots},includeProgressReplies:f.includeProgressReplies,applyFeedback:j})}var a8=c(24532),a9=c(97337);let ba={pending:["in_progress","skipped","deferred"],in_progress:["done","skipped","deferred"],deferred:["pending","in_progress","skipped"],done:[],skipped:[]};class bb extends Error{constructor(a,b){super(`invalid subtask transition: ${a} -> ${b}`)}}let bc=/^\s*[-*]\s*\[[ xX]\]\s+(.+?)\s*$/,bd=/^\s*#*\s*(Bug\s+\d+\s*(?:[—:-])\s*.+?)\s*$/;async function be(a,b={}){let c=function(a){let b=function(a){let b=[];for(let c of a.split("\n")){let a=c.match(bc);a?.[1]&&b.push(a[1].trim())}return b}(a);if(b.length>=2)return b;let c=function(a){let b=[];for(let c of a.split("\n")){let a=c.match(bd);a?.[1]&&b.push(a[1].trim())}return b}(a);return c.length>=2?c:[]}(a.body);if(c.length>=2)return{titles:c,source:"heuristic"};if(b.generate)try{let c=(await b.generate(a)).map(a=>a.trim()).filter(Boolean);if(c.length>=2)return{titles:c,source:"agent"}}catch(b){console.error(`[decompose] agent fallback failed for issue #${a.number}`,b)}return{titles:[],source:"none"}}function bf(a){return a.map((a,b)=>{let{box:c,suffix:d}=function(a){switch(a){case"done":return{box:"[x]",suffix:""};case"skipped":return{box:"[~]",suffix:" — skipped"};case"in_progress":return{box:"[ ]",suffix:" — in progress"};case"deferred":return{box:"[ ]",suffix:" — deferred"};default:return{box:"[ ]",suffix:""}}}(a.status);return`${b+1}. ${c} ${a.title}${d}`}).join("\n")}function bg(a,b,c=(0,g.Lf)()){return c.select().from(j.issueSubtasks).where((0,f.Uo)((0,f.eq)(j.issueSubtasks.repoId,a),(0,f.eq)(j.issueSubtasks.issueNumber,b))).orderBy((0,a9.Y)(j.issueSubtasks.ordinal)).all()}function bh(a,b,c=(0,g.Lf)()){let d=c.select().from(j.issueSubtasks).where((0,f.eq)(j.issueSubtasks.id,a)).get();if(!d)throw Error(`subtask ${a} not found`);var e=d.status;if(!ba[e].includes(b))throw new bb(e,b);return c.update(j.issueSubtasks).set({status:b}).where((0,f.eq)(j.issueSubtasks.id,a)).returning().get()}async function bi(a,b,c=(0,g.Lf)(),d={}){var e,h,i,k;let l=function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return(b>>>0).toString(16)}(b.body);if(e=a.id,h=b.number,c.select({h:j.issues.decomposedHash}).from(j.issues).where((0,f.Uo)((0,f.eq)(j.issues.repoId,e),(0,f.eq)(j.issues.number,h))).get()?.h===l)return{subtasks:bg(a.id,b.number,c),source:"none",skipped:!0};let{titles:m,source:n}=await be(b,{generate:d.generate}),o=function(a,b,c,d,e=(0,g.Lf)()){return e.transaction(e=>(e.delete(j.issueSubtasks).where((0,f.Uo)((0,f.eq)(j.issueSubtasks.repoId,a),(0,f.eq)(j.issueSubtasks.issueNumber,b))).run(),c.forEach((c,f)=>{e.insert(j.issueSubtasks).values({repoId:a,issueNumber:b,ordinal:f,title:c,bodyHash:d}).run()}),e.select().from(j.issueSubtasks).where((0,f.Uo)((0,f.eq)(j.issueSubtasks.repoId,a),(0,f.eq)(j.issueSubtasks.issueNumber,b))).orderBy((0,a9.Y)(j.issueSubtasks.ordinal)).all()))}(a.id,b.number,m,l,c);return i=a.id,k=b.number,c.update(j.issues).set({decomposedHash:l}).where((0,f.Uo)((0,f.eq)(j.issues.repoId,i),(0,f.eq)(j.issues.number,k))).run(),{subtasks:o,source:n,skipped:!1}}let bj=new Set(["CANCELLED","ACTION_REQUIRED"]),bk=new Set(["TIMED_OUT"]),bl=/\b(ai|claude|codex|copilot|gpt|llm)\b.*\breview\b|\breview\b.*\b(ai|bot)\b/i,bm=/\bcancell?ed\b|\bsecret\b|\b(rate.?limit|secondary rate)\b|\b5\d\d\b|\b(401|403|unauthorized|forbidden)\b|service unavailable/i,bn=/\b(time(d)?.?out|timeout|intermittent|flak(y|e)|econnreset|etimedout|esockettimedout)\b/i,bo=/\b(typecheck|tsc|type error|ts\d{3,5}|lint|biome|eslint|prettier|test|tests|spec|vitest|jest|pytest|assert(ion)?|build|compile|compilation|codegen|generated|snapshot|out of date|outdated)\b/i,bp=[{kind:"type",re:/\berror TS\d{2,5}\b|\bTS\d{2,5}:|\bType error:|is not assignable to/i},{kind:"dependency",re:/\bnpm ERR!|\bERR_PNPM|\bERESOLVE\b|unmet peer|peer dep|frozen lockfile|out of date lockfile|cannot find module '/i},{kind:"lint",re:/\bbiome\b|\beslint\b|\bprettier\b|\blint\/[a-z]|@typescript-eslint\/|formatter would have/i},{kind:"test",re:/\bFAIL\b|✕|✗|✖|●|\bAssertionError\b|expect\(|Expected:|Received:|\bTests?:\s|\d+ failed/i},{kind:"build",re:/failed to compile|module not found|compilation (failed|error)|\bcompile error\b|cannot compile/i},{kind:"timeout",re:/\btimed out\b|\btimeout\b|exceeded \d+\s?ms/i},{kind:"flaky",re:/\bECONNRESET\b|\bETIMEDOUT\b|\bESOCKETTIMEDOUT\b|intermittent|\bflak(y|e)\b/i}];function bq(a,b){if(0===a.length)return{kind:"unknown",evidence:""};let c=a.split("\n"),d=function(a){for(let{kind:b,re:c}of bp)if(c.test(a))return b;return"unknown"}(a);if("unknown"===d)return{kind:d,evidence:c.slice(-b).join("\n")};let e=bp.find(a=>a.kind===d),f=e?c.findIndex(a=>e.re.test(a)):-1;if(f<0)return{kind:d,evidence:c.slice(-b).join("\n")};let g=Math.max(0,f-3);return{kind:d,evidence:c.slice(g,g+b).join("\n")}}let br={test:"A test is failing. Identify the failing test(s) from the evidence and fix the underlying code so they pass. Do not delete or skip tests, and do not weaken assertions to go green.",type:"A type error is failing the check. Fix the reported type error(s) properly — correct the types; do not silence them with `any` or `@ts-ignore`.",lint:"A lint/format check is failing. Fix the reported rule violations. Prefer the autofix (e.g. `npx biome check --write`) and resolve anything it cannot fix by hand.",build:"The build/compile step failed. Fix the compilation error(s) shown below (e.g. a broken import or unresolved module).",dependency:"A dependency step failed. Resolve the dependency problem below — a missing or incompatible package, or an out-of-date lockfile. Update package.json and the lockfile together.",timeout:"A check timed out. If a change in this branch introduced a hang or a slow path, fix it; otherwise make the affected code complete within the time budget.",flaky:"A check failed on what looks like an intermittent/network error. If the branch made the code fragile to this, harden it; otherwise the failure may not be code-related.",unknown:"A CI check is failing. Diagnose the failure from the evidence below and fix it."};var bs=c(53566);let bt=new Set(["FAILURE","ERROR","CANCELLED","TIMED_OUT","ACTION_REQUIRED"]),bu=new Set(["PENDING","QUEUED","IN_PROGRESS","WAITING","REQUESTED"]);function bv(a){return 0===a.length?"pending":a.some(a=>bt.has(a.state.toUpperCase()))?"failed":a.some(a=>bu.has(a.state.toUpperCase()))?"pending":"passed"}let bw=a=>new Promise(b=>setTimeout(b,a));async function bx(a,b,c,d,e){await d.gh.commentIssue(a.issueNumber,`${c} Handing over to a human.`);let f=await d.gh.createIssue(`Follow-up: CI keeps failing for issue #${a.issueNumber}`,`Job ${a.id} could not be auto-healed on PR #${b}. ${c}`);return e.insert(j.followupIssues).values({jobId:a.id,ghIssueNumber:f,title:`Follow-up for #${a.issueNumber}`}).run(),(0,q.dk)(a.id,"needs_human",{errorMessage:c.slice(0,500)},e)}async function by(a,b,c,d,e){let f=Math.round(c/6e4),g=`CI did not complete in time (checks stayed pending for over ${f} min on PR #${b}).`;return await d.gh.commentIssue(a.issueNumber,`${g} Handing over to a human.`),(0,q.yM)(a.id,"status",{reason:"ci wait budget exceeded",prNumber:b},e),(0,q.dk)(a.id,"needs_human",{errorMessage:g.slice(0,500)},e)}async function bz(a,b,c){if(c.autoHeal)return bA(a,b,c,c.autoHeal);let d=c.db??(0,g.Lf)(),e=c.sleep??bw,f=c.pollMs??3e4,h=c.maxPolls??1/0,i=c.ciWaitMs??1/0,j=c.now??Date.now,k=j()+i,l=a,m=0;for(;m<h;){m++;let a=bv(await c.gh.prChecks(b));if("pending"===a){if(j()>=k)return by(l,b,i,c,d);await e(f);continue}if("passed"===a)return await c.gh.mergePr(b),(0,q.dk)(l.id,"merged",{prNumber:b},d);if((l=(0,q.dk)(l.id,"ci_failed",{prNumber:b},d)).ciRetryCount>=3)return bx(l,b,"CI failed 3 times.",c,d);if(!l.sessionId)return(0,q.yM)(l.id,"status",{reason:"missing session id, cannot resume for CI fix"},d),(0,q.dk)(l.id,"needs_human",{errorMessage:"CI failed but no session id to resume"},d);let g=l.sessionId;l=(0,q.dk)(l.id,"retrying",{ciRetryCount:l.ciRetryCount+1},d);let{evidence:h}=bq(await c.gh.failedRunLog(b),200);await c.resumeSession(l,g,h),l=(0,q.dk)(l.id,"ci_running",{},d)}return(0,q.ax)(l.id,d)??l}async function bA(a,b,c,d){let e,f=c.db??(0,g.Lf)(),h=c.sleep??bw,i=c.pollMs??3e4,j=c.maxPolls??1/0,k=d.budgets??bs.op,l=c.now??d.now??Date.now,m=c.ciWaitMs??1/0,n=l()+m,o=a,p=0;for(;p<j;){p++;let a=await c.gh.prChecks(b),g=bv(a);if("pending"===g){if(l()>=n)return by(o,b,m,c,f);await h(i);continue}if("passed"===g){if(e){let a=await d.headSha(b);(0,bs.Az)(e.attemptId,{status:"healed",afterSha:a},f),(0,bs.Yv)(e.sessionId,"verifying",f),(0,bs.Yv)(e.sessionId,"healed",f)}return await c.gh.mergePr(b),(0,q.dk)(o.id,"merged",{prNumber:b},f)}let j=a.filter(a=>bt.has(a.state.toUpperCase())),r=await d.headSha(b);if(e){let a=(0,bs.I0)({beforeSha:e.beforeSha,afterSha:r,beforeFailingCount:e.beforeFailing,afterFailingCount:j.length});(0,bs.Az)(e.attemptId,{status:a.verdict,afterSha:r},f);let d=e.sessionId;if(e=void 0,"rejected"===a.verdict)return(0,bs.Yv)(d,"verifying",f),(0,bs.Yv)(d,"escalated",f),bx(o,b,`CI auto-heal: ${a.reason}.`,c,f)}let s=(0,bs.dT)(o.id,b,r,f),t=await c.gh.failedRunLog(b),u=j.map(a=>(function(a,b,c=""){var d,e;let f,g,h=(d=b.name,e=b.state??"",f=e.toUpperCase(),g=`${d}
|
|
6
|
-
${c}`,bj.has(f)||bl.test(d)||bm.test(g)?"blocked_external":bk.has(f)||bn.test(g)?"flaky_or_ambiguous":bo.test(g)?"healable_in_branch":"unknown");return{checkName:b.name,category:h,fingerprint:`${a}:${h}:${b.name.trim().toLowerCase().replace(/\s+/g," ")}`}})(d.provider,a,t)),v=(0,bs.VJ)(s.id,f),w=v.at(-1),x=(0,bs.ZM)({failures:u,attempts:v.map(a=>({fingerprint:a.fingerprint})),lastAttemptAt:w?1e3*w.createdAt:null,now:l(),activeRuns:(0,bs.Bz)(f),budgets:k});switch(x.action){case"block":return"triaging"===s.status&&(0,bs.Yv)(s.id,"blocked",f),await c.gh.commentIssue(o.issueNumber,`CI auto-heal: ${x.reason} — not auto-fixable. Handing over to a human.`),(0,q.dk)(o.id,"needs_human",{errorMessage:`auto-heal blocked: ${x.reason}`.slice(0,500)},f);case"escalate":return"triaging"===s.status&&(0,bs.Yv)(s.id,"escalated",f),bx(o,b,`CI auto-heal: ${x.reason}.`,c,f);case"wait_slot":await h(i);continue;case"cooldown":await h(Math.min(x.waitMs,i));continue;case"repair":case"rerun":{let a=o.sessionId;if(!a)return"triaging"===s.status&&(0,bs.Yv)(s.id,"escalated",f),bx(o,b,"CI failed but no session id to resume.",c,f);let d=(0,bs.Z7)(s.id,x.target,r,f);if((0,bs.Yv)(s.id,"awaiting_slot",f),(0,bs.Yv)(s.id,"repairing",f),o=(0,q.dk)(o.id,"ci_failed",{prNumber:b},f),o=(0,q.dk)(o.id,"retrying",{ciRetryCount:o.ciRetryCount+1},f),"repair"===x.action){let b=function(a){let{kind:b,evidence:c}=bq(a.log,a.maxLines);return[`CI check "${a.checkName}" is failing on this PR.`,br[b],"Fix only this failure, then commit and push. Failure evidence:\n",c].join("\n")}({checkName:x.target.checkName,log:t,maxLines:k.maxEvidenceLines});await c.resumeSession(o,a,b)}(0,bs.Yv)(s.id,"awaiting_ci",f),o=(0,q.dk)(o.id,"ci_running",{},f),e={attemptId:d.id,sessionId:s.id,beforeSha:r,beforeFailing:j.length};continue}}}return(0,q.ax)(o.id,f)??o}async function bB(a,b,c,d=(0,g.Lf)(),e={}){for(let f of c)try{let c=await b.viewIssue(f.number),g=await bi(a,{number:c.number,title:c.title,body:c.body},d,{generate:e.generate});if(!g.skipped&&g.subtasks.length>=2){let a=bf(g.subtasks.map(a=>({title:a.title,status:a.status})));await b.commentIssue(c.number,`Drydock decomposed this issue into subtasks and will work them in order:
|
|
7
|
-
|
|
8
|
-
${a}`)}}catch(b){console.error(`[subtasks] decomposition failed for ${a.name}#${f.number}`,b)}}function bC(a,b){if(a.length<=b)return a;let c=a.length-b;return`${a.slice(0,b)}
|
|
9
|
-
…[truncated ${c} chars]`}let bD=z.Ik({ordinal:z.ai().int().nonnegative(),status:z.k5(["done","pending","deferred"]),reason:z.Yj().default("")}),bE=z.Ik({summary:z.Yj().default(""),verdicts:z.YO(bD).default([])});async function bF(a){let b,{job:c,prNumber:d,repo:e,forge:f,db:h,provider:i,command:j,model:l}=a;try{let n=await f.prDiff(d);if(!n.trim())return null;let o=await f.viewIssue(c.issueNumber),p=bg(e.id,c.issueNumber,h),r={issueNumber:c.issueNumber,issueTitle:o.title,issueBody:o.body,subtasks:p.map(a=>({ordinal:a.ordinal,title:a.title})),diff:n},t=a.generate;if(!t){var m;let c,d;b=await (0,aO.mkdtemp)((0,aj.join)((0,s.tmpdir)(),"drydock-verify-")),c=(m={provider:i,command:j,model:l,cwd:b,runner:a.runner}).runner??ai.S,d=m.timeoutMs??18e4,t=async a=>{var b;let e,f,g=m.provider.buildOneShotArgs({prompt:(e=bC(a.issueBody.trim(),6e3),f=bC(a.diff.trim(),24e3),["You are performing a READ-ONLY verification pass. Do NOT edit files, run\ncommands, or make any changes. Given a GitHub issue, its subtasks, and the\ndiff of a pull request that claims to address it, judge whether the diff\nactually satisfies each subtask (or, if there are none, the issue overall).\n",`## Issue #${a.issueNumber}: ${a.issueTitle}`,"",e,"\n## Subtasks\n",0===(b=a.subtasks).length?"This issue has no tracked subtasks; verify the issue as a whole.":b.map(a=>`- [ordinal ${a.ordinal}] ${a.title}`).join("\n"),"\n## Pull request diff\n\n```diff",f,'```\n\n## Response format\n\nRespond with ONLY a JSON object (no prose, no code fences) of the shape:\n\n{"summary": "<one or two sentence overall assessment>",\n "verdicts": [{"ordinal": <number>, "status": "done"|"pending"|"deferred",\n "reason": "<short justification>"}]}\n\nInclude one verdict per subtask ordinal above. If there are no subtasks,\nreturn a single verdict with ordinal 0 for the issue as a whole. Use\n"done" when the diff fully satisfies it, "pending" when it is unmet or only\npartially addressed, and "deferred" when it is intentionally out of scope.'].join("\n")),model:m.model});try{let a=await c(m.command,g,m.cwd,{timeoutMs:d});if(0!==a.exitCode)return null;return function(a){let b,c=a.match(/\{[\s\S]*\}/);if(!c)return null;try{b=JSON.parse(c[0])}catch{return null}let d=bE.safeParse(b);return d.success?d.data:null}(a.stdout)}catch{return null}}}let u=await t(r);if(!u)return(0,q.yM)(c.id,"verification",{ok:!1},h),null;let v=function(a,b,c,d=(0,g.Lf)()){let e=new Map(bg(a,b,d).map(a=>[a.ordinal,a])),f=0,h=0,i=[];for(let a of c.verdicts){let b=e.get(a.ordinal);if(b)if("done"===a.status)!function(a,b){let c=a.status;if("done"!==c&&"skipped"!==c)try{if("in_progress"===c)return void bh(a.id,"done",b);bh(a.id,"in_progress",b),bh(a.id,"done",b)}catch{}}(b,d),f+=1;else if("deferred"===a.status)try{bh(b.id,"deferred",d),h+=1}catch{}else i.push(b.title)}return{done:f,deferred:h,pendingTitles:i}}(e.id,c.issueNumber,u,h);return await f.commentIssue(c.issueNumber,(0,k.f)(function(a,b){let c=[`🔎 Drydock post-PR verification`,""];if(a.summary.trim()&&c.push(a.summary.trim(),""),b.pendingTitles.length>0)for(let a of(c.push("Subtasks still pending:"),b.pendingTitles))c.push(`- ${a}`);else c.push("All tracked subtasks appear satisfied by the diff.");return c.join("\n")}(u,v))),(0,q.yM)(c.id,"verification",{ok:!0,summary:u.summary,done:v.done,deferred:v.deferred,pending:v.pendingTitles.length},h),u}catch(a){return console.error(`[verify] verification pass failed for ${e.name}#${c.issueNumber}`,a),null}finally{if(b)try{await (0,aO.rm)(b,{recursive:!0,force:!0})}catch{}}}async function bG(a,b={}){let c=b.db??(0,g.Lf)(),d=b.notify??((a,b)=>m(a,b,c)),e=await bH(a,b,d);return"merged"===e.status?await d("pr_merged",`✅ Merged: ${e.repoId}#${e.issueNumber} (PR #${e.prNumber}).`):"needs_human"===e.status?await d("needs_human",`⚠️ Needs human: ${e.repoId}#${e.issueNumber} — ${e.errorMessage??"review required"}.`):"aborted"===e.status&&await d("job_failed",`🛑 Aborted: ${e.repoId}#${e.issueNumber} — ${e.errorMessage??"job aborted"}.`),e}async function bH(a,b,c){let d,e=b.db??(0,g.Lf)(),f=(0,q.ax)(a,e);if(!f)throw Error(`job ${a} not found`);let h=(0,T.L8)(f.repoId,e);if(!h)throw Error(`repo ${f.repoId} not found`);"queued"===f.status&&(0,q.dk)(f.id,"working",{},e);let j=b.worktrees??new ap,k=(0,U.Ie)(h),l=S(f.agent),m=ah(l,e),n=(0,i.mt)(e),o=h.maxJobMinutes??n.maxJobMinutes,p=6e4*o,r=(h.maxCiWaitMinutes??n.maxCiWaitMinutes)*6e4,s=h.maxJobCostUsd??n.maxJobCostUsd,t=b.runSession??((a,b,c)=>ay(a,b,c,{db:e,provider:l,command:m,timeoutMs:p,costCapUsd:s})),u=b.createPr??(a=>k.createPr(a)),v=b.runBabysitter??((a,b)=>bz(a,b,{gh:k,db:e,ciWaitMs:r,resumeSession:(a,b,c)=>az(a,b,c,h.path,{db:e,provider:l,command:m,timeoutMs:p,costCapUsd:s}).then(()=>void 0),autoHeal:h.autoHealCi?{headSha:a=>k.prHeadSha(a),provider:h.platform}:void 0})),w=b.verify??((a,b)=>bF({job:a,prNumber:b,repo:h,forge:k,db:e,provider:l,command:m,model:a.model??h.defaultModel}).then(()=>void 0));try{var x,y;let a;d=await j.prepare(h,f.id,f.issueNumber),(0,q.yM)(f.id,"worktree",{path:d.path,branch:d.branch},e);let b=(0,at.Xm)((0,at.yx)(h.id,as._.main,e),{ISSUE_NUM:f.issueNumber,BRANCH:d.branch,REPO_NAME:h.name});if(h.autoDecompose){let a=bg(h.id,f.issueNumber,e);a.length>0&&(b+=(x=a.map(a=>({title:a.title,status:a.status})),0===x.length?"":["\n\n## Subtasks\n\nThis issue has been broken into the ordered subtasks below. Work through them\nin order, top to bottom, as part of this single change:\n",bf(x)].join("\n")),function(a,b,c=(0,g.Lf)()){for(let d of bg(a,b,c))"pending"===d.status&&bh(d.id,"in_progress",c)}(h.id,f.issueNumber,e))}b+=(y=h.agentInstructions,(a=y?.trim())?["\n\n## Repository-specific agent instructions\n\nThe operator of this repository has provided the following instructions. Follow them\nin addition to the task above, unless they conflict with explicit safety constraints:\n",a.slice(0,4e3)].join("\n"):"");let i=await t((0,q.ax)(f.id,e),b,d.path);if(i.timedOut)return(0,q.dk)(f.id,"needs_human",{errorMessage:`${l.label} timed out after ${o} minutes`},e);if(i.costExceeded)return(0,q.dk)(f.id,"needs_human",{errorMessage:`per-job cost limit of $${s} reached`},e);if(0!==i.exitCode)return(0,q.dk)(f.id,"needs_human",{errorMessage:`${l.label} exited non-zero`},e);if(h.adrGating){let a=(0,a8.Pe)("pending_review",e,h.id);if(a.length>0)return(0,q.dk)(f.id,"needs_human",{errorMessage:`Blocked by ${a.length} pending ADR review(s).`},e)}try{await j.commitAndPush(d,`Fix #${f.issueNumber}`)}catch(a){if(a instanceof ao)return(0,q.dk)(f.id,"needs_human",{errorMessage:"Agent produced no changes"},e);throw a}let k=(0,$.ts)(h.id,e).find(a=>a.number===f.issueNumber)?.title??`Fix #${f.issueNumber}`,m=await u({head:d.branch,base:h.defaultBranch,title:k,body:`Closes #${f.issueNumber}`});if((0,q.dk)(f.id,"ci_running",{branch:d.branch,prNumber:m},e),await c("pr_opened",`🔀 PR opened: ${h.id}#${f.issueNumber} (PR #${m}).`),h.verifyPr)try{await w((0,q.ax)(f.id,e),m)}catch(b){let a=b instanceof Error?b.message:String(b);(0,q.yM)(f.id,"error",{message:`verification pass failed: ${a}`},e)}let n=await v((0,q.ax)(f.id,e),m);return h.autoDecompose&&"merged"===n.status&&function(a,b,c=(0,g.Lf)()){for(let d of bg(a,b,c))!function(a,b){let c=a.status;if("done"!==c&&"skipped"!==c){if("in_progress"===c)return bh(a.id,"done",b);bh(a.id,"in_progress",b),bh(a.id,"done",b)}}(d,c)}(h.id,f.issueNumber,e),n}catch(c){let a=c instanceof Error?c.message:String(c);(0,q.yM)(f.id,"error",{message:a},e);let b=(0,q.ax)(f.id,e);if(["working","ci_running","retrying"].includes(b.status))return(0,q.dk)(f.id,"needs_human",{errorMessage:a.slice(0,500)},e);return b}finally{if(d)try{await j.remove(d,h.path)}catch(a){console.error(`[run-job] worktree cleanup failed for job ${f.id}`,a)}}}let bI=!1,bJ=new Set;function bK(a){let b=(0,aA.openSync)(a,"wx");try{(0,aA.writeSync)(b,JSON.stringify({pid:process.pid,ts:Date.now()}))}finally{(0,aA.closeSync)(b)}}let bL={active:!1};function bM(a,b,c,d,e={}){var f;let g,h=S(a.agent),i=(g=(f={provider:h,command:ah(h,d),model:a.defaultModel,cwd:a.path,runner:e.runner}).runner??ai.S,async a=>{let b=f.provider.buildOneShotArgs({prompt:["Break the following GitHub issue into an ordered list of independent subtasks\nthat can each be implemented and reviewed on their own.\n",`Title: ${a.title}`,"",a.body.trim(),"\nRespond with ONLY a JSON array of short subtask title strings, in the order\nthey should be done. If the issue is a single coherent task that should not\nbe split, respond with an empty array []."].join("\n"),model:f.model}),c=await g(f.command,b,f.cwd);if(0!==c.exitCode)return[];let d=c.stdout.match(/\[[\s\S]*\]/);if(!d)return[];try{let a=JSON.parse(d[0]);if(!Array.isArray(a))return[];return a.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean)}catch{return[]}});return bB(a,b,c,d,{generate:i})}let bN=["needs_human","aborted"];async function bO(a,b,c,d,e,g){var h,i;let k=e.some(a=>b.readyLabels.includes(a)),l=e.some(a=>b.blockingLabels.includes(a));return!!k&&!l&&!!ac(b,d.authorAssociation)&&(h=a.id,i=d.number,!(g.select().from(j.jobs).where((0,f.Uo)((0,f.eq)(j.jobs.repoId,h),(0,f.eq)(j.jobs.issueNumber,i),(0,f.RV)(j.jobs.status,[...bN]))).all().length>=b.maxAttempts)||(e.includes(a.needsHumanLabel)||(await c.ensureLabel(a.needsHumanLabel,{color:"d73a4a",description:"Drydock gave up after repeated failures; needs a human"}),await c.addLabels(d.number,[a.needsHumanLabel])),!1))}let bP=["queued","working","ci_running","ci_failed","retrying"],bQ=["working","ci_running","ci_failed","retrying"];async function bR(a={}){let b=a.db??(0,g.Lf)(),c=a.runJob??bG,d=(0,T.uP)(b),e=a.triage??ag,k=a.decompose??bM;for(let c of d)try{await (0,V.v)("low",async()=>{let d=a.forgeFor?.(c)??(0,U.Ie)(c),h=a.fetchIssues??(async(a,b)=>(await d.refreshRateLimit?.(),d.listAllIssues())),i=await h(c.path,c.queueLabel);(0,$.VK)(c.id,i,b);let l=ab(c);if(l.autoTriageEnabled&&await e(c,d,i,b),l.autoDecompose){let a=i.filter(a=>{let b=a.labels.map(a=>a.name);return b.includes(c.queueLabel)||b.some(a=>l.readyLabels.includes(a))});a.length>0&&await k(c,d,a,b)}for(let a of i){let e=a.labels.map(a=>a.name),h=e.includes(c.queueLabel),i=!!l.autoProcessEnabled&&await bO(c,l,d,a,e,b);if(!h&&!i)continue;let k=Z({number:a.number,title:a.title,labels:e});if("approved"===k.decision&&!function(a,b,c){return(0,q.i1)([...bP],a).some(a=>a.repoId===b&&a.issueNumber===c)}(b,c.id,a.number)){var m,n;i&&a.author&&l.priorityAuthors.includes(a.author)&&(m=c.id,n=a.number,b.update(j.issues).set({priority:-1}).where((0,f.Uo)((0,f.eq)(j.issues.repoId,m),(0,f.eq)(j.issues.number,n))).run()),function(a,b=(0,g.Lf)()){let c=a.dedupeKey??`${a.repoId}:${a.issueNumber}`;if(!b.select({id:j.jobs.id}).from(j.jobs).where((0,f.Uo)((0,f.eq)(j.jobs.dedupeKey,c),(0,f.KL)(j.jobs.status,[...t.kl]))).get())try{(0,q._S)({...a,dedupeKey:c},b)}catch(a){if(a instanceof Error&&"string"==typeof a.code&&"SQLITE_CONSTRAINT_UNIQUE"===a.code)return;throw a}}({repoId:c.id,issueNumber:a.number,model:c.defaultModel,agent:c.agent},b)}}})}catch(a){a instanceof W.OE?console.debug(`[driver] ${c.name} sweep yielded: ${a.message}`):console.error(`[driver] issue sync failed for ${c.name}`,a)}o("cost_limit"===(0,i.Jf)(b).reason,bL,b);let l=(0,i.mt)(b).maxParallelJobs,m=v();for(;!bI&&(0,i.Jf)(b).allowed&&bJ.size<l;){let a=d.filter(a=>(0,i.DA)(a.id,b).allowed).filter(a=>!(a.sequential&&function(a,b){return(0,q.i1)([...bQ],a).some(a=>a.repoId===b)}(b,a.id))).map(a=>a.id);if(0===a.length)break;let e=function(a={},b=(0,g.Lf)()){let{repoIds:c}=a;if(c&&0===c.length)return;let d=a.leaseMs??3e4,e=a.worker??v(),i=a.now??u();return b.transaction(a=>{let b=a.select({job:j.jobs}).from(j.jobs).leftJoin(j.issues,(0,f.Uo)((0,f.eq)(j.issues.repoId,j.jobs.repoId),(0,f.eq)(j.issues.number,j.jobs.issueNumber))).where((0,f.Uo)((0,f.eq)(j.jobs.status,"queued"),(0,f.or)((0,f.kZ)(j.jobs.availableAt),(0,f.wJ)(j.jobs.availableAt,i)),c?(0,f.RV)(j.jobs.repoId,c):void 0)).orderBy((0,h.ll)`COALESCE(${j.issues.priority}, 1e9)`,j.jobs.createdAt).get()?.job;if(b)return(0,q.dk)(b.id,"working",{leaseToken:(0,r.randomUUID)(),leaseExpiresAt:i+Math.ceil(d/1e3),workerId:e,attempts:b.attempts+1,availableAt:null},a)})}({repoIds:a,worker:m,leaseMs:3e4},b);if(!e)break;let k=e.id,l=e.leaseToken;bJ.add(k);let n=setInterval(()=>{try{!function(a,b,c={},d=(0,g.Lf)()){let e=c.leaseMs??3e4,h=c.now??u();d.update(j.jobs).set({leaseExpiresAt:h+Math.ceil(e/1e3)}).where((0,f.Uo)((0,f.eq)(j.jobs.id,a),(0,f.eq)(j.jobs.leaseToken,b),(0,f.eq)(j.jobs.status,"working"))).run().changes}(k,l,{},b)}catch(a){console.error(`[driver] heartbeat failed for job ${k}`,a)}},1e4);n.unref?.(),c(k).catch(a=>console.error(`[driver] job ${k} failed`,a)).finally(()=>{clearInterval(n),function(a,b,c=(0,g.Lf)()){c.update(j.jobs).set({leaseToken:null,leaseExpiresAt:null,workerId:null}).where((0,f.Uo)((0,f.eq)(j.jobs.id,a),(0,f.eq)(j.jobs.leaseToken,b))).run().changes}(k,l,b),bJ.delete(k)})}let n=a.reviewFeedback??(a=>a6({db:a}));try{await (0,V.v)("low",()=>n(b))}catch(a){console.error("[driver] review-feedback sweep failed",a)}let p=a.deploymentHealing??(a=>aJ({db:a}));try{await (0,V.v)("low",()=>p(b))}catch(a){console.error("[driver] deployment-healing sweep failed",a)}let s=a.releaseManagement??(a=>aU({db:a}));try{await (0,V.v)("low",()=>s(b))}catch(a){console.error("[driver] release-management sweep failed",a)}}let bS=!1,bT=!1,bU=/^job-(\d+)$/;async function bV(a={}){let b=a.db??(0,g.Lf)(),c=a.run??ai.S,d=function(a){let b=a.select({id:j.jobs.id,status:j.jobs.status}).from(j.jobs).all(),c=new Set;for(let a of b)t.kl.includes(a.status)||c.add(a.id);return c}(b),e=0;for(let a of(0,T.uP)(b)){let b;await c("git",["-C",a.path,"worktree","prune"]).catch(()=>void 0);let f=am(a.name);try{b=(0,aA.readdirSync)(f,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name)}catch{continue}for(let g of b){let b=bU.exec(g);if(!b||d.has(Number(b[1])))continue;let h=(0,aj.join)(f,g);await c("git",["-C",a.path,"worktree","remove","--force",h]).catch(()=>void 0);try{(0,aA.rmSync)(h,{recursive:!0,force:!0}),e++}catch(a){console.error(`[worktree-reaper] failed to remove ${h}`,a)}}}return e}let bW=!1,bX=new Map;function bY(a,b){bX.set(a,b)}function bZ(a){bX.delete(a)}async function b$(){for(let a of(bI=!0,bS=!1,e&&clearTimeout(e),e=void 0,await p().catch(a=>console.error("[orchestrator] drain notify failed",a)),bX.values()))a(5e3);bX.clear(),await function(a=3e4,b=100){let c=Date.now()+a;return new Promise(a=>{let d=()=>{if(0===bJ.size||Date.now()>=c)return a();setTimeout(d,b)};d()})}(5e3);try{let a=(0,g.Lf)();for(let b of a.select().from(j.jobs).where((0,f.RV)(j.jobs.status,["working","ci_running","ci_failed","retrying"])).all())try{(0,q.dk)(b.id,"interrupted",{},a)}catch(a){console.error(`[orchestrator] shutdown transition failed for job ${b.id}`,a)}}catch(a){console.error("[orchestrator] shutdown DB update failed",a)}}function b_(){if(bW)return;if(bW=!0,!process.env.VITEST){try{let{requeued:a,interrupted:b}=function(a=(0,g.Lf)()){return{requeued:function(a={},b=(0,g.Lf)()){let c=a.now??u(),d=a.expiredBefore,e=void 0===d?void 0:(0,f.or)((0,f.kZ)(j.jobs.leaseExpiresAt),(0,f.wJ)(j.jobs.leaseExpiresAt,d)),h=b.select().from(j.jobs).where((0,f.Uo)((0,f.eq)(j.jobs.status,"working"),e)).all();for(let a of h)b.update(j.jobs).set({status:"queued",leaseToken:null,leaseExpiresAt:null,workerId:null,availableAt:c+function(a,b=5,c=300){return a<=0?0:Math.min(b*2**(a-1),c)}(a.attempts)}).where((0,f.eq)(j.jobs.id,a.id)).run(),(0,q.yM)(a.id,"status",{from:"working",to:"queued",reason:"lease_expired"},b);return h.length}({},a),interrupted:function(a=(0,g.Lf)()){let b=a.select().from(j.jobs).where((0,f.RV)(j.jobs.status,w)).all();for(let c of b)a.update(j.jobs).set({status:"interrupted"}).where((0,f.eq)(j.jobs.id,c.id)).run(),(0,q.yM)(c.id,"status",{from:c.status,to:"interrupted",reason:"recovery"},a);return b.length}(a)}}();a>0&&console.log(`[orchestrator] requeued ${a} orphaned job(s)`),b>0&&console.log(`[orchestrator] recovered ${b} interrupted job(s)`)}catch(a){console.error("[orchestrator] recovery failed",a)}if(function(){let a=(0,aj.join)(ak(),"instance.lock");(0,aA.mkdirSync)((0,aj.dirname)(a),{recursive:!0});try{return bK(a),!0}catch{}let b=!1;try{let{pid:c}=JSON.parse((0,aA.readFileSync)(a,"utf8"));!function(a){try{return process.kill(a,0),!0}catch{return!1}}(c)&&(b=!0)}catch{b=!0}if(!b)return!1;try{return(0,aA.unlinkSync)(a),bK(a),!0}catch{return!1}}()){let a,b;bV().then(a=>{a>0&&console.log(`[orchestrator] reaped ${a} orphaned worktree(s)`)}).catch(a=>console.error("[orchestrator] worktree reap failed",a)),function(a={}){if(bS)return;bS=!0;let b=a.tick??(()=>bR()),c=a.intervalMs??1e3*(0,i.mt)().pollIntervalSec,d=async()=>{if(bS){if(!bT){bT=!0;try{await b()}catch(a){console.error("[driver] tick failed",a)}finally{bT=!1}}bS&&(e=setTimeout(d,c))}};d()}(),(a=()=>{try{let{jobEventsDeleted:a}=function(a=(0,g.Lf)(),b={}){let c=b.days??(0,i.mt)(a).retentionDays,d=b.vacuum??!0,e=Math.floor((b.now?.getTime()??Date.now())/1e3)-86400*c,k=a.select({id:j.jobs.id}).from(j.jobs).where((0,f.Uo)((0,f.Pe)(j.jobs.finishedAt),(0,f.lt)(j.jobs.finishedAt,e))).all().map(a=>a.id),l=0;return k.length>0&&(l=a.delete(j.jobEvents).where((0,f.RV)(j.jobEvents.jobId,k)).run().changes),d&&a.run((0,h.ll)`VACUUM`),{jobEventsDeleted:l,vacuumed:d,cutoff:e}}((0,g.Lf)());a>0&&console.log(`[orchestrator] pruned ${a} job event(s)`)}catch(a){console.error("[orchestrator] prune sweep failed",a)}})(),b=setInterval(a,864e5),b.unref?.()}else console.warn("[orchestrator] another instance holds the lock; driver loop not started")}let a=async a=>{console.log(`[orchestrator] ${a} received, shutting down gracefully`),await b$(),process.exit(0)};process.once("SIGINT",a),process.once("SIGTERM",a)}}};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=39,exports.ids=[39],exports.modules={12717:(a,b,c)=>{c.d(b,{OE:()=>g,bR:()=>h,og:()=>f});let d=["core","graphql","search"];class e{constructor(a={}){this.resources=new Map,this.now=a.now??Date.now}observe(a,b){this.state(a).snapshot=b}note429(a,b){let c=void 0!==b?1e3*b:this.now()+6e4;this.state(a).limitedUntilMs=c}decide(a,b){let c=this.resources.get(a);if(!c)return{allowed:!0};let d=this.now();if(void 0!==c.limitedUntilMs&&d<c.limitedUntilMs)return{allowed:!1,reason:"limited",retryAfterMs:c.limitedUntilMs-d};let e=c.snapshot;if(!e||e.limit<=0)return{allowed:!0};let f=1e3*e.reset;if(d>=f)return{allowed:!0};let g=e.remaining/e.limit,h=f-d;return g<.05?{allowed:!1,reason:"floor",retryAfterMs:h}:"low"===b&&g<.3?{allowed:!1,reason:"reserve",retryAfterMs:h}:{allowed:!0}}snapshot(a){return this.resources.get(a)?.snapshot}state(a){let b=this.resources.get(a);return b||(b={},this.resources.set(a,b)),b}}let f=new e;class g extends Error{constructor(a,b,c){super(`github ${b} rate limit gated (${a}); retry in ~${Math.ceil(c/1e3)}s`),this.reason=a,this.resource=b,this.retryAfterMs=c,this.name="RateLimitError"}}function h(a){let b=Number(a["x-ratelimit-limit"]),c=Number(a["x-ratelimit-remaining"]),e=Number(a["x-ratelimit-reset"]);if(!Number.isFinite(b)||!Number.isFinite(c)||!Number.isFinite(e))return null;let f=a["x-ratelimit-resource"];return void 0===f?{resource:"core",snapshot:{remaining:c,limit:b,reset:e}}:d.includes(f)?{resource:f,snapshot:{remaining:c,limit:b,reset:e}}:null}},13459:(a,b,c)=>{c.d(b,{ts:()=>m,VK:()=>n,GX:()=>o});var d=c(37003),e=c(97337),f=c(68246),g=c(34775),h=c(90109),i=c(2937),j=c(68464),k=c(93929),l=c(50095);function m(a,b=(0,i.Lf)()){return b.select().from(k.issues).where((0,d.eq)(k.issues.repoId,a)).orderBy((0,e.Y)(k.issues.priority),(0,e.Y)(k.issues.number)).all()}function n(a,b,c=(0,i.Lf)()){var e;let j=c.select().from(k.issues).where((0,d.eq)(k.issues.repoId,a)).all(),l=new Map(j.map(a=>[a.number,a])),m=Math.floor(Date.now()/1e3),o=c.select({value:(e=k.issues.priority,(0,h.ll)`max(${e})`.mapWith((0,g.is)(e,f.V)?e:String))}).from(k.issues).where((0,d.eq)(k.issues.repoId,a)).get(),p=(o?.value??-1)+1,q=new Set;for(let e of b){q.add(e.number);let b=JSON.stringify(e.labels.map(a=>a.name)),f=l.get(e.number);f?c.update(k.issues).set({title:e.title,labels:b,state:"open",syncedAt:m}).where((0,d.eq)(k.issues.id,f.id)).run():c.insert(k.issues).values({repoId:a,number:e.number,title:e.title,labels:b,state:"open",priority:p++,syncedAt:m}).run()}let r=j.filter(a=>!q.has(a.number)).map(a=>a.id);r.length>0&&c.delete(k.issues).where((0,d.RV)(k.issues.id,r)).run()}async function o(a,b=(0,i.Lf)()){let c=function(a,b){let c=(0,j.L8)(a,b);if(!c)throw Error(`repo ${a} not found`);return c}(a,b);return n(a,await (0,l.Ie)(c).listAllIssues(),b),m(a,b)}},23601:(a,b,c)=>{c.d(b,{u:()=>f,v:()=>e});let d=new(c(16698)).AsyncLocalStorage;function e(a,b){return d.run(a,b)}function f(){return d.getStore()??"high"}},24525:(a,b,c)=>{c.d(b,{U9:()=>e,ej:()=>f});let d=new Set;function e(a){return d.add(a),()=>{d.delete(a)}}function f(){for(let a of[...d])try{a()}catch{}}},39889:(a,b,c)=>{c.d(b,{D:()=>d});let d=async(a,b)=>{let c=await fetch(a,{method:b?.method??"GET",headers:b?.headers,body:b?.body}),d=await c.text();return{status:c.status,ok:c.ok,body:d}}},50095:(a,b,c)=>{c.d(b,{Ie:()=>D});var d=c(35895),e=c(71117);class f{get(a){return this.entries.get(a)}set(a,b,c){this.entries.set(a,{etag:b,body:c})}constructor(){this.entries=new Map}}let g=new f;var h=c(23601),i=c(12717);let j=d.Ik({number:d.ai(),title:d.Yj(),labels:d.YO(d.Ik({name:d.Yj()})).default([]),user:d.Ik({login:d.Yj()}).nullish(),author_association:d.Yj().nullish(),pull_request:d.L5().optional()}).transform(a=>({number:a.number,title:a.title,labels:a.labels,author:a.user?.login??null,authorAssociation:a.author_association??null,isPullRequest:void 0!==a.pull_request})),k=d.Ik({resources:d.g1(d.Yj(),d.Ik({limit:d.ai(),remaining:d.ai(),reset:d.ai()}))}),l=d.Ik({number:d.ai(),title:d.Yj(),body:d.Yj().default(""),state:d.Yj().default("open"),labels:d.YO(d.Ik({name:d.Yj()})).default([]),comments:d.YO(d.Ik({author:d.Ik({login:d.Yj()}).default({login:""}),body:d.Yj().default(""),createdAt:d.Yj().default("")})).default([])}),m=d.Ik({name:d.Yj(),state:d.Yj(),bucket:d.Yj().optional()}),n=d.Ik({data:d.Ik({repository:d.Ik({pullRequest:d.Ik({reviewThreads:d.Ik({nodes:d.YO(d.Ik({id:d.Yj(),isResolved:d.zM().default(!1),isOutdated:d.zM().default(!1),path:d.Yj().nullish(),line:d.ai().nullish(),comments:d.Ik({nodes:d.YO(d.Ik({id:d.Yj(),databaseId:d.ai().nullish(),body:d.Yj().default(""),author:d.Ik({login:d.Yj()}).nullish()}))})}))})}).nullish()})})});class o extends Error{}function p(a,b){return`${a}=${b}`}class q{constructor(a,b=e.S,c=i.og,d=g){this.cwd=a,this.run=b,this.governor=c,this.etags=d}gate(a="core"){let b=this.governor.decide(a,(0,h.u)());if(!b.allowed)throw new i.OE(b.reason,a,b.retryAfterMs)}async exec(a,b="core"){this.gate(b);let c=await this.run("gh",a,this.cwd);return 0!==c.exitCode&&/rate limit|429 too many/i.test(c.stderr)&&this.governor.note429(b),c}async refreshRateLimit(){let a,b=await this.run("gh",["api","rate_limit"],this.cwd);if(0===b.exitCode){try{a=k.parse(JSON.parse(b.stdout||"{}"))}catch{return}for(let b of["core","graphql","search"]){let c=a.resources[b];c&&this.governor.observe(b,c)}}}async conditionalList(a,b){let c;this.gate("core");let e=this.etags.get(a),f=["api",`repos/{owner}/{repo}/issues?${b}`,"--include"];e&&f.push("-H",`If-None-Match: ${e.etag}`);let g=await this.run("gh",f,this.cwd),h=function(a){let b=a.replace(/\r\n/g,"\n"),c=b.lastIndexOf("\nHTTP/"),d=c>=0?c+1:b.startsWith("HTTP/")?0:-1;if(d<0)return{status:null,headers:{},body:a};let e=b.slice(d),f=e.indexOf("\n\n"),g=f>=0?e.slice(0,f):e,h=f>=0?e.slice(f+2):"",i=g.split("\n"),j=(i.shift()??"").match(/^HTTP\/\S+\s+(\d+)/),k=j?Number(j[1]):null,l={};for(let a of i){let b=a.indexOf(":");b<=0||(l[a.slice(0,b).trim().toLowerCase()]=a.slice(b+1).trim())}return{status:k,headers:l,body:h}}(g.stdout),k=(0,i.bR)(h.headers);if(k&&this.governor.observe(k.resource,k.snapshot),304===h.status&&e)c=e.body;else{var l,m;if(l=h.status,m=h.headers,429===l||403===l&&"0"===m["x-ratelimit-remaining"]){let a=Number(h.headers["x-ratelimit-reset"]);throw this.governor.note429("core",Number.isFinite(a)?a:void 0),new o(`gh api rate limited (status ${h.status})`)}if(200===h.status){let b=h.headers.etag;b&&this.etags.set(a,b,h.body),c=h.body}else throw new o(g.stderr||`gh api failed (status ${h.status??"unknown"})`)}let n=d.YO(j).safeParse(JSON.parse(c||"[]"));if(!n.success)throw new o(`unexpected gh output: ${n.error.message}`);return n.data.filter(a=>!a.isPullRequest).map(({isPullRequest:a,...b})=>b)}async listIssues(a){let b=`state=open&per_page=100&labels=${encodeURIComponent(a)}`;return this.conditionalList(`${this.cwd}::label:${a}`,b)}async listAllIssues(){return this.conditionalList(`${this.cwd}::all`,"state=open&per_page=100")}async viewIssue(a){let b=await this.exec(["issue","view",String(a),"--json","number,title,body,state,labels,comments"]);if(0!==b.exitCode)throw new o(b.stderr||"gh issue view failed");let c=l.safeParse(JSON.parse(b.stdout||"{}"));if(!c.success)throw new o(`unexpected gh output: ${c.error.message}`);let d=c.data;return{number:d.number,title:d.title,body:d.body,state:d.state,labels:d.labels.map(a=>a.name),comments:d.comments.map(a=>({author:a.author.login,body:a.body,createdAt:a.createdAt}))}}async editIssue(a,b){let c=["issue","edit",String(a)];if(void 0!==b.title&&c.push(p("--title",b.title)),void 0!==b.body&&c.push(p("--body",b.body)),3===c.length)return;let d=await this.exec(c);if(0!==d.exitCode)throw new o(d.stderr||"gh issue edit failed")}async ensureLabel(a,b={}){let c=await this.exec(["label","list","--json","name","--limit","200"]),e=c.stdout.trim();if(0===c.exitCode&&e)try{let b=d.YO(d.Ik({name:d.Yj()})).safeParse(JSON.parse(e));if(b.success&&b.data.some(b=>b.name===a))return}catch{}let f=["label","create",a];b.color&&f.push("--color",b.color),b.description&&f.push("--description",b.description);let g=await this.exec(f);if(0!==g.exitCode&&!/already exists/i.test(g.stderr))throw new o(g.stderr||"gh label create failed")}async addLabels(a,b){let c=await this.exec(["issue","edit",String(a),p("--add-label",b.join(","))]);if(0!==c.exitCode)throw new o(c.stderr||"gh issue edit failed")}async removeLabels(a,b){let c=await this.exec(["issue","edit",String(a),p("--remove-label",b.join(","))]);if(0!==c.exitCode)throw new o(c.stderr||"gh issue edit failed")}async closeIssue(a){let b=await this.exec(["issue","close",String(a)]);if(0!==b.exitCode)throw new o(b.stderr||"gh issue close failed")}async reopenIssue(a){let b=await this.exec(["issue","reopen",String(a)]);if(0!==b.exitCode)throw new o(b.stderr||"gh issue reopen failed")}async prChecks(a){let b=await this.exec(["pr","checks",String(a),"--json","name,state,bucket"]),c=b.stdout.trim();if(!c){if(0!==b.exitCode)throw new o(b.stderr||"gh pr checks failed");return[]}let e=d.YO(m).safeParse(JSON.parse(c));if(!e.success)throw new o(`unexpected gh output: ${e.error.message}`);return e.data}async prHeadSha(a){let b=await this.exec(["pr","view",String(a),"--json","headRefOid"]);if(0!==b.exitCode)throw new o(b.stderr||"gh pr view failed");let c=d.Ik({headRefOid:d.Yj()}).safeParse(JSON.parse(b.stdout||"{}"));if(!c.success)throw new o(`unexpected gh output: ${c.error.message}`);return c.data.headRefOid}async commentIssue(a,b){let c=await this.exec(["issue","comment",String(a),p("--body",b)]);if(0!==c.exitCode)throw new o(c.stderr||"gh issue comment failed")}async createIssue(a,b){let c=await this.exec(["issue","create",p("--title",a),p("--body",b)]);if(0!==c.exitCode)throw new o(c.stderr||"gh issue create failed");let d=c.stdout.match(/\/issues\/(\d+)/);if(!d?.[1])throw new o(`could not parse issue number from: ${c.stdout}`);return Number(d[1])}async failedRunLog(a){let b,c;if(!this.governor.decide("core",(0,h.u)()).allowed)return"";let e=await this.run("gh",["pr","view",String(a),"--json","headRefName"],this.cwd);if(0!==e.exitCode)return"";try{b=d.Ik({headRefName:d.Yj()}).parse(JSON.parse(e.stdout||"{}")).headRefName}catch{return""}if(!b)return"";let f=await this.run("gh",["run","list","--branch",b,"--json","databaseId,conclusion","--limit","20"],this.cwd);if(0!==f.exitCode)return"";try{c=d.YO(d.Ik({databaseId:d.ai(),conclusion:d.Yj().default("")})).parse(JSON.parse(f.stdout||"[]"))}catch{return""}let g=c.find(a=>"failure"===a.conclusion);if(!g)return"";let i=await this.run("gh",["run","view",String(g.databaseId),"--log-failed"],this.cwd);return 0!==i.exitCode?"":i.stdout.slice(-8e3)}async prDiff(a){if(!this.governor.decide("core",(0,h.u)()).allowed)return"";let b=await this.run("gh",["pr","diff",String(a)],this.cwd);return 0!==b.exitCode?"":b.stdout}async mergePr(a){let b=await this.exec(["pr","merge",String(a),"--squash","--auto"]);if(0!==b.exitCode)throw new o(b.stderr||"gh pr merge failed")}async createPr(a){let b=await this.exec(["pr","create",p("--head",a.head),p("--base",a.base),p("--title",a.title),p("--body",a.body)]);if(0!==b.exitCode)throw new o(b.stderr||"gh pr create failed");let c=b.stdout.match(/\/pull\/(\d+)/);if(!c?.[1])throw new o(`could not parse PR number from: ${b.stdout}`);return Number(c[1])}async listReleases(){let a=await this.exec(["release","list","--json","tagName,createdAt","--limit","100"]);if(0!==a.exitCode)throw new o(a.stderr||"gh release list failed");let b=d.YO(d.Ik({tagName:d.Yj(),createdAt:d.Yj().default("")})).safeParse(JSON.parse(a.stdout||"[]"));if(!b.success)throw new o(`unexpected gh output: ${b.error.message}`);return b.data}async listMergedPrs(a=100){let b=await this.exec(["pr","list","--state","merged","--json","number,title,mergedAt,labels","--limit",String(a)]);if(0!==b.exitCode)throw new o(b.stderr||"gh pr list failed");let c=d.YO(d.Ik({number:d.ai(),title:d.Yj().default(""),mergedAt:d.Yj().default(""),labels:d.YO(d.Ik({name:d.Yj()})).default([])})).safeParse(JSON.parse(b.stdout||"[]"));if(!c.success)throw new o(`unexpected gh output: ${c.error.message}`);return c.data.map(a=>({number:a.number,title:a.title,mergedAt:a.mergedAt,labels:a.labels.map(a=>a.name)}))}async createRelease(a){let b=await this.exec(["release","create",a.tag,p("--title",a.title),p("--notes",a.notes),p("--target",a.target)]);if(0!==b.exitCode)throw new o(b.stderr||"gh release create failed")}async repoSlug(){if(this.slug)return this.slug;let a=await this.exec(["repo","view","--json","nameWithOwner"]);if(0!==a.exitCode)throw new o(a.stderr||"gh repo view failed");let b=d.Ik({nameWithOwner:d.Yj()}).safeParse(JSON.parse(a.stdout||"{}"));if(!b.success)throw new o(`unexpected gh output: ${b.error.message}`);let[c,e]=b.data.nameWithOwner.split("/");if(!c||!e)throw new o(`unexpected repo slug: ${b.data.nameWithOwner}`);return this.slug={owner:c,name:e},this.slug}async listReviewThreads(a){let{owner:b,name:c}=await this.repoSlug(),d=await this.exec(["api","graphql","-F",`owner=${b}`,"-F",`name=${c}`,"-F",`number=${a}`,"-f","query=query($owner:String!,$name:String!,$number:Int!){repository(owner:$owner,name:$name){pullRequest(number:$number){reviewThreads(first:100){nodes{id isResolved isOutdated path line comments(first:100){nodes{id databaseId body author{login}}}}}}}}"],"graphql");if(0!==d.exitCode)throw new o(d.stderr||"gh api graphql failed");let e=n.safeParse(JSON.parse(d.stdout||"{}"));if(!e.success)throw new o(`unexpected gh output: ${e.error.message}`);return(e.data.data.repository.pullRequest?.reviewThreads.nodes??[]).map(a=>({id:a.id,isResolved:a.isResolved,isOutdated:a.isOutdated,path:a.path??null,line:a.line??null,comments:a.comments.nodes.map(a=>({id:a.id,databaseId:a.databaseId??null,author:a.author?.login??"",body:a.body}))}))}async replyToReviewThread(a,b){let c=await this.exec(["api","graphql","-F",`threadId=${a}`,"-f",`body=${b}`,"-f","query=mutation($threadId:ID!,$body:String!){addPullRequestReviewThreadReply(input:{pullRequestReviewThreadId:$threadId,body:$body}){comment{id}}}"],"graphql");if(0!==c.exitCode)throw new o(c.stderr||"gh review reply failed")}async updateReviewComment(a,b){let c=await this.exec(["api","graphql","-F",`id=${a}`,"-f",`body=${b}`,"-f","query=mutation($id:ID!,$body:String!){updatePullRequestReviewComment(input:{pullRequestReviewCommentId:$id,body:$body}){pullRequestReviewComment{id}}}"],"graphql");if(0!==c.exitCode)throw new o(c.stderr||"gh update review comment failed")}async resolveReviewThread(a){let b=await this.exec(["api","graphql","-F",`threadId=${a}`,"-f","query=mutation($threadId:ID!){resolveReviewThread(input:{threadId:$threadId}){thread{id isResolved}}}"],"graphql");if(0!==b.exitCode)throw new o(b.stderr||"gh resolve thread failed")}async reactToReviewComment(a,b){let c=await this.exec(["api","graphql","-F",`subjectId=${a}`,"-F",`content=${b}`,"-f","query=mutation($subjectId:ID!,$content:ReactionContent!){addReaction(input:{subjectId:$subjectId,content:$content}){reaction{content}}}"],"graphql");if(0!==c.exitCode&&!/already has this reaction/i.test(c.stderr))throw new o(c.stderr||"gh add reaction failed")}}var r=c(39889);class s extends Error{}let t=d.Ik({iid:d.ai(),title:d.Yj(),labels:d.YO(d.Yj()).default([]),author:d.Ik({username:d.Yj()}).nullish()}),u=d.Ik({iid:d.ai(),title:d.Yj(),description:d.Yj().nullable().default(""),state:d.Yj().default("opened"),labels:d.YO(d.Yj()).default([])}),v=d.Ik({author:d.Ik({username:d.Yj().default("")}).default({username:""}),body:d.Yj().default(""),created_at:d.Yj().default(""),system:d.zM().default(!1)}),w=d.Ik({id:d.ai().optional(),name:d.Yj().default(""),status:d.Yj().default("")}),x=d.Ik({id:d.ai()}),y=d.Ik({old_path:d.Yj().default(""),new_path:d.Yj().default(""),diff:d.Yj().default("")});class z{constructor(a,b={}){this.config=a,this.http=b.http??r.D,this.run=b.run??e.S}resolveProject(){return this.projectRef||(this.projectRef=(async()=>{let a=await this.run("git",["remote","get-url","origin"],this.config.cwd);if(0!==a.exitCode||!a.stdout.trim())throw new s(a.stderr||"could not resolve git remote 'origin'");let{host:b,path:c}=function(a){let b=a.trim().replace(/\.git$/,""),c=b.match(/^[\w.-]+@([^:]+):(.+)$/)??b.match(/^ssh:\/\/[^@]+@([^/]+)\/(.+)$/)??b.match(/^https?:\/\/([^/]+)\/(.+)$/);if(!c?.[1]||!c[2])throw new s(`unsupported git remote URL: ${a}`);return{host:c[1],path:c[2]}}(a.stdout);return{baseUrl:(this.config.baseUrl?.trim()||`https://${b}`).replace(/\/$/,""),encodedPath:encodeURIComponent(c)}})()),this.projectRef}async request(a,b,c={}){let d,{baseUrl:e,encodedPath:f}=await this.resolveProject(),g=`${e}/api/v4/projects/${f}${b}`;if(c.query){let a=new URLSearchParams(c.query).toString();a&&(g+=`?${a}`)}let h={};return this.config.token&&(h["PRIVATE-TOKEN"]=this.config.token),void 0!==c.body&&(h["Content-Type"]="application/json",d=JSON.stringify(c.body)),this.http(g,{method:a,headers:h,body:d})}async mutate(a,b,c={}){let d=await this.request(a,b,c);if(!d.ok)throw new s(C(d)||`GitLab ${a} ${b} failed`);return d}async listIssues(a){return A((await this.mutate("GET","/issues",{query:{state:"opened",labels:a,per_page:"100"}})).body)}async listAllIssues(){return A((await this.mutate("GET","/issues",{query:{state:"opened",per_page:"100"}})).body)}async viewIssue(a){let b=await this.mutate("GET",`/issues/${a}`),c=await this.mutate("GET",`/issues/${a}/notes`,{query:{per_page:"100"}}),e=u.parse(B(b.body,{})),f=d.YO(v).parse(B(c.body,[]));return{number:e.iid,title:e.title,body:e.description??"",state:"opened"===e.state?"open":e.state,labels:e.labels,comments:f.filter(a=>!a.system).map(a=>({author:a.author.username,body:a.body,createdAt:a.created_at}))}}async editIssue(a,b){let c={};void 0!==b.title&&(c.title=b.title),void 0!==b.body&&(c.description=b.body),0!==Object.keys(c).length&&await this.mutate("PUT",`/issues/${a}`,{body:c})}async ensureLabel(a,b={}){var c;let e=await this.request("GET","/labels",{query:{per_page:"100"}});if(e.ok){let b=d.YO(d.Ik({name:d.Yj()})).safeParse(B(e.body,[]));if(b.success&&b.data.some(b=>b.name===a))return}let f={name:a,color:(c=b.color??"#808080").startsWith("#")?c:`#${c}`};b.description&&(f.description=b.description);let g=await this.request("POST","/labels",{body:f});if(!g.ok&&409!==g.status&&!/already exists/i.test(g.body))throw new s(C(g)||"GitLab label create failed")}async addLabels(a,b){await this.mutate("PUT",`/issues/${a}`,{body:{add_labels:b.join(",")}})}async removeLabels(a,b){await this.mutate("PUT",`/issues/${a}`,{body:{remove_labels:b.join(",")}})}async closeIssue(a){await this.mutate("PUT",`/issues/${a}`,{body:{state_event:"close"}})}async reopenIssue(a){await this.mutate("PUT",`/issues/${a}`,{body:{state_event:"reopen"}})}async commentIssue(a,b){await this.mutate("POST",`/issues/${a}/notes`,{body:{body:b}})}async createIssue(a,b){let c=await this.mutate("POST","/issues",{body:{title:a,description:b}});return d.Ik({iid:d.ai()}).parse(B(c.body,{})).iid}async prChecks(a){let b=await this.latestPipelineId(a);if(null===b)return[];let c=await this.mutate("GET",`/pipelines/${b}/jobs`,{query:{per_page:"100"}});return d.YO(w).parse(B(c.body,[])).map(a=>({name:a.name,state:function(a){switch(a){case"success":return"SUCCESS";case"failed":return"FAILURE";case"canceled":case"cancelled":return"CANCELLED";case"running":return"IN_PROGRESS";case"pending":case"created":case"scheduled":case"preparing":case"waiting_for_resource":return"PENDING";case"manual":return"MANUAL";case"skipped":return"SKIPPED";default:return a.toUpperCase()}}(a.status)}))}async prHeadSha(a){let b=await this.mutate("GET",`/merge_requests/${a}`);return d.Ik({sha:d.Yj()}).parse(B(b.body,{})).sha}async failedRunLog(a){try{let b=await this.latestPipelineId(a);if(null===b)return"";let c=await this.request("GET",`/pipelines/${b}/jobs`,{query:{per_page:"100"}});if(!c.ok)return"";let e=d.YO(w).safeParse(B(c.body,[]));if(!e.success)return"";let f=e.data.find(a=>"failed"===a.status&&void 0!==a.id);if(!f)return"";let g=await this.request("GET",`/jobs/${f.id}/trace`);if(!g.ok)return"";return g.body.slice(-8e3)}catch{return""}}async prDiff(a){try{let b=await this.request("GET",`/merge_requests/${a}/diffs`,{query:{per_page:"100"}});if(!b.ok)return"";let c=d.YO(y).safeParse(B(b.body,[]));if(!c.success)return"";return c.data.map(a=>`--- a/${a.old_path}
|
|
2
|
-
+++ b/${a.new_path}
|
|
3
|
-
${a.diff}`).join("\n")}catch{return""}}async mergePr(a){await this.mutate("PUT",`/merge_requests/${a}/merge`,{body:{squash:!0,merge_when_pipeline_succeeds:!0}})}async createPr(a){let b=await this.mutate("POST","/merge_requests",{body:{source_branch:a.head,target_branch:a.base,title:a.title,description:a.body}});return d.Ik({iid:d.ai()}).parse(B(b.body,{})).iid}async latestPipelineId(a){let b=await this.request("GET",`/merge_requests/${a}/pipelines`);if(!b.ok)return null;let c=d.YO(x).safeParse(B(b.body,[])),e=c.success?c.data[0]:void 0;return e?e.id:null}}function A(a){let b=d.YO(t).safeParse(B(a,[]));if(!b.success)throw new s(`unexpected GitLab output: ${b.error.message}`);return b.data.map(a=>({number:a.iid,title:a.title,labels:a.labels.map(a=>({name:a})),author:a.author?.username??null,authorAssociation:null}))}function B(a,b){try{return JSON.parse(a||"null")??b}catch{return b}}function C(a){let b=d.Ik({message:d.L5(),error:d.L5()}).partial().safeParse(B(a.body,{}));if(b.success){let a=b.data.message??b.data.error;if("string"==typeof a)return a;if(a)return JSON.stringify(a)}return a.body.slice(0,300)}function D(a){var b;return"gitlab"===("github"===(b=a.platform)||"gitlab"===b?a.platform:"github")?new z({cwd:a.path,baseUrl:a.apiBaseUrl,token:a.apiToken}):new q({cwd:a.path}.cwd,void 0)}},51026:(a,b,c)=>{c.d(b,{Bt:()=>m,OM:()=>l,YA:()=>k,i_:()=>j});var d=c(90109),e=c(37003),f=c(97337),g=c(2937),h=c(93929);let i=a=>void 0===a?void 0:(0,d.ll)`${h.jobs.repoId} = ${a}`;function j(a=(0,g.Lf)(),b){return a.select({day:(0,d.ll)`strftime('%Y-%m-%d', ${h.jobs.startedAt}, 'unixepoch')`,inputTokens:(0,d.ll)`coalesce(sum(${h.jobs.totalInputTokens}), 0)`,outputTokens:(0,d.ll)`coalesce(sum(${h.jobs.totalOutputTokens}), 0)`,costUsd:(0,d.ll)`coalesce(sum(${h.jobs.costUsd}), 0)`}).from(h.jobs).where((0,e.Uo)((0,d.ll)`${h.jobs.startedAt} is not null`,i(b))).groupBy((0,d.ll)`1`).orderBy((0,d.ll)`1 desc`).all()}function k(a=(0,g.Lf)(),b){return a.select({model:(0,d.ll)`coalesce(${h.jobs.model}, 'unknown')`,costUsd:(0,d.ll)`coalesce(sum(${h.jobs.costUsd}), 0)`}).from(h.jobs).where(i(b)).groupBy(h.jobs.model).all()}function l(a=10,b=(0,g.Lf)(),c){return b.select().from(h.jobs).where(i(c)).orderBy((0,f.i)(h.jobs.costUsd)).limit(a).all()}function m(a=(0,g.Lf)(),b){let c=(0,d.ll)`strftime('%Y-%m-%d', ${h.jobs.startedAt}, 'unixepoch') = strftime('%Y-%m-%d', 'now')`,f=a.select({total:(0,d.ll)`coalesce(sum(${h.jobs.costUsd}), 0)`}).from(h.jobs).where((0,e.Uo)(c,i(b))).get();return f?.total??0}},68464:(a,b,c)=>{c.d(b,{L8:()=>j,m:()=>m,uP:()=>i,zC:()=>p,zy:()=>k});var d=c(97337),e=c(37003),f=c(2937),g=c(51026),h=c(93929);function i(a=(0,f.Lf)()){return a.select().from(h.repos).orderBy((0,d.i)(h.repos.createdAt)).all()}function j(a,b=(0,f.Lf)()){return b.select().from(h.repos).where((0,e.eq)(h.repos.id,a)).get()}function k(a=(0,f.Lf)()){return a.select().from(h.jobs).innerJoin(h.repos,(0,e.eq)(h.jobs.repoId,h.repos.id)).where((0,e.eq)(h.jobs.status,"needs_human")).orderBy((0,d.i)(h.jobs.finishedAt)).all().map(a=>({...a.jobs,repoName:a.repos.name}))}let l=["queued","working","ci_running","retrying"];function m(a,b=(0,f.Lf)()){let c=j(a,b);if(!c)return;let g=b.select().from(h.issues).where((0,e.eq)(h.issues.repoId,a)).orderBy((0,d.Y)(h.issues.priority),(0,d.Y)(h.issues.number)).all(),i=b.select().from(h.jobs).where((0,e.eq)(h.jobs.repoId,a)).orderBy((0,d.i)(h.jobs.createdAt)).all();return{repo:c,issues:g,activeJob:i.find(a=>l.includes(a.status)),recentJobs:i.slice(0,8)}}let n=["working","ci_running","retrying"];function o(a){return a.finishedAt??a.startedAt??a.createdAt}function p(a=(0,f.Lf)()){let b=i(a).map(b=>{let c=a.select().from(h.jobs).where((0,e.eq)(h.jobs.repoId,b.id)).orderBy((0,d.Y)(h.jobs.createdAt)).all(),f=a=>c.filter(b=>a.includes(b.status)).length,i=c.filter(a=>n.includes(a.status)).map(a=>({id:a.id,issueNumber:a.issueNumber,status:a.status})),j=c.length?Math.max(...c.map(o)):null,k=f(["needs_human"]),l=f(["ci_failed"]);return{id:b.id,name:b.name,path:b.path,platform:b.platform,queued:f(["queued"]),working:f(["working","retrying"]),ciRunning:f(["ci_running"]),needsHuman:k,inFlight:i,lastActivityAt:j,todaySpend:(0,g.Bt)(a,b.id),attention:k>0||l>0}});return b.sort((a,b)=>{if(a.attention!==b.attention)return a.attention?-1:1;let c=a.inFlight.length>0;if(c!==b.inFlight.length>0)return c?-1:1;let d=a.lastActivityAt??0,e=b.lastActivityAt??0;return d!==e?e-d:a.name.localeCompare(b.name)}),{summary:function(a=(0,f.Lf)()){let b=a.select().from(h.jobs).all(),c=a=>b.filter(b=>a.includes(b.status)).length;return{repos:a.select().from(h.repos).all().length,queued:c(["queued"]),running:c(["working","ci_running","retrying"]),merged:c(["merged"]),needsHuman:c(["needs_human"]),spendToday:(0,g.Bt)(a)}}(a),repos:b}}},71117:(a,b,c)=>{c.d(b,{S:()=>e});var d=c(31421);let e=(a,b,c,e)=>new Promise((f,g)=>{let h=(0,d.spawn)(a,b,{cwd:c,env:process.env}),i="",j="",k=!1,l=e?.timeoutMs??3e5,m=setTimeout(()=>{k=!0,h.kill("SIGKILL")},l);m.unref?.(),h.stdout.on("data",a=>{i+=a.toString()}),h.stderr.on("data",a=>{j+=a.toString()}),h.on("error",a=>{clearTimeout(m),g(a)}),h.on("close",b=>{(clearTimeout(m),k)?g(Error(`\`${a}\` timed out after ${l}ms`)):f({stdout:i,stderr:j,exitCode:b??0})})})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=447,exports.ids=[447],exports.modules={26424:(a,b,c)=>{c.d(b,{WE:()=>d,cp:()=>i,o:()=>h,sw:()=>e});let d=2;function e(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return(b>>>0).toString(16)}let f=/^\s*[-*]\s*\[[ xX]\]\s+(.+?)\s*$/,g=/^\s*#*\s*(Bug\s+\d+\s*(?:[—:-])\s*.+?)\s*$/;async function h(a,b={}){let c=function(a){let b=function(a){let b=[];for(let c of a.split("\n")){let a=c.match(f);a?.[1]&&b.push(a[1].trim())}return b}(a);if(b.length>=d)return b;let c=function(a){let b=[];for(let c of a.split("\n")){let a=c.match(g);a?.[1]&&b.push(a[1].trim())}return b}(a);return c.length>=d?c:[]}(a.body);if(c.length>=d)return{titles:c,source:"heuristic"};if(b.generate)try{let c=(await b.generate(a)).map(a=>a.trim()).filter(Boolean);if(c.length>=d)return{titles:c,source:"agent"}}catch(b){console.error(`[decompose] agent fallback failed for issue #${a.number}`,b)}return{titles:[],source:"none"}}function i(a){return a.map((a,b)=>{let{box:c,suffix:d}=function(a){switch(a){case"done":return{box:"[x]",suffix:""};case"skipped":return{box:"[~]",suffix:" — skipped"};case"in_progress":return{box:"[ ]",suffix:" — in progress"};case"deferred":return{box:"[ ]",suffix:" — deferred"};default:return{box:"[ ]",suffix:""}}}(a.status);return`${b+1}. ${c} ${a.title}${d}`}).join("\n")}},35078:(a,b,c)=>{c.d(b,{st:()=>q,Dl:()=>r,NF:()=>s});var d=c(51455),e=c(48161),f=c(76760),g=c(55710),h=c(68434),i=c(22579);let j=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function k(a){let b=j.exec(a.trim());return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3]),prerelease:b[4]??null}:null}function l(a,b){return`v${function(a,b){let c=k(a);if(!c)throw Error(`cannot bump unparseable version: "${a}"`);let{major:d,minor:e,patch:f}=c;return"major"===b?`${d+1}.0.0`:"minor"===b?`${d}.${e+1}.0`:`${d}.${e}.${f+1}`}(a??"0.0.0",b)}`}function m(a){return 0===a.length?"No changes since the last release.":a.map(a=>`- #${a.number} ${a.title}`).join("\n")}let n=i.Ik({release:i.zM(),bump:i.k5(["patch","minor","major"]),title:i.Yj().default(""),notes:i.Yj().default("")});var o=c(77173);async function p(a){var b;let c,d=await a.listReleases(),e=function(a){let b=null;for(let c of a)k(c)&&(null===b||function(a,b){var c,d;let e=k(a),f=k(b);if(!e||!f)throw Error(`cannot compare versions: "${a}" vs "${b}"`);return e.major!==f.major?e.major-f.major:e.minor!==f.minor?e.minor-f.minor:e.patch!==f.patch?e.patch-f.patch:(c=e.prerelease,c===(d=f.prerelease)?0:null===c?1:null===d||c<d?-1:1)}(c,b)>0)&&(b=c);return b}(d.map(a=>a.tagName)),f=e?d.find(a=>a.tagName===e)?.createdAt??null:null;return{fromTag:e,releases:d,prs:(b=(await a.listMergedPrs(100)).map(a=>({number:a.number,title:a.title,labels:a.labels,mergedAt:a.mergedAt})),c=null===f?null:Date.parse(f),b.filter(a=>{let b=Date.parse(a.mergedAt);return!Number.isNaN(b)&&(null===c||b>c)}).sort((a,b)=>a.number-b.number))}}async function q(a){let{fromTag:b,prs:c}=await p(a.forge),d=await a.generate({fromTag:b,prs:c}),e=d?.bump??"patch",f=l(b,e);return{fromTag:b,candidateTag:f,bump:e,shouldRelease:d?.release??!1,title:d?.title?.trim()||f,notes:d?.notes?.trim()||m(c),prs:c}}async function r(a,b){let c=b.db??(0,g.Lf)(),d=(0,o.tm)(a,c);if(!d)throw Error(`release run ${a} not found`);let e=d.mode;(0,o.Cq)(a,"evaluating",{},c);try{var f,h,i;let g,j,{fromTag:k,releases:n,prs:q}=await p(b.forge),r=await b.generate({fromTag:k,prs:q});if("auto"===e&&!r)return(0,o.Cq)(a,"error",{errorMessage:"release evaluation failed"},c);if("auto"===e&&r&&!r.release)return(0,o.Cq)(a,"skipped",{fromTag:k},c);let s=(f=e,h=r,i=q,g="manual"===f?"patch":h?.bump??"patch",j=h?.title?.trim()??"",{bump:g,title:j,notes:h?.notes?.trim()||m(i)}),t=d.tag??l(k,s.bump);if((0,o.Cq)(a,"proposed",{bump:s.bump,fromTag:k,tag:t,title:s.title||t,notes:s.notes,prNumbers:q.map(a=>a.number)},c),n.some(a=>a.tagName===t))return(0,o.Cq)(a,"publishing",{},c),(0,o.Cq)(a,"published",{},c);return(0,o.Cq)(a,"publishing",{},c),await b.forge.createRelease({tag:t,title:s.title||t,notes:s.notes,target:b.repo.defaultBranch}),(0,o.Cq)(a,"published",{},c)}catch(f){let b=f instanceof Error?f.message:String(f),d=(0,o.tm)(a,c),e=d?.status??"evaluating";if("evaluating"===e||"proposed"===e||"publishing"===e)return(0,o.Cq)(a,"error",{errorMessage:b.slice(0,500)},c);return(0,o.tm)(a,c)}}async function s(a,b){let c=await (0,d.mkdtemp)((0,f.join)((0,e.tmpdir)(),"drydock-release-"));try{var g;let d,e,f=(d=(g={provider:a.provider,command:a.command,model:a.model,cwd:c,runner:a.runner}).runner??h.S,e=g.timeoutMs??18e4,async a=>{let b,c,f=g.provider.buildOneShotArgs({prompt:(c=(b=a.prs.slice(0,200)).length>0?b.map(a=>{let b=a.labels.length>0?` [${a.labels.join(", ")}]`:"";return`- #${a.number} ${a.title}${b}`}).join("\n"):"(no merged pull requests)",["You are deciding whether to cut a new software release. Given the most\nrecent release and the pull requests merged since then, decide whether a\nrelease is warranted, which semantic-version bump it should be, and write\nconcise Markdown release notes.\n",a.fromTag?`The most recent release is ${a.fromTag}.`:"There is no prior release (this would be the first).","\n## Pull requests merged since the last release\n",c,'\n## How to choose the bump\n\n- "major": incompatible / breaking changes.\n- "minor": new, backwards-compatible features.\n- "patch": backwards-compatible bug fixes or internal-only changes.\n\n## Response format\n\nRespond with ONLY a JSON object (no prose, no code fences) of the shape:\n\n{"release": <true|false>, "bump": "patch"|"minor"|"major",\n "title": "<short release title>", "notes": "<Markdown release notes>"}\n\nSet "release" to false when the changes do not warrant a release yet (e.g.\nonly docs/CI tweaks). When false, the other fields are ignored.'].join("\n")),model:g.model});try{let a=await d(g.command,f,g.cwd,{timeoutMs:e});if(0!==a.exitCode)return null;return function(a){let b,c=a.match(/\{[\s\S]*\}/);if(!c)return null;try{b=JSON.parse(c[0])}catch{return null}let d=n.safeParse(b);return d.success?d.data:null}(a.stdout)}catch{return null}});return await b(f)}finally{try{await (0,d.rm)(c,{recursive:!0,force:!0})}catch{}}}},37567:(a,b,c)=>{c.d(b,{Y:()=>e,v:()=>d});let d=4e3;function e(a){let b=a?.trim();return b?["\n\n## Repository-specific agent instructions\n\nThe operator of this repository has provided the following instructions. Follow them\nin addition to the task above, unless they conflict with explicit safety constraints:\n",b.slice(0,d)].join("\n"):""}},38529:(a,b,c)=>{c.d(b,{A:()=>f,i:()=>g});let d=new Set(["OWNER","MEMBER","COLLABORATOR"]);function e(a){try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(a=>"string"==typeof a):[]}catch{return[]}}function f(a){return{autoTriageEnabled:a.autoTriageEnabled,autoProcessEnabled:a.autoProcessEnabled,autoHealCi:a.autoHealCi,autoReviewFeedback:a.autoReviewFeedback,autoResolveMergeConflicts:a.autoResolveMergeConflicts,includeProgressReplies:a.includeProgressReplies,autoDecompose:a.autoDecompose,verifyPr:a.verifyPr,autoHealDeployments:a.autoHealDeployments,releaseEnabled:a.releaseEnabled,deploymentPlatform:a.deploymentPlatform,readyLabels:e(a.readyLabels),blockingLabels:e(a.blockingLabels),autoLabelWhitelist:e(a.autoLabelWhitelist),priorityAuthors:e(a.priorityAuthors),trustedReviewers:e(a.trustedReviewers),ignoredBots:e(a.ignoredBots),minAuthorAssociation:"any"===a.minAuthorAssociation?"any":"approved",maxAttempts:a.maxAttempts}}function g(a,b){return"any"===a.minAuthorAssociation||null!=b&&d.has(b.toUpperCase())}},71218:(a,b,c)=>{c.d(b,{dv:()=>m,t0:()=>k,ZY:()=>l});var d=c(54452),e=c(74366),f=c(55710),g=c(84654);let h={pending:["in_progress","skipped","deferred"],in_progress:["done","skipped","deferred"],deferred:["pending","in_progress","skipped"],done:[],skipped:[]};class i extends Error{constructor(a,b){super(`invalid subtask transition: ${a} -> ${b}`)}}var j=c(26424);function k(a,b,c=(0,f.Lf)()){return c.select().from(g.issueSubtasks).where((0,d.Uo)((0,d.eq)(g.issueSubtasks.repoId,a),(0,d.eq)(g.issueSubtasks.issueNumber,b))).orderBy((0,e.Y)(g.issueSubtasks.ordinal)).all()}function l(a,b,c=(0,f.Lf)()){let e=c.select().from(g.issueSubtasks).where((0,d.eq)(g.issueSubtasks.id,a)).get();if(!e)throw Error(`subtask ${a} not found`);var j=e.status;if(!h[j].includes(b))throw new i(j,b);return c.update(g.issueSubtasks).set({status:b}).where((0,d.eq)(g.issueSubtasks.id,a)).returning().get()}async function m(a,b,c=(0,f.Lf)(),h={}){var i,l,n,o;let p=(0,j.sw)(b.body);if(i=a.id,l=b.number,c.select({h:g.issues.decomposedHash}).from(g.issues).where((0,d.Uo)((0,d.eq)(g.issues.repoId,i),(0,d.eq)(g.issues.number,l))).get()?.h===p)return{subtasks:k(a.id,b.number,c),source:"none",skipped:!0};let{titles:q,source:r}=await (0,j.o)(b,{generate:h.generate}),s=function(a,b,c,h,i=(0,f.Lf)()){return i.transaction(f=>(f.delete(g.issueSubtasks).where((0,d.Uo)((0,d.eq)(g.issueSubtasks.repoId,a),(0,d.eq)(g.issueSubtasks.issueNumber,b))).run(),c.forEach((c,d)=>{f.insert(g.issueSubtasks).values({repoId:a,issueNumber:b,ordinal:d,title:c,bodyHash:h}).run()}),f.select().from(g.issueSubtasks).where((0,d.Uo)((0,d.eq)(g.issueSubtasks.repoId,a),(0,d.eq)(g.issueSubtasks.issueNumber,b))).orderBy((0,e.Y)(g.issueSubtasks.ordinal)).all()))}(a.id,b.number,q,p,c);return n=a.id,o=b.number,c.update(g.issues).set({decomposedHash:p}).where((0,d.Uo)((0,d.eq)(g.issues.repoId,n),(0,d.eq)(g.issues.number,o))).run(),{subtasks:s,source:r,skipped:!1}}},77173:(a,b,c)=>{c.d(b,{v0:()=>j,tm:()=>k,Dn:()=>m,Cq:()=>l});var d=c(54452),e=c(74366),f=c(55710),g=c(84654);let h={detected:["evaluating","error"],evaluating:["proposed","skipped","error"],proposed:["publishing","skipped","error"],publishing:["published","error"],published:[],skipped:[],error:["evaluating"]};class i extends Error{constructor(a,b){super(`invalid release transition: ${a} -> ${b}`)}}function j(a,b=(0,f.Lf)()){let c=a.triggerSha??null;if(null!==c){let e=b.select().from(g.releaseRuns).where((0,d.Uo)((0,d.eq)(g.releaseRuns.repoId,a.repoId),(0,d.eq)(g.releaseRuns.triggerSha,c))).get();if(e)return e}return b.insert(g.releaseRuns).values({repoId:a.repoId,mode:a.mode,triggerPrNumber:a.triggerPrNumber??null,triggerSha:c}).returning().get()}function k(a,b=(0,f.Lf)()){return b.select().from(g.releaseRuns).where((0,d.eq)(g.releaseRuns.id,a)).get()}function l(a,b,c={},e=(0,f.Lf)()){let j=k(a,e);if(!j)throw Error(`release run ${a} not found`);var m=j.status;if(!h[m].includes(b))throw new i(m,b);let{prNumbers:n,...o}=c;return e.update(g.releaseRuns).set({status:b,updatedAt:Math.floor(Date.now()/1e3),...o,...void 0!==n?{prNumbers:JSON.stringify(n)}:{}}).where((0,d.eq)(g.releaseRuns.id,a)).returning().get()}function m(a,b=(0,f.Lf)(),c=10){return b.select().from(g.releaseRuns).where((0,d.eq)(g.releaseRuns.repoId,a)).orderBy((0,e.i)(g.releaseRuns.updatedAt),(0,e.i)(g.releaseRuns.id)).limit(c).all().map(a=>({id:a.id,mode:a.mode,status:a.status,triggerPrNumber:a.triggerPrNumber,fromTag:a.fromTag,tag:a.tag,title:a.title,prNumbers:function(a){try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(a=>"number"==typeof a):[]}catch{return[]}}(a.prNumbers),errorMessage:a.errorMessage,updatedAt:a.updatedAt}))}}};
|