@ai-development-environment/server 0.0.28 → 0.0.30

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.
Files changed (402) hide show
  1. package/package.json +1 -1
  2. package/prisma-runtime/prisma/migrations/20260718220000_add_build_freshness/migration.sql +1 -0
  3. package/prisma-runtime/prisma/migrations/20260719010000_add_build_reports/migration.sql +29 -0
  4. package/prisma-runtime/prisma/schema.prisma +24 -0
  5. package/standalone/.next/BUILD_ID +1 -1
  6. package/standalone/.next/app-path-routes-manifest.json +2 -0
  7. package/standalone/.next/build-manifest.json +6 -6
  8. package/standalone/.next/prerender-manifest.json +3 -3
  9. package/standalone/.next/routes-manifest.json +17 -0
  10. package/standalone/.next/server/app/[locale]/actions/page/build-manifest.json +3 -3
  11. package/standalone/.next/server/app/[locale]/actions/page.js.nft.json +1 -1
  12. package/standalone/.next/server/app/[locale]/actions/page_client-reference-manifest.js +1 -1
  13. package/standalone/.next/server/app/[locale]/agents/[id]/page/build-manifest.json +3 -3
  14. package/standalone/.next/server/app/[locale]/agents/[id]/page.js.nft.json +1 -1
  15. package/standalone/.next/server/app/[locale]/agents/[id]/page_client-reference-manifest.js +1 -1
  16. package/standalone/.next/server/app/[locale]/agents/page/build-manifest.json +3 -3
  17. package/standalone/.next/server/app/[locale]/agents/page.js.nft.json +1 -1
  18. package/standalone/.next/server/app/[locale]/agents/page_client-reference-manifest.js +1 -1
  19. package/standalone/.next/server/app/[locale]/build-data/page/build-manifest.json +3 -3
  20. package/standalone/.next/server/app/[locale]/build-data/page.js.nft.json +1 -1
  21. package/standalone/.next/server/app/[locale]/build-data/page_client-reference-manifest.js +1 -1
  22. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/app-paths-manifest.json +3 -0
  23. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/build-manifest.json +16 -0
  24. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/next-font-manifest.json +11 -0
  25. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/react-loadable-manifest.json +1 -0
  26. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page/server-reference-manifest.json +4 -0
  27. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page.js +16 -0
  28. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page.js.map +5 -0
  29. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page.js.nft.json +1 -0
  30. package/standalone/.next/server/app/[locale]/builds/[buildId]/coverage/page_client-reference-manifest.js +3 -0
  31. package/standalone/.next/server/app/[locale]/builds/[buildId]/page/build-manifest.json +3 -3
  32. package/standalone/.next/server/app/[locale]/builds/[buildId]/page.js.nft.json +1 -1
  33. package/standalone/.next/server/app/[locale]/builds/[buildId]/page_client-reference-manifest.js +1 -1
  34. package/standalone/.next/server/app/[locale]/builds/page/build-manifest.json +3 -3
  35. package/standalone/.next/server/app/[locale]/builds/page.js.nft.json +1 -1
  36. package/standalone/.next/server/app/[locale]/builds/page_client-reference-manifest.js +1 -1
  37. package/standalone/.next/server/app/[locale]/codebases/[codebaseId]/page/build-manifest.json +3 -3
  38. package/standalone/.next/server/app/[locale]/codebases/[codebaseId]/page.js.nft.json +1 -1
  39. package/standalone/.next/server/app/[locale]/codebases/[codebaseId]/page_client-reference-manifest.js +1 -1
  40. package/standalone/.next/server/app/[locale]/codebases/page/build-manifest.json +3 -3
  41. package/standalone/.next/server/app/[locale]/codebases/page.js.nft.json +1 -1
  42. package/standalone/.next/server/app/[locale]/codebases/page_client-reference-manifest.js +1 -1
  43. package/standalone/.next/server/app/[locale]/codebases/repositories/[repositoryId]/page/build-manifest.json +3 -3
  44. package/standalone/.next/server/app/[locale]/codebases/repositories/[repositoryId]/page.js.nft.json +1 -1
  45. package/standalone/.next/server/app/[locale]/codebases/repositories/[repositoryId]/page_client-reference-manifest.js +1 -1
  46. package/standalone/.next/server/app/[locale]/comments/page/build-manifest.json +3 -3
  47. package/standalone/.next/server/app/[locale]/comments/page.js.nft.json +1 -1
  48. package/standalone/.next/server/app/[locale]/comments/page_client-reference-manifest.js +1 -1
  49. package/standalone/.next/server/app/[locale]/jira/cache/page/build-manifest.json +3 -3
  50. package/standalone/.next/server/app/[locale]/jira/cache/page.js.nft.json +1 -1
  51. package/standalone/.next/server/app/[locale]/jira/cache/page_client-reference-manifest.js +1 -1
  52. package/standalone/.next/server/app/[locale]/jira/cache/tickets/[issueKey]/page/build-manifest.json +3 -3
  53. package/standalone/.next/server/app/[locale]/jira/cache/tickets/[issueKey]/page.js.nft.json +1 -1
  54. package/standalone/.next/server/app/[locale]/jira/cache/tickets/[issueKey]/page_client-reference-manifest.js +1 -1
  55. package/standalone/.next/server/app/[locale]/jira/tickets/[issueKey]/page/build-manifest.json +3 -3
  56. package/standalone/.next/server/app/[locale]/jira/tickets/[issueKey]/page.js.nft.json +1 -1
  57. package/standalone/.next/server/app/[locale]/jira/tickets/[issueKey]/page_client-reference-manifest.js +1 -1
  58. package/standalone/.next/server/app/[locale]/jira/tickets/page/build-manifest.json +3 -3
  59. package/standalone/.next/server/app/[locale]/jira/tickets/page.js.nft.json +1 -1
  60. package/standalone/.next/server/app/[locale]/jira/tickets/page_client-reference-manifest.js +1 -1
  61. package/standalone/.next/server/app/[locale]/jobs/[jobId]/page/build-manifest.json +3 -3
  62. package/standalone/.next/server/app/[locale]/jobs/[jobId]/page.js.nft.json +1 -1
  63. package/standalone/.next/server/app/[locale]/jobs/[jobId]/page_client-reference-manifest.js +1 -1
  64. package/standalone/.next/server/app/[locale]/page/build-manifest.json +3 -3
  65. package/standalone/.next/server/app/[locale]/page.js.nft.json +1 -1
  66. package/standalone/.next/server/app/[locale]/page_client-reference-manifest.js +1 -1
  67. package/standalone/.next/server/app/[locale]/pull-requests/[owner]/[repository]/[number]/page/build-manifest.json +3 -3
  68. package/standalone/.next/server/app/[locale]/pull-requests/[owner]/[repository]/[number]/page.js.nft.json +1 -1
  69. package/standalone/.next/server/app/[locale]/pull-requests/[owner]/[repository]/[number]/page_client-reference-manifest.js +1 -1
  70. package/standalone/.next/server/app/[locale]/pull-requests/page/build-manifest.json +3 -3
  71. package/standalone/.next/server/app/[locale]/pull-requests/page.js.nft.json +1 -1
  72. package/standalone/.next/server/app/[locale]/pull-requests/page_client-reference-manifest.js +1 -1
  73. package/standalone/.next/server/app/[locale]/settings/page/build-manifest.json +3 -3
  74. package/standalone/.next/server/app/[locale]/settings/page.js.nft.json +1 -1
  75. package/standalone/.next/server/app/[locale]/settings/page_client-reference-manifest.js +1 -1
  76. package/standalone/.next/server/app/[locale]/skills/[skillId]/page/build-manifest.json +3 -3
  77. package/standalone/.next/server/app/[locale]/skills/[skillId]/page.js.nft.json +1 -1
  78. package/standalone/.next/server/app/[locale]/skills/[skillId]/page_client-reference-manifest.js +1 -1
  79. package/standalone/.next/server/app/[locale]/skills/groups/[groupId]/page/build-manifest.json +3 -3
  80. package/standalone/.next/server/app/[locale]/skills/groups/[groupId]/page.js.nft.json +1 -1
  81. package/standalone/.next/server/app/[locale]/skills/groups/[groupId]/page_client-reference-manifest.js +1 -1
  82. package/standalone/.next/server/app/[locale]/skills/groups/page/build-manifest.json +3 -3
  83. package/standalone/.next/server/app/[locale]/skills/groups/page.js.nft.json +1 -1
  84. package/standalone/.next/server/app/[locale]/skills/groups/page_client-reference-manifest.js +1 -1
  85. package/standalone/.next/server/app/[locale]/skills/page/build-manifest.json +3 -3
  86. package/standalone/.next/server/app/[locale]/skills/page.js.nft.json +1 -1
  87. package/standalone/.next/server/app/[locale]/skills/page_client-reference-manifest.js +1 -1
  88. package/standalone/.next/server/app/[locale]/skills/sync/[runId]/page/build-manifest.json +3 -3
  89. package/standalone/.next/server/app/[locale]/skills/sync/[runId]/page.js.nft.json +1 -1
  90. package/standalone/.next/server/app/[locale]/skills/sync/[runId]/page_client-reference-manifest.js +1 -1
  91. package/standalone/.next/server/app/[locale]/tools/page/build-manifest.json +3 -3
  92. package/standalone/.next/server/app/[locale]/tools/page.js.nft.json +1 -1
  93. package/standalone/.next/server/app/[locale]/tools/page_client-reference-manifest.js +1 -1
  94. package/standalone/.next/server/app/[locale]/usage/page/build-manifest.json +3 -3
  95. package/standalone/.next/server/app/[locale]/usage/page.js.nft.json +1 -1
  96. package/standalone/.next/server/app/[locale]/usage/page_client-reference-manifest.js +1 -1
  97. package/standalone/.next/server/app/[locale]/worktrees/[worktreeId]/page/build-manifest.json +3 -3
  98. package/standalone/.next/server/app/[locale]/worktrees/[worktreeId]/page.js.nft.json +1 -1
  99. package/standalone/.next/server/app/[locale]/worktrees/[worktreeId]/page_client-reference-manifest.js +1 -1
  100. package/standalone/.next/server/app/[locale]/worktrees/page/build-manifest.json +3 -3
  101. package/standalone/.next/server/app/[locale]/worktrees/page.js.nft.json +1 -1
  102. package/standalone/.next/server/app/[locale]/worktrees/page_client-reference-manifest.js +1 -1
  103. package/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
  104. package/standalone/.next/server/app/_global-error.html +1 -1
  105. package/standalone/.next/server/app/_global-error.rsc +1 -1
  106. package/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  107. package/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  108. package/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  109. package/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  110. package/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  111. package/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
  112. package/standalone/.next/server/app/_not-found.html +1 -1
  113. package/standalone/.next/server/app/_not-found.rsc +1 -1
  114. package/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  115. package/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  116. package/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  117. package/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  118. package/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  119. package/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  120. package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js +2 -2
  121. package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js.nft.json +1 -1
  122. package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/route.js +2 -2
  123. package/standalone/.next/server/app/api/builds/[buildId]/artifacts/[artifactId]/route.js.nft.json +1 -1
  124. package/standalone/.next/server/app/api/codebases/by-path/route.js +2 -2
  125. package/standalone/.next/server/app/api/codebases/by-path/route.js.nft.json +1 -1
  126. package/standalone/.next/server/app/api/codebases/route.js +2 -2
  127. package/standalone/.next/server/app/api/codebases/route.js.nft.json +1 -1
  128. package/standalone/.next/server/app/api/graphql/route.js +2 -2
  129. package/standalone/.next/server/app/api/graphql/route.js.nft.json +1 -1
  130. package/standalone/.next/server/app/api/mcp/route.js +2 -2
  131. package/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  132. package/standalone/.next/server/app/api/tools/call/route.js +2 -2
  133. package/standalone/.next/server/app/api/tools/call/route.js.nft.json +1 -1
  134. package/standalone/.next/server/app/api/tools/catalog/route.js +2 -2
  135. package/standalone/.next/server/app/api/tools/catalog/route.js.nft.json +1 -1
  136. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route/app-paths-manifest.json +3 -0
  137. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route/build-manifest.json +9 -0
  138. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route/server-reference-manifest.json +4 -0
  139. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js +10 -0
  140. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js.map +5 -0
  141. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js.nft.json +1 -0
  142. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route_client-reference-manifest.js +3 -0
  143. package/standalone/.next/server/app-paths-manifest.json +2 -0
  144. package/standalone/.next/server/chunks/1oeh_server_app_api_worktrees_[worktreeId]_diff-image_route_actions_0nie5n3.js +3 -0
  145. package/standalone/.next/server/chunks/{[root-of-the-server]__1iv83x0._.js → [root-of-the-server]__0-ypkf7._.js} +1 -1
  146. package/standalone/.next/server/chunks/{[root-of-the-server]__08w_8a-._.js → [root-of-the-server]__00ku6-v._.js} +1 -1
  147. package/standalone/.next/server/chunks/{[root-of-the-server]__0yfvw4a._.js → [root-of-the-server]__0138gz-._.js} +1 -1
  148. package/standalone/.next/server/chunks/{[root-of-the-server]__0r5s0h6._.js → [root-of-the-server]__02vqwey._.js} +2 -2
  149. package/standalone/.next/server/chunks/{[root-of-the-server]__098f8w4._.js → [root-of-the-server]__056cnsc._.js} +1 -1
  150. package/standalone/.next/server/chunks/{[root-of-the-server]__1l6ed2g._.js → [root-of-the-server]__08mfybr._.js} +2 -2
  151. package/standalone/.next/server/chunks/{[root-of-the-server]__0cs2bfc._.js → [root-of-the-server]__08u874i._.js} +1 -1
  152. package/standalone/.next/server/chunks/{[root-of-the-server]__01h2pl1._.js → [root-of-the-server]__09skp6r._.js} +1 -1
  153. package/standalone/.next/server/chunks/{[root-of-the-server]__1mgcft0._.js → [root-of-the-server]__09v6swg._.js} +1 -1
  154. package/standalone/.next/server/chunks/{[root-of-the-server]__0h0mvv8._.js → [root-of-the-server]__0aiyd05._.js} +1 -1
  155. package/standalone/.next/server/chunks/{[root-of-the-server]__14-aq4c._.js → [root-of-the-server]__0cyubup._.js} +1 -1
  156. package/standalone/.next/server/chunks/{[root-of-the-server]__0_l5rqe._.js → [root-of-the-server]__0da1wsf._.js} +1 -1
  157. package/standalone/.next/server/chunks/[root-of-the-server]__0e1fqyr._.js +3 -0
  158. package/standalone/.next/server/chunks/{[root-of-the-server]__1frrx8s._.js → [root-of-the-server]__0f3ptor._.js} +2 -2
  159. package/standalone/.next/server/chunks/{[root-of-the-server]__0k01mi-._.js → [root-of-the-server]__0fih0li._.js} +1 -1
  160. package/standalone/.next/server/chunks/{[root-of-the-server]__02qjyhj._.js → [root-of-the-server]__0g0tnct._.js} +1 -1
  161. package/standalone/.next/server/chunks/{[root-of-the-server]__1ehdq4c._.js → [root-of-the-server]__0gbor-2._.js} +1 -1
  162. package/standalone/.next/server/chunks/{[root-of-the-server]__09lyzw2._.js → [root-of-the-server]__0mj6qcr._.js} +2 -2
  163. package/standalone/.next/server/chunks/{[root-of-the-server]__14uwobw._.js → [root-of-the-server]__0p_h088._.js} +1 -1
  164. package/standalone/.next/server/chunks/[root-of-the-server]__0rwpsai._.js +3 -0
  165. package/standalone/.next/server/chunks/{[root-of-the-server]__0i4bd9d._.js → [root-of-the-server]__0vvjqp5._.js} +1 -1
  166. package/standalone/.next/server/chunks/{[root-of-the-server]__04rx7b9._.js → [root-of-the-server]__0w20bq-._.js} +2 -2
  167. package/standalone/.next/server/chunks/{[root-of-the-server]__0hmrx3m._.js → [root-of-the-server]__0wf0pka._.js} +1 -1
  168. package/standalone/.next/server/chunks/{[root-of-the-server]__0nxj1ky._.js → [root-of-the-server]__0wg2umj._.js} +1 -1
  169. package/standalone/.next/server/chunks/{[root-of-the-server]__17bgip6._.js → [root-of-the-server]__0xa_els._.js} +1 -1
  170. package/standalone/.next/server/chunks/{[root-of-the-server]__0wx4-1l._.js → [root-of-the-server]__0xukz2x._.js} +2 -2
  171. package/standalone/.next/server/chunks/[root-of-the-server]__0zyqmd4._.js +122 -0
  172. package/standalone/.next/server/chunks/[root-of-the-server]__1-z6lg_._.js +3 -0
  173. package/standalone/.next/server/chunks/{[root-of-the-server]__0kxltc8._.js → [root-of-the-server]__15_clsj._.js} +1 -1
  174. package/standalone/.next/server/chunks/{[root-of-the-server]__020ggc3._.js → [root-of-the-server]__15aat79._.js} +1 -1
  175. package/standalone/.next/server/chunks/{[root-of-the-server]__00_-x1w._.js → [root-of-the-server]__15bbm2q._.js} +2 -2
  176. package/standalone/.next/server/chunks/{[root-of-the-server]__09c7zmy._.js → [root-of-the-server]__16l4wed._.js} +1 -1
  177. package/standalone/.next/server/chunks/{[root-of-the-server]__04hrhu3._.js → [root-of-the-server]__19zwwdv._.js} +1 -1
  178. package/standalone/.next/server/chunks/{[root-of-the-server]__0d4_f1e._.js → [root-of-the-server]__1a5_am-._.js} +1 -1
  179. package/standalone/.next/server/chunks/[root-of-the-server]__1ajaiy1._.js +3 -0
  180. package/standalone/.next/server/chunks/[root-of-the-server]__1dtlzq1._.js +3 -0
  181. package/standalone/.next/server/chunks/[root-of-the-server]__1kpqohm._.js +3 -0
  182. package/standalone/.next/server/chunks/[root-of-the-server]__1l7234r._.js +3 -0
  183. package/standalone/.next/server/chunks/{[root-of-the-server]__0c02fce._.js → [root-of-the-server]__1oa-sy6._.js} +2 -2
  184. package/standalone/.next/server/chunks/[root-of-the-server]__1vip3sa._.js +3 -0
  185. package/standalone/.next/server/chunks/[root-of-the-server]__1vxtcsq._.js +3 -0
  186. package/standalone/.next/server/chunks/{[root-of-the-server]__0cryh-d._.js → [root-of-the-server]__1wtng3p._.js} +1 -1
  187. package/standalone/.next/server/chunks/[root-of-the-server]__1wu654b._.js +3 -0
  188. package/standalone/.next/server/chunks/[root-of-the-server]__1x2nph5._.js +3 -0
  189. package/standalone/.next/server/chunks/[root-of-the-server]__1xk-0be._.js +3 -0
  190. package/standalone/.next/server/chunks/[root-of-the-server]__210dhdj._.js +3 -0
  191. package/standalone/.next/server/chunks/_0exkna-._.js +164 -8
  192. package/standalone/.next/server/chunks/{_0bru086._.js → _0jurkow._.js} +26 -26
  193. package/standalone/.next/server/chunks/{_00mzn-u._.js → _0rx5rfm._.js} +27 -27
  194. package/standalone/.next/server/chunks/_0tufgj0._.js +234 -78
  195. package/standalone/.next/server/chunks/_0w2eghf._.js +164 -8
  196. package/standalone/.next/server/chunks/_152rnkf._.js +17 -17
  197. package/standalone/.next/server/chunks/{_1_g2i-t._.js → _16x77b_._.js} +27 -27
  198. package/standalone/.next/server/chunks/_1dbqy8c._.js +17 -17
  199. package/standalone/.next/server/chunks/_1vrixpc._.js +17 -17
  200. package/standalone/.next/server/chunks/_1yfz-9u._.js +17 -17
  201. package/standalone/.next/server/chunks/src_0o4-snj._.js +1 -1
  202. package/standalone/.next/server/chunks/ssr/1oeh_server_app_[locale]_builds_[buildId]_coverage_page_actions_20i_0zd.js +3 -0
  203. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__08bbv6z._.js +9 -0
  204. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ckj6wg._.js +13 -0
  205. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0eit075._.js +3 -0
  206. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0tsac-e._.js +15 -0
  207. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0uo4dhz._.js +11 -0
  208. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__10-ftkj._.js +3 -0
  209. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__15v1geo._.js +3 -0
  210. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1qm_j4s._.js +3 -0
  211. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1s6_fta._.js +3 -0
  212. package/standalone/.next/server/chunks/ssr/_0-o77zz._.js +3 -0
  213. package/standalone/.next/server/chunks/ssr/_00m30gw._.js +3 -0
  214. package/standalone/.next/server/chunks/ssr/_03961l6._.js +3 -0
  215. package/standalone/.next/server/chunks/ssr/_08q5hnx._.js +35 -0
  216. package/standalone/.next/server/chunks/ssr/_093--4s._.js +3 -0
  217. package/standalone/.next/server/chunks/ssr/{_1kaz2gq._.js → _09lh67h._.js} +2 -2
  218. package/standalone/.next/server/chunks/ssr/_0a1ligo._.js +3 -0
  219. package/standalone/.next/server/chunks/ssr/{_1h3p6oi._.js → _0cw_tqx._.js} +2 -2
  220. package/standalone/.next/server/chunks/ssr/{_0hoc_fd._.js → _0ddgabq._.js} +2 -2
  221. package/standalone/.next/server/chunks/ssr/_0dq-84j._.js +22 -0
  222. package/standalone/.next/server/chunks/ssr/_0dy1ovj._.js +3 -0
  223. package/standalone/.next/server/chunks/ssr/_0ezo890._.js +3 -0
  224. package/standalone/.next/server/chunks/ssr/_0id1774._.js +13 -0
  225. package/standalone/.next/server/chunks/ssr/_0j48up8._.js +1 -1
  226. package/standalone/.next/server/chunks/ssr/_0nhtqty._.js +1 -1
  227. package/standalone/.next/server/chunks/ssr/_0oh246z._.js +3 -0
  228. package/standalone/.next/server/chunks/ssr/{_1r9ohdr._.js → _0q8sy0w._.js} +2 -2
  229. package/standalone/.next/server/chunks/ssr/_0qra30j._.js +3 -0
  230. package/standalone/.next/server/chunks/ssr/_0t2jwg3._.js +109 -0
  231. package/standalone/.next/server/chunks/ssr/{_13jl9nw._.js → _0ufkrvm._.js} +2 -2
  232. package/standalone/.next/server/chunks/ssr/{_0sp1ojg._.js → _0vjihfb._.js} +26 -2
  233. package/standalone/.next/server/chunks/ssr/_0xh-lyy._.js +3 -0
  234. package/standalone/.next/server/chunks/ssr/_1-2qcpf._.js +3 -0
  235. package/standalone/.next/server/chunks/ssr/_15erjna._.js +3 -0
  236. package/standalone/.next/server/chunks/ssr/_17a3xuq._.js +3 -0
  237. package/standalone/.next/server/chunks/ssr/_17p59oz._.js +3 -0
  238. package/standalone/.next/server/chunks/ssr/_1bzibio._.js +109 -0
  239. package/standalone/.next/server/chunks/ssr/_1c2fde9._.js +11 -0
  240. package/standalone/.next/server/chunks/ssr/_1ekznx8._.js +3 -0
  241. package/standalone/.next/server/chunks/ssr/_1k1tyz4._.js +3 -0
  242. package/standalone/.next/server/chunks/ssr/{_1dsdn7w._.js → _1n9rteq._.js} +8 -2
  243. package/standalone/.next/server/chunks/ssr/_1och_zk._.js +3 -0
  244. package/standalone/.next/server/chunks/ssr/_1tpguta._.js +3 -0
  245. package/standalone/.next/server/chunks/ssr/_1v1lo7c._.js +3 -0
  246. package/standalone/.next/server/chunks/ssr/_1vv-dg-._.js +3 -0
  247. package/standalone/.next/server/chunks/ssr/_1zgu74l._.js +1 -1
  248. package/standalone/.next/server/chunks/ssr/messages_de_json_[json]_cjs_1uig1ud._.js +1 -1
  249. package/standalone/.next/server/chunks/ssr/messages_en_json_[json]_cjs_206072-._.js +1 -1
  250. package/standalone/.next/server/chunks/ssr/messages_es_json_[json]_cjs_082yukd._.js +1 -1
  251. package/standalone/.next/server/chunks/ssr/messages_fr_json_[json]_cjs_0j6-w0i._.js +1 -1
  252. package/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uzalot.js +4 -0
  253. package/standalone/.next/server/chunks/ssr/src_components_agents_agent-detail_tsx_0lfa4ui._.js +2 -2
  254. package/standalone/.next/server/chunks/ssr/src_components_builds_build-detail-page_tsx_0q1lvps._.js +15 -13
  255. package/standalone/.next/server/chunks/ssr/src_components_builds_builds-page_tsx_17qzmsl._.js +8 -12
  256. package/standalone/.next/server/chunks/ssr/src_components_builds_coverage-report-page_tsx_1nhwba1._.js +11 -0
  257. package/standalone/.next/server/chunks/ssr/src_components_codebases_repository-detail-page_tsx_20_7wk_._.js +5 -5
  258. package/standalone/.next/server/chunks/ssr/src_components_github_actions-page_tsx_18434xt._.js +5 -5
  259. package/standalone/.next/server/chunks/ssr/src_components_github_pull-requests-page_tsx_1il3ga-._.js +12 -12
  260. package/standalone/.next/server/chunks/ssr/src_components_jira_cache-page_tsx_1znt1yl._.js +1 -1
  261. package/standalone/.next/server/chunks/ssr/src_components_skills_skill-sync-page_tsx_15sidhb._.js +1 -1
  262. package/standalone/.next/server/chunks/ssr/src_components_skills_skills-page_tsx_0o1nlbg._.js +3 -3
  263. package/standalone/.next/server/chunks/ssr/src_components_tools_tools-page_tsx_0k1jqcz._.js +2 -2
  264. package/standalone/.next/server/chunks/ssr/src_components_worktrees_worktree-detail-page_tsx_1oexgu_._.js +21 -4
  265. package/standalone/.next/server/functions-config-manifest.json +3 -0
  266. package/standalone/.next/server/middleware-build-manifest.js +6 -6
  267. package/standalone/.next/server/next-font-manifest.js +1 -1
  268. package/standalone/.next/server/next-font-manifest.json +4 -0
  269. package/standalone/.next/server/pages/404.html +1 -1
  270. package/standalone/.next/server/pages/500.html +1 -1
  271. package/standalone/.next/server/server-reference-manifest.js +1 -1
  272. package/standalone/.next/server/server-reference-manifest.json +1 -1
  273. package/standalone/.next/static/chunks/041g9raf1naqv.js +48 -0
  274. package/standalone/.next/static/chunks/08ujwkhzkokhf.js +1 -0
  275. package/standalone/.next/static/chunks/0a82bgw37ev__.js +33 -0
  276. package/standalone/.next/static/chunks/0cw4z7_m01m5f.js +31 -0
  277. package/standalone/.next/static/chunks/0emxr8tr7kji0.js +33 -0
  278. package/standalone/.next/static/chunks/0h8zu6aywqh1-.js +27 -0
  279. package/standalone/.next/static/chunks/0ng892ycfzv2q.js +1 -0
  280. package/standalone/.next/static/chunks/0tgtji0dbbefa.js +107 -0
  281. package/standalone/.next/static/chunks/15_8kla24ff9f.js +1 -0
  282. package/standalone/.next/static/chunks/16-l4kp9o217d.js +1 -0
  283. package/standalone/.next/static/chunks/1c7ci5ai5qyfo.js +1 -0
  284. package/standalone/.next/static/chunks/1egccqmgk3kbi.js +1 -0
  285. package/standalone/.next/static/chunks/1gwvywh0e6i17.js +3 -0
  286. package/standalone/.next/static/chunks/1hehq94hslvbl.js +7 -0
  287. package/standalone/.next/static/chunks/1k5cw41bd4e5r.js +51 -0
  288. package/standalone/.next/static/chunks/{1rivge68m21sm.js → 1mprxk0uebv70.js} +10 -10
  289. package/standalone/.next/static/chunks/1rus13s58mkxy.js +1 -0
  290. package/standalone/.next/static/chunks/{2fzxwi39odugq.js → 1rwqeg_l_plzt.js} +1 -1
  291. package/standalone/.next/static/chunks/1u_jwc-bo10k3.js +1 -0
  292. package/standalone/.next/static/chunks/1ut0xkaqsykm4.js +7 -0
  293. package/standalone/.next/static/chunks/1w_zvfx_jdyv_.js +29 -0
  294. package/standalone/.next/static/chunks/2-wrd12dmwbo-.js +1 -0
  295. package/standalone/.next/static/chunks/23kut2_l2y2-w.js +9 -0
  296. package/standalone/.next/static/chunks/23xyv764-kx8z.js +38 -0
  297. package/standalone/.next/static/chunks/{1wihkuyju-wa-.js → 25haryfoj4x3h.js} +1 -1
  298. package/standalone/.next/static/chunks/{0fr0zp4cwlyrr.js → 28ljy-uz6n_g9.js} +2 -2
  299. package/standalone/.next/static/chunks/29zl8lgsa28tb.js +1 -0
  300. package/standalone/.next/static/chunks/{0w8rd_g6hnvmz.js → 2__bi79el56lb.js} +5 -5
  301. package/standalone/.next/static/chunks/2aq80hyo4l8a2.js +7 -0
  302. package/standalone/.next/static/chunks/{24a_ux27e8jj4.js → 2l_wayk-ioguc.js} +1 -1
  303. package/standalone/.next/static/chunks/2swvzbwm_dr9y.js +1 -0
  304. package/standalone/.next/static/chunks/{0m26h4h36cb_0.js → 3120xcqaqci82.js} +1 -1
  305. package/standalone/.next/static/chunks/315cis1es_5t3.js +41 -0
  306. package/standalone/.next/static/chunks/321feys_9vp2v.js +33 -0
  307. package/standalone/.next/static/chunks/{0d-e51sawr2y8.js → 34oyci46fsc5w.js} +1 -1
  308. package/standalone/.next/static/chunks/{1nqkxeuycfmrt.js → 36_1bjzx79v18.js} +5 -5
  309. package/standalone/.next/static/chunks/37mczlawlcx5l.js +1 -0
  310. package/standalone/.next/static/chunks/3ajj69p_sj615.js +1 -0
  311. package/standalone/.next/static/chunks/{1tcqtaedz7922.js → 3d4ijy7zglgv5.js} +1 -1
  312. package/standalone/.next/static/chunks/3ir4b8po439x7.js +40 -0
  313. package/standalone/.next/static/chunks/3p7wbgo7qd6_m.css +1 -0
  314. package/standalone/.next/static/chunks/3q0q6_ntq8aa5.js +51 -0
  315. package/standalone/.next/static/chunks/3r-6igcofcwxj.js +107 -0
  316. package/standalone/.next/static/chunks/{0m--47yk9j-ec.js → 3tycetq7o8g3h.js} +1 -1
  317. package/standalone/.next/static/chunks/3vg6y29m047x9.js +31 -0
  318. package/standalone/.next/static/chunks/{0biu8z1f8c42u.js → 40ovzayigkz_-.js} +1 -1
  319. package/standalone/.next/static/chunks/41wq-96yyl0uw.js +1 -0
  320. package/standalone/.next/static/chunks/44xu63hsh11xp.js +1 -0
  321. package/standalone/.next/static/chunks/{turbopack-1rw7om86c18dg.js → turbopack-1v9ogj_5hv56l.js} +1 -1
  322. package/standalone/src/services/builds/build-freshness.test.ts +107 -0
  323. package/standalone/src/services/builds/build-freshness.ts +73 -0
  324. package/standalone/src/services/builds/builds.service.test.ts +222 -8
  325. package/standalone/src/services/builds/builds.service.ts +514 -3
  326. package/standalone/.next/server/chunks/[root-of-the-server]__0qjhcow._.js +0 -122
  327. package/standalone/.next/server/chunks/[root-of-the-server]__1878s0b._.js +0 -3
  328. package/standalone/.next/server/chunks/[root-of-the-server]__18zrtty._.js +0 -3
  329. package/standalone/.next/server/chunks/[root-of-the-server]__1_xz_m2._.js +0 -3
  330. package/standalone/.next/server/chunks/[root-of-the-server]__1mx1hqe._.js +0 -3
  331. package/standalone/.next/server/chunks/[root-of-the-server]__1sjjkyp._.js +0 -3
  332. package/standalone/.next/server/chunks/[root-of-the-server]__1vk9266._.js +0 -3
  333. package/standalone/.next/server/chunks/[root-of-the-server]__1yn6pds._.js +0 -3
  334. package/standalone/.next/server/chunks/[root-of-the-server]__1zwpjfo._.js +0 -3
  335. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__03m5q8h._.js +0 -27
  336. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__06bk7ik._.js +0 -3
  337. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__06f05jg._.js +0 -3
  338. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__0oj1os4._.js +0 -3
  339. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1349-us._.js +0 -3
  340. package/standalone/.next/server/chunks/ssr/[root-of-the-server]__1osx7qy._.js +0 -27
  341. package/standalone/.next/server/chunks/ssr/_09l5w5d._.js +0 -3
  342. package/standalone/.next/server/chunks/ssr/_0_726fj._.js +0 -3
  343. package/standalone/.next/server/chunks/ssr/_0a1zku5._.js +0 -3
  344. package/standalone/.next/server/chunks/ssr/_0bvpmhm._.js +0 -97
  345. package/standalone/.next/server/chunks/ssr/_0ndnmkz._.js +0 -3
  346. package/standalone/.next/server/chunks/ssr/_0pe56xv._.js +0 -3
  347. package/standalone/.next/server/chunks/ssr/_0pu14lm._.js +0 -3
  348. package/standalone/.next/server/chunks/ssr/_1-1mnp6._.js +0 -3
  349. package/standalone/.next/server/chunks/ssr/_1-7r8vu._.js +0 -3
  350. package/standalone/.next/server/chunks/ssr/_10evhql._.js +0 -3
  351. package/standalone/.next/server/chunks/ssr/_142x9wn._.js +0 -22
  352. package/standalone/.next/server/chunks/ssr/_1_ta7g1._.js +0 -3
  353. package/standalone/.next/server/chunks/ssr/_1eol9we._.js +0 -3
  354. package/standalone/.next/server/chunks/ssr/_1ey5mmy._.js +0 -3
  355. package/standalone/.next/server/chunks/ssr/_1fdyu2w._.js +0 -3
  356. package/standalone/.next/server/chunks/ssr/_1h3t5g1._.js +0 -3
  357. package/standalone/.next/server/chunks/ssr/_1kemhyd._.js +0 -39
  358. package/standalone/.next/server/chunks/ssr/_1kmkrz5._.js +0 -3
  359. package/standalone/.next/server/chunks/ssr/_1lseili._.js +0 -3
  360. package/standalone/.next/server/chunks/ssr/_1oh35yj._.js +0 -3
  361. package/standalone/.next/server/chunks/ssr/_1vhf014._.js +0 -3
  362. package/standalone/.next/server/chunks/ssr/_1x13g5y._.js +0 -3
  363. package/standalone/.next/server/chunks/ssr/_1yzb5-u._.js +0 -11
  364. package/standalone/.next/server/chunks/ssr/_1za3z6k._.js +0 -97
  365. package/standalone/.next/server/chunks/ssr/src_components_0wvh73y._.js +0 -11
  366. package/standalone/.next/server/chunks/ssr/src_components_github_167_ydi._.js +0 -35
  367. package/standalone/.next/static/chunks/00dx8gu-2oyqe.js +0 -45
  368. package/standalone/.next/static/chunks/091l-ij_cv0b6.js +0 -41
  369. package/standalone/.next/static/chunks/0a3s519wuzjet.js +0 -1
  370. package/standalone/.next/static/chunks/0j5n6p9i-vyzo.js +0 -9
  371. package/standalone/.next/static/chunks/0sp_r-c6262te.js +0 -3
  372. package/standalone/.next/static/chunks/0weklluydd2mf.js +0 -23
  373. package/standalone/.next/static/chunks/1eehbcjby4go8.js +0 -95
  374. package/standalone/.next/static/chunks/1joeb4m-mmn69.js +0 -7
  375. package/standalone/.next/static/chunks/1xjd6ye7mxyf5.js +0 -7
  376. package/standalone/.next/static/chunks/23_75iur2dq8p.js +0 -1
  377. package/standalone/.next/static/chunks/24sd_kmnetibb.js +0 -1
  378. package/standalone/.next/static/chunks/278dxvyf095b_.js +0 -55
  379. package/standalone/.next/static/chunks/27k7_zc-iuppd.js +0 -1
  380. package/standalone/.next/static/chunks/2baaj4mpr6i-i.js +0 -1
  381. package/standalone/.next/static/chunks/2cj2ndz_e0hbz.js +0 -1
  382. package/standalone/.next/static/chunks/2dwchs_6y_o5f.js +0 -1
  383. package/standalone/.next/static/chunks/2hv6pkoloju0g.js +0 -33
  384. package/standalone/.next/static/chunks/2lgsgstcvc7uk.css +0 -1
  385. package/standalone/.next/static/chunks/2sqprazdqp7f7.js +0 -1
  386. package/standalone/.next/static/chunks/32agjzrkphjrl.js +0 -9
  387. package/standalone/.next/static/chunks/33y_b6dqfx3tk.js +0 -1
  388. package/standalone/.next/static/chunks/399uxexoo8x7f.js +0 -33
  389. package/standalone/.next/static/chunks/39ecics7n8z5m.js +0 -1
  390. package/standalone/.next/static/chunks/3_kaby2qep1pd.js +0 -34
  391. package/standalone/.next/static/chunks/3h1pxh5fd97ym.js +0 -27
  392. package/standalone/.next/static/chunks/3jbfibit05k5o.js +0 -29
  393. package/standalone/.next/static/chunks/3oyhf7rk2xr_g.js +0 -1
  394. package/standalone/.next/static/chunks/3q7vh58-5dkv2.js +0 -25
  395. package/standalone/.next/static/chunks/3td_-1s61zkpa.js +0 -38
  396. package/standalone/.next/static/chunks/3xkoiasuwi3ms.js +0 -95
  397. package/standalone/.next/static/chunks/41s57pssydrel.js +0 -43
  398. package/standalone/.next/static/chunks/42flok13o-l0b.js +0 -1
  399. package/standalone/.next/static/chunks/43gw6_6hbw18w.js +0 -51
  400. /package/standalone/.next/static/{_pMjurqsAcC478HIzIe-d → ePu377E66yy0icQx3ykQJ}/_buildManifest.js +0 -0
  401. /package/standalone/.next/static/{_pMjurqsAcC478HIzIe-d → ePu377E66yy0icQx3ykQJ}/_clientMiddlewareManifest.js +0 -0
  402. /package/standalone/.next/static/{_pMjurqsAcC478HIzIe-d → ePu377E66yy0icQx3ykQJ}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,110204,e=>{"use strict";var t=e.i(843476),r=e.i(271645);function o(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}e.i(174080);var n=Symbol.for("radix.slottable"),i=Symbol.for("react.lazy");function a(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===i&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}var s=r[" use ".trim().toString()],l=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,i)=>{var l;let d,c=(l=`Primitive.${i}`,(d=r.forwardRef((e,t)=>{var i;let d,c,{children:u,...p}=e,f=null,g=!1,y=[];a(u)&&"function"==typeof s&&(u=s(u._payload)),r.Children.forEach(u,e=>{var t;if(t=e,r.isValidElement(t)&&"function"==typeof t.type&&"__radixId"in t.type&&t.type.__radixId===n){g=!0;let t="child"in e.props?e.props.child:e.props.children;a(t)&&"function"==typeof s&&(t=s(t._payload)),f=((e,t)=>{if("child"in e.props){let t=e.props.child;return r.isValidElement(t)?r.cloneElement(t,void 0,e.props.children(t.props.children)):null}return r.isValidElement(t)?t:null})(e,t),y.push(f?.props?.children)}else y.push(e)}),f?f=r.cloneElement(f,void 0,y):!g&&1===r.Children.count(u)&&r.isValidElement(u)&&(f=u);let h=f?(i=f,(c=(d=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in d&&d.isReactWarning)?i.ref:(c=(d=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in d&&d.isReactWarning)?i.props.ref:i.props.ref||i.ref):void 0,m=function(...e){return r.useCallback(function(...e){return t=>{let r=!1,n=e.map(e=>{let n=o(e,t);return r||"function"!=typeof n||(r=!0),n});if(r)return()=>{for(let t=0;t<n.length;t++){let r=n[t];"function"==typeof r?r():o(e[t],null)}}}}(...e),e)}(t,h);if(!f){if(u||0===u){let e,t;throw Error(g?(e=l,`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`):(t=l,`${t} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`))}return u}let x=function(e,t){let r={...t};for(let o in t){let n=e[o],i=t[o];/^on[A-Z]/.test(o)?n&&i?r[o]=(...e)=>{let t=i(...e);return n(...e),t}:n&&(r[o]=n):"style"===o?r[o]={...n,...i}:"className"===o&&(r[o]=[n,i].filter(Boolean).join(" "))}return{...e,...r}}(p,f.props??{});return f.type!==r.Fragment&&(x.ref=t?m:h),r.cloneElement(f,x)})).displayName=`${l}.Slot`,d),u=r.forwardRef((e,r)=>{let{asChild:o,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,t.jsx)(o?c:i,{...n,ref:r})});return u.displayName=`Primitive.${i}`,{...e,[i]:u}},{}),d=r.forwardRef((e,r)=>(0,t.jsx)(l.label,{...e,ref:r,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));d.displayName="Label",e.s(["Label",0,d,"Root",0,d],973741);var c=e.i(973741),c=c,u=e.i(975157);e.s(["Label",0,function({className:e,...r}){return(0,t.jsx)(c.Root,{"data-slot":"label",className:(0,u.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...r})}],110204)},624687,e=>{"use strict";var t=e.i(843476),r=e.i(975157);e.s(["Textarea",0,function({className:e,...o}){return(0,t.jsx)("textarea",{className:(0,r.cn)("min-h-24 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50",e),...o})}])},758379,e=>{"use strict";let t=(0,e.i(456420).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",0,t])},987968,e=>{"use strict";var t=e.i(843476),r=e.i(975157),o=e.i(758379),o=o;e.s(["Spinner",0,function({className:e,...n}){return(0,t.jsx)(o.default,{"data-slot":"spinner",role:"status","aria-label":"Loading",className:(0,r.cn)("size-4 animate-spin",e),...n})}],987968)},637611,e=>{"use strict";var t,r,o=e.i(247167);function n(e){return null===e?"null":Array.isArray(e)?"array":typeof e}function i(e){return"object"===n(e)}function a(e,t){return e.length<124?e:t}var s=((t=s||{})[t.InternalServerError=4500]="InternalServerError",t[t.InternalClientError=4005]="InternalClientError",t[t.BadRequest=4400]="BadRequest",t[t.BadResponse=4004]="BadResponse",t[t.Unauthorized=4401]="Unauthorized",t[t.Forbidden=4403]="Forbidden",t[t.SubprotocolNotAcceptable=4406]="SubprotocolNotAcceptable",t[t.ConnectionInitialisationTimeout=4408]="ConnectionInitialisationTimeout",t[t.ConnectionAcknowledgementTimeout=4504]="ConnectionAcknowledgementTimeout",t[t.SubscriberAlreadyExists=4409]="SubscriberAlreadyExists",t[t.TooManyInitialisationRequests=4429]="TooManyInitialisationRequests",t),l=((r=l||{}).ConnectionInit="connection_init",r.ConnectionAck="connection_ack",r.Ping="ping",r.Pong="pong",r.Subscribe="subscribe",r.Next="next",r.Error="error",r.Complete="complete",r);function d(e){if(!i(e))throw Error(`Message is expected to be an object, but got ${n(e)}`);if(!e.type)throw Error("Message is missing the 'type' property");if("string"!=typeof e.type)throw Error(`Message is expects the 'type' property to be a string, but got ${n(e.type)}`);switch(e.type){case"connection_init":case"connection_ack":case"ping":case"pong":if(null!=e.payload&&!i(e.payload))throw Error(`"${e.type}" message expects the 'payload' property to be an object or nullish or missing, but got "${e.payload}"`);break;case"subscribe":if("string"!=typeof e.id)throw Error(`"${e.type}" message expects the 'id' property to be a string, but got ${n(e.id)}`);if(!e.id)throw Error(`"${e.type}" message requires a non-empty 'id' property`);if(!i(e.payload))throw Error(`"${e.type}" message expects the 'payload' property to be an object, but got ${n(e.payload)}`);if("string"!=typeof e.payload.query)throw Error(`"${e.type}" message payload expects the 'query' property to be a string, but got ${n(e.payload.query)}`);if(null!=e.payload.variables&&!i(e.payload.variables))throw Error(`"${e.type}" message payload expects the 'variables' property to be a an object or nullish or missing, but got ${n(e.payload.variables)}`);if(null!=e.payload.operationName&&"string"!==n(e.payload.operationName))throw Error(`"${e.type}" message payload expects the 'operationName' property to be a string or nullish or missing, but got ${n(e.payload.operationName)}`);if(null!=e.payload.extensions&&!i(e.payload.extensions))throw Error(`"${e.type}" message payload expects the 'extensions' property to be a an object or nullish or missing, but got ${n(e.payload.extensions)}`);break;case"next":if("string"!=typeof e.id)throw Error(`"${e.type}" message expects the 'id' property to be a string, but got ${n(e.id)}`);if(!e.id)throw Error(`"${e.type}" message requires a non-empty 'id' property`);if(!i(e.payload))throw Error(`"${e.type}" message expects the 'payload' property to be an object, but got ${n(e.payload)}`);break;case"error":var t;if("string"!=typeof e.id)throw Error(`"${e.type}" message expects the 'id' property to be a string, but got ${n(e.id)}`);if(!e.id)throw Error(`"${e.type}" message requires a non-empty 'id' property`);if(!(Array.isArray(t=e.payload)&&t.length>0&&t.every(e=>"message"in e)))throw Error(`"${e.type}" message expects the 'payload' property to be an array of GraphQL errors, but got ${JSON.stringify(e.payload)}`);break;case"complete":if("string"!=typeof e.id)throw Error(`"${e.type}" message expects the 'id' property to be a string, but got ${n(e.id)}`);if(!e.id)throw Error(`"${e.type}" message requires a non-empty 'id' property`);break;default:throw Error(`Invalid message 'type' property "${e.type}"`)}return e}function c(e,t){return d(e),JSON.stringify(e,t)}class u extends Error{name="TerminatedCloseEvent";message="4499: Terminated";code=4499;reason="Terminated";wasClean=!1}function p(e){return i(e)&&"code"in e&&"reason"in e}async function f(e,t){let r=await fetch("/api/graphql",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:e,variables:t})}),o=await r.json();if(!r.ok||o.errors?.length||!o.data)throw Error(o.errors?.map(e=>e.message).join("; ")||`HTTP ${r.status}`);return o.data}let g=null;function y(){let e=o.default.env.NEXT_PUBLIC_AGENT_WS_URL;return e||("https:"===window.location.protocol?`wss://${window.location.host}/graphql`:`ws://${window.location.hostname}:3091/graphql`)}e.s(["controlPlaneRequest",0,f,"controlPlaneSubscriptions",0,function(){return g??=function(t){let r,o,n,i,{url:f,connectionParams:g,lazy:y=!0,onNonLazyError:h=console.error,lazyCloseTimeout:m=0,keepAlive:x=0,disablePong:b,connectionAckWaitTimeout:v=0,retryAttempts:w=5,retryWait:E=async function(e){let t=Math.pow(2,e);await new Promise(e=>setTimeout(e,1e3*t+Math.floor(2700*Math.random()+300)))},shouldRetry:C=p,on:k,webSocketImpl:S,generateID:j=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})},jsonMessageReplacer:N,jsonMessageReviver:R}=t;if(S){var $;if(!("function"==typeof($=S)&&"constructor"in $&&"CLOSED"in $&&"CLOSING"in $&&"CONNECTING"in $&&"OPEN"in $))throw Error("Invalid WebSocket implementation provided");r=S}else r="u">typeof WebSocket?WebSocket:e.g.WebSocket||e.g.MozWebSocket;if(!r)throw Error("WebSocket implementation missing; on Node you can `import WebSocket from 'ws';` and pass `webSocketImpl: WebSocket` to `createClient`");let A=r,O=(o={},n={on:(e,t)=>(o[e]=t,()=>{delete o[e]}),emit(e){"id"in e&&o[e.id]?.(e)}},i={connecting:k?.connecting?[k.connecting]:[],opened:k?.opened?[k.opened]:[],connected:k?.connected?[k.connected]:[],ping:k?.ping?[k.ping]:[],pong:k?.pong?[k.pong]:[],message:k?.message?[n.emit,k.message]:[n.emit],closed:k?.closed?[k.closed]:[],error:k?.error?[k.error]:[]},{onMessage:n.on,on(e,t){let r=i[e];return r.push(t),()=>{r.splice(r.indexOf(t),1)}},emit(e,...t){for(let r of[...i[e]])r(...t)}});function z(e){let t=[O.on("error",r=>{t.forEach(e=>e()),e(r)}),O.on("closed",r=>{t.forEach(e=>e()),e(r)})]}let T,P=0,I,_=!1,M=0,D=!1;async function q(){clearTimeout(I);let[e,t]=await (T??(T=new Promise((e,t)=>(async()=>{let r,o;if(_){if(await E(M),!P)return T=void 0,t({code:1e3,reason:"All Subscriptions Gone"});M++}O.emit("connecting",_);let n=new A("function"==typeof f?await f():f,"graphql-transport-ws");function i(){isFinite(x)&&x>0&&(clearTimeout(o),o=setTimeout(()=>{n.readyState===A.OPEN&&(n.send(c({type:l.Ping})),O.emit("ping",!1,void 0))},x))}z(e=>{T=void 0,clearTimeout(r),clearTimeout(o),t(e),e instanceof u&&(n.close(4499,"Terminated"),n.onerror=null,n.onclose=null)}),n.onerror=e=>O.emit("error",e),n.onclose=e=>O.emit("closed",e),n.onopen=async()=>{try{O.emit("opened",n);let e="function"==typeof g?await g():g;if(n.readyState!==A.OPEN)return;n.send(c(e?{type:l.ConnectionInit,payload:e}:{type:l.ConnectionInit},N)),isFinite(v)&&v>0&&(r=setTimeout(()=>{n.close(s.ConnectionAcknowledgementTimeout,"Connection acknowledgement timeout")},v)),i()}catch(e){O.emit("error",e),n.close(s.InternalClientError,a(e instanceof Error?e.message:String(e),"Internal client error"))}};let p=!1;n.onmessage=({data:t})=>{try{let o=d("string"==typeof t?JSON.parse(t,R):t);if(O.emit("message",o),"ping"===o.type||"pong"===o.type){O.emit(o.type,!0,o.payload),"pong"===o.type?i():b||(n.send(c(o.payload?{type:l.Pong,payload:o.payload}:{type:l.Pong})),O.emit("pong",!1,o.payload));return}if(p)return;if(o.type!==l.ConnectionAck)throw Error(`First message cannot be of type ${o.type}`);clearTimeout(r),p=!0,O.emit("connected",n,o.payload,_),_=!1,M=0,e([n,new Promise((e,t)=>z(t))])}catch(e){n.onmessage=null,O.emit("error",e),n.close(s.BadResponse,a(e instanceof Error?e.message:String(e),"Bad response"))}}})())));e.readyState===A.CLOSING&&await t;let r=()=>{},o=new Promise(e=>r=e);return[e,r,Promise.race([o.then(()=>{P||(isFinite(m)&&m>0?I=setTimeout(()=>{e.readyState===A.OPEN&&e.close(1e3,"Normal Closure")},m):e.close(1e3,"Normal Closure"))}),t])]}function W(e){var t;if(p(e)&&(![1e3,1001,1006,1005,1012,1013,1014].includes(t=e.code)&&t>=1e3&&t<=1999||[s.InternalServerError,s.InternalClientError,s.BadRequest,s.BadResponse,s.Unauthorized,s.SubprotocolNotAcceptable,s.SubscriberAlreadyExists,s.TooManyInitialisationRequests].includes(e.code)))throw e;if(D)return!1;if(p(e)&&1e3===e.code)return P>0;if(!w||M>=w||!C(e))throw e;return _=!0}function B(e,t){let r=j(e),o=!1,n=!1,i=()=>{P--,o=!0};return(async()=>{for(P++;;)try{let[a,s,d]=await q();if(o)return s();let u=O.onMessage(r,e=>{switch(e.type){case l.Next:return void t.next(e.payload);case l.Error:n=!0,o=!0,t.error(e.payload),i();return;case l.Complete:o=!0,i();return}});a.send(c({id:r,type:l.Subscribe,payload:e},N)),i=()=>{o||a.readyState!==A.OPEN||a.send(c({id:r,type:l.Complete},N)),P--,o=!0,s()},await d.finally(u);return}catch(e){if(!W(e))return}})().then(()=>{n||t.complete()}).catch(e=>{t.error(e)}),()=>{o||i()}}return y||(async()=>{for(P++;;)try{let[,,e]=await q();await e}catch(e){try{if(!W(e))return}catch(e){return h?.(e)}}})(),{on:O.on,subscribe:B,iterate(e){let t=[],r={done:!1,error:null,resolve:()=>{}},o=B(e,{next(e){t.push(e),r.resolve()},error(e){r.done=!0,r.error=e,r.resolve()},complete(){r.done=!0,r.resolve()}}),n=async function*(){for(;;){for(t.length||await new Promise(e=>r.resolve=e);t.length;)yield t.shift();if(r.error)throw r.error;if(r.done)return}}();return n.throw=async e=>(r.done||(r.done=!0,r.error=e,r.resolve()),{done:!0,value:void 0}),n.return=async()=>(o(),{done:!0,value:void 0}),n},async dispose(){if(D=!0,T){let[e]=await T;e.close(1e3,"Normal Closure")}},terminate(){T&&O.emit("closed",new u)}}}({url:y,lazy:!0,retryAttempts:1/0,shouldRetry:()=>!0})}],637611)},929592,e=>{"use strict";var t=e.i(843476),r=e.i(225913),o=e.i(975157);let n=(0,r.cva)("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});e.s(["Alert",0,function({className:e,variant:r,...i}){return(0,t.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,o.cn)(n({variant:r}),e),...i})},"AlertDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"alert-description",className:(0,o.cn)("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",e),...r})}])},515288,e=>{"use strict";var t=e.i(843476),r=e.i(975157);e.s(["Card",0,function({className:e,size:o="default",...n}){return(0,t.jsx)("div",{"data-slot":"card","data-size":o,className:(0,r.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...n})},"CardAction",0,function({className:e,...o}){return(0,t.jsx)("div",{"data-slot":"card-action",className:(0,r.cn)("col-start-2 row-span-2 row-start-1 self-start justify-self-end",e),...o})},"CardContent",0,function({className:e,...o}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,r.cn)("px-(--card-spacing)",e),...o})},"CardDescription",0,function({className:e,...o}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,r.cn)("text-sm text-muted-foreground",e),...o})},"CardFooter",0,function({className:e,...o}){return(0,t.jsx)("div",{"data-slot":"card-footer",className:(0,r.cn)("flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)",e),...o})},"CardHeader",0,function({className:e,...o}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,r.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...o})},"CardTitle",0,function({className:e,...o}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,r.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...o})}])},487486,e=>{"use strict";var t=e.i(843476),r=e.i(225913),o=e.i(709840),n=e.i(975157);let i=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",success:"border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 [a]:hover:bg-emerald-500/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",asChild:a=!1,...s}){let l=a?o.Slot.Root:"span";return(0,t.jsx)(l,{className:(0,n.cn)(i({variant:r}),e),"data-slot":"badge","data-variant":r,...s})}])},643957,e=>{"use strict";let t=(0,e.i(456420).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",0,t])},593698,e=>{"use strict";var t=e.i(643957);e.s(["CheckIcon",()=>t.default])},999682,e=>{"use strict";var t=e.i(271645);e.s(["usePrevious",0,function(e){let r=t.useRef({value:e,previous:e});return t.useMemo(()=>(r.current.value!==e&&(r.current.previous=r.current.value,r.current.value=e),r.current.previous),[e])}])},75830,586318,e=>{"use strict";var t=e.i(271645),r=e.i(30030);function o(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(...e){return t.useCallback(function(...e){return t=>{let r=!1,n=e.map(e=>{let n=o(e,t);return r||"function"!=typeof n||(r=!0),n});if(r)return()=>{for(let t=0;t<n.length;t++){let r=n[t];"function"==typeof r?r():o(e[t],null)}}}}(...e),e)}function i(e){let r=t.forwardRef((r,o)=>{var i;let l,f,{children:g,...y}=r,h=null,m=!1,x=[];d(g)&&"function"==typeof p&&(g=p(g._payload)),t.Children.forEach(g,e=>{var r;if(r=e,t.isValidElement(r)&&"function"==typeof r.type&&"__radixId"in r.type&&r.type.__radixId===a){m=!0;let t="child"in e.props?e.props.child:e.props.children;d(t)&&"function"==typeof p&&(t=p(t._payload)),h=s(e,t),x.push(h?.props?.children)}else x.push(e)}),h?h=t.cloneElement(h,void 0,x):!m&&1===t.Children.count(g)&&t.isValidElement(g)&&(h=g);let b=h?(i=h,(f=(l=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in l&&l.isReactWarning)?i.ref:(f=(l=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in l&&l.isReactWarning)?i.props.ref:i.props.ref||i.ref):void 0,v=n(o,b);if(!h){if(g||0===g)throw Error(m?u(e):c(e));return g}let w=function(e,t){let r={...t};for(let o in t){let n=e[o],i=t[o];/^on[A-Z]/.test(o)?n&&i?r[o]=(...e)=>{let t=i(...e);return n(...e),t}:n&&(r[o]=n):"style"===o?r[o]={...n,...i}:"className"===o&&(r[o]=[n,i].filter(Boolean).join(" "))}return{...e,...r}}(y,h.props??{});return h.type!==t.Fragment&&(w.ref=o?v:b),t.cloneElement(h,w)});return r.displayName=`${e}.Slot`,r}var a=Symbol.for("radix.slottable"),s=(e,r)=>{if("child"in e.props){let r=e.props.child;return t.isValidElement(r)?t.cloneElement(r,void 0,e.props.children(r.props.children)):null}return t.isValidElement(r)?r:null},l=Symbol.for("react.lazy");function d(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===l&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}var c=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,u=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,p=t[" use ".trim().toString()],f=e.i(843476),g=new WeakMap;function y(e,t){var r,o;let n,i,a;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let s=(r=e,o=t,n=r.length,(a=(i=h(o))>=0?i:n+i)<0||a>=n?-1:a);return -1===s?void 0:e[s]}function h(e){return e!=e||0===e?0:Math.trunc(e)}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],g.set(this,!0)}set(e,t){return g.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,r){let o,n=this.has(t),i=this.#e.length,a=h(e),s=a>=0?a:i+a,l=s<0||s>=i?-1:s;if(l===this.size||n&&l===this.size-1||-1===l)return this.set(t,r),this;let d=this.size+ +!n;a<0&&s++;let c=[...this.#e],u=!1;for(let e=s;e<d;e++)if(s===e){let i=c[e];c[e]===t&&(i=c[e+1]),n&&this.delete(t),o=this.get(i),this.set(t,r)}else{u||c[e-1]!==t||(u=!0);let r=c[u?e:e-1],n=o;o=this.get(r),this.delete(r),this.set(r,n)}return this}with(t,r,o){let n=new e(this);return n.insert(t,r,o),n}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,r){let o=this.#e.indexOf(e);return -1===o?this:this.insert(o,t,r)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,r){let o=this.#e.indexOf(e);return -1===o?this:this.insert(o+1,t,r)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=y(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=y(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return y(this.#e,e)}from(e,t){let r=this.indexOf(e);if(-1===r)return;let o=r+t;return o<0&&(o=0),o>=this.size&&(o=this.size-1),this.at(o)}keyFrom(e,t){let r=this.indexOf(e);if(-1===r)return;let o=r+t;return o<0&&(o=0),o>=this.size&&(o=this.size-1),this.keyAt(o)}find(e,t){let r=0;for(let o of this){if(Reflect.apply(e,t,[o,r,this]))return o;r++}}findIndex(e,t){let r=0;for(let o of this){if(Reflect.apply(e,t,[o,r,this]))return r;r++}return -1}filter(t,r){let o=[],n=0;for(let e of this)Reflect.apply(t,r,[e,n,this])&&o.push(e),n++;return new e(o)}map(t,r){let o=[],n=0;for(let e of this)o.push([e[0],Reflect.apply(t,r,[e,n,this])]),n++;return new e(o)}reduce(...e){let[t,r]=e,o=0,n=r??this.at(0);for(let r of this)n=0===o&&1===e.length?r:Reflect.apply(t,this,[n,r,o,this]),o++;return n}reduceRight(...e){let[t,r]=e,o=r??this.at(-1);for(let r=this.size-1;r>=0;r--){let n=this.at(r);o=r===this.size-1&&1===e.length?n:Reflect.apply(t,this,[o,n,r,this])}return o}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let r=this.keyAt(e),o=this.get(r);t.set(r,o)}return t}toSpliced(...t){let r=[...this.entries()];return r.splice(...t),new e(r)}slice(t,r){let o=new e,n=this.size-1;if(void 0===t)return o;t<0&&(t+=this.size),void 0!==r&&r>0&&(n=r-1);for(let e=t;e<=n;e++){let t=this.keyAt(e),r=this.get(t);o.set(t,r)}return o}every(e,t){let r=0;for(let o of this){if(!Reflect.apply(e,t,[o,r,this]))return!1;r++}return!0}some(e,t){let r=0;for(let o of this){if(Reflect.apply(e,t,[o,r,this]))return!0;r++}return!1}}),e.s(["createCollection",0,function(e){let o=e+"CollectionProvider",[a,s]=(0,r.createContextScope)(o),[l,d]=a(o,{collectionRef:{current:null},itemMap:new Map}),c=e=>{let{scope:r,children:o}=e,n=t.useRef(null),i=t.useRef(new Map).current;return(0,f.jsx)(l,{scope:r,itemMap:i,collectionRef:n,children:o})};c.displayName=o;let u=e+"CollectionSlot",p=i(u),g=t.forwardRef((e,t)=>{let{scope:r,children:o}=e,i=n(t,d(u,r).collectionRef);return(0,f.jsx)(p,{ref:i,children:o})});g.displayName=u;let y=e+"CollectionItemSlot",h="data-radix-collection-item",m=i(y),x=t.forwardRef((e,r)=>{let{scope:o,children:i,...a}=e,s=t.useRef(null),l=n(r,s),c=d(y,o);return t.useEffect(()=>(c.itemMap.set(s,{ref:s,...a}),()=>void c.itemMap.delete(s))),(0,f.jsx)(m,{...{[h]:""},ref:l,children:i})});return x.displayName=y,[{Provider:c,Slot:g,ItemSlot:x},function(r){let o=d(e+"CollectionConsumer",r);return t.useCallback(()=>{let e=o.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${h}]`));return Array.from(o.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[o.collectionRef,o.itemMap])},s]}],75830);var m=t.createContext(void 0);e.s(["useDirection",0,function(e){let r=t.useContext(m);return e||r||"ltr"}],586318)},26495,e=>{"use strict";let t=(0,e.i(456420).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["default",0,t])},144716,e=>{"use strict";let t=(0,e.i(456420).default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);e.s(["default",0,t])},776639,e=>{"use strict";var t=e.i(843476),r=e.i(560964),o=e.i(964053),n=e.i(519455),i=e.i(975157);function a({...e}){return(0,t.jsx)(o.Dialog.Portal,{"data-slot":"dialog-portal",...e})}function s({className:e,...r}){return(0,t.jsx)(o.Dialog.Overlay,{className:(0,i.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),"data-slot":"dialog-overlay",...r})}e.s(["Dialog",0,function({...e}){return(0,t.jsx)(o.Dialog.Root,{"data-slot":"dialog",...e})},"DialogContent",0,function({className:e,children:l,showCloseButton:d=!0,...c}){return(0,t.jsxs)(a,{children:[(0,t.jsx)(s,{}),(0,t.jsxs)(o.Dialog.Content,{className:(0,i.cn)("fixed top-1/2 left-1/2 z-50 grid max-h-[85dvh] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),"data-slot":"dialog-content",...c,children:[l,d&&(0,t.jsx)(o.Dialog.Close,{asChild:!0,"data-slot":"dialog-close",children:(0,t.jsxs)(n.Button,{className:"absolute top-2 right-2",size:"icon-sm",variant:"ghost",children:[(0,t.jsx)(r.XIcon,{}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})})]})]})},"DialogDescription",0,function({className:e,...r}){return(0,t.jsx)(o.Dialog.Description,{className:(0,i.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),"data-slot":"dialog-description",...r})},"DialogFooter",0,function({className:e,showCloseButton:r=!1,children:a,...s}){return(0,t.jsxs)("div",{className:(0,i.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),"data-slot":"dialog-footer",...s,children:[a,r&&(0,t.jsx)(o.Dialog.Close,{asChild:!0,children:(0,t.jsx)(n.Button,{variant:"outline",children:"Close"})})]})},"DialogHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{className:(0,i.cn)("flex flex-col gap-2",e),"data-slot":"dialog-header",...r})},"DialogTitle",0,function({className:e,...r}){return(0,t.jsx)(o.Dialog.Title,{className:(0,i.cn)("font-heading text-base leading-none font-medium",e),"data-slot":"dialog-title",...r})}])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0biu8z1f8c42u.js","static/chunks/09w24awgoam9b.js","static/chunks/0d-e51sawr2y8.js"],runtimeModuleIds:[494553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function w(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function O(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=w,u.A=function(e){return this.r(e)(w.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=O(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=O(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),U=Symbol("turbopack exports"),C=Symbol("turbopack error");function P(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=j(),u=Object.assign(s,{[U]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[k]:e=>e(t)};return e.then(e=>{r[U]=e,P(t)},e=>{r[C]=e,P(t)}),r}}return{[U]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[C])throw e[C];return e[U]}),{promise:i,resolve:l}=j(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?i:r()},function(e){e?l(u[C]=e):i(u[U]),P(n)}),n&&-1===n.status&&(n.status=0)};let v=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}v.prototype=URL.prototype,u.U=v,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let E=new Map,_=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],i=o.map(e=>!!$.has(e)||E.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>_.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)_.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));_.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),l))_.has(o)||_.set(o,n)}for(let e of o)E.has(e)||E.set(e,n);await n}S.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(i.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let K=/\.js(?:\?[^#]*)?(?:#.*)?$/,q=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return q.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(K.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(K.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(N(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/40ovzayigkz_-.js","static/chunks/09w24awgoam9b.js","static/chunks/34oyci46fsc5w.js"],runtimeModuleIds:[494553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function w(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function O(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function k(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=w,u.A=function(e){return this.r(e)(w.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=O(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=O(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let j=Symbol("turbopack queues"),U=Symbol("turbopack exports"),v=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=k(),u=Object.assign(s,{[U]:r.exports,[j]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(j in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[j]:e=>e(t)};return e.then(e=>{r[U]=e,C(t)},e=>{r[v]=e,C(t)}),r}}return{[U]:e,[j]:()=>{}}}),r=()=>t.map(e=>{if(e[v])throw e[v];return e[U]}),{promise:i,resolve:l}=k(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[j](u)),s.queueCount?i:r()},function(e){e?l(u[v]=e):i(u[U]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],i=o.map(e=>!!$.has(e)||_.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(i.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let K=/\.js(?:\?[^#]*)?(?:#.*)?$/,q=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return q.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(K.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(K.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(N(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
@@ -0,0 +1,107 @@
1
+ import { describe, expect, test } from "vitest";
2
+
3
+ import { buildOutOfDate } from "./build-freshness";
4
+
5
+ const worktree = {
6
+ headSha: "head-1",
7
+ codeStateHash: "state-1",
8
+ hasStagedChanges: false,
9
+ hasUnstagedChanges: false,
10
+ };
11
+
12
+ describe("buildOutOfDate", () => {
13
+ test("compares completed builds with the current exact code state", () => {
14
+ expect(
15
+ buildOutOfDate({
16
+ status: "SUCCEEDED",
17
+ snapshotJson: JSON.stringify({
18
+ worktree: { headSha: "head-1", codeStateHash: "state-1" },
19
+ }),
20
+ worktree,
21
+ }),
22
+ ).toBe(false);
23
+ expect(
24
+ buildOutOfDate({
25
+ status: "SUCCEEDED",
26
+ snapshotJson: JSON.stringify({
27
+ worktree: { headSha: "head-1", codeStateHash: "older-state" },
28
+ }),
29
+ worktree,
30
+ }),
31
+ ).toBe(true);
32
+ });
33
+
34
+ test("never marks active builds out of date during pre-build scripts", () => {
35
+ expect(
36
+ buildOutOfDate({
37
+ status: "RUNNING",
38
+ snapshotJson: JSON.stringify({
39
+ worktree: { headSha: "head-1", codeStateHash: "state-before-hook" },
40
+ }),
41
+ worktree: { ...worktree, codeStateHash: "temporary-hook-state" },
42
+ }),
43
+ ).toBe(false);
44
+ });
45
+
46
+ test("suppresses older build freshness while another build runs hooks", () => {
47
+ expect(
48
+ buildOutOfDate({
49
+ status: "SUCCEEDED",
50
+ snapshotJson: JSON.stringify({
51
+ worktree: { headSha: "head-1", codeStateHash: "state-before-hook" },
52
+ }),
53
+ worktree: {
54
+ ...worktree,
55
+ codeStateHash: "temporary-hook-state",
56
+ _count: { builds: 1 },
57
+ },
58
+ }),
59
+ ).toBe(false);
60
+ });
61
+
62
+ test("waits for a stable post-build worktree observation", () => {
63
+ const build = {
64
+ status: "SUCCEEDED",
65
+ finishedAt: new Date("2026-07-18T20:00:00Z"),
66
+ snapshotJson: JSON.stringify({
67
+ worktree: { headSha: "head-1", codeStateHash: "state-before-hook" },
68
+ }),
69
+ };
70
+ expect(
71
+ buildOutOfDate({
72
+ ...build,
73
+ worktree: {
74
+ ...worktree,
75
+ codeStateHash: "temporary-hook-state",
76
+ lastCheckedAt: new Date("2026-07-18T19:59:59Z"),
77
+ },
78
+ }),
79
+ ).toBe(false);
80
+ expect(
81
+ buildOutOfDate({
82
+ ...build,
83
+ worktree: {
84
+ ...worktree,
85
+ codeStateHash: "changed-after-build",
86
+ lastCheckedAt: new Date("2026-07-18T20:00:01Z"),
87
+ },
88
+ }),
89
+ ).toBe(true);
90
+ });
91
+
92
+ test("falls back to the captured commit and dirty state for older builds", () => {
93
+ expect(
94
+ buildOutOfDate({
95
+ status: "FAILED",
96
+ snapshotJson: JSON.stringify({
97
+ worktree: {
98
+ headSha: "head-1",
99
+ hasStagedChanges: false,
100
+ hasUnstagedChanges: false,
101
+ },
102
+ }),
103
+ worktree: { ...worktree, codeStateHash: null, headSha: "head-2" },
104
+ }),
105
+ ).toBe(true);
106
+ });
107
+ });
@@ -0,0 +1,73 @@
1
+ const ACTIVE_BUILD_STATUSES = new Set(["QUEUED", "PREPARING", "RUNNING"]);
2
+
3
+ type FreshnessBuild = {
4
+ status: string;
5
+ snapshotJson: string;
6
+ finishedAt?: Date | null;
7
+ worktree?: {
8
+ headSha: string | null;
9
+ codeStateHash: string | null;
10
+ hasStagedChanges: boolean;
11
+ hasUnstagedChanges: boolean;
12
+ lastCheckedAt?: Date | null;
13
+ _count?: { builds: number };
14
+ } | null;
15
+ };
16
+
17
+ export function buildOutOfDate(build: FreshnessBuild): boolean {
18
+ if (
19
+ ACTIVE_BUILD_STATUSES.has(build.status) ||
20
+ !build.worktree ||
21
+ (build.worktree._count?.builds ?? 0) > 0
22
+ ) {
23
+ return false;
24
+ }
25
+ if (
26
+ build.finishedAt &&
27
+ (!build.worktree.lastCheckedAt ||
28
+ build.worktree.lastCheckedAt < build.finishedAt)
29
+ ) {
30
+ return false;
31
+ }
32
+ let snapshot: unknown;
33
+ try {
34
+ snapshot = JSON.parse(build.snapshotJson);
35
+ } catch {
36
+ return false;
37
+ }
38
+ if (!snapshot || typeof snapshot !== "object" || Array.isArray(snapshot)) {
39
+ return false;
40
+ }
41
+ const worktreeSnapshot = (snapshot as Record<string, unknown>).worktree;
42
+ if (
43
+ !worktreeSnapshot ||
44
+ typeof worktreeSnapshot !== "object" ||
45
+ Array.isArray(worktreeSnapshot)
46
+ ) {
47
+ return false;
48
+ }
49
+ const captured = worktreeSnapshot as Record<string, unknown>;
50
+ if (
51
+ typeof captured.codeStateHash === "string" &&
52
+ build.worktree.codeStateHash
53
+ ) {
54
+ return captured.codeStateHash !== build.worktree.codeStateHash;
55
+ }
56
+ if (
57
+ typeof captured.headSha === "string" &&
58
+ build.worktree.headSha !== captured.headSha
59
+ ) {
60
+ return true;
61
+ }
62
+ if (typeof captured.hasStagedChanges === "boolean") {
63
+ if (captured.hasStagedChanges !== build.worktree.hasStagedChanges) {
64
+ return true;
65
+ }
66
+ } else if (build.worktree.hasStagedChanges) {
67
+ return true;
68
+ }
69
+ if (typeof captured.hasUnstagedChanges === "boolean") {
70
+ return captured.hasUnstagedChanges !== build.worktree.hasUnstagedChanges;
71
+ }
72
+ return build.worktree.hasUnstagedChanges;
73
+ }
@@ -37,6 +37,9 @@ function worktree() {
37
37
  gitDirectory: "/agent/repository/.git",
38
38
  branch: "main",
39
39
  headSha: "abc123",
40
+ codeStateHash: "state-before-build",
41
+ hasStagedChanges: false,
42
+ hasUnstagedChanges: false,
40
43
  missingAt: null,
41
44
  availability: "AVAILABLE",
42
45
  codebase: {
@@ -244,6 +247,105 @@ describe("BuildsService", () => {
244
247
  expect(createJob).not.toHaveBeenCalled();
245
248
  });
246
249
 
250
+ test("requires a report-capable agent for worktree coverage", async () => {
251
+ const legacyWorktree = {
252
+ ...worktree(),
253
+ baseBranchOverride: null,
254
+ codebase: { ...worktree().codebase, defaultBranch: "main" },
255
+ };
256
+ getPrismaClient.mockResolvedValue({
257
+ build: { findUnique: vi.fn().mockResolvedValue(null) },
258
+ worktree: { findUnique: vi.fn().mockResolvedValue(legacyWorktree) },
259
+ });
260
+ const createJob = vi.fn();
261
+
262
+ await expect(
263
+ new BuildsService(control(createJob)).startWorktreeCoverage({
264
+ worktreeId: "worktree-1",
265
+ configurationId: "configuration-1",
266
+ destination,
267
+ requestId: "coverage-1",
268
+ }),
269
+ ).rejects.toThrow("updated for worktree coverage");
270
+ expect(createJob).not.toHaveBeenCalled();
271
+ });
272
+
273
+ test("bounds worktree coverage history and excludes report payloads", async () => {
274
+ const findMany = vi.fn().mockResolvedValue([]);
275
+ getPrismaClient.mockResolvedValue({ buildReport: { findMany } });
276
+
277
+ await new BuildsService(control()).coverageHistory("worktree-1");
278
+
279
+ const query = findMany.mock.calls[0]![0];
280
+ expect(query).toMatchObject({
281
+ where: {
282
+ kind: "CODE_COVERAGE",
283
+ source: "WORKTREE",
284
+ build: { worktreeId: "worktree-1" },
285
+ },
286
+ take: 50,
287
+ select: {
288
+ summaryJson: true,
289
+ build: { select: { artifacts: expect.any(Object) } },
290
+ },
291
+ });
292
+ expect(query.select).not.toHaveProperty("dataJson");
293
+ expect(query).not.toHaveProperty("include");
294
+ });
295
+
296
+ test("does not materialize reports for build-list queries", async () => {
297
+ const findMany = vi.fn().mockResolvedValue([]);
298
+ getPrismaClient.mockResolvedValue({ build: { findMany } });
299
+
300
+ await new BuildsService(control()).builds();
301
+
302
+ expect(findMany.mock.calls[0]![0].include).not.toHaveProperty("reports");
303
+ });
304
+
305
+ test("rebuilds with the original destination and selected settings", async () => {
306
+ getPrismaClient.mockResolvedValue({
307
+ build: {
308
+ findUnique: vi.fn().mockResolvedValue({
309
+ worktreeId: "worktree-1",
310
+ configurationId: "configuration-1",
311
+ destinationJson: JSON.stringify(destination),
312
+ action: "TEST",
313
+ snapshotJson: JSON.stringify({
314
+ worktree: { id: "worktree-snapshot" },
315
+ configuration: {
316
+ id: "configuration-snapshot",
317
+ advancedSettings: {
318
+ testPlan: "Integration",
319
+ enableCodeCoverage: true,
320
+ },
321
+ },
322
+ scripts: [{ id: "script-1" }, { id: "script-2" }],
323
+ }),
324
+ }),
325
+ },
326
+ });
327
+ const service = new BuildsService(control());
328
+ const startBuild = vi
329
+ .spyOn(service, "startBuild")
330
+ .mockResolvedValue({ id: "build-rebuilt" } as never);
331
+
332
+ await expect(
333
+ service.rebuildBuild("build-1", "rebuild-request"),
334
+ ).resolves.toEqual({ id: "build-rebuilt" });
335
+ expect(startBuild).toHaveBeenCalledWith({
336
+ worktreeId: "worktree-1",
337
+ configurationId: "configuration-1",
338
+ destination,
339
+ scriptIds: ["script-1", "script-2"],
340
+ action: "TEST",
341
+ advancedSettings: {
342
+ testPlan: "Integration",
343
+ enableCodeCoverage: true,
344
+ },
345
+ requestId: "rebuild-request",
346
+ });
347
+ });
348
+
247
349
  test("queues a generic simulator build from saved settings without reparsing", async () => {
248
350
  const buildCreate = vi.fn().mockResolvedValue({ id: "build-1" });
249
351
  const buildUpdate = vi.fn().mockResolvedValue({ id: "build-1" });
@@ -308,6 +410,86 @@ describe("BuildsService", () => {
308
410
  expect(JSON.parse(data.snapshotJson).configuration.parse.status).toBe(
309
411
  "UNPARSED",
310
412
  );
413
+ expect(JSON.parse(data.snapshotJson).worktree).toMatchObject({
414
+ codeStateHash: "state-before-build",
415
+ hasStagedChanges: false,
416
+ hasUnstagedChanges: false,
417
+ });
418
+ });
419
+
420
+ test("captures the pre-hook code state and restores the final worktree state on completion", async () => {
421
+ let completeBuild:
422
+ | ((job: {
423
+ id: string;
424
+ status: string;
425
+ resultJson: string | null;
426
+ error: string | null;
427
+ }) => Promise<void>)
428
+ | undefined;
429
+ const buildUpdate = vi.fn();
430
+ const worktreeUpdate = vi.fn().mockResolvedValue({ count: 1 });
431
+ const transaction = {
432
+ build: { update: buildUpdate },
433
+ worktree: { updateMany: worktreeUpdate },
434
+ buildArtifact: { upsert: vi.fn() },
435
+ buildScriptExecution: { updateMany: vi.fn() },
436
+ };
437
+ getPrismaClient.mockResolvedValue({
438
+ build: {
439
+ findFirst: vi.fn().mockResolvedValue({
440
+ id: "build-1",
441
+ status: "RUNNING",
442
+ errorCode: null,
443
+ error: null,
444
+ startedAt: new Date(0),
445
+ worktreeId: "worktree-1",
446
+ snapshotJson: JSON.stringify({
447
+ worktree: { id: "worktree-1", codeStateHash: "queued-state" },
448
+ }),
449
+ }),
450
+ },
451
+ $transaction: vi.fn((callback) => callback(transaction)),
452
+ });
453
+ new BuildsService({
454
+ registerCompletionHandler: vi.fn((kind, handler) => {
455
+ if (kind === IOS_BUILD_JOB_KIND) completeBuild = handler as never;
456
+ }),
457
+ } as unknown as AgentControlService);
458
+
459
+ await completeBuild!({
460
+ id: "job-1",
461
+ status: "SUCCEEDED",
462
+ resultJson: JSON.stringify({
463
+ sourceStateHash: "state-before-hooks",
464
+ finalStateHash: "state-after-post-hooks",
465
+ codeStateObservedAt: "2026-07-18T20:00:00.000Z",
466
+ artifacts: [],
467
+ scriptExecutions: [],
468
+ }),
469
+ error: null,
470
+ });
471
+
472
+ expect(buildUpdate).toHaveBeenCalledWith(
473
+ expect.objectContaining({
474
+ data: expect.objectContaining({
475
+ snapshotJson: expect.stringContaining("state-before-hooks"),
476
+ status: "SUCCEEDED",
477
+ }),
478
+ }),
479
+ );
480
+ expect(worktreeUpdate).toHaveBeenCalledWith({
481
+ where: {
482
+ id: "worktree-1",
483
+ OR: [
484
+ { lastCheckedAt: null },
485
+ { lastCheckedAt: { lt: new Date("2026-07-18T20:00:00.000Z") } },
486
+ ],
487
+ },
488
+ data: {
489
+ codeStateHash: "state-after-post-hooks",
490
+ lastCheckedAt: new Date("2026-07-18T20:00:00.000Z"),
491
+ },
492
+ });
311
493
  });
312
494
 
313
495
  test("resolves Xcode 26 test products from a compatible prior build", async () => {
@@ -572,15 +754,45 @@ describe("BuildsService", () => {
572
754
  );
573
755
  });
574
756
 
575
- test("returns generic build targets without queueing an agent preflight", async () => {
576
- const createJob = vi.fn();
757
+ test("returns generic and connected build targets from the agent preflight", async () => {
758
+ const createJob = vi.fn().mockResolvedValue({ id: "destinations-job" });
759
+ const genericSimulator = {
760
+ type: "SIMULATOR",
761
+ id: "generic-ios-simulator",
762
+ name: "Any iOS Simulator",
763
+ platform: "iOS Simulator",
764
+ osVersion: null,
765
+ state: null,
766
+ generic: true,
767
+ };
768
+ const genericPhysical = {
769
+ type: "PHYSICAL_DEVICE",
770
+ id: "generic-ios",
771
+ name: "Any Physical iOS Device",
772
+ platform: "iOS",
773
+ osVersion: null,
774
+ state: null,
775
+ generic: true,
776
+ };
577
777
  getPrismaClient.mockResolvedValue({
578
778
  worktree: { findUnique: vi.fn().mockResolvedValue(worktree()) },
579
779
  buildConfiguration: {
580
780
  findUnique: vi.fn().mockResolvedValue(configuration()),
581
781
  },
782
+ agentJob: { deleteMany: vi.fn().mockResolvedValue({ count: 1 }) },
582
783
  });
583
- const service = new BuildsService(control(createJob));
784
+ const service = new BuildsService({
785
+ registerCompletionHandler: vi.fn(),
786
+ createJob,
787
+ getJob: vi.fn().mockResolvedValue({
788
+ id: "destinations-job",
789
+ status: "SUCCEEDED",
790
+ resultJson: JSON.stringify({
791
+ destinations: [genericSimulator, genericPhysical, destination],
792
+ }),
793
+ error: null,
794
+ }),
795
+ } as unknown as AgentControlService);
584
796
 
585
797
  await expect(
586
798
  service.destinations({
@@ -589,11 +801,13 @@ describe("BuildsService", () => {
589
801
  action: "BUILD",
590
802
  requestId: "generic-destinations",
591
803
  }),
592
- ).resolves.toEqual([
593
- expect.objectContaining({ type: "SIMULATOR", generic: true }),
594
- expect.objectContaining({ type: "PHYSICAL_DEVICE", generic: true }),
595
- ]);
596
- expect(createJob).not.toHaveBeenCalled();
804
+ ).resolves.toEqual([genericSimulator, genericPhysical, destination]);
805
+ expect(createJob).toHaveBeenCalledWith(
806
+ expect.objectContaining({
807
+ kind: IOS_DESTINATIONS_JOB_KIND,
808
+ payload: expect.objectContaining({ action: "BUILD" }),
809
+ }),
810
+ );
597
811
  });
598
812
 
599
813
  test("orders and paginates build-wide logs by timestamp and ID", async () => {