@ai-development-environment/server 0.0.29 → 0.0.31
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/package.json +1 -1
- package/prisma-runtime/prisma/migrations/20260719010000_add_build_reports/migration.sql +29 -0
- package/prisma-runtime/prisma/schema.prisma +23 -0
- package/standalone/.next/BUILD_ID +1 -1
- package/standalone/.next/app-path-routes-manifest.json +3 -0
- package/standalone/.next/build-manifest.json +6 -6
- package/standalone/.next/prerender-manifest.json +3 -3
- package/standalone/.next/routes-manifest.json +26 -0
- package/standalone/.next/server/app/[locale]/actions/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/actions/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/actions/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/agents/[id]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/agents/[id]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/agents/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/agents/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/agents/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/agents/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/build-data/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/build-data/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/build-data/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/app-paths-manifest.json +3 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/build-manifest.json +16 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/next-font-manifest.json +11 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/react-loadable-manifest.json +1 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/server-reference-manifest.json +4 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page.js +16 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page.js.map +5 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page.js.nft.json +1 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page_client-reference-manifest.js +3 -0
- package/standalone/.next/server/app/[locale]/builds/[buildId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/builds/[buildId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/builds/[buildId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/builds/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/builds/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/builds/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/codebases/[codebaseId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/codebases/[codebaseId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/codebases/[codebaseId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/codebases/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/codebases/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/codebases/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/codebases/repositories/[repositoryId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/codebases/repositories/[repositoryId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/codebases/repositories/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/comments/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/comments/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/comments/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/jira/cache/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/jira/cache/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/jira/cache/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/jira/cache/tickets/[issueKey]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/jira/cache/tickets/[issueKey]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/jira/cache/tickets/[issueKey]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/jira/tickets/[issueKey]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/jira/tickets/[issueKey]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/jira/tickets/[issueKey]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/jira/tickets/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/jira/tickets/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/jira/tickets/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/jobs/[jobId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/jobs/[jobId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/jobs/[jobId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/pull-requests/[owner]/[repository]/[number]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/pull-requests/[owner]/[repository]/[number]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/pull-requests/[owner]/[repository]/[number]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/pull-requests/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/pull-requests/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/pull-requests/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/settings/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/settings/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/settings/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/skills/[skillId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/skills/[skillId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/skills/groups/[groupId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/skills/groups/[groupId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/skills/groups/[groupId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/skills/groups/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/skills/groups/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/skills/groups/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/skills/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/skills/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/skills/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/skills/sync/[runId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/skills/sync/[runId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/skills/sync/[runId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/tools/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/tools/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/tools/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/usage/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/usage/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/usage/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/worktrees/[worktreeId]/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/worktrees/[worktreeId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/worktrees/[worktreeId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/worktrees/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/worktrees/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/worktrees/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/_global-error.html +1 -1
- package/standalone/.next/server/app/_global-error.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/standalone/.next/server/app/_not-found.html +1 -1
- package/standalone/.next/server/app/_not-found.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js +1 -1
- package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route/app-paths-manifest.json +3 -0
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route/build-manifest.json +9 -0
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route/server-reference-manifest.json +4 -0
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route.js +11 -0
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route.js.map +5 -0
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route.js.nft.json +1 -0
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route_client-reference-manifest.js +3 -0
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/route.js +4 -3
- package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/codebases/by-path/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/codebases/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/graphql/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/tools/call/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/tools/catalog/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route/app-paths-manifest.json +3 -0
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route/build-manifest.json +9 -0
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route/server-reference-manifest.json +4 -0
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js +10 -0
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js.map +5 -0
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js.nft.json +1 -0
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route_client-reference-manifest.js +3 -0
- package/standalone/.next/server/app-paths-manifest.json +3 -0
- package/standalone/.next/server/chunks/07_e_builds_[buildId]_artifacts_[artifactId]_manifest_plist_route_actions_18mzaf3.js +3 -0
- package/standalone/.next/server/chunks/1oeh_server_app_api_worktrees_[worktreeId]_diff-image_route_actions_0nie5n3.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__08mnmfs._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__0906ea6._.js +3 -0
- package/standalone/.next/server/chunks/{[root-of-the-server]__0-ypkf7._.js → [root-of-the-server]__09v6swg._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__1wtng3p._.js → [root-of-the-server]__0aiyd05._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__09skp6r._.js → [root-of-the-server]__0cz4ap5._.js} +1 -1
- package/standalone/.next/server/chunks/[root-of-the-server]__0nvcazp._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__12807ia._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__15_clsj._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1csx222._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1ix62p0._.js +122 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1j-hk6b._.js +3 -0
- package/standalone/.next/server/chunks/{[root-of-the-server]__15aat79._.js → [root-of-the-server]__1j0u03u._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0c02fce._.js → [root-of-the-server]__1oa-sy6._.js} +2 -2
- package/standalone/.next/server/chunks/[root-of-the-server]__1qmvsu_._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1vxtcsq._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1w59u6o._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1z-3x8k._.js +3 -0
- package/standalone/.next/server/chunks/_0exkna-._.js +193 -8
- package/standalone/.next/server/chunks/_0jurkow._.js +1 -1
- package/standalone/.next/server/chunks/_0rx5rfm._.js +1 -1
- package/standalone/.next/server/chunks/_0tufgj0._.js +263 -78
- package/standalone/.next/server/chunks/_0w2eghf._.js +193 -8
- package/standalone/.next/server/chunks/_152rnkf._.js +17 -17
- package/standalone/.next/server/chunks/_16x77b_._.js +1 -1
- package/standalone/.next/server/chunks/_1dbqy8c._.js +17 -17
- package/standalone/.next/server/chunks/_1vrixpc._.js +17 -17
- package/standalone/.next/server/chunks/_1yfz-9u._.js +17 -17
- package/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_08x37wy.js +6 -0
- package/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0eghv0a.js +3 -0
- package/standalone/.next/server/chunks/src_0o4-snj._.js +1 -1
- package/standalone/.next/server/chunks/ssr/1oeh_server_app_[locale]_builds_[buildId]_coverage_page_actions_20i_0zd.js +3 -0
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__08bbv6z._.js +9 -0
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ckj6wg._.js +13 -0
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0eit075._.js +3 -0
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qy28ku._.js +3 -0
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0tsac-e._.js +15 -0
- package/standalone/.next/server/chunks/ssr/{_19fwji0._.js → [root-of-the-server]__0uo4dhz._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__15v1geo._.js +3 -0
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1qm_j4s._.js +3 -0
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1s6_fta._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_0-o77zz._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_00m30gw._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_03961l6._.js +3 -0
- package/standalone/.next/server/chunks/ssr/{_00ye62k._.js → _08q5hnx._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/_093--4s._.js +3 -0
- package/standalone/.next/server/chunks/ssr/{_1kaz2gq._.js → _09lh67h._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/_0a1ligo._.js +3 -0
- package/standalone/.next/server/chunks/ssr/{_1h3p6oi._.js → _0cw_tqx._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/_0dq-84j._.js +22 -0
- package/standalone/.next/server/chunks/ssr/_0dy1ovj._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_0ezo890._.js +3 -0
- package/standalone/.next/server/chunks/ssr/{_1_1j9nd._.js → _0id1774._.js} +3 -3
- package/standalone/.next/server/chunks/ssr/_0j48up8._.js +1 -1
- package/standalone/.next/server/chunks/ssr/_0nhtqty._.js +1 -1
- package/standalone/.next/server/chunks/ssr/_0oh246z._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_0q8sy0w._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_0qra30j._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_0t2jwg3._.js +109 -0
- package/standalone/.next/server/chunks/ssr/{_1zyjq9y._.js → _0ufkrvm._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/{_07tglcd._.js → _0vjihfb._.js} +2 -10
- package/standalone/.next/server/chunks/ssr/_0xh-lyy._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_15erjna._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_17a3xuq._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_17p59oz._.js +1 -1
- package/standalone/.next/server/chunks/ssr/_1bzibio._.js +109 -0
- package/standalone/.next/server/chunks/ssr/{_12ws_f2._.js → _1c2fde9._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/{_0mr9u9p._.js → _1dnm1d4._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/_1ekznx8._.js +3 -0
- package/standalone/.next/server/chunks/ssr/{_1r2rmfp._.js → _1f5k6bj._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/_1k1tyz4._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_1och_zk._.js +3 -0
- package/standalone/.next/server/chunks/ssr/{_0xrpdyy._.js → _1tpguta._.js} +2 -2
- package/standalone/.next/server/chunks/ssr/_1v1lo7c._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_1vv-dg-._.js +3 -0
- package/standalone/.next/server/chunks/ssr/_1zgu74l._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_de_json_[json]_cjs_1uig1ud._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_en_json_[json]_cjs_206072-._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_es_json_[json]_cjs_082yukd._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_fr_json_[json]_cjs_0j6-w0i._.js +1 -1
- package/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uzalot.js +4 -0
- package/standalone/.next/server/chunks/ssr/src_components_builds_build-detail-page_tsx_0q1lvps._.js +25 -9
- package/standalone/.next/server/chunks/ssr/src_components_builds_coverage-report-page_tsx_1nhwba1._.js +11 -0
- package/standalone/.next/server/chunks/ssr/src_components_codebases_repository-detail-page_tsx_20_7wk_._.js +5 -5
- package/standalone/.next/server/chunks/ssr/src_components_jira_cache-page_tsx_1znt1yl._.js +1 -1
- package/standalone/.next/server/chunks/ssr/src_components_skills_skill-sync-page_tsx_15sidhb._.js +1 -1
- package/standalone/.next/server/chunks/ssr/src_components_skills_skills-page_tsx_0o1nlbg._.js +3 -3
- package/standalone/.next/server/chunks/ssr/src_components_worktrees_worktree-detail-page_tsx_1oexgu_._.js +13 -5
- package/standalone/.next/server/functions-config-manifest.json +7 -1
- package/standalone/.next/server/middleware-build-manifest.js +6 -6
- package/standalone/.next/server/next-font-manifest.js +1 -1
- package/standalone/.next/server/next-font-manifest.json +4 -0
- package/standalone/.next/server/pages/404.html +1 -1
- package/standalone/.next/server/pages/500.html +1 -1
- package/standalone/.next/server/server-reference-manifest.js +1 -1
- package/standalone/.next/server/server-reference-manifest.json +1 -1
- package/standalone/.next/static/chunks/08ujwkhzkokhf.js +1 -0
- package/standalone/.next/static/chunks/{16tfdsma_h0r5.js → 0a82bgw37ev__.js} +1 -1
- package/standalone/.next/static/chunks/0cw4z7_m01m5f.js +31 -0
- package/standalone/.next/static/chunks/0emxr8tr7kji0.js +33 -0
- package/standalone/.next/static/chunks/0h8zu6aywqh1-.js +27 -0
- package/standalone/.next/static/chunks/0hwbkceik59kx.js +35 -0
- package/standalone/.next/static/chunks/0mq066ue0yufb.js +7 -0
- package/standalone/.next/static/chunks/0ng892ycfzv2q.js +1 -0
- package/standalone/.next/static/chunks/0tgtji0dbbefa.js +107 -0
- package/standalone/.next/static/chunks/15_8kla24ff9f.js +1 -0
- package/standalone/.next/static/chunks/16-l4kp9o217d.js +1 -0
- package/standalone/.next/static/chunks/175269y15-grc.js +48 -0
- package/standalone/.next/static/chunks/1c7ci5ai5qyfo.js +1 -0
- package/standalone/.next/static/chunks/1egccqmgk3kbi.js +1 -0
- package/standalone/.next/static/chunks/1gwvywh0e6i17.js +3 -0
- package/standalone/.next/static/chunks/1hehq94hslvbl.js +7 -0
- package/standalone/.next/static/chunks/1k5cw41bd4e5r.js +51 -0
- package/standalone/.next/static/chunks/{2rjf8o4g23no8.js → 1mprxk0uebv70.js} +1 -1
- package/standalone/.next/static/chunks/1rus13s58mkxy.js +1 -0
- package/standalone/.next/static/chunks/{2fzxwi39odugq.js → 1rwqeg_l_plzt.js} +1 -1
- package/standalone/.next/static/chunks/1u_jwc-bo10k3.js +1 -0
- package/standalone/.next/static/chunks/1w_zvfx_jdyv_.js +29 -0
- package/standalone/.next/static/chunks/2-wrd12dmwbo-.js +1 -0
- package/standalone/.next/static/chunks/208k3moxxd_53.js +51 -0
- package/standalone/.next/static/chunks/23kut2_l2y2-w.js +9 -0
- package/standalone/.next/static/chunks/{1nnp0crt0mi_-.js → 23xyv764-kx8z.js} +12 -12
- package/standalone/.next/static/chunks/{1wihkuyju-wa-.js → 25haryfoj4x3h.js} +1 -1
- package/standalone/.next/static/chunks/{0fr0zp4cwlyrr.js → 28ljy-uz6n_g9.js} +2 -2
- package/standalone/.next/static/chunks/{4013cp3x6bvuw.js → 2__bi79el56lb.js} +5 -5
- package/standalone/.next/static/chunks/2aq80hyo4l8a2.js +7 -0
- package/standalone/.next/static/chunks/{24a_ux27e8jj4.js → 2l_wayk-ioguc.js} +1 -1
- package/standalone/.next/static/chunks/2swvzbwm_dr9y.js +1 -0
- package/standalone/.next/static/chunks/2zwijj9t6y7gn.js +7 -0
- package/standalone/.next/static/chunks/{0m26h4h36cb_0.js → 3120xcqaqci82.js} +1 -1
- package/standalone/.next/static/chunks/{3-u7pvogc5_bx.js → 315cis1es_5t3.js} +12 -12
- package/standalone/.next/static/chunks/321feys_9vp2v.js +33 -0
- package/standalone/.next/static/chunks/{0d-e51sawr2y8.js → 34oyci46fsc5w.js} +1 -1
- package/standalone/.next/static/chunks/37mczlawlcx5l.js +1 -0
- package/standalone/.next/static/chunks/398uw5_4-ciaz.css +1 -0
- package/standalone/.next/static/chunks/{1tcqtaedz7922.js → 3d4ijy7zglgv5.js} +1 -1
- package/standalone/.next/static/chunks/3ir4b8po439x7.js +40 -0
- package/standalone/.next/static/chunks/3l2g83119oyl0.js +1 -0
- package/standalone/.next/static/chunks/3r-6igcofcwxj.js +107 -0
- package/standalone/.next/static/chunks/{0m--47yk9j-ec.js → 3tycetq7o8g3h.js} +1 -1
- package/standalone/.next/static/chunks/{0biu8z1f8c42u.js → 40ovzayigkz_-.js} +1 -1
- package/standalone/.next/static/chunks/41wq-96yyl0uw.js +1 -0
- package/standalone/.next/static/chunks/44xu63hsh11xp.js +1 -0
- package/standalone/.next/static/chunks/{turbopack-1rw7om86c18dg.js → turbopack-1v9ogj_5hv56l.js} +1 -1
- package/standalone/src/services/builds/artifact-cache.test.ts +241 -0
- package/standalone/src/services/builds/artifact-cache.ts +235 -0
- package/standalone/src/services/builds/artifact-transfer.ts +2 -1
- package/standalone/src/services/builds/builds.service.test.ts +55 -0
- package/standalone/src/services/builds/builds.service.ts +499 -17
- package/standalone/.next/server/chunks/[root-of-the-server]__02vqwey._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1oahp4o._.js +0 -122
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0361lgt._.js +0 -33
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__06f05jg._.js +0 -3
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ay4_3d._.js +0 -37
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0dm8osz._.js +0 -3
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1349-us._.js +0 -3
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1xv798-._.js +0 -3
- package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1z955gh._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_0bvpmhm._.js +0 -101
- package/standalone/.next/server/chunks/ssr/_0eb36qa._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_0ndnmkz._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_0nm6upn._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_0pe56xv._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_0quhjav._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_0w05v7m._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_0xozjkz._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1-1mnp6._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1-7r8vu._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1-grolz._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_10evhql._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_142x9wn._.js +0 -22
- package/standalone/.next/server/chunks/ssr/_1_ta7g1._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1ey5mmy._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1fdyu2w._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1g3i459._.js +0 -15
- package/standalone/.next/server/chunks/ssr/_1g_aflc._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1lcwubl._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1lseili._.js +0 -3
- package/standalone/.next/server/chunks/ssr/_1za3z6k._.js +0 -101
- package/standalone/.next/server/chunks/ssr/_20ufqtr._.js +0 -3
- package/standalone/.next/static/chunks/0a3s519wuzjet.js +0 -1
- package/standalone/.next/static/chunks/0newuocvg03xy.js +0 -3
- package/standalone/.next/static/chunks/0rlomhlt6030e.js +0 -1
- package/standalone/.next/static/chunks/1802j8gq2g47d.js +0 -7
- package/standalone/.next/static/chunks/1_tnhhn4f122y.js +0 -9
- package/standalone/.next/static/chunks/1eny65xy2ho48.js +0 -1
- package/standalone/.next/static/chunks/1joeb4m-mmn69.js +0 -7
- package/standalone/.next/static/chunks/1l4bkigul15i3.js +0 -25
- package/standalone/.next/static/chunks/1qd6cse_d9ae1.js +0 -99
- package/standalone/.next/static/chunks/2-mxmazwsh-wz.js +0 -1
- package/standalone/.next/static/chunks/24sd_kmnetibb.js +0 -1
- package/standalone/.next/static/chunks/27k7_zc-iuppd.js +0 -1
- package/standalone/.next/static/chunks/2baaj4mpr6i-i.js +0 -1
- package/standalone/.next/static/chunks/2cj2ndz_e0hbz.js +0 -1
- package/standalone/.next/static/chunks/2fzwgr2iq_783.css +0 -1
- package/standalone/.next/static/chunks/2hv6pkoloju0g.js +0 -33
- package/standalone/.next/static/chunks/2jbygfc0lzu0t.js +0 -55
- package/standalone/.next/static/chunks/2n7u72nxziv_5.js +0 -7
- package/standalone/.next/static/chunks/2sqprazdqp7f7.js +0 -1
- package/standalone/.next/static/chunks/2x8qovg070057.js +0 -1
- package/standalone/.next/static/chunks/3-zh9b0tcttiw.js +0 -33
- package/standalone/.next/static/chunks/31wyih3wwkeid.js +0 -1
- package/standalone/.next/static/chunks/33y_b6dqfx3tk.js +0 -1
- package/standalone/.next/static/chunks/3h1pxh5fd97ym.js +0 -27
- package/standalone/.next/static/chunks/3jbfibit05k5o.js +0 -29
- package/standalone/.next/static/chunks/3jd8_7lna-j_x.js +0 -40
- package/standalone/.next/static/chunks/3jv2gnnn4vx-j.js +0 -43
- package/standalone/.next/static/chunks/3k0oakdayt9yt.js +0 -40
- package/standalone/.next/static/chunks/3pgngh8lg3be3.js +0 -99
- package/standalone/.next/static/chunks/43gw6_6hbw18w.js +0 -51
- /package/standalone/.next/static/{8uBWJ8MOV-OEPe88M3PhU → sJ09NBDjsLncJEkHNWbdR}/_buildManifest.js +0 -0
- /package/standalone/.next/static/{8uBWJ8MOV-OEPe88M3PhU → sJ09NBDjsLncJEkHNWbdR}/_clientMiddlewareManifest.js +0 -0
- /package/standalone/.next/static/{8uBWJ8MOV-OEPe88M3PhU → sJ09NBDjsLncJEkHNWbdR}/_ssgManifest.js +0 -0
|
@@ -13,16 +13,21 @@ import {
|
|
|
13
13
|
IOS_DEPLOY_JOB_KIND,
|
|
14
14
|
IOS_DESTINATIONS_JOB_KIND,
|
|
15
15
|
IOS_EXPORT_JOB_KIND,
|
|
16
|
+
IOS_TEST_RESULTS_JOB_KIND,
|
|
17
|
+
IOS_COVERAGE_REPORT_JOB_KIND,
|
|
16
18
|
IOS_RUN_DESTINATIONS_JOB_KIND,
|
|
19
|
+
IOS_SIGNING_INSPECT_JOB_KIND,
|
|
17
20
|
IOS_SOURCE_DISCOVER_JOB_KIND,
|
|
18
21
|
IOS_SOURCE_PARSE_JOB_KIND,
|
|
19
22
|
parseBuildAdvancedSettings,
|
|
23
|
+
parseBuildArtifactSnapshots,
|
|
20
24
|
parseBuildDestination,
|
|
21
25
|
parseBuildExportSettings,
|
|
22
26
|
parseBuildSource,
|
|
23
27
|
type BuildAction,
|
|
24
28
|
type BuildAdvancedSettings,
|
|
25
29
|
type BuildDestination,
|
|
30
|
+
type BuildReportKind,
|
|
26
31
|
type BuildSourceKind,
|
|
27
32
|
} from "@ai-development-environment/agent-contract/builds";
|
|
28
33
|
|
|
@@ -372,6 +377,14 @@ export class BuildsService {
|
|
|
372
377
|
this.agentControl.registerCompletionHandler(IOS_EXPORT_JOB_KIND, (job) =>
|
|
373
378
|
this.projectExportCompletion(job),
|
|
374
379
|
);
|
|
380
|
+
this.agentControl.registerCompletionHandler(
|
|
381
|
+
IOS_TEST_RESULTS_JOB_KIND,
|
|
382
|
+
(job) => this.projectGeneratedReportCompletion(job),
|
|
383
|
+
);
|
|
384
|
+
this.agentControl.registerCompletionHandler(
|
|
385
|
+
IOS_COVERAGE_REPORT_JOB_KIND,
|
|
386
|
+
(job) => this.projectGeneratedReportCompletion(job),
|
|
387
|
+
);
|
|
375
388
|
}
|
|
376
389
|
|
|
377
390
|
private publish(buildId: string): void {
|
|
@@ -416,6 +429,8 @@ export class BuildsService {
|
|
|
416
429
|
gitDirectory: worktree.gitDirectory,
|
|
417
430
|
expectedOrigin: worktree.codebase.repository.canonicalOrigin,
|
|
418
431
|
headSha: worktree.headSha,
|
|
432
|
+
baseBranch:
|
|
433
|
+
worktree.baseBranchOverride ?? worktree.codebase.defaultBranch ?? null,
|
|
419
434
|
};
|
|
420
435
|
}
|
|
421
436
|
|
|
@@ -950,6 +965,57 @@ export class BuildsService {
|
|
|
950
965
|
}
|
|
951
966
|
}
|
|
952
967
|
|
|
968
|
+
/**
|
|
969
|
+
* Lists the teams, certificates, and profiles installed on the build's agent,
|
|
970
|
+
* along with the bundles inside the archive that manual signing must map.
|
|
971
|
+
*/
|
|
972
|
+
async signingOptionsForBuild(buildId: string) {
|
|
973
|
+
const prisma = await getPrismaClient();
|
|
974
|
+
const build = await prisma.build.findUnique({
|
|
975
|
+
where: { id: buildId },
|
|
976
|
+
include: { artifacts: true },
|
|
977
|
+
});
|
|
978
|
+
const archive = build?.artifacts.find(
|
|
979
|
+
(artifact) => artifact.kind === "ARCHIVE",
|
|
980
|
+
);
|
|
981
|
+
if (!build || build.status !== "SUCCEEDED" || !build.worktreeId) {
|
|
982
|
+
throw new Error("A successful archive build is required");
|
|
983
|
+
}
|
|
984
|
+
if (!archive) throw new Error("Build does not contain an archive");
|
|
985
|
+
const worktree = await this.requireWorktree(
|
|
986
|
+
build.worktreeId,
|
|
987
|
+
IOS_SIGNING_INSPECT_JOB_KIND,
|
|
988
|
+
);
|
|
989
|
+
const job = await this.agentControl.createJob({
|
|
990
|
+
agentId: worktree.codebase.agentId,
|
|
991
|
+
codebaseId: worktree.codebaseId,
|
|
992
|
+
worktreeId: worktree.id,
|
|
993
|
+
kind: IOS_SIGNING_INSPECT_JOB_KIND,
|
|
994
|
+
payload: {
|
|
995
|
+
buildId: build.id,
|
|
996
|
+
codebaseId: worktree.codebaseId,
|
|
997
|
+
artifactDirectory: build.artifactDirectory,
|
|
998
|
+
archiveRelativePath: archive.relativePath,
|
|
999
|
+
},
|
|
1000
|
+
idempotencyKey: `ios:signing:${build.id}:${archive.id}`,
|
|
1001
|
+
timeoutSeconds: 120,
|
|
1002
|
+
visibility: "SYSTEM",
|
|
1003
|
+
});
|
|
1004
|
+
try {
|
|
1005
|
+
const result = this.result(await this.waitForJob(job.id));
|
|
1006
|
+
return {
|
|
1007
|
+
teams: Array.isArray(result.teams) ? result.teams : [],
|
|
1008
|
+
identities: Array.isArray(result.identities) ? result.identities : [],
|
|
1009
|
+
profiles: Array.isArray(result.profiles) ? result.profiles : [],
|
|
1010
|
+
bundles: Array.isArray(result.bundles) ? result.bundles : [],
|
|
1011
|
+
};
|
|
1012
|
+
} finally {
|
|
1013
|
+
await prisma.agentJob.deleteMany({
|
|
1014
|
+
where: { id: job.id, visibility: "SYSTEM" },
|
|
1015
|
+
});
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
|
|
953
1019
|
async destinationsForBuild(buildId: string, requestId: string) {
|
|
954
1020
|
const prisma = await getPrismaClient();
|
|
955
1021
|
const build = await prisma.build.findUnique({
|
|
@@ -1009,6 +1075,7 @@ export class BuildsService {
|
|
|
1009
1075
|
scriptIds?: string[] | null;
|
|
1010
1076
|
action?: BuildAction | null;
|
|
1011
1077
|
advancedSettings?: unknown;
|
|
1078
|
+
worktreeCoverage?: boolean;
|
|
1012
1079
|
requestId: string;
|
|
1013
1080
|
}) {
|
|
1014
1081
|
const requestId = cleanName(input.requestId, "Request ID", 200);
|
|
@@ -1023,6 +1090,14 @@ export class BuildsService {
|
|
|
1023
1090
|
input.worktreeId,
|
|
1024
1091
|
IOS_BUILD_JOB_KIND,
|
|
1025
1092
|
);
|
|
1093
|
+
if (
|
|
1094
|
+
input.worktreeCoverage &&
|
|
1095
|
+
!capabilities(worktree.codebase.agent).includes(
|
|
1096
|
+
IOS_COVERAGE_REPORT_JOB_KIND,
|
|
1097
|
+
)
|
|
1098
|
+
) {
|
|
1099
|
+
throw new Error("Build agent must be updated for worktree coverage");
|
|
1100
|
+
}
|
|
1026
1101
|
const configuration = await prisma.buildConfiguration.findUnique({
|
|
1027
1102
|
where: { id: input.configurationId },
|
|
1028
1103
|
include: { source: { include: { project: true } } },
|
|
@@ -1302,6 +1377,7 @@ export class BuildsService {
|
|
|
1302
1377
|
},
|
|
1303
1378
|
destination,
|
|
1304
1379
|
scripts,
|
|
1380
|
+
worktreeCoverage: input.worktreeCoverage === true,
|
|
1305
1381
|
};
|
|
1306
1382
|
await prisma.build.create({
|
|
1307
1383
|
data: {
|
|
@@ -1370,6 +1446,7 @@ export class BuildsService {
|
|
|
1370
1446
|
destination,
|
|
1371
1447
|
advancedSettings,
|
|
1372
1448
|
scripts,
|
|
1449
|
+
worktreeCoverage: input.worktreeCoverage === true,
|
|
1373
1450
|
},
|
|
1374
1451
|
idempotencyKey: `ios:build:${requestId}:${worktree.id}`,
|
|
1375
1452
|
timeoutSeconds: 7 * 24 * 60 * 60,
|
|
@@ -1455,6 +1532,210 @@ export class BuildsService {
|
|
|
1455
1532
|
});
|
|
1456
1533
|
}
|
|
1457
1534
|
|
|
1535
|
+
async startWorktreeCoverage(input: {
|
|
1536
|
+
worktreeId: string;
|
|
1537
|
+
configurationId: string;
|
|
1538
|
+
destination: unknown;
|
|
1539
|
+
scriptIds?: string[] | null;
|
|
1540
|
+
advancedSettings?: unknown;
|
|
1541
|
+
requestId: string;
|
|
1542
|
+
}) {
|
|
1543
|
+
const prisma = await getPrismaClient();
|
|
1544
|
+
const coverageWorktree = await prisma.worktree.findUnique({
|
|
1545
|
+
where: { id: input.worktreeId },
|
|
1546
|
+
select: {
|
|
1547
|
+
baseBranchOverride: true,
|
|
1548
|
+
codebase: { select: { defaultBranch: true } },
|
|
1549
|
+
},
|
|
1550
|
+
});
|
|
1551
|
+
if (
|
|
1552
|
+
!coverageWorktree ||
|
|
1553
|
+
!(
|
|
1554
|
+
coverageWorktree.baseBranchOverride ??
|
|
1555
|
+
coverageWorktree.codebase.defaultBranch
|
|
1556
|
+
)
|
|
1557
|
+
) {
|
|
1558
|
+
throw new Error("A base branch is required for worktree coverage");
|
|
1559
|
+
}
|
|
1560
|
+
const advanced = objectValue(
|
|
1561
|
+
input.advancedSettings ?? {},
|
|
1562
|
+
"coverage advanced settings",
|
|
1563
|
+
);
|
|
1564
|
+
return this.startBuild({
|
|
1565
|
+
...input,
|
|
1566
|
+
action: "TEST",
|
|
1567
|
+
advancedSettings: {
|
|
1568
|
+
...advanced,
|
|
1569
|
+
codeCoverage: true,
|
|
1570
|
+
parseTestResults: true,
|
|
1571
|
+
},
|
|
1572
|
+
worktreeCoverage: true,
|
|
1573
|
+
});
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
async generateReport(
|
|
1577
|
+
buildId: string,
|
|
1578
|
+
kind: BuildReportKind,
|
|
1579
|
+
requestId: string,
|
|
1580
|
+
) {
|
|
1581
|
+
const prisma = await getPrismaClient();
|
|
1582
|
+
const existing = await prisma.buildReport.findUnique({
|
|
1583
|
+
where: { buildId_kind: { buildId, kind } },
|
|
1584
|
+
include: { artifact: true },
|
|
1585
|
+
});
|
|
1586
|
+
if (existing?.status === "READY") return existing;
|
|
1587
|
+
const build = await prisma.build.findUnique({
|
|
1588
|
+
where: { id: buildId },
|
|
1589
|
+
include: { agent: true, artifacts: true },
|
|
1590
|
+
});
|
|
1591
|
+
if (!build) throw new Error("Build not found");
|
|
1592
|
+
if (ACTIVE_BUILD_STATUSES.includes(build.status)) {
|
|
1593
|
+
throw new Error("Wait for the build to finish before generating reports");
|
|
1594
|
+
}
|
|
1595
|
+
if (!build.agentId || !build.agent || !online(build.agent)) {
|
|
1596
|
+
throw new Error("Build agent is offline");
|
|
1597
|
+
}
|
|
1598
|
+
const capability =
|
|
1599
|
+
kind === "TEST_RESULTS"
|
|
1600
|
+
? IOS_TEST_RESULTS_JOB_KIND
|
|
1601
|
+
: IOS_COVERAGE_REPORT_JOB_KIND;
|
|
1602
|
+
if (!capabilities(build.agent).includes(capability)) {
|
|
1603
|
+
throw new Error("Build agent must be updated to generate reports");
|
|
1604
|
+
}
|
|
1605
|
+
if (
|
|
1606
|
+
!build.artifacts.some((artifact) => artifact.kind === "RESULT_BUNDLE")
|
|
1607
|
+
) {
|
|
1608
|
+
throw new Error("The build result bundle is unavailable");
|
|
1609
|
+
}
|
|
1610
|
+
if (
|
|
1611
|
+
kind === "TEST_RESULTS" &&
|
|
1612
|
+
!["TEST", "TEST_WITHOUT_BUILDING"].includes(build.action)
|
|
1613
|
+
) {
|
|
1614
|
+
throw new Error("This build did not run tests");
|
|
1615
|
+
}
|
|
1616
|
+
const report = await prisma.buildReport.upsert({
|
|
1617
|
+
where: { buildId_kind: { buildId, kind } },
|
|
1618
|
+
create: {
|
|
1619
|
+
id: randomUUID(),
|
|
1620
|
+
buildId,
|
|
1621
|
+
kind,
|
|
1622
|
+
source: "MANUAL",
|
|
1623
|
+
status: "PENDING",
|
|
1624
|
+
},
|
|
1625
|
+
update: {
|
|
1626
|
+
source: "MANUAL",
|
|
1627
|
+
status: "PENDING",
|
|
1628
|
+
error: null,
|
|
1629
|
+
finishedAt: null,
|
|
1630
|
+
},
|
|
1631
|
+
});
|
|
1632
|
+
this.publish(buildId);
|
|
1633
|
+
const codebaseId = coordinationCodebaseId(build);
|
|
1634
|
+
const job = await this.agentControl.createJob({
|
|
1635
|
+
agentId: build.agentId,
|
|
1636
|
+
codebaseId,
|
|
1637
|
+
worktreeId: build.worktreeId,
|
|
1638
|
+
kind: capability,
|
|
1639
|
+
payload: {
|
|
1640
|
+
buildId,
|
|
1641
|
+
artifactDirectory: build.artifactDirectory,
|
|
1642
|
+
codebaseId,
|
|
1643
|
+
reportKind: kind,
|
|
1644
|
+
source: "MANUAL",
|
|
1645
|
+
},
|
|
1646
|
+
idempotencyKey: `ios:report:${kind}:${cleanName(requestId, "Request ID", 200)}:${buildId}`,
|
|
1647
|
+
timeoutSeconds: 180,
|
|
1648
|
+
visibility: "SYSTEM",
|
|
1649
|
+
});
|
|
1650
|
+
try {
|
|
1651
|
+
await this.waitForJob(job.id, 170_000);
|
|
1652
|
+
return prisma.buildReport.findUniqueOrThrow({
|
|
1653
|
+
where: { id: report.id },
|
|
1654
|
+
include: { artifact: true },
|
|
1655
|
+
});
|
|
1656
|
+
} finally {
|
|
1657
|
+
await prisma.agentJob.deleteMany({
|
|
1658
|
+
where: { id: job.id, visibility: "SYSTEM" },
|
|
1659
|
+
});
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
async coverageHistory(worktreeId: string) {
|
|
1664
|
+
const prisma = await getPrismaClient();
|
|
1665
|
+
return prisma.buildReport.findMany({
|
|
1666
|
+
where: {
|
|
1667
|
+
kind: "CODE_COVERAGE",
|
|
1668
|
+
source: "WORKTREE",
|
|
1669
|
+
build: { worktreeId },
|
|
1670
|
+
},
|
|
1671
|
+
orderBy: { createdAt: "desc" },
|
|
1672
|
+
take: 50,
|
|
1673
|
+
select: {
|
|
1674
|
+
id: true,
|
|
1675
|
+
buildId: true,
|
|
1676
|
+
artifactId: true,
|
|
1677
|
+
kind: true,
|
|
1678
|
+
source: true,
|
|
1679
|
+
status: true,
|
|
1680
|
+
summaryJson: true,
|
|
1681
|
+
error: true,
|
|
1682
|
+
createdAt: true,
|
|
1683
|
+
updatedAt: true,
|
|
1684
|
+
finishedAt: true,
|
|
1685
|
+
artifact: true,
|
|
1686
|
+
build: {
|
|
1687
|
+
select: {
|
|
1688
|
+
id: true,
|
|
1689
|
+
status: true,
|
|
1690
|
+
action: true,
|
|
1691
|
+
destinationType: true,
|
|
1692
|
+
destinationJson: true,
|
|
1693
|
+
snapshotJson: true,
|
|
1694
|
+
createdAt: true,
|
|
1695
|
+
startedAt: true,
|
|
1696
|
+
finishedAt: true,
|
|
1697
|
+
updatedAt: true,
|
|
1698
|
+
worktree: {
|
|
1699
|
+
select: {
|
|
1700
|
+
headSha: true,
|
|
1701
|
+
codeStateHash: true,
|
|
1702
|
+
hasStagedChanges: true,
|
|
1703
|
+
hasUnstagedChanges: true,
|
|
1704
|
+
lastCheckedAt: true,
|
|
1705
|
+
_count: {
|
|
1706
|
+
select: {
|
|
1707
|
+
builds: {
|
|
1708
|
+
where: { status: { in: ACTIVE_BUILD_STATUSES } },
|
|
1709
|
+
},
|
|
1710
|
+
},
|
|
1711
|
+
},
|
|
1712
|
+
},
|
|
1713
|
+
},
|
|
1714
|
+
artifacts: { orderBy: { createdAt: "asc" } },
|
|
1715
|
+
},
|
|
1716
|
+
},
|
|
1717
|
+
},
|
|
1718
|
+
});
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
async reportsForBuild(buildId: string) {
|
|
1722
|
+
const prisma = await getPrismaClient();
|
|
1723
|
+
return prisma.buildReport.findMany({
|
|
1724
|
+
where: { buildId },
|
|
1725
|
+
orderBy: { createdAt: "asc" },
|
|
1726
|
+
include: { artifact: true },
|
|
1727
|
+
});
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
async reportData(id: string): Promise<string> {
|
|
1731
|
+
const prisma = await getPrismaClient();
|
|
1732
|
+
const report = await prisma.buildReport.findUnique({
|
|
1733
|
+
where: { id },
|
|
1734
|
+
select: { dataJson: true },
|
|
1735
|
+
});
|
|
1736
|
+
return report?.dataJson ?? "{}";
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1458
1739
|
async builds(
|
|
1459
1740
|
input: {
|
|
1460
1741
|
first?: number | null;
|
|
@@ -1565,10 +1846,36 @@ export class BuildsService {
|
|
|
1565
1846
|
return removed.count;
|
|
1566
1847
|
}
|
|
1567
1848
|
|
|
1849
|
+
/**
|
|
1850
|
+
* Artifact metadata for the over-the-air install manifest. Deliberately does
|
|
1851
|
+
* not contact the agent: iOS fetches the manifest before anything else and
|
|
1852
|
+
* gives up quickly, so this must answer from the database alone.
|
|
1853
|
+
*/
|
|
1854
|
+
async artifactForInstall(buildId: string, artifactId: string) {
|
|
1855
|
+
const prisma = await getPrismaClient();
|
|
1856
|
+
const artifact = await prisma.buildArtifact.findFirst({
|
|
1857
|
+
where: { id: artifactId, buildId },
|
|
1858
|
+
});
|
|
1859
|
+
if (!artifact) return null;
|
|
1860
|
+
return {
|
|
1861
|
+
id: artifact.id,
|
|
1862
|
+
kind: artifact.kind,
|
|
1863
|
+
relativePath: artifact.relativePath,
|
|
1864
|
+
sizeBytes: artifact.sizeBytes,
|
|
1865
|
+
checksum: artifact.checksum,
|
|
1866
|
+
createdAt: artifact.createdAt.toISOString(),
|
|
1867
|
+
metadata: objectValue(
|
|
1868
|
+
parseJson(artifact.metadataJson, {}),
|
|
1869
|
+
"build artifact metadata",
|
|
1870
|
+
),
|
|
1871
|
+
};
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1568
1874
|
async prepareArtifactDownload(
|
|
1569
1875
|
buildId: string,
|
|
1570
1876
|
artifactId: string,
|
|
1571
1877
|
uploadId: string,
|
|
1878
|
+
timeoutMs = 170_000,
|
|
1572
1879
|
): Promise<void> {
|
|
1573
1880
|
const prisma = await getPrismaClient();
|
|
1574
1881
|
const artifact = await prisma.buildArtifact.findFirst({
|
|
@@ -1602,11 +1909,11 @@ export class BuildsService {
|
|
|
1602
1909
|
codebaseId,
|
|
1603
1910
|
},
|
|
1604
1911
|
idempotencyKey: `ios:artifact:download:${uploadId}`,
|
|
1605
|
-
timeoutSeconds:
|
|
1912
|
+
timeoutSeconds: Math.ceil(timeoutMs / 1_000) + 10,
|
|
1606
1913
|
visibility: "SYSTEM",
|
|
1607
1914
|
});
|
|
1608
1915
|
try {
|
|
1609
|
-
this.result(await this.waitForJob(job.id,
|
|
1916
|
+
this.result(await this.waitForJob(job.id, timeoutMs));
|
|
1610
1917
|
} finally {
|
|
1611
1918
|
await prisma.agentJob.deleteMany({
|
|
1612
1919
|
where: { id: job.id, visibility: "SYSTEM" },
|
|
@@ -1937,6 +2244,107 @@ export class BuildsService {
|
|
|
1937
2244
|
return updated;
|
|
1938
2245
|
}
|
|
1939
2246
|
|
|
2247
|
+
/**
|
|
2248
|
+
* Records artifacts an agent reported in a job result. Size, checksum, and
|
|
2249
|
+
* metadata are refreshed on conflict so that re-running a job against the same
|
|
2250
|
+
* relative path does not leave a stale checksum behind — downstream callers
|
|
2251
|
+
* key their download cache on it.
|
|
2252
|
+
*/
|
|
2253
|
+
private async upsertArtifacts(
|
|
2254
|
+
transaction: Prisma.TransactionClient,
|
|
2255
|
+
buildId: string,
|
|
2256
|
+
raw: unknown,
|
|
2257
|
+
) {
|
|
2258
|
+
for (const artifact of parseBuildArtifactSnapshots(raw)) {
|
|
2259
|
+
const values = {
|
|
2260
|
+
kind: artifact.kind,
|
|
2261
|
+
sizeBytes: artifact.sizeBytes,
|
|
2262
|
+
checksum: artifact.checksum,
|
|
2263
|
+
metadataJson: JSON.stringify(artifact.metadata),
|
|
2264
|
+
};
|
|
2265
|
+
await transaction.buildArtifact.upsert({
|
|
2266
|
+
where: {
|
|
2267
|
+
buildId_relativePath: {
|
|
2268
|
+
buildId,
|
|
2269
|
+
relativePath: artifact.relativePath,
|
|
2270
|
+
},
|
|
2271
|
+
},
|
|
2272
|
+
create: {
|
|
2273
|
+
id: randomUUID(),
|
|
2274
|
+
buildId,
|
|
2275
|
+
relativePath: artifact.relativePath,
|
|
2276
|
+
...values,
|
|
2277
|
+
},
|
|
2278
|
+
update: values,
|
|
2279
|
+
});
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
|
|
2283
|
+
private async upsertReportProjection(
|
|
2284
|
+
transaction: Prisma.TransactionClient,
|
|
2285
|
+
buildId: string,
|
|
2286
|
+
raw: unknown,
|
|
2287
|
+
source: "AUTOMATIC" | "MANUAL" | "WORKTREE",
|
|
2288
|
+
) {
|
|
2289
|
+
const report = objectValue(raw, "build report");
|
|
2290
|
+
if (report.kind !== "TEST_RESULTS" && report.kind !== "CODE_COVERAGE") {
|
|
2291
|
+
return;
|
|
2292
|
+
}
|
|
2293
|
+
const kind = report.kind;
|
|
2294
|
+
const artifactValue =
|
|
2295
|
+
report.artifact && typeof report.artifact === "object"
|
|
2296
|
+
? objectValue(report.artifact, "build report artifact")
|
|
2297
|
+
: null;
|
|
2298
|
+
const artifact =
|
|
2299
|
+
artifactValue && typeof artifactValue.relativePath === "string"
|
|
2300
|
+
? await transaction.buildArtifact.findUnique({
|
|
2301
|
+
where: {
|
|
2302
|
+
buildId_relativePath: {
|
|
2303
|
+
buildId,
|
|
2304
|
+
relativePath: artifactValue.relativePath,
|
|
2305
|
+
},
|
|
2306
|
+
},
|
|
2307
|
+
})
|
|
2308
|
+
: null;
|
|
2309
|
+
const status = report.status === "READY" ? "READY" : "FAILED";
|
|
2310
|
+
await transaction.buildReport.upsert({
|
|
2311
|
+
where: { buildId_kind: { buildId, kind } },
|
|
2312
|
+
create: {
|
|
2313
|
+
id: randomUUID(),
|
|
2314
|
+
buildId,
|
|
2315
|
+
artifactId: artifact?.id ?? null,
|
|
2316
|
+
kind,
|
|
2317
|
+
source,
|
|
2318
|
+
status,
|
|
2319
|
+
summaryJson: JSON.stringify(
|
|
2320
|
+
report.summary && typeof report.summary === "object"
|
|
2321
|
+
? report.summary
|
|
2322
|
+
: {},
|
|
2323
|
+
),
|
|
2324
|
+
dataJson: JSON.stringify(
|
|
2325
|
+
report.data && typeof report.data === "object" ? report.data : {},
|
|
2326
|
+
),
|
|
2327
|
+
error: typeof report.error === "string" ? report.error : null,
|
|
2328
|
+
finishedAt: new Date(),
|
|
2329
|
+
},
|
|
2330
|
+
update: {
|
|
2331
|
+
artifactId: artifact?.id ?? null,
|
|
2332
|
+
source,
|
|
2333
|
+
status,
|
|
2334
|
+
summaryJson: JSON.stringify(
|
|
2335
|
+
report.summary && typeof report.summary === "object"
|
|
2336
|
+
? report.summary
|
|
2337
|
+
: {},
|
|
2338
|
+
),
|
|
2339
|
+
dataJson: JSON.stringify(
|
|
2340
|
+
report.data && typeof report.data === "object" ? report.data : {},
|
|
2341
|
+
),
|
|
2342
|
+
error: typeof report.error === "string" ? report.error : null,
|
|
2343
|
+
finishedAt: new Date(),
|
|
2344
|
+
},
|
|
2345
|
+
});
|
|
2346
|
+
}
|
|
2347
|
+
|
|
1940
2348
|
private async projectBuildCompletion(job: {
|
|
1941
2349
|
id: string;
|
|
1942
2350
|
status: string;
|
|
@@ -2090,10 +2498,78 @@ export class BuildsService {
|
|
|
2090
2498
|
});
|
|
2091
2499
|
}
|
|
2092
2500
|
}
|
|
2501
|
+
if (Array.isArray(result.reports)) {
|
|
2502
|
+
for (const raw of result.reports) {
|
|
2503
|
+
const candidate =
|
|
2504
|
+
raw && typeof raw === "object" && !Array.isArray(raw)
|
|
2505
|
+
? (raw as JsonObject)
|
|
2506
|
+
: {};
|
|
2507
|
+
await this.upsertReportProjection(
|
|
2508
|
+
transaction,
|
|
2509
|
+
build.id,
|
|
2510
|
+
raw,
|
|
2511
|
+
candidate.kind === "CODE_COVERAGE" ? "WORKTREE" : "AUTOMATIC",
|
|
2512
|
+
);
|
|
2513
|
+
}
|
|
2514
|
+
}
|
|
2093
2515
|
});
|
|
2094
2516
|
this.publish(build.id);
|
|
2095
2517
|
}
|
|
2096
2518
|
|
|
2519
|
+
private async projectGeneratedReportCompletion(job: {
|
|
2520
|
+
id: string;
|
|
2521
|
+
status: string;
|
|
2522
|
+
payloadJson: string;
|
|
2523
|
+
resultJson: string | null;
|
|
2524
|
+
error: string | null;
|
|
2525
|
+
}) {
|
|
2526
|
+
const payload = objectValue(
|
|
2527
|
+
parseJson(job.payloadJson, {}),
|
|
2528
|
+
"build report payload",
|
|
2529
|
+
);
|
|
2530
|
+
if (typeof payload.buildId !== "string") return;
|
|
2531
|
+
const buildId = payload.buildId;
|
|
2532
|
+
const result = objectValue(
|
|
2533
|
+
parseJson(job.resultJson, {}),
|
|
2534
|
+
"build report result",
|
|
2535
|
+
);
|
|
2536
|
+
const prisma = await getPrismaClient();
|
|
2537
|
+
await prisma.$transaction(async (transaction) => {
|
|
2538
|
+
await this.upsertArtifacts(transaction, buildId, result.artifacts);
|
|
2539
|
+
if (result.report && typeof result.report === "object") {
|
|
2540
|
+
await this.upsertReportProjection(
|
|
2541
|
+
transaction,
|
|
2542
|
+
buildId,
|
|
2543
|
+
result.report,
|
|
2544
|
+
payload.source === "WORKTREE" ? "WORKTREE" : "MANUAL",
|
|
2545
|
+
);
|
|
2546
|
+
} else {
|
|
2547
|
+
const kind =
|
|
2548
|
+
payload.reportKind === "CODE_COVERAGE"
|
|
2549
|
+
? "CODE_COVERAGE"
|
|
2550
|
+
: "TEST_RESULTS";
|
|
2551
|
+
await transaction.buildReport.upsert({
|
|
2552
|
+
where: { buildId_kind: { buildId, kind } },
|
|
2553
|
+
create: {
|
|
2554
|
+
id: randomUUID(),
|
|
2555
|
+
buildId,
|
|
2556
|
+
kind,
|
|
2557
|
+
source: payload.source === "WORKTREE" ? "WORKTREE" : "MANUAL",
|
|
2558
|
+
status: "FAILED",
|
|
2559
|
+
error: job.error || "Report generation failed",
|
|
2560
|
+
finishedAt: new Date(),
|
|
2561
|
+
},
|
|
2562
|
+
update: {
|
|
2563
|
+
status: "FAILED",
|
|
2564
|
+
error: job.error || "Report generation failed",
|
|
2565
|
+
finishedAt: new Date(),
|
|
2566
|
+
},
|
|
2567
|
+
});
|
|
2568
|
+
}
|
|
2569
|
+
});
|
|
2570
|
+
this.publish(buildId);
|
|
2571
|
+
}
|
|
2572
|
+
|
|
2097
2573
|
private async projectDeploymentCompletion(job: {
|
|
2098
2574
|
id: string;
|
|
2099
2575
|
status: string;
|
|
@@ -2166,23 +2642,29 @@ export class BuildsService {
|
|
|
2166
2642
|
job.status === "SUCCEEDED" &&
|
|
2167
2643
|
typeof result.outputRelativePath === "string"
|
|
2168
2644
|
) {
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2645
|
+
const outputRelativePath = result.outputRelativePath;
|
|
2646
|
+
// One transaction so a subscriber woken by publish() never observes the
|
|
2647
|
+
// export directory without the IPA that was exported into it.
|
|
2648
|
+
await prisma.$transaction(async (transaction) => {
|
|
2649
|
+
await transaction.buildArtifact.upsert({
|
|
2650
|
+
where: {
|
|
2651
|
+
buildId_relativePath: {
|
|
2652
|
+
buildId: row.buildId,
|
|
2653
|
+
relativePath: outputRelativePath,
|
|
2654
|
+
},
|
|
2655
|
+
},
|
|
2656
|
+
create: {
|
|
2657
|
+
id: randomUUID(),
|
|
2172
2658
|
buildId: row.buildId,
|
|
2173
|
-
|
|
2659
|
+
kind: "EXPORT",
|
|
2660
|
+
relativePath: outputRelativePath,
|
|
2661
|
+
sizeBytes:
|
|
2662
|
+
typeof result.sizeBytes === "number" ? result.sizeBytes : null,
|
|
2663
|
+
metadataJson: JSON.stringify({ exportId: row.id }),
|
|
2174
2664
|
},
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
buildId: row.buildId,
|
|
2179
|
-
kind: "EXPORT",
|
|
2180
|
-
relativePath: result.outputRelativePath,
|
|
2181
|
-
sizeBytes:
|
|
2182
|
-
typeof result.sizeBytes === "number" ? result.sizeBytes : null,
|
|
2183
|
-
metadataJson: JSON.stringify({ exportId: row.id }),
|
|
2184
|
-
},
|
|
2185
|
-
update: {},
|
|
2665
|
+
update: {},
|
|
2666
|
+
});
|
|
2667
|
+
await this.upsertArtifacts(transaction, row.buildId, result.artifacts);
|
|
2186
2668
|
});
|
|
2187
2669
|
}
|
|
2188
2670
|
this.publish(row.buildId);
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},778568,e=>{"use strict";e.s(["EvalFlags",0,{JS_EVAL_TYPE_GLOBAL:0,JS_EVAL_TYPE_MODULE:1,JS_EVAL_TYPE_DIRECT:2,JS_EVAL_TYPE_INDIRECT:3,JS_EVAL_TYPE_MASK:3,JS_EVAL_FLAG_STRICT:8,JS_EVAL_FLAG_STRIP:16,JS_EVAL_FLAG_COMPILE_ONLY:32,JS_EVAL_FLAG_BACKTRACE_BARRIER:64},"GetOwnPropertyNamesFlags",0,{JS_GPN_STRING_MASK:1,JS_GPN_SYMBOL_MASK:2,JS_GPN_PRIVATE_MASK:4,JS_GPN_ENUM_ONLY:16,JS_GPN_SET_ENUM:32,QTS_GPN_NUMBER_MASK:64,QTS_STANDARD_COMPLIANT_NUMBER:128},"IntrinsicsFlags",0,{BaseObjects:1,Date:2,Eval:4,StringNormalize:8,RegExp:16,RegExpCompiler:32,JSON:64,Proxy:128,MapSet:256,TypedArrays:512,Promise:1024,BigInt:2048,BigFloat:4096,BigDecimal:8192,OperatorOverloading:16384,BignumExt:32768},"IsEqualOp",0,{IsStrictlyEqual:0,IsSameValue:1,IsSameValueZero:2},"JSPromiseStateEnum",0,{Pending:0,Fulfilled:1,Rejected:2},"assertSync",0,function(e){return function(...t){let r=e(...t);if(r&&"object"==typeof r&&r instanceof Promise)throw Error("Function unexpectedly returned a Promise");return r}}])},215402,e=>{"use strict";var t=e.i(469064),r=class extends t.QuickJSContext{async evalCodeAsync(e,r="eval.js",s){let i=+(void 0===s),a=(0,t.evalOptionsToFlags)(s),n=0;try{n=await this.memory.newHeapCharPointer(e).consume(e=>this.ffi.QTS_Eval_MaybeAsync(this.ctx.value,e.value.ptr,e.value.strlen,r,i,a))}catch(e){throw this.runtime.debugLog("QTS_Eval_MaybeAsync threw",e),e}let o=this.ffi.QTS_ResolveException(this.ctx.value,n);return o?(this.ffi.QTS_FreeValuePointer(this.ctx.value,n),this.fail(this.memory.heapValueHandle(o))):this.success(this.memory.heapValueHandle(n))}newAsyncifiedFunction(e,t){return this.newFunction(e,t)}},s=class extends t.QuickJSRuntime{constructor(e){super(e)}newContext(e={}){let s=(0,t.intrinsicsToFlags)(e.intrinsics),i=new t.Lifetime(this.ffi.QTS_NewContext(this.rt.value,s),void 0,e=>{this.contextMap.delete(e),this.callbacks.deleteContext(e),this.ffi.QTS_FreeContext(e)}),a=new r({module:this.module,ctx:i,ffi:this.ffi,rt:this.rt,ownedLifetimes:[],runtime:this,callbacks:this.callbacks});return this.contextMap.set(i.value,a),a}setModuleLoader(e,t){super.setModuleLoader(e,t)}setMaxStackSize(e){return super.setMaxStackSize(e)}},i=class extends t.QuickJSWASMModule{constructor(e,t){super(e,t),this.ffi=t,this.module=e}newRuntime(e={}){let r=new t.Lifetime(this.ffi.QTS_NewRuntime(),void 0,e=>{this.callbacks.deleteRuntime(e),this.ffi.QTS_FreeRuntime(e)}),i=new s({module:this.module,ffi:this.ffi,rt:r,callbacks:this.callbacks});return(0,t.applyBaseRuntimeOptions)(i,e),e.moduleLoader&&i.setModuleLoader(e.moduleLoader),i}newContext(e={}){let t=this.newRuntime(),r=e.ownedLifetimes?e.ownedLifetimes.concat([t]):[t],s=t.newContext({...e,ownedLifetimes:r});return t.context=s,s}evalCode(){throw new t.QuickJSNotImplemented("QuickJSWASMModuleAsyncify.evalCode: use evalCodeAsync instead")}evalCodeAsync(e,r){return t.Scope.withScopeAsync(async s=>{let i=s.manage(this.newContext());(0,t.applyModuleEvalRuntimeOptions)(i.runtime,r);let a=await i.evalCodeAsync(e,"eval.js");if(void 0!==r.memoryLimitBytes&&i.runtime.setMemoryLimit(-1),a.error)throw i.dump(s.manage(a.error));return i.dump(s.manage(a.value))})}};e.s(["QuickJSAsyncContext",0,r,"QuickJSAsyncRuntime",0,s,"QuickJSAsyncWASMModule",0,i])},210749,e=>{"use strict";var t=Object.defineProperty,r=Object.getOwnPropertyNames,s=e.z;e.s(["__commonJS",0,(e,t)=>function(){return t||(0,e[r(e)[0]])((t={exports:{}}).exports,t),t.exports},"__publicField",0,(e,r,s)=>{let i;return(i="symbol"!=typeof r?r+"":r)in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[i]=s},"__require",0,s])},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},59639,(e,t,r)=>{t.exports=e.x("node:process",()=>require("node:process"))},462711,651212,316552,e=>{"use strict";var t=e.i(750227);e.s(["minpath",()=>t.default],462711);var r=e.i(59639);e.s(["minproc",()=>r.default],651212);var s=e.i(857764);e.s(["urlToPath",()=>s.fileURLToPath],316552)},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},406461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},785148,(e,t,r)=>{t.exports=e.x("better-sqlite3-90e2652d1716b047",()=>require("better-sqlite3-90e2652d1716b047"))},784941,(e,t,r)=>{t.exports=e.x("@prisma/client-2c3a283f134fdcb6/runtime/client",()=>require("@prisma/client-2c3a283f134fdcb6/runtime/client"))},254799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},921517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},524836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},792509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,r)=>{t.exports=e.x("tls",()=>require("tls"))},449719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},870722,(e,t,r)=>{t.exports=e.x("tty",()=>require("tty"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},925328,(e,t,r)=>{t.exports=e.x("http2",()=>require("http2"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},188646,(e,t,r)=>{t.exports=e.x("node:stream/promises",()=>require("node:stream/promises"))},503675,e=>{"use strict";var t=e.i(902157),r=e.i(912714),s=e.i(660526),i=e.i(750227),a=e.i(81111),n=e.i(188646);let o=globalThis,l=o.buildArtifactTransfers??(o.buildArtifactTransfers=new Map);function u(e,t){let r=l.get(e);r&&(l.delete(e),clearTimeout(r.timeout),r.reject(t instanceof Error?t:Error(String(t))))}async function d(e,o,d){let c=l.get(e);if(!c||c.agentId!==o)throw Error("Artifact upload is not expected");if(!d.body)throw Error("Artifact upload body is required");let p=(0,i.join)((0,s.tmpdir)(),`ade-build-artifact-upload-${e}`);try{await (0,n.pipeline)(a.Readable.fromWeb(d.body),(0,t.createWriteStream)(p,{mode:384}));let r=d.headers.get("x-artifact-filename")??"artifact",s="artifact";try{s=decodeURIComponent(r)}catch{}l.delete(e),clearTimeout(c.timeout);let i=d.headers.get("content-length");c.resolve({path:p,filename:s,contentType:d.headers.get("content-type")??"application/octet-stream",size:null!==i&&Number.isFinite(Number(i))?Number(i):null})}catch(t){throw await (0,r.rm)(p,{force:!0}),u(e,t),t}}e.s(["cancelArtifactTransfer",0,u,"expectArtifactTransfer",0,function(e,t){return new Promise((r,s)=>{let i=setTimeout(()=>{l.delete(e),s(Error("The agent did not upload the artifact in time"))},17e4);i.unref(),l.set(e,{agentId:t,resolve:r,reject:s,timeout:i})})},"receiveArtifactTransfer",0,d])},448650,e=>{"use strict";var t=e.i(747909),r=e.i(174017),s=e.i(996250),i=e.i(759756),a=e.i(561916),n=e.i(174677),o=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),m=e.i(570101),_=e.i(626937),f=e.i(10372),h=e.i(193695);e.i(820232);var x=e.i(600220),v=e.i(666680),y=e.i(902157),w=e.i(912714),g=e.i(81111),R=e.i(503675),b=e.i(887394);async function S(e,t){let r=(0,v.randomUUID)();try{var s;let e,{buildId:i,artifactId:a}=await t.params,n=(0,b.getServerServices)(),o=await n.buildsService.getBuild(i);if(!o?.agentId)return new Response("Build agent is unavailable",{status:409});let l=(0,R.expectArtifactTransfer)(r,o.agentId),[u]=await Promise.all([l,n.buildsService.prepareArtifactDownload(i,a,r)]),d=(0,y.createReadStream)(u.path);return d.once("close",()=>void(0,w.rm)(u.path,{force:!0})),new Response(g.Readable.toWeb(d),{headers:{"content-disposition":(e=(s=u.filename).replace(/["\r\n]/g,"_"),`attachment; filename="${e}"; filename*=UTF-8''${encodeURIComponent(s)}`),...null===u.size?{}:{"content-length":String(u.size)},"content-type":u.contentType}})}catch(t){(0,R.cancelArtifactTransfer)(r,t);let e=t instanceof Error?t.message:String(t);if(/not found/i.test(e))return new Response("Artifact not found",{status:404});if(/offline|unavailable|must be updated/i.test(e))return new Response(e,{status:409});return console.error("Build artifact download failed:",t),new Response("Could not download artifact",{status:500})}}e.s(["GET",0,S,"maxDuration",0,180,"runtime",0,"nodejs"],977498);var E=e.i(977498);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/builds/[buildId]/artifacts/[artifactId]/route",pathname:"/api/builds/[buildId]/artifacts/[artifactId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/builds/[buildId]/artifacts/[artifactId]/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:T,workUnitAsyncStorage:P,serverHooks:j}=A;async function q(e,t,s){s.requestMeta&&(0,i.setRequestMeta)(e,s.requestMeta),A.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/builds/[buildId]/artifacts/[artifactId]/route";v=v.replace(/\/index$/,"")||"/";let y=await A.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:w,deploymentId:g,params:R,nextConfig:b,parsedUrl:S,isDraftMode:E,prerenderManifest:T,routerServerContext:P,isOnDemandRevalidate:j,revalidateOnlyGenerated:q,resolvedPathname:k,clientReferenceManifest:C,serverActionsManifest:N}=y,I=(0,o.normalizeAppPath)(v),M=!!(T.dynamicRoutes[I]||T.routes[k]),L=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,S,!1):t.end("This page could not be found"),null);if(M&&!E){let e=!!T.routes[k],t=T.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await L();throw new h.NoFallbackError}}let O=null;!M||A.isDev||E||(O="/index"===(O=k)?"/":O);let U=!0===A.isDev||!M,F=M&&!U;N&&C&&(0,n.setManifestsSingleton)({page:v,clientReferenceManifest:C,serverActionsManifest:N});let J=e.method||"GET",B=(0,a.getTracer)(),D=B.getActiveScopeSpan(),H=!!(null==P?void 0:P.isWrappedByNextServer),G=!!(0,i.getRequestMeta)(e,"minimalMode"),Q=(0,i.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,b,T,G);null==Q||Q.resetRequestCache(),globalThis.__incrementalCache=Q;let V={params:R,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:U,incrementalCache:Q,cacheLifeProfiles:b.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,i)=>A.onRequestError(e,t,s,i,P)},sharedContext:{buildId:w,deploymentId:g}},K=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),$=u.NextRequestAdapter.fromNodeNextRequest(K,(0,u.signalFromNodeResponse)(t));try{let i,n=async e=>A.handle($,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${J} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",s),i.updateName(t))}else e.updateName(`${J} ${v}`)}),o=async i=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!G&&j&&q&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await n(i);e.fetchMetrics=V.renderOpts.fetchMetrics;let o=V.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=V.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(K,z,a,V.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,s=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:j})},!1,P),t}},u=await A.handleResponse({req:e,nextConfig:b,cacheKey:O,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:q,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:G});if(!M)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",j?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return G&&M||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,_.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(K,z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};H&&D?await o(D):(i=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${J} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":J,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof h.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:j})},!1,P),M)throw t;return await (0,p.sendResponse)(K,z,new Response(null,{status:500})),null}}e.s(["handler",0,q,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:P})},"routeModule",0,A,"serverHooks",0,j,"workAsyncStorage",0,T,"workUnitAsyncStorage",0,P],448650)},916005,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_node_buffer_00a6lhv._.js"].map(t=>e.l(t))).then(()=>t(951615)))},408839,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_@prisma_client_runtime_query_compiler_fast_bg_sqlite_mjs_15lig9w._.js"].map(t=>e.l(t))).then(()=>t(53315)))},900998,e=>{e.v(t=>Promise.all(["server/chunks/0d-b_@prisma_client_runtime_query_compiler_fast_bg_sqlite_wasm-base64_mjs_1jb9bv_._.js"].map(t=>e.l(t))).then(()=>t(699802)))},68797,e=>{e.v(e=>Promise.resolve().then(()=>e(81111)))},465520,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_@jitl_quickjs-wasmfile-debug-asyncify_dist_ffi_mjs_144ckx_._.js"].map(t=>e.l(t))).then(()=>t(437918)))},250588,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0-ypkf7._.js","server/chunks/1daa_@jitl_quickjs-wasmfile-debug-asyncify_dist_emscripten-module_mjs_1u58-9a._.js"].map(t=>e.l(t))).then(()=>t(452979)))},835153,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_@jitl_quickjs-wasmfile-debug-sync_dist_ffi_mjs_06ojbau._.js"].map(t=>e.l(t))).then(()=>t(896934)))},591520,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__15aat79._.js","server/chunks/1q96_modules_@jitl_quickjs-wasmfile-debug-sync_dist_emscripten-module_mjs_1bzxzsr._.js"].map(t=>e.l(t))).then(()=>t(355384)))},329313,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_@jitl_quickjs-wasmfile-release-asyncify_dist_ffi_mjs_1cj0ga-._.js"].map(t=>e.l(t))).then(()=>t(497569)))},529413,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1wtng3p._.js"].map(t=>e.l(t))).then(()=>t(790919)))},175367,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_@jitl_quickjs-wasmfile-release-sync_dist_ffi_mjs_0ge8g9f._.js"].map(t=>e.l(t))).then(()=>t(644796)))},674591,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__09skp6r._.js"].map(t=>e.l(t))).then(()=>t(984782)))},969484,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_quickjs-emscripten-core_dist_module-ES6BEMUI_mjs_145exi1._.js"].map(t=>e.l(t))).then(()=>t(807057)))},706986,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_quickjs-emscripten-core_dist_module-asyncify-2EFITU5U_mjs_0eswnkg._.js"].map(t=>e.l(t))).then(()=>t(741366)))},323970,e=>{e.v(e=>Promise.resolve().then(()=>e(522734)))},589793,e=>{e.v(e=>Promise.resolve().then(()=>e(814747)))},628028,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_extended-markdown-adf-parser_dist_js-yaml-GWBS3D3U_mjs_1anug9s._.js"].map(t=>e.l(t))).then(()=>t(591073)))},70729,e=>{e.v(e=>Promise.resolve().then(()=>e(666680)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__02vqwey._.js.map
|