@ai-development-environment/server 0.0.84 → 0.0.85

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 (401) hide show
  1. package/package.json +4 -2
  2. package/standalone/.next/BUILD_ID +1 -1
  3. package/standalone/.next/build-manifest.json +3 -3
  4. package/standalone/.next/node_modules/re2-332e07f5b609c24b/index.cjs +1 -0
  5. package/standalone/.next/node_modules/re2-332e07f5b609c24b/package.json +4 -0
  6. package/standalone/.next/prerender-manifest.json +3 -3
  7. package/standalone/.next/required-server-files.json +3 -2
  8. package/standalone/.next/server/app/[locale]/(auth)/register/page.js.nft.json +1 -1
  9. package/standalone/.next/server/app/[locale]/(auth)/sign-in/page.js.nft.json +1 -1
  10. package/standalone/.next/server/app/[locale]/(dashboard)/actions/page.js.nft.json +1 -1
  11. package/standalone/.next/server/app/[locale]/(dashboard)/actions-cache/page.js.nft.json +1 -1
  12. package/standalone/.next/server/app/[locale]/(dashboard)/agents/[id]/page.js.nft.json +1 -1
  13. package/standalone/.next/server/app/[locale]/(dashboard)/agents/page.js.nft.json +1 -1
  14. package/standalone/.next/server/app/[locale]/(dashboard)/analytics-events/page.js.nft.json +1 -1
  15. package/standalone/.next/server/app/[locale]/(dashboard)/api-keys/page.js.nft.json +1 -1
  16. package/standalone/.next/server/app/[locale]/(dashboard)/apps/[appId]/page.js.nft.json +1 -1
  17. package/standalone/.next/server/app/[locale]/(dashboard)/apps/page.js.nft.json +1 -1
  18. package/standalone/.next/server/app/[locale]/(dashboard)/build-data/page.js.nft.json +1 -1
  19. package/standalone/.next/server/app/[locale]/(dashboard)/builds/[buildId]/coverage/page.js.nft.json +1 -1
  20. package/standalone/.next/server/app/[locale]/(dashboard)/builds/[buildId]/output/route.js +2 -2
  21. package/standalone/.next/server/app/[locale]/(dashboard)/builds/[buildId]/output/route.js.nft.json +1 -1
  22. package/standalone/.next/server/app/[locale]/(dashboard)/builds/[buildId]/page.js.nft.json +1 -1
  23. package/standalone/.next/server/app/[locale]/(dashboard)/builds/page.js.nft.json +1 -1
  24. package/standalone/.next/server/app/[locale]/(dashboard)/changes/page.js.nft.json +1 -1
  25. package/standalone/.next/server/app/[locale]/(dashboard)/codebases/[codebaseId]/page.js.nft.json +1 -1
  26. package/standalone/.next/server/app/[locale]/(dashboard)/codebases/page.js.nft.json +1 -1
  27. package/standalone/.next/server/app/[locale]/(dashboard)/codebases/repositories/[repositoryId]/page.js.nft.json +1 -1
  28. package/standalone/.next/server/app/[locale]/(dashboard)/commands/[commandId]/edit/page.js.nft.json +1 -1
  29. package/standalone/.next/server/app/[locale]/(dashboard)/commands/new/page.js.nft.json +1 -1
  30. package/standalone/.next/server/app/[locale]/(dashboard)/commands/page.js.nft.json +1 -1
  31. package/standalone/.next/server/app/[locale]/(dashboard)/commands/runs/[runId]/output/route.js +2 -2
  32. package/standalone/.next/server/app/[locale]/(dashboard)/commands/runs/[runId]/output/route.js.nft.json +1 -1
  33. package/standalone/.next/server/app/[locale]/(dashboard)/commands/runs/[runId]/page.js.nft.json +1 -1
  34. package/standalone/.next/server/app/[locale]/(dashboard)/comments/page.js.nft.json +1 -1
  35. package/standalone/.next/server/app/[locale]/(dashboard)/console-logs/page.js.nft.json +1 -1
  36. package/standalone/.next/server/app/[locale]/(dashboard)/costs/page.js.nft.json +1 -1
  37. package/standalone/.next/server/app/[locale]/(dashboard)/credentials/page.js.nft.json +1 -1
  38. package/standalone/.next/server/app/[locale]/(dashboard)/devices/[id]/page.js.nft.json +1 -1
  39. package/standalone/.next/server/app/[locale]/(dashboard)/devices/enroll/page.js.nft.json +1 -1
  40. package/standalone/.next/server/app/[locale]/(dashboard)/devices/page.js.nft.json +1 -1
  41. package/standalone/.next/server/app/[locale]/(dashboard)/drafts/page.js.nft.json +1 -1
  42. package/standalone/.next/server/app/[locale]/(dashboard)/github-cache/entries/[id]/page.js.nft.json +1 -1
  43. package/standalone/.next/server/app/[locale]/(dashboard)/github-cache/page.js.nft.json +1 -1
  44. package/standalone/.next/server/app/[locale]/(dashboard)/jira/tickets/[issueKey]/page.js.nft.json +1 -1
  45. package/standalone/.next/server/app/[locale]/(dashboard)/jira/tickets/page.js.nft.json +1 -1
  46. package/standalone/.next/server/app/[locale]/(dashboard)/jira-cache/page.js.nft.json +1 -1
  47. package/standalone/.next/server/app/[locale]/(dashboard)/jira-cache/tickets/[issueKey]/page.js.nft.json +1 -1
  48. package/standalone/.next/server/app/[locale]/(dashboard)/jira-webhooks/page.js.nft.json +1 -1
  49. package/standalone/.next/server/app/[locale]/(dashboard)/jobs/[jobId]/page.js.nft.json +1 -1
  50. package/standalone/.next/server/app/[locale]/(dashboard)/notifications/page.js.nft.json +1 -1
  51. package/standalone/.next/server/app/[locale]/(dashboard)/page.js.nft.json +1 -1
  52. package/standalone/.next/server/app/[locale]/(dashboard)/plans/[runId]/page.js.nft.json +1 -1
  53. package/standalone/.next/server/app/[locale]/(dashboard)/plans/page.js.nft.json +1 -1
  54. package/standalone/.next/server/app/[locale]/(dashboard)/polling/page.js.nft.json +1 -1
  55. package/standalone/.next/server/app/[locale]/(dashboard)/provisioning-profiles/[profileId]/page.js.nft.json +1 -1
  56. package/standalone/.next/server/app/[locale]/(dashboard)/provisioning-profiles/page.js.nft.json +1 -1
  57. package/standalone/.next/server/app/[locale]/(dashboard)/pull-requests/[owner]/[repository]/[number]/page.js.nft.json +1 -1
  58. package/standalone/.next/server/app/[locale]/(dashboard)/pull-requests/page.js.nft.json +1 -1
  59. package/standalone/.next/server/app/[locale]/(dashboard)/push-notifications/page.js.nft.json +1 -1
  60. package/standalone/.next/server/app/[locale]/(dashboard)/runs/new/page.js.nft.json +1 -1
  61. package/standalone/.next/server/app/[locale]/(dashboard)/sessions/[runId]/page.js.nft.json +1 -1
  62. package/standalone/.next/server/app/[locale]/(dashboard)/sessions/page.js.nft.json +1 -1
  63. package/standalone/.next/server/app/[locale]/(dashboard)/settings/page.js.nft.json +1 -1
  64. package/standalone/.next/server/app/[locale]/(dashboard)/skills/[skillId]/page.js.nft.json +1 -1
  65. package/standalone/.next/server/app/[locale]/(dashboard)/skills/groups/[groupId]/page.js.nft.json +1 -1
  66. package/standalone/.next/server/app/[locale]/(dashboard)/skills/groups/page.js.nft.json +1 -1
  67. package/standalone/.next/server/app/[locale]/(dashboard)/skills/page.js.nft.json +1 -1
  68. package/standalone/.next/server/app/[locale]/(dashboard)/skills/sync/[runId]/page.js.nft.json +1 -1
  69. package/standalone/.next/server/app/[locale]/(dashboard)/tools/page.js.nft.json +1 -1
  70. package/standalone/.next/server/app/[locale]/(dashboard)/unified-events/page.js.nft.json +1 -1
  71. package/standalone/.next/server/app/[locale]/(dashboard)/usage/page.js.nft.json +1 -1
  72. package/standalone/.next/server/app/[locale]/(dashboard)/users/page.js.nft.json +1 -1
  73. package/standalone/.next/server/app/[locale]/(dashboard)/webhooks/page.js.nft.json +1 -1
  74. package/standalone/.next/server/app/[locale]/(dashboard)/workflows/[workflowId]/edit/page.js.nft.json +1 -1
  75. package/standalone/.next/server/app/[locale]/(dashboard)/workflows/[workflowId]/page.js.nft.json +1 -1
  76. package/standalone/.next/server/app/[locale]/(dashboard)/workflows/new/page.js.nft.json +1 -1
  77. package/standalone/.next/server/app/[locale]/(dashboard)/workflows/page.js.nft.json +1 -1
  78. package/standalone/.next/server/app/[locale]/(dashboard)/workflows/runs/[runId]/page.js.nft.json +1 -1
  79. package/standalone/.next/server/app/[locale]/(dashboard)/worktrees/[worktreeId]/page.js.nft.json +1 -1
  80. package/standalone/.next/server/app/[locale]/(dashboard)/worktrees/page.js.nft.json +1 -1
  81. package/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  82. package/standalone/.next/server/app/_global-error.html +1 -1
  83. package/standalone/.next/server/app/_global-error.rsc +1 -1
  84. package/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  85. package/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  86. package/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  87. package/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  88. package/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  89. package/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  90. package/standalone/.next/server/app/_not-found.html +1 -1
  91. package/standalone/.next/server/app/_not-found.rsc +1 -1
  92. package/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  93. package/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  94. package/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  95. package/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  96. package/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  97. package/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  98. package/standalone/.next/server/app/api/agent/run-attachments/[attachmentId]/route.js +2 -2
  99. package/standalone/.next/server/app/api/agent/run-attachments/[attachmentId]/route.js.nft.json +1 -1
  100. package/standalone/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -1
  101. package/standalone/.next/server/app/api/auth/config/route.js.nft.json +1 -1
  102. package/standalone/.next/server/app/api/auth/management/api-keys/[keyId]/route.js.nft.json +1 -1
  103. package/standalone/.next/server/app/api/auth/management/api-keys/route.js.nft.json +1 -1
  104. package/standalone/.next/server/app/api/auth/management/registration/route.js.nft.json +1 -1
  105. package/standalone/.next/server/app/api/auth/management/sessions/[sessionId]/route.js.nft.json +1 -1
  106. package/standalone/.next/server/app/api/auth/management/users/[userId]/route.js.nft.json +1 -1
  107. package/standalone/.next/server/app/api/auth/management/users/route.js.nft.json +1 -1
  108. package/standalone/.next/server/app/api/auth/mobile/oauth/complete/route.js +3 -3
  109. package/standalone/.next/server/app/api/auth/mobile/oauth/complete/route.js.nft.json +1 -1
  110. package/standalone/.next/server/app/api/auth/mobile/oauth/start/route.js +6 -6
  111. package/standalone/.next/server/app/api/auth/mobile/oauth/start/route.js.nft.json +1 -1
  112. package/standalone/.next/server/app/api/auth/mobile/redeem/route.js +6 -6
  113. package/standalone/.next/server/app/api/auth/mobile/redeem/route.js.nft.json +1 -1
  114. package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js +2 -2
  115. package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js.nft.json +1 -1
  116. package/standalone/.next/server/app/api/codebases/by-path/route.js +2 -2
  117. package/standalone/.next/server/app/api/codebases/by-path/route.js.nft.json +1 -1
  118. package/standalone/.next/server/app/api/codebases/route.js +2 -2
  119. package/standalone/.next/server/app/api/codebases/route.js.nft.json +1 -1
  120. package/standalone/.next/server/app/api/graphql/route.js +2 -2
  121. package/standalone/.next/server/app/api/graphql/route.js.nft.json +1 -1
  122. package/standalone/.next/server/app/api/ios/apns-devices/route.js +2 -2
  123. package/standalone/.next/server/app/api/ios/apns-devices/route.js.nft.json +1 -1
  124. package/standalone/.next/server/app/api/ios/devices/export.tsv/route.js +2 -2
  125. package/standalone/.next/server/app/api/ios/devices/export.tsv/route.js.nft.json +1 -1
  126. package/standalone/.next/server/app/api/ios/enrollment/start/route.js +2 -2
  127. package/standalone/.next/server/app/api/ios/enrollment/start/route.js.nft.json +1 -1
  128. package/standalone/.next/server/app/api/ios/notification-devices/route.js +2 -2
  129. package/standalone/.next/server/app/api/ios/notification-devices/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/openapi.json/route.js +1 -1
  133. package/standalone/.next/server/app/api/openapi.json/route.js.nft.json +1 -1
  134. package/standalone/.next/server/app/api/public/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route.js +2 -2
  135. package/standalone/.next/server/app/api/public/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route.js.nft.json +1 -1
  136. package/standalone/.next/server/app/api/public/builds/[buildId]/artifacts/[artifactId]/route.js +2 -2
  137. package/standalone/.next/server/app/api/public/builds/[buildId]/artifacts/[artifactId]/route.js.nft.json +1 -1
  138. package/standalone/.next/server/app/api/public/github/webhook/route.js +2 -2
  139. package/standalone/.next/server/app/api/public/github/webhook/route.js.nft.json +1 -1
  140. package/standalone/.next/server/app/api/public/ios/enrollment-complete/route.js.nft.json +1 -1
  141. package/standalone/.next/server/app/api/public/ios/enrollment-profile/route.js +2 -2
  142. package/standalone/.next/server/app/api/public/ios/enrollment-profile/route.js.nft.json +1 -1
  143. package/standalone/.next/server/app/api/public/ios/profile-response/route.js +2 -2
  144. package/standalone/.next/server/app/api/public/ios/profile-response/route.js.nft.json +1 -1
  145. package/standalone/.next/server/app/api/public/jira/webhook/route.js +2 -2
  146. package/standalone/.next/server/app/api/public/jira/webhook/route.js.nft.json +1 -1
  147. package/standalone/.next/server/app/api/run-attachments/[attachmentId]/route.js.nft.json +1 -1
  148. package/standalone/.next/server/app/api/run-attachments/route.js.nft.json +1 -1
  149. package/standalone/.next/server/app/api/telemetry/analytics-events/route.js +2 -2
  150. package/standalone/.next/server/app/api/telemetry/analytics-events/route.js.nft.json +1 -1
  151. package/standalone/.next/server/app/api/telemetry/console-logs/route.js +2 -2
  152. package/standalone/.next/server/app/api/telemetry/console-logs/route.js.nft.json +1 -1
  153. package/standalone/.next/server/app/api/telemetry/export/route.js +2 -2
  154. package/standalone/.next/server/app/api/telemetry/export/route.js.nft.json +1 -1
  155. package/standalone/.next/server/app/api/tools/call/route.js +2 -2
  156. package/standalone/.next/server/app/api/tools/call/route.js.nft.json +1 -1
  157. package/standalone/.next/server/app/api/tools/catalog/route.js +2 -2
  158. package/standalone/.next/server/app/api/tools/catalog/route.js.nft.json +1 -1
  159. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js +2 -2
  160. package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js.nft.json +1 -1
  161. package/standalone/.next/server/app/icon.svg/route.js.nft.json +1 -1
  162. package/standalone/.next/server/chunks/{[root-of-the-server]__04i6ibl._.js → [root-of-the-server]__00awghn._.js} +1 -1
  163. package/standalone/.next/server/chunks/{[root-of-the-server]__06e1aai._.js → [root-of-the-server]__01fc8er._.js} +1 -1
  164. package/standalone/.next/server/chunks/{[root-of-the-server]__00xcg2c._.js → [root-of-the-server]__01s43cm._.js} +1 -1
  165. package/standalone/.next/server/chunks/{[root-of-the-server]__0-j_rt4._.js → [root-of-the-server]__01xz3y_._.js} +1 -1
  166. package/standalone/.next/server/chunks/{[root-of-the-server]__06gi27i._.js → [root-of-the-server]__021fex_._.js} +1 -1
  167. package/standalone/.next/server/chunks/{[root-of-the-server]__06jhhu1._.js → [root-of-the-server]__028j56p._.js} +1 -1
  168. package/standalone/.next/server/chunks/{[root-of-the-server]__0c_sj8k._.js → [root-of-the-server]__04_ohht._.js} +2 -2
  169. package/standalone/.next/server/chunks/{[root-of-the-server]__0c9kg5q._.js → [root-of-the-server]__04yufht._.js} +1 -1
  170. package/standalone/.next/server/chunks/{[root-of-the-server]__06uxp7s._.js → [root-of-the-server]__05-fxkh._.js} +1 -1
  171. package/standalone/.next/server/chunks/{[root-of-the-server]__14m_8nc._.js → [root-of-the-server]__06u7pdm._.js} +2 -2
  172. package/standalone/.next/server/chunks/{[root-of-the-server]__0072ye-._.js → [root-of-the-server]__06xlh28._.js} +1 -1
  173. package/standalone/.next/server/chunks/{[root-of-the-server]__0-hp8gw._.js → [root-of-the-server]__08c82jc._.js} +1 -1
  174. package/standalone/.next/server/chunks/{[root-of-the-server]__0712mqb._.js → [root-of-the-server]__08ebgcu._.js} +1 -1
  175. package/standalone/.next/server/chunks/{[root-of-the-server]__16ke6wr._.js → [root-of-the-server]__08lx09f._.js} +2 -2
  176. package/standalone/.next/server/chunks/{[root-of-the-server]__148dtoe._.js → [root-of-the-server]__096mlhl._.js} +2 -2
  177. package/standalone/.next/server/chunks/{[root-of-the-server]__00kj6r7._.js → [root-of-the-server]__09mo3t8._.js} +1 -1
  178. package/standalone/.next/server/chunks/{[root-of-the-server]__10bs2_7._.js → [root-of-the-server]__09svdrb._.js} +2 -2
  179. package/standalone/.next/server/chunks/{[root-of-the-server]__07vyiqy._.js → [root-of-the-server]__0_d2g94._.js} +1 -1
  180. package/standalone/.next/server/chunks/{[root-of-the-server]__1-l6iy9._.js → [root-of-the-server]__0al7x4f._.js} +2 -2
  181. package/standalone/.next/server/chunks/[root-of-the-server]__0c2tkz2._.js +3 -0
  182. package/standalone/.next/server/chunks/{[root-of-the-server]__05l4mi8._.js → [root-of-the-server]__0c4pqb-._.js} +1 -1
  183. package/standalone/.next/server/chunks/[root-of-the-server]__0cj65ti._.js +3 -0
  184. package/standalone/.next/server/chunks/{[root-of-the-server]__01885qr._.js → [root-of-the-server]__0d3awck._.js} +1 -1
  185. package/standalone/.next/server/chunks/{[root-of-the-server]__09yow0s._.js → [root-of-the-server]__0de_qut._.js} +1 -1
  186. package/standalone/.next/server/chunks/{[root-of-the-server]__1x35-d0._.js → [root-of-the-server]__0e31e7p._.js} +2 -2
  187. package/standalone/.next/server/chunks/[root-of-the-server]__0e53pce._.js +3 -0
  188. package/standalone/.next/server/chunks/[root-of-the-server]__0ecnp29._.js +3 -0
  189. package/standalone/.next/server/chunks/[root-of-the-server]__0eldrcp._.js +3 -0
  190. package/standalone/.next/server/chunks/[root-of-the-server]__0eopc38._.js +3 -0
  191. package/standalone/.next/server/chunks/[root-of-the-server]__0fo_msa._.js +3 -0
  192. package/standalone/.next/server/chunks/[root-of-the-server]__0gtwvjk._.js +3 -0
  193. package/standalone/.next/server/chunks/[root-of-the-server]__0h50ygv._.js +3 -0
  194. package/standalone/.next/server/chunks/{[root-of-the-server]__00t260s._.js → [root-of-the-server]__0hbjmzn._.js} +2 -2
  195. package/standalone/.next/server/chunks/[root-of-the-server]__0hffylr._.js +3 -0
  196. package/standalone/.next/server/chunks/[root-of-the-server]__0hvsuut._.js +3 -0
  197. package/standalone/.next/server/chunks/[root-of-the-server]__0inac5u._.js +3 -0
  198. package/standalone/.next/server/chunks/[root-of-the-server]__0jd56xd._.js +3 -0
  199. package/standalone/.next/server/chunks/[root-of-the-server]__0jjv2dl._.js +3 -0
  200. package/standalone/.next/server/chunks/[root-of-the-server]__0kbteue._.js +3 -0
  201. package/standalone/.next/server/chunks/[root-of-the-server]__0le7cki._.js +3 -0
  202. package/standalone/.next/server/chunks/[root-of-the-server]__0lu8r5i._.js +3 -0
  203. package/standalone/.next/server/chunks/[root-of-the-server]__0m5alcp._.js +3 -0
  204. package/standalone/.next/server/chunks/[root-of-the-server]__0mbymp_._.js +3 -0
  205. package/standalone/.next/server/chunks/[root-of-the-server]__0mi-xpq._.js +3 -0
  206. package/standalone/.next/server/chunks/[root-of-the-server]__0mx_l8j._.js +3 -0
  207. package/standalone/.next/server/chunks/[root-of-the-server]__0qkxjnh._.js +3 -0
  208. package/standalone/.next/server/chunks/[root-of-the-server]__0rgdw1t._.js +3 -0
  209. package/standalone/.next/server/chunks/[root-of-the-server]__0s_zc22._.js +3 -0
  210. package/standalone/.next/server/chunks/[root-of-the-server]__0sk_wpl._.js +3 -0
  211. package/standalone/.next/server/chunks/[root-of-the-server]__0sm_9x3._.js +3 -0
  212. package/standalone/.next/server/chunks/[root-of-the-server]__0uaej7i._.js +3 -0
  213. package/standalone/.next/server/chunks/{[root-of-the-server]__09jmuxh._.js → [root-of-the-server]__0v3wyan._.js} +2 -2
  214. package/standalone/.next/server/chunks/[root-of-the-server]__0wkgq45._.js +3 -0
  215. package/standalone/.next/server/chunks/[root-of-the-server]__0xbgjwj._.js +3 -0
  216. package/standalone/.next/server/chunks/[root-of-the-server]__0xsa1ko._.js +3 -0
  217. package/standalone/.next/server/chunks/[root-of-the-server]__0yg5tbe._.js +3 -0
  218. package/standalone/.next/server/chunks/[root-of-the-server]__0zcm8g9._.js +3 -0
  219. package/standalone/.next/server/chunks/{[root-of-the-server]__1dgyml6._.js → [root-of-the-server]__0zxvn5t._.js} +2 -2
  220. package/standalone/.next/server/chunks/{[root-of-the-server]__18xb4tw._.js → [root-of-the-server]__1-rtc2c._.js} +2 -2
  221. package/standalone/.next/server/chunks/[root-of-the-server]__10duq79._.js +3 -0
  222. package/standalone/.next/server/chunks/[root-of-the-server]__10n9aa8._.js +3 -0
  223. package/standalone/.next/server/chunks/{[root-of-the-server]__1mmah0v._.js → [root-of-the-server]__124au6p._.js} +2 -2
  224. package/standalone/.next/server/chunks/[root-of-the-server]__137wgug._.js +3 -0
  225. package/standalone/.next/server/chunks/{[root-of-the-server]__0x8mo8l._.js → [root-of-the-server]__13cy_hd._.js} +2 -2
  226. package/standalone/.next/server/chunks/[root-of-the-server]__13o2i1b._.js +3 -0
  227. package/standalone/.next/server/chunks/[root-of-the-server]__1563rfp._.js +3 -0
  228. package/standalone/.next/server/chunks/[root-of-the-server]__15p0skc._.js +3 -0
  229. package/standalone/.next/server/chunks/[root-of-the-server]__15xfa5d._.js +3 -0
  230. package/standalone/.next/server/chunks/[root-of-the-server]__16q8nl1._.js +3 -0
  231. package/standalone/.next/server/chunks/{[root-of-the-server]__045vcsv._.js → [root-of-the-server]__16ur7du._.js} +2 -2
  232. package/standalone/.next/server/chunks/{[root-of-the-server]__1hlka6s._.js → [root-of-the-server]__17m0i74._.js} +2 -2
  233. package/standalone/.next/server/chunks/[root-of-the-server]__18crj_k._.js +3 -0
  234. package/standalone/.next/server/chunks/{[root-of-the-server]__0pjluwr._.js → [root-of-the-server]__19c_hrh._.js} +2 -2
  235. package/standalone/.next/server/chunks/{[root-of-the-server]__07sc4d6._.js → [root-of-the-server]__19lnrpb._.js} +3 -3
  236. package/standalone/.next/server/chunks/{[root-of-the-server]__1vx14af._.js → [root-of-the-server]__19miqxq._.js} +2 -2
  237. package/standalone/.next/server/chunks/[root-of-the-server]__19o8fio._.js +3 -0
  238. package/standalone/.next/server/chunks/{[root-of-the-server]__1hxh6f7._.js → [root-of-the-server]__19vmv0l._.js} +2 -2
  239. package/standalone/.next/server/chunks/{[root-of-the-server]__07b7x5c._.js → [root-of-the-server]__1_-bk8a._.js} +2 -2
  240. package/standalone/.next/server/chunks/[root-of-the-server]__1_87r0p._.js +3 -0
  241. package/standalone/.next/server/chunks/[root-of-the-server]__1_x_z5z._.js +3 -0
  242. package/standalone/.next/server/chunks/[root-of-the-server]__1a2a4dw._.js +3 -0
  243. package/standalone/.next/server/chunks/[root-of-the-server]__1ai5a7b._.js +3 -0
  244. package/standalone/.next/server/chunks/[root-of-the-server]__1aqix91._.js +3 -0
  245. package/standalone/.next/server/chunks/[root-of-the-server]__1au8rl_._.js +3 -0
  246. package/standalone/.next/server/chunks/[root-of-the-server]__1awqqwk._.js +3 -0
  247. package/standalone/.next/server/chunks/{[root-of-the-server]__0jrv5rz._.js → [root-of-the-server]__1b92e1t._.js} +2 -2
  248. package/standalone/.next/server/chunks/[root-of-the-server]__1bv5-_8._.js +3 -0
  249. package/standalone/.next/server/chunks/[root-of-the-server]__1c80jly._.js +3 -0
  250. package/standalone/.next/server/chunks/[root-of-the-server]__1cgwl7i._.js +3 -0
  251. package/standalone/.next/server/chunks/[root-of-the-server]__1cnys8r._.js +3 -0
  252. package/standalone/.next/server/chunks/[root-of-the-server]__1d4q9gf._.js +3 -0
  253. package/standalone/.next/server/chunks/[root-of-the-server]__1e7vx35._.js +3 -0
  254. package/standalone/.next/server/chunks/[root-of-the-server]__1he2uqp._.js +3 -0
  255. package/standalone/.next/server/chunks/[root-of-the-server]__1hs29qq._.js +3 -0
  256. package/standalone/.next/server/chunks/[root-of-the-server]__1hyz59c._.js +3 -0
  257. package/standalone/.next/server/chunks/[root-of-the-server]__1id6lt6._.js +3 -0
  258. package/standalone/.next/server/chunks/[root-of-the-server]__1ieaw8o._.js +3 -0
  259. package/standalone/.next/server/chunks/[root-of-the-server]__1jehtjb._.js +3 -0
  260. package/standalone/.next/server/chunks/[root-of-the-server]__1jnqgu8._.js +3 -0
  261. package/standalone/.next/server/chunks/[root-of-the-server]__1k2tvfv._.js +3 -0
  262. package/standalone/.next/server/chunks/{[root-of-the-server]__0p1pt6i._.js → [root-of-the-server]__1kjpcz_._.js} +2 -2
  263. package/standalone/.next/server/chunks/[root-of-the-server]__1lulyuw._.js +3 -0
  264. package/standalone/.next/server/chunks/[root-of-the-server]__1m1rllj._.js +3 -0
  265. package/standalone/.next/server/chunks/[root-of-the-server]__1m91618._.js +3 -0
  266. package/standalone/.next/server/chunks/{[root-of-the-server]__0omg2wb._.js → [root-of-the-server]__1mki32r._.js} +2 -2
  267. package/standalone/.next/server/chunks/{[root-of-the-server]__0-3ib_g._.js → [root-of-the-server]__1n_ks5s._.js} +2 -2
  268. package/standalone/.next/server/chunks/{[root-of-the-server]__1n6euz5._.js → [root-of-the-server]__1nj39zt._.js} +2 -2
  269. package/standalone/.next/server/chunks/[root-of-the-server]__1o2p5d4._.js +3 -0
  270. package/standalone/.next/server/chunks/[root-of-the-server]__1o59f9e._.js +3 -0
  271. package/standalone/.next/server/chunks/{[root-of-the-server]__05fsjsb._.js → [root-of-the-server]__1od6044._.js} +2 -2
  272. package/standalone/.next/server/chunks/[root-of-the-server]__1p32xvh._.js +3 -0
  273. package/standalone/.next/server/chunks/[root-of-the-server]__1r19vvq._.js +3 -0
  274. package/standalone/.next/server/chunks/[root-of-the-server]__1rtda2l._.js +3 -0
  275. package/standalone/.next/server/chunks/[root-of-the-server]__1rup4sv._.js +3 -0
  276. package/standalone/.next/server/chunks/[root-of-the-server]__1s5inmc._.js +3 -0
  277. package/standalone/.next/server/chunks/{[root-of-the-server]__15za52u._.js → [root-of-the-server]__1sajsif._.js} +6 -6
  278. package/standalone/.next/server/chunks/[root-of-the-server]__1seny2-._.js +3 -0
  279. package/standalone/.next/server/chunks/[root-of-the-server]__1soccc1._.js +3 -0
  280. package/standalone/.next/server/chunks/[root-of-the-server]__1u_dbg2._.js +3 -0
  281. package/standalone/.next/server/chunks/{[root-of-the-server]__0hz1a1g._.js → [root-of-the-server]__1uinol4._.js} +6 -6
  282. package/standalone/.next/server/chunks/[root-of-the-server]__1ulp98y._.js +3 -0
  283. package/standalone/.next/server/chunks/{[root-of-the-server]__0chticn._.js → [root-of-the-server]__1utpbf1._.js} +2 -2
  284. package/standalone/.next/server/chunks/[root-of-the-server]__1wf1339._.js +3 -0
  285. package/standalone/.next/server/chunks/[root-of-the-server]__1x2ubky._.js +3 -0
  286. package/standalone/.next/server/chunks/[root-of-the-server]__1xehef8._.js +3 -0
  287. package/standalone/.next/server/chunks/{[root-of-the-server]__1btz1fo._.js → [root-of-the-server]__1y343im._.js} +2 -2
  288. package/standalone/.next/server/chunks/{[root-of-the-server]__1x5laf2._.js → [root-of-the-server]__1yvqocu._.js} +2 -2
  289. package/standalone/.next/server/chunks/[root-of-the-server]__1yx0w43._.js +3 -0
  290. package/standalone/.next/server/chunks/[root-of-the-server]__1yxkfi6._.js +3 -0
  291. package/standalone/.next/server/chunks/[root-of-the-server]__1yye_uk._.js +3 -0
  292. package/standalone/.next/server/chunks/[root-of-the-server]__20du-cr._.js +3 -0
  293. package/standalone/.next/server/chunks/_01qtprx._.js +2 -2
  294. package/standalone/.next/server/chunks/_046r0fu._.js +1 -1
  295. package/standalone/.next/server/chunks/_0ap-sk4._.js +2 -2
  296. package/standalone/.next/server/chunks/_0km--pu._.js +1 -1
  297. package/standalone/.next/server/chunks/_19unz3y._.js +2 -2
  298. package/standalone/.next/server/chunks/_1e2b7v9._.js +1 -1
  299. package/standalone/.next/server/chunks/src_0o4-snj._.js +1 -1
  300. package/standalone/.next/server/middleware-build-manifest.js +3 -3
  301. package/standalone/.next/server/pages/404.html +1 -1
  302. package/standalone/.next/server/pages/500.html +1 -1
  303. package/standalone/.next/server/server-reference-manifest.js +1 -1
  304. package/standalone/.next/server/server-reference-manifest.json +1 -1
  305. package/standalone/package.json +3 -2
  306. package/standalone/server.js +1 -1
  307. package/standalone/.next/node_modules/re2-wasm-15fb420cc00a67dd/build/src/re2.js +0 -524
  308. package/standalone/.next/node_modules/re2-wasm-15fb420cc00a67dd/build/wasm/re2.js +0 -4570
  309. package/standalone/.next/node_modules/re2-wasm-15fb420cc00a67dd/build/wasm/re2.wasm +0 -0
  310. package/standalone/.next/node_modules/re2-wasm-15fb420cc00a67dd/package.json +0 -41
  311. package/standalone/.next/server/chunks/[root-of-the-server]__0_w-xej._.js +0 -3
  312. package/standalone/.next/server/chunks/[root-of-the-server]__0_y2v1j._.js +0 -3
  313. package/standalone/.next/server/chunks/[root-of-the-server]__0aars58._.js +0 -3
  314. package/standalone/.next/server/chunks/[root-of-the-server]__0ah_4rn._.js +0 -3
  315. package/standalone/.next/server/chunks/[root-of-the-server]__0axp9e2._.js +0 -3
  316. package/standalone/.next/server/chunks/[root-of-the-server]__0cwh1ob._.js +0 -3
  317. package/standalone/.next/server/chunks/[root-of-the-server]__0e6bqw-._.js +0 -3
  318. package/standalone/.next/server/chunks/[root-of-the-server]__0emkieo._.js +0 -3
  319. package/standalone/.next/server/chunks/[root-of-the-server]__0eqx3gx._.js +0 -3
  320. package/standalone/.next/server/chunks/[root-of-the-server]__0ez1ocj._.js +0 -3
  321. package/standalone/.next/server/chunks/[root-of-the-server]__0fpszsc._.js +0 -3
  322. package/standalone/.next/server/chunks/[root-of-the-server]__0fq5bqy._.js +0 -3
  323. package/standalone/.next/server/chunks/[root-of-the-server]__0fqft-4._.js +0 -3
  324. package/standalone/.next/server/chunks/[root-of-the-server]__0g2wp1c._.js +0 -3
  325. package/standalone/.next/server/chunks/[root-of-the-server]__0gvtj-n._.js +0 -3
  326. package/standalone/.next/server/chunks/[root-of-the-server]__0i85me2._.js +0 -3
  327. package/standalone/.next/server/chunks/[root-of-the-server]__0igsl3a._.js +0 -3
  328. package/standalone/.next/server/chunks/[root-of-the-server]__0k60y67._.js +0 -3
  329. package/standalone/.next/server/chunks/[root-of-the-server]__0niddrw._.js +0 -3
  330. package/standalone/.next/server/chunks/[root-of-the-server]__0nrktjf._.js +0 -3
  331. package/standalone/.next/server/chunks/[root-of-the-server]__0pgnk-c._.js +0 -3
  332. package/standalone/.next/server/chunks/[root-of-the-server]__0rkz4xn._.js +0 -3
  333. package/standalone/.next/server/chunks/[root-of-the-server]__0slps8j._.js +0 -3
  334. package/standalone/.next/server/chunks/[root-of-the-server]__0tudmvl._.js +0 -3
  335. package/standalone/.next/server/chunks/[root-of-the-server]__0u4_0hk._.js +0 -3
  336. package/standalone/.next/server/chunks/[root-of-the-server]__0vaokmk._.js +0 -3
  337. package/standalone/.next/server/chunks/[root-of-the-server]__0xomcdl._.js +0 -3
  338. package/standalone/.next/server/chunks/[root-of-the-server]__0xrriyl._.js +0 -3
  339. package/standalone/.next/server/chunks/[root-of-the-server]__0yhie6j._.js +0 -3
  340. package/standalone/.next/server/chunks/[root-of-the-server]__0yifxv-._.js +0 -3
  341. package/standalone/.next/server/chunks/[root-of-the-server]__1-c37l2._.js +0 -3
  342. package/standalone/.next/server/chunks/[root-of-the-server]__1-vnrg_._.js +0 -3
  343. package/standalone/.next/server/chunks/[root-of-the-server]__11r-5pu._.js +0 -3
  344. package/standalone/.next/server/chunks/[root-of-the-server]__12-cmv0._.js +0 -3
  345. package/standalone/.next/server/chunks/[root-of-the-server]__122sose._.js +0 -3
  346. package/standalone/.next/server/chunks/[root-of-the-server]__12_lxrq._.js +0 -3
  347. package/standalone/.next/server/chunks/[root-of-the-server]__12z-5e1._.js +0 -3
  348. package/standalone/.next/server/chunks/[root-of-the-server]__1355z93._.js +0 -3
  349. package/standalone/.next/server/chunks/[root-of-the-server]__144k8e_._.js +0 -3
  350. package/standalone/.next/server/chunks/[root-of-the-server]__146ijbu._.js +0 -3
  351. package/standalone/.next/server/chunks/[root-of-the-server]__15dlw94._.js +0 -3
  352. package/standalone/.next/server/chunks/[root-of-the-server]__15epdi9._.js +0 -3
  353. package/standalone/.next/server/chunks/[root-of-the-server]__16a0le5._.js +0 -3
  354. package/standalone/.next/server/chunks/[root-of-the-server]__16paa96._.js +0 -3
  355. package/standalone/.next/server/chunks/[root-of-the-server]__17ry7s4._.js +0 -3
  356. package/standalone/.next/server/chunks/[root-of-the-server]__18m2a8z._.js +0 -3
  357. package/standalone/.next/server/chunks/[root-of-the-server]__18rxly1._.js +0 -3
  358. package/standalone/.next/server/chunks/[root-of-the-server]__1_vhxix._.js +0 -3
  359. package/standalone/.next/server/chunks/[root-of-the-server]__1_z6940._.js +0 -3
  360. package/standalone/.next/server/chunks/[root-of-the-server]__1amwlm1._.js +0 -3
  361. package/standalone/.next/server/chunks/[root-of-the-server]__1cncn_q._.js +0 -3
  362. package/standalone/.next/server/chunks/[root-of-the-server]__1d8-kbp._.js +0 -3
  363. package/standalone/.next/server/chunks/[root-of-the-server]__1fg8n77._.js +0 -3
  364. package/standalone/.next/server/chunks/[root-of-the-server]__1fqhm93._.js +0 -3
  365. package/standalone/.next/server/chunks/[root-of-the-server]__1h2n8mc._.js +0 -3
  366. package/standalone/.next/server/chunks/[root-of-the-server]__1hy86s1._.js +0 -3
  367. package/standalone/.next/server/chunks/[root-of-the-server]__1id0o8p._.js +0 -3
  368. package/standalone/.next/server/chunks/[root-of-the-server]__1j1yxy_._.js +0 -3
  369. package/standalone/.next/server/chunks/[root-of-the-server]__1kwbhuu._.js +0 -3
  370. package/standalone/.next/server/chunks/[root-of-the-server]__1laf08m._.js +0 -3
  371. package/standalone/.next/server/chunks/[root-of-the-server]__1myrk79._.js +0 -3
  372. package/standalone/.next/server/chunks/[root-of-the-server]__1n3zakh._.js +0 -3
  373. package/standalone/.next/server/chunks/[root-of-the-server]__1o7yplz._.js +0 -3
  374. package/standalone/.next/server/chunks/[root-of-the-server]__1ohwk3-._.js +0 -3
  375. package/standalone/.next/server/chunks/[root-of-the-server]__1onn1-5._.js +0 -3
  376. package/standalone/.next/server/chunks/[root-of-the-server]__1pwcu28._.js +0 -3
  377. package/standalone/.next/server/chunks/[root-of-the-server]__1q229ru._.js +0 -3
  378. package/standalone/.next/server/chunks/[root-of-the-server]__1qtezlb._.js +0 -3
  379. package/standalone/.next/server/chunks/[root-of-the-server]__1r6w6uj._.js +0 -3
  380. package/standalone/.next/server/chunks/[root-of-the-server]__1rib6n3._.js +0 -3
  381. package/standalone/.next/server/chunks/[root-of-the-server]__1sh_vn6._.js +0 -3
  382. package/standalone/.next/server/chunks/[root-of-the-server]__1sx7rzl._.js +0 -3
  383. package/standalone/.next/server/chunks/[root-of-the-server]__1taelgv._.js +0 -3
  384. package/standalone/.next/server/chunks/[root-of-the-server]__1ts1wiq._.js +0 -3
  385. package/standalone/.next/server/chunks/[root-of-the-server]__1uy4hea._.js +0 -3
  386. package/standalone/.next/server/chunks/[root-of-the-server]__1uzbqwa._.js +0 -3
  387. package/standalone/.next/server/chunks/[root-of-the-server]__1x6_y8g._.js +0 -3
  388. package/standalone/.next/server/chunks/[root-of-the-server]__1xt0qaw._.js +0 -3
  389. package/standalone/.next/server/chunks/[root-of-the-server]__1y1cne4._.js +0 -3
  390. package/standalone/.next/server/chunks/[root-of-the-server]__1y6j2wu._.js +0 -3
  391. package/standalone/.next/server/chunks/[root-of-the-server]__1y7j7qr._.js +0 -3
  392. package/standalone/.next/server/chunks/[root-of-the-server]__1yj3ck2._.js +0 -3
  393. package/standalone/.next/server/chunks/[root-of-the-server]__1ym73v7._.js +0 -3
  394. package/standalone/.next/server/chunks/[root-of-the-server]__218z_cj._.js +0 -3
  395. package/standalone/node_modules/re2-wasm/build/src/re2.js +0 -524
  396. package/standalone/node_modules/re2-wasm/build/wasm/re2.js +0 -4570
  397. package/standalone/node_modules/re2-wasm/build/wasm/re2.wasm +0 -0
  398. package/standalone/node_modules/re2-wasm/package.json +0 -41
  399. /package/standalone/.next/static/{9QiT0UQel9_P_z1ZucOq8 → 9p-iMYbJQoReEZ7SfkMii}/_buildManifest.js +0 -0
  400. /package/standalone/.next/static/{9QiT0UQel9_P_z1ZucOq8 → 9p-iMYbJQoReEZ7SfkMii}/_clientMiddlewareManifest.js +0 -0
  401. /package/standalone/.next/static/{9QiT0UQel9_P_z1ZucOq8 → 9p-iMYbJQoReEZ7SfkMii}/_ssgManifest.js +0 -0
@@ -118,7 +118,7 @@ ${e.format(t)}`.trim())}}},332410,(e,t,A)=>{"use strict";let{InvalidArgumentErro
118
118
  )
119
119
  `)}close(){this.#e_.close()}get(e){s(e);let t=this.#e0(e);return t?{body:t.body?Buffer.from(t.body.buffer,t.body.byteOffset,t.body.byteLength):void 0,statusCode:t.statusCode,statusMessage:t.statusMessage,headers:t.headers?JSON.parse(t.headers):void 0,etag:t.etag?t.etag:void 0,vary:t.vary?JSON.parse(t.vary):void 0,cacheControlDirectives:t.cacheControlDirectives?JSON.parse(t.cacheControlDirectives):void 0,cachedAt:t.cachedAt,staleAt:t.staleAt,deleteAt:t.deleteAt}:void 0}set(e,t){s(e);let A=this.#e1(e),r=Array.isArray(t.body)?Buffer.concat(t.body):t.body,i=r?.byteLength;if(i&&i>this.#ed)return;let n=this.#e0(e,!0);n?this.#eZ.run(r,t.deleteAt,t.statusCode,t.statusMessage,t.headers?JSON.stringify(t.headers):null,t.etag?t.etag:null,t.cacheControlDirectives?JSON.stringify(t.cacheControlDirectives):null,t.vary?JSON.stringify(t.vary):null,t.cachedAt,t.staleAt,n.id):(this.#ej.run(A,e.method,r,t.deleteAt,t.statusCode,t.statusMessage,t.headers?JSON.stringify(t.headers):null,t.etag?t.etag:null,t.cacheControlDirectives?JSON.stringify(t.cacheControlDirectives):null,t.vary?JSON.stringify(t.vary):null,t.cachedAt,t.staleAt),this.#e2())}createWriteStream(e,t){s(e),n(t);let A=0,r=[],o=this;return new i({decodeStrings:!0,write(e,t,i){(A+=e.byteLength)<=o.#ed?r.push(e):this.destroy(),i()},final(A){o.set(e,{...t,body:r}),A()}})}delete(e){if("object"!=typeof e)throw TypeError(`expected key to be object, got ${typeof e}`);this.#eK.run(this.#e1(e))}#e2(){if(Number.isFinite(this.#eI)&&this.size<=this.#eI)return 0;{let e=this.#eX.run(Date.now()).changes;if(e)return e}{let e=this.#e$?.run(Math.max(Math.floor(.1*this.#eI),1)).changes;if(e)return e}return 0}get size(){let{total:e}=this.#ez.get();return e}#e1(e){return`${e.origin}/${e.path}`}#e0(e,t=!1){let A=this.#e1(e),{headers:r,method:i}=e,s=this.#eq.all(A,i);if(0===s.length)return;let n=Date.now();for(let e of s){if(n>=e.deleteAt&&!t)continue;let A=!0;if(e.vary){let t=JSON.parse(e.vary);for(let e in t)if(!function(e,t){return null==e&&null==t||(null!=e||null==t)&&(null==e||null!=t)&&(Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((e,A)=>e===t[A]):e===t)}(r[e],t[e])){A=!1;break}}if(A)return e}}}},761883,(e,t,A)=>{"use strict";let{kConstruct:r}=e.r(35634),{kEnumerableProperty:i}=e.r(780405),{iteratorMixin:s,isValidHeaderName:n,isValidHeaderValue:o}=e.r(359401),{webidl:a}=e.r(704143),l=e.r(57328),g=e.r(812057);function h(e){return 10===e||13===e||9===e||32===e}function c(e){let t=0,A=e.length;for(;A>t&&h(e.charCodeAt(A-1));)--A;for(;A>t&&h(e.charCodeAt(t));)++t;return 0===t&&A===e.length?e:e.substring(t,A)}function E(e,t){if(Array.isArray(t))for(let A=0;A<t.length;++A){let r=t[A];if(2!==r.length)throw a.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${r.length}.`});Q(e,r[0],r[1])}else if("object"==typeof t&&null!==t){let A=Object.keys(t);for(let r=0;r<A.length;++r)Q(e,A[r],t[A[r]])}else throw a.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function Q(e,t,A){if(A=c(A),n(t)){if(!o(A))throw a.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header value"})}else throw a.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header name"});if("immutable"===C(e))throw TypeError("immutable");return f(e).append(t,A,!1)}function I(e,t){return e[0]<t[0]?-1:1}class d{cookies=null;sortedMap;headersMap;constructor(e){e instanceof d?(this.headersMap=new Map(e.headersMap),this.sortedMap=e.sortedMap,this.cookies=null===e.cookies?null:[...e.cookies]):(this.headersMap=new Map(e),this.sortedMap=null)}contains(e,t){return this.headersMap.has(t?e:e.toLowerCase())}clear(){this.headersMap.clear(),this.sortedMap=null,this.cookies=null}append(e,t,A){this.sortedMap=null;let r=A?e:e.toLowerCase(),i=this.headersMap.get(r);if(i){let e="cookie"===r?"; ":", ";this.headersMap.set(r,{name:i.name,value:`${i.value}${e}${t}`})}else this.headersMap.set(r,{name:e,value:t});"set-cookie"===r&&(this.cookies??=[]).push(t)}set(e,t,A){this.sortedMap=null;let r=A?e:e.toLowerCase();"set-cookie"===r&&(this.cookies=[t]),this.headersMap.set(r,{name:e,value:t})}delete(e,t){this.sortedMap=null,t||(e=e.toLowerCase()),"set-cookie"===e&&(this.cookies=null),this.headersMap.delete(e)}get(e,t){return this.headersMap.get(t?e:e.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:e,1:{value:t}}of this.headersMap)yield[e,t]}get entries(){let e={};if(0!==this.headersMap.size)for(let{name:t,value:A}of this.headersMap.values())e[t]=A;return e}rawValues(){return this.headersMap.values()}get entriesList(){let e=[];if(0!==this.headersMap.size)for(let{0:t,1:{name:A,value:r}}of this.headersMap)if("set-cookie"===t)for(let t of this.cookies)e.push([A,t]);else e.push([A,r]);return e}toSortedArray(){let e=this.headersMap.size,t=Array(e);if(e<=32){if(0===e)return t;let A=this.headersMap[Symbol.iterator](),r=A.next().value;t[0]=[r[0],r[1].value],l(null!==r[1].value);for(let r=1,i=0,s=0,n=0,o=0,a,g;r<e;++r){for(g=A.next().value,l(null!==(a=t[r]=[g[0],g[1].value])[1]),n=0,s=r;n<s;)t[o=n+(s-n>>1)][0]<=a[0]?n=o+1:s=o;if(r!==o){for(i=r;i>n;)t[i]=t[--i];t[n]=a}}if(!A.next().done)throw TypeError("Unreachable");return t}{let e=0;for(let{0:A,1:{value:r}}of this.headersMap)t[e++]=[A,r],l(null!==r);return t.sort(I)}}}class u{#e4;#e5;constructor(e){if(a.util.markAsUncloneable(this),e===r)return;this.#e5=new d,this.#e4="none",void 0!==e&&E(this,e=a.converters.HeadersInit(e,"Headers constructor","init"))}append(e,t){a.brandCheck(this,u),a.argumentLengthCheck(arguments,2,"Headers.append");let A="Headers.append";return e=a.converters.ByteString(e,A,"name"),t=a.converters.ByteString(t,A,"value"),Q(this,e,t)}delete(e){if(a.brandCheck(this,u),a.argumentLengthCheck(arguments,1,"Headers.delete"),!n(e=a.converters.ByteString(e,"Headers.delete","name")))throw a.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"});if("immutable"===this.#e4)throw TypeError("immutable");this.#e5.contains(e,!1)&&this.#e5.delete(e,!1)}get(e){a.brandCheck(this,u),a.argumentLengthCheck(arguments,1,"Headers.get");let t="Headers.get";if(!n(e=a.converters.ByteString(e,t,"name")))throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"});return this.#e5.get(e,!1)}has(e){a.brandCheck(this,u),a.argumentLengthCheck(arguments,1,"Headers.has");let t="Headers.has";if(!n(e=a.converters.ByteString(e,t,"name")))throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"});return this.#e5.contains(e,!1)}set(e,t){a.brandCheck(this,u),a.argumentLengthCheck(arguments,2,"Headers.set");let A="Headers.set";if(e=a.converters.ByteString(e,A,"name"),t=c(t=a.converters.ByteString(t,A,"value")),n(e)){if(!o(t))throw a.errors.invalidArgument({prefix:A,value:t,type:"header value"})}else throw a.errors.invalidArgument({prefix:A,value:e,type:"header name"});if("immutable"===this.#e4)throw TypeError("immutable");this.#e5.set(e,t,!1)}getSetCookie(){a.brandCheck(this,u);let e=this.#e5.cookies;return e?[...e]:[]}[g.inspect.custom](e,t){return t.depth??=e,`Headers ${g.formatWithOptions(t,this.#e5.entries)}`}static getHeadersGuard(e){return e.#e4}static setHeadersGuard(e,t){e.#e4=t}static getHeadersList(e){return e.#e5}static setHeadersList(e,t){e.#e5=t}}let{getHeadersGuard:C,setHeadersGuard:B,getHeadersList:f,setHeadersList:p}=u;Reflect.deleteProperty(u,"getHeadersGuard"),Reflect.deleteProperty(u,"setHeadersGuard"),Reflect.deleteProperty(u,"getHeadersList"),Reflect.deleteProperty(u,"setHeadersList"),s("Headers",u,function(e){let t=f(e);if(!t)return[];if(t.sortedMap)return t.sortedMap;let A=[],r=t.toSortedArray(),i=t.cookies;if(null===i||1===i.length)return t.sortedMap=r;for(let e=0;e<r.length;++e){let{0:t,1:s}=r[e];if("set-cookie"===t)for(let e=0;e<i.length;++e)A.push([t,i[e]]);else A.push([t,s])}return t.sortedMap=A},0,1),Object.defineProperties(u.prototype,{append:i,delete:i,get:i,has:i,set:i,getSetCookie:i,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[g.inspect.custom]:{enumerable:!1}}),a.converters.HeadersInit=function(e,t,A){if(a.util.Type(e)===a.util.Types.OBJECT){let r=Reflect.get(e,Symbol.iterator);if(!g.types.isProxy(e)&&r===u.prototype.entries)try{return f(e).entriesList}catch{}return"function"==typeof r?a.converters["sequence<sequence<ByteString>>"](e,t,A,r.bind(e)):a.converters["record<ByteString, ByteString>"](e,t,A)}throw a.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})},t.exports={fill:E,compareHeaderName:I,Headers:u,HeadersList:d,getHeadersGuard:C,setHeadersGuard:B,setHeadersList:p,getHeadersList:f}},650801,(e,t,A)=>{"use strict";let{Headers:r,HeadersList:i,fill:s,getHeadersGuard:n,setHeadersGuard:o,setHeadersList:a}=e.r(761883),{extractBody:l,cloneBody:g,mixinBody:h,streamRegistry:c,bodyUnusable:E}=e.r(57700),Q=e.r(780405),I=e.r(812057),{kEnumerableProperty:d}=Q,{isValidReasonPhrase:u,isCancelled:C,isAborted:B,isErrorLike:f,environmentSettingsObject:p}=e.r(359401),{redirectStatusSet:y,nullBodyStatus:w}=e.r(719640),{webidl:D}=e.r(704143),{URLSerializer:m}=e.r(561743),{kConstruct:S}=e.r(35634),N=e.r(57328),{isomorphicEncode:R,serializeJavascriptValueToJSONString:b}=e.r(677682),U=new TextEncoder("utf-8");class T{#q;#g;static error(){return x(H(),"immutable")}static json(e,t){D.argumentLengthCheck(arguments,1,"Response.json"),t=D.converters.ResponseInit(t);let A=l(U.encode(b(e))),r=x(Y({}),"response");return V(r,t,{body:A[0],type:"application/json"}),r}static redirect(e,t=302){let A;D.argumentLengthCheck(arguments,1,"Response.redirect"),e=D.converters.USVString(e),t=D.converters["unsigned short"](t);try{A=new URL(e,p.settingsObject.baseUrl)}catch(t){throw TypeError(`Failed to parse URL from ${e}`,{cause:t})}if(!y.has(t))throw RangeError(`Invalid status code ${t}`);let r=x(Y({}),"immutable");r.#g.status=t;let i=R(m(A));return r.#g.headersList.append("location",i,!0),r}constructor(e=null,t){if(D.util.markAsUncloneable(this),e===S)return;null!==e&&(e=D.converters.BodyInit(e,"Response","body")),t=D.converters.ResponseInit(t),this.#g=Y({}),this.#q=new r(S),o(this.#q,"response"),a(this.#q,this.#g.headersList);let A=null;if(null!=e){const[t,r]=l(e);A={body:t,type:r}}V(this,t,A)}get type(){return D.brandCheck(this,T),this.#g.type}get url(){D.brandCheck(this,T);let e=this.#g.urlList,t=e[e.length-1]??null;return null===t?"":m(t,!0)}get redirected(){return D.brandCheck(this,T),this.#g.urlList.length>1}get status(){return D.brandCheck(this,T),this.#g.status}get ok(){return D.brandCheck(this,T),this.#g.status>=200&&this.#g.status<=299}get statusText(){return D.brandCheck(this,T),this.#g.statusText}get headers(){return D.brandCheck(this,T),this.#q}get body(){return D.brandCheck(this,T),this.#g.body?this.#g.body.stream:null}get bodyUsed(){return D.brandCheck(this,T),!!this.#g.body&&Q.isDisturbed(this.#g.body.stream)}clone(){if(D.brandCheck(this,T),E(this.#g))throw D.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let e=v(this.#g);return 0!==this.#g.urlList.length&&this.#g.body?.stream&&c.register(this,new WeakRef(this.#g.body.stream)),x(e,n(this.#q))}[I.inspect.custom](e,t){null===t.depth&&(t.depth=2),t.colors??=!0;let A={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${I.formatWithOptions(t,A)}`}static getResponseHeaders(e){return e.#q}static setResponseHeaders(e,t){e.#q=t}static getResponseState(e){return e.#g}static setResponseState(e,t){e.#g=t}}let{getResponseHeaders:F,setResponseHeaders:k,getResponseState:M,setResponseState:L}=T;function v(e){if(e.internalResponse)return G(v(e.internalResponse),e.type);let t=Y({...e,body:null});return null!=e.body&&(t.body=g(e.body)),t}function Y(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e?.headersList?new i(e?.headersList):new i,urlList:e?.urlList?[...e.urlList]:[]}}function H(e){return Y({type:"error",status:0,error:f(e)?e:Error(e?String(e):e),aborted:e&&"AbortError"===e.name})}function O(e,t){return t={internalResponse:e,...t},new Proxy(e,{get:(e,A)=>A in t?t[A]:e[A],set:(e,A,r)=>(N(!(A in t)),e[A]=r,!0)})}function G(e,t){return"basic"===t?O(e,{type:"basic",headersList:e.headersList}):"cors"===t?O(e,{type:"cors",headersList:e.headersList}):"opaque"===t?O(e,{type:"opaque",urlList:[],status:0,statusText:"",body:null}):"opaqueredirect"===t?O(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null}):void N(!1)}function V(e,t,A){if(null!==t.status&&(t.status<200||t.status>599))throw RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in t&&null!=t.statusText&&!u(String(t.statusText)))throw TypeError("Invalid statusText");if("status"in t&&null!=t.status&&(M(e).status=t.status),"statusText"in t&&null!=t.statusText&&(M(e).statusText=t.statusText),"headers"in t&&null!=t.headers&&s(F(e),t.headers),A){if(w.includes(e.status))throw D.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`});M(e).body=A.body,null==A.type||M(e).headersList.contains("content-type",!0)||M(e).headersList.append("content-type",A.type,!0)}}function x(e,t){let A=new T(S);L(A,e);let i=new r(S);return k(A,i),a(i,e.headersList),o(i,t),0!==e.urlList.length&&e.body?.stream&&c.register(A,new WeakRef(e.body.stream)),A}Reflect.deleteProperty(T,"getResponseHeaders"),Reflect.deleteProperty(T,"setResponseHeaders"),Reflect.deleteProperty(T,"getResponseState"),Reflect.deleteProperty(T,"setResponseState"),h(T,M),Object.defineProperties(T.prototype,{type:d,url:d,status:d,ok:d,redirected:d,statusText:d,headers:d,clone:d,body:d,bodyUsed:d,[Symbol.toStringTag]:{value:"Response",configurable:!0}}),Object.defineProperties(T,{json:d,redirect:d,error:d}),D.converters.XMLHttpRequestBodyInit=function(e,t,A){return"string"==typeof e?D.converters.USVString(e,t,A):D.is.Blob(e)||D.is.BufferSource(e)||D.is.FormData(e)||D.is.URLSearchParams(e)?e:D.converters.DOMString(e,t,A)},D.converters.BodyInit=function(e,t,A){return D.is.ReadableStream(e)||e?.[Symbol.asyncIterator]?e:D.converters.XMLHttpRequestBodyInit(e,t,A)},D.converters.ResponseInit=D.dictionaryConverter([{key:"status",converter:D.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:D.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:D.converters.HeadersInit}]),D.is.Response=D.util.MakeTypeAssertion(T),t.exports={isNetworkError:function(e){return"error"===e.type&&0===e.status},makeNetworkError:H,makeResponse:Y,makeAppropriateNetworkError:function(e,t=null){return N(C(e)),B(e)?H(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:t})):H(Object.assign(new DOMException("Request was cancelled."),{cause:t}))},filterResponse:G,Response:T,cloneResponse:v,fromInnerResponse:x,getResponseState:M}},341716,(e,t,A)=>{"use strict";let r,{extractBody:i,mixinBody:s,cloneBody:n,bodyUnusable:o}=e.r(57700),{Headers:a,fill:l,HeadersList:g,setHeadersGuard:h,getHeadersGuard:c,setHeadersList:E,getHeadersList:Q}=e.r(761883),I=e.r(780405),d=e.r(812057),{isValidHTTPToken:u,sameOrigin:C,environmentSettingsObject:B}=e.r(359401),{forbiddenMethodsSet:f,corsSafeListedMethodsSet:p,referrerPolicy:y,requestRedirect:w,requestMode:D,requestCredentials:m,requestCache:S,requestDuplex:N}=e.r(719640),{kEnumerableProperty:R,normalizedMethodRecordsBase:b,normalizedMethodRecords:U}=I,{webidl:T}=e.r(704143),{URLSerializer:F}=e.r(561743),{kConstruct:k}=e.r(35634),M=e.r(57328),{getMaxListeners:L,setMaxListeners:v,defaultMaxListeners:Y}=e.r(687769),H=Symbol("abortController"),O=new FinalizationRegistry(({signal:e,abort:t})=>{e.removeEventListener("abort",t)}),G=new WeakMap;try{r=L(new AbortController().signal)>0}catch{r=!1}function V(e){return function t(){let A=e.deref();if(void 0!==A){O.unregister(t),this.removeEventListener("abort",t),A.abort(this.reason);let e=G.get(A.signal);if(void 0!==e){if(0!==e.size){for(let t of e){let e=t.deref();void 0!==e&&e.abort(this.reason)}e.clear()}G.delete(A.signal)}}}}let x=!1;class J{#e8;#E;#q;#g;#e9=null;constructor(e,t){let A;if(T.util.markAsUncloneable(this),e===k)return;T.argumentLengthCheck(arguments,1,"Request constructor"),e=T.converters.RequestInfo(e),t=T.converters.RequestInit(t);let s=null,n=null;const c=B.settingsObject.baseUrl;let d=null;if("string"==typeof e){let A;this.#E=t.dispatcher;try{A=new URL(e,c)}catch(t){throw TypeError("Failed to parse URL from "+e,{cause:t})}if(A.username||A.password)throw TypeError("Request cannot be constructed from a URL that includes credentials: "+e);s=K({urlList:[A]}),n="cors"}else M(T.is.Request(e)),s=e.#g,d=e.#e8,this.#E=t.dispatcher||e.#E;const y=B.settingsObject.origin;let w="client";if(s.window?.constructor?.name==="EnvironmentSettingsObject"&&C(s.window,y)&&(w=s.window),null!=t.window)throw TypeError(`'window' option '${w}' must be null`);"window"in t&&(w="no-window"),s=K({method:s.method,headersList:s.headersList,unsafeRequest:s.unsafeRequest,client:B.settingsObject,window:w,priority:s.priority,origin:s.origin,referrer:s.referrer,referrerPolicy:s.referrerPolicy,mode:s.mode,credentials:s.credentials,cache:s.cache,redirect:s.redirect,integrity:s.integrity,keepalive:s.keepalive,reloadNavigation:s.reloadNavigation,historyNavigation:s.historyNavigation,urlList:[...s.urlList]});const D=0!==Object.keys(t).length;if(D&&("navigate"===s.mode&&(s.mode="same-origin"),s.reloadNavigation=!1,s.historyNavigation=!1,s.origin="client",s.referrer="client",s.referrerPolicy="",s.url=s.urlList[s.urlList.length-1],s.urlList=[s.url]),void 0!==t.referrer){const e=t.referrer;if(""===e)s.referrer="no-referrer";else{let t;try{t=new URL(e,c)}catch(t){throw TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}"about:"===t.protocol&&"client"===t.hostname||y&&!C(t,B.settingsObject.baseUrl)?s.referrer="client":s.referrer=t}}if(void 0!==t.referrerPolicy&&(s.referrerPolicy=t.referrerPolicy),"navigate"===(A=void 0!==t.mode?t.mode:n))throw T.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(null!=A&&(s.mode=A),void 0!==t.credentials&&(s.credentials=t.credentials),void 0!==t.cache&&(s.cache=t.cache),"only-if-cached"===s.cache&&"same-origin"!==s.mode)throw TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(void 0!==t.redirect&&(s.redirect=t.redirect),null!=t.integrity&&(s.integrity=String(t.integrity)),void 0!==t.keepalive&&(s.keepalive=!!t.keepalive),void 0!==t.method){let e=t.method;const A=U[e];if(void 0!==A)s.method=A;else{if(!u(e))throw TypeError(`'${e}' is not a valid HTTP method.`);const t=e.toUpperCase();if(f.has(t))throw TypeError(`'${e}' HTTP method is unsupported.`);e=b[t]??e,s.method=e}x||"patch"!==s.method||(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),x=!0)}void 0!==t.signal&&(d=t.signal),this.#g=s;const m=new AbortController;if(this.#e8=m.signal,null!=d)if(d.aborted)m.abort(d.reason);else{this[H]=m;const e=V(new WeakRef(m));r&&L(d)===Y&&v(1500,d);const t=I.addAbortListener(d,e);O.register(m,{signal:d,abort:e},e),this.#e9=()=>{O.unregister(e),t(),this.#e9=null}}if(this.#q=new a(k),E(this.#q,s.headersList),h(this.#q,"request"),"no-cors"===A){if(!p.has(s.method))throw TypeError(`'${s.method} is unsupported in no-cors mode.`);h(this.#q,"request-no-cors")}if(D){const e=Q(this.#q),A=void 0!==t.headers?t.headers:new g(e);if(e.clear(),A instanceof g){for(const{name:t,value:r}of A.rawValues())e.append(t,r,!1);e.cookies=A.cookies}else l(this.#q,A)}const S=T.is.Request(e)?e.#g.body:null;if((null!=t.body||null!=S)&&("GET"===s.method||"HEAD"===s.method))throw TypeError("Request with GET/HEAD method cannot have body.");let N=null;if(null!=t.body){const[e,A]=i(t.body,s.keepalive);N=e,A&&!Q(this.#q).contains("content-type",!0)&&this.#q.append("content-type",A,!0)}const R=N??S;if(null!=R&&null==R.source){if(null!=N&&null==t.duplex)throw TypeError("RequestInit: duplex option is required when sending a body.");if("same-origin"!==s.mode&&"cors"!==s.mode)throw TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');s.useCORSPreflightFlag=!0}let F=R;if(null==N&&null!=S){if(o(e.#g))throw TypeError("Cannot construct a Request with a Request object that has already been used.");const t=new TransformStream;S.stream.pipeThrough(t),F={source:S.source,length:S.length,stream:t.readable}}this.#g.body=F}get method(){return T.brandCheck(this,J),this.#g.method}get url(){return T.brandCheck(this,J),F(this.#g.url)}get headers(){return T.brandCheck(this,J),this.#q}get destination(){return T.brandCheck(this,J),this.#g.destination}get referrer(){return(T.brandCheck(this,J),"no-referrer"===this.#g.referrer)?"":"client"===this.#g.referrer?"about:client":this.#g.referrer.toString()}get referrerPolicy(){return T.brandCheck(this,J),this.#g.referrerPolicy}get mode(){return T.brandCheck(this,J),this.#g.mode}get credentials(){return T.brandCheck(this,J),this.#g.credentials}get cache(){return T.brandCheck(this,J),this.#g.cache}get redirect(){return T.brandCheck(this,J),this.#g.redirect}get integrity(){return T.brandCheck(this,J),this.#g.integrity}get keepalive(){return T.brandCheck(this,J),this.#g.keepalive}get isReloadNavigation(){return T.brandCheck(this,J),this.#g.reloadNavigation}get isHistoryNavigation(){return T.brandCheck(this,J),this.#g.historyNavigation}get signal(){return T.brandCheck(this,J),this.#e8}get body(){return T.brandCheck(this,J),this.#g.body?this.#g.body.stream:null}get bodyUsed(){return T.brandCheck(this,J),!!this.#g.body&&I.isDisturbed(this.#g.body.stream)}get duplex(){return T.brandCheck(this,J),"half"}clone(){if(T.brandCheck(this,J),o(this.#g))throw TypeError("unusable");let e=z(this.#g),t=new AbortController;if(this.signal.aborted)t.abort(this.signal.reason);else{let e=G.get(this.signal);void 0===e&&(e=new Set,G.set(this.signal,e));let A=new WeakRef(t);e.add(A),I.addAbortListener(t.signal,V(A))}return $(e,this.#E,t.signal,c(this.#q))}[d.inspect.custom](e,t){null===t.depth&&(t.depth=2),t.colors??=!0;let A={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${d.formatWithOptions(t,A)}`}static setRequestSignal(e,t){return e.#e8=t,e}static getRequestDispatcher(e){return e.#E}static setRequestDispatcher(e,t){e.#E=t}static setRequestHeaders(e,t){e.#q=t}static getRequestState(e){return e.#g}static setRequestState(e,t){e.#g=t}static removeRequestAbortListener(e){e.#e9?.()}}let{setRequestSignal:P,getRequestDispatcher:W,setRequestDispatcher:_,setRequestHeaders:q,getRequestState:Z,setRequestState:j,removeRequestAbortListener:X}=J;function K(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??!1,unsafeRequest:e.unsafeRequest??!1,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??!1,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??!1,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??!1,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??!1,historyNavigation:e.historyNavigation??!1,userActivation:e.userActivation??!1,taintedOrigin:e.taintedOrigin??!1,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??!1,done:e.done??!1,timingAllowFailed:e.timingAllowFailed??!1,useURLCredentials:e.useURLCredentials??void 0,traversableForUserPrompts:e.traversableForUserPrompts??"client",urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new g(e.headersList):new g}}function z(e){let t=K({...e,body:null});return null!=e.body&&(t.body=n(e.body)),t}function $(e,t,A,r){let i=new J(k);j(i,e),_(i,t),P(i,A);let s=new a(k);return q(i,s),E(s,e.headersList),h(s,r),i}Reflect.deleteProperty(J,"setRequestSignal"),Reflect.deleteProperty(J,"getRequestDispatcher"),Reflect.deleteProperty(J,"setRequestDispatcher"),Reflect.deleteProperty(J,"setRequestHeaders"),Reflect.deleteProperty(J,"getRequestState"),Reflect.deleteProperty(J,"setRequestState"),Reflect.deleteProperty(J,"removeRequestAbortListener"),s(J,Z),Object.defineProperties(J.prototype,{method:R,url:R,headers:R,redirect:R,clone:R,signal:R,duplex:R,destination:R,body:R,bodyUsed:R,isHistoryNavigation:R,isReloadNavigation:R,keepalive:R,integrity:R,cache:R,credentials:R,attribute:R,referrerPolicy:R,referrer:R,mode:R,[Symbol.toStringTag]:{value:"Request",configurable:!0}}),T.is.Request=T.util.MakeTypeAssertion(J),T.converters.RequestInfo=function(e){return"string"==typeof e?T.converters.USVString(e):T.is.Request(e)?e:T.converters.USVString(e)},T.converters.RequestInit=T.dictionaryConverter([{key:"method",converter:T.converters.ByteString},{key:"headers",converter:T.converters.HeadersInit},{key:"body",converter:T.nullableConverter(T.converters.BodyInit)},{key:"referrer",converter:T.converters.USVString},{key:"referrerPolicy",converter:T.converters.DOMString,allowedValues:y},{key:"mode",converter:T.converters.DOMString,allowedValues:D},{key:"credentials",converter:T.converters.DOMString,allowedValues:m},{key:"cache",converter:T.converters.DOMString,allowedValues:S},{key:"redirect",converter:T.converters.DOMString,allowedValues:w},{key:"integrity",converter:T.converters.DOMString},{key:"keepalive",converter:T.converters.boolean},{key:"signal",converter:T.nullableConverter(e=>T.converters.AbortSignal(e,"RequestInit","signal"))},{key:"window",converter:T.converters.any},{key:"duplex",converter:T.converters.DOMString,allowedValues:N},{key:"dispatcher",converter:T.converters.any},{key:"priority",converter:T.converters.DOMString,allowedValues:["high","low","auto"],defaultValue:()=>"auto"}]),t.exports={Request:J,makeRequest:K,fromInnerRequest:$,cloneRequest:z,getRequestDispatcher:W,getRequestState:Z,removeRequestAbortListener:X}},188014,(e,t,A)=>{"use strict";let r,i=e.r(57328),{runtimeFeatures:s}=e.r(509849),n=new Map([["sha256",0],["sha384",1],["sha512",2]]);if(s.has("crypto")){let t=(r=e.r(666680)).getHashes();for(let e of(0===t.length&&n.clear(),n.keys()))!1===t.includes(e)&&n.delete(e)}else n.clear();let o=Map.prototype.get.bind(n),a=Map.prototype.has.bind(n),l=!1===s.has("crypto")||0===n.size?()=>!0:(e,t)=>{let A=h(t);if(0===A.length)return!0;for(let t of g(A)){let A=t.alg,r=t.val;if(E(c(A,e),r))return!0}return!1};function g(e){let t=[],A=null;for(let r of e){if(i(a(r.alg),"Invalid SRI hash algorithm token"),0===t.length){t.push(r),A=r;continue}let e=o(A.alg),s=o(r.alg);s<e||(s>e?(A=r,t[0]=r,t.length=1):t.push(r))}return t}function h(e){let t=[];for(let A of e.split(" ")){let e=A.split("?",1)[0],r="",i=[e.slice(0,6),e.slice(7)],s=i[0];if(!a(s))continue;i[1]&&(r=i[1]);let n={alg:s,val:r};t.push(n)}return t}let c=(e,t)=>r.hash(e,t,"base64");function E(e,t){let A=e.length;0!==A&&"="===e[A-1]&&(A-=1),0!==A&&"="===e[A-1]&&(A-=1);let r=t.length;if(0!==r&&"="===t[r-1]&&(r-=1),0!==r&&"="===t[r-1]&&(r-=1),A!==r)return!1;for(let r=0;r<A;++r)if(e[r]!==t[r]&&("+"!==e[r]||"-"!==t[r])&&("/"!==e[r]||"_"!==t[r]))return!1;return!0}t.exports={applyAlgorithmToBytes:c,bytesMatch:l,caseSensitiveMatch:E,isValidSRIHashAlgorithm:a,getStrongestMetadata:g,parseMetadata:h}},817906,(e,t,A)=>{"use strict";let r,{makeNetworkError:i,makeAppropriateNetworkError:s,filterResponse:n,makeResponse:o,fromInnerResponse:a,getResponseState:l}=e.r(650801),{HeadersList:g}=e.r(761883),{Request:h,cloneRequest:c,getRequestDispatcher:E,getRequestState:Q,removeRequestAbortListener:I}=e.r(341716),d=e.r(727028),{makePolicyContainer:u,clonePolicyContainer:C,requestBadPort:B,TAOCheck:f,appendRequestOriginHeader:p,responseLocationURL:y,requestCurrentURL:w,setRequestReferrerPolicyOnRedirect:D,tryUpgradeRequestToAPotentiallyTrustworthyURL:m,createOpaqueTimingInfo:S,appendFetchMetadata:N,corsCheck:R,crossOriginResourcePolicyCheck:b,determineRequestsReferrer:U,coarsenedSharedCurrentTime:T,sameOrigin:F,isCancelled:k,isAborted:M,isErrorLike:L,fullyReadBody:v,readableStreamClose:Y,urlIsLocal:H,urlIsHttpHttpsScheme:O,urlHasHttpsScheme:G,clampAndCoarsenConnectionTimingInfo:V,simpleRangeHeaderValue:x,buildContentRange:J,createInflate:P,extractMimeType:W,hasAuthenticationEntry:_,includesCredentials:q,isTraversableNavigable:Z}=e.r(359401),j=e.r(57328),{safelyExtractBody:X,extractBody:K}=e.r(57700),{redirectStatusSet:z,nullBodyStatus:$,safeMethodsSet:ee,requestBodyHeader:et,subresourceSet:eA}=e.r(719640),er=e.r(687769),{Readable:ei,pipeline:es,finished:en,isErrored:eo,isReadable:ea}=e.r(81111),{addAbortListener:el,bufferToLowerCasedHeaderName:eg}=e.r(780405),{dataURLProcessor:eh,serializeAMimeType:ec,minimizeSupportedMimeType:eE}=e.r(561743),{getGlobalDispatcher:eQ}=e.r(403264),{webidl:eI}=e.r(704143),{STATUS_CODES:ed}=e.r(347299),{bytesMatch:eu}=e.r(188014),{isomorphicEncode:eC}=e.r(677682),eB=["GET","HEAD"],ef="u">typeof __UNDICI_IS_NODE__||"u">typeof esbuildDetection?"node":"undici";function ep(e,t,A){if(Array.isArray(A)){for(let t=0;t<A.length;t+=2){let r=eg(A[t]),i=A[t+1];if(Array.isArray(i)&&!Buffer.isBuffer(i))for(let t of i)e.append(r,t.toString("latin1"),!0);else e.append(r,i.toString("latin1"),!0)}return}for(let[A,r]of Object.entries(t??{}))if(Array.isArray(r))for(let t of r)e.append(A,`${t}`,!0);else e.append(A,`${r}`,!0)}class ey extends er{constructor(e){super(),this.dispatcher=e,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(e){"ongoing"===this.state&&(this.state="terminated",this.connection?.destroy(e),this.emit("terminated",e))}abort(e){"ongoing"===this.state&&(this.state="aborted",e||(e=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=e,this.connection?.destroy(e),this.emit("terminated",e))}}function ew(e,t="other"){if("error"===e.type&&e.aborted||!e.urlList?.length)return;let A=e.urlList[0],r=e.timingInfo,i=e.cacheState;O(A)&&null!==r&&(e.timingAllowPassed||(r=S({startTime:r.startTime}),i=""),r.endTime=T(),e.timingInfo=r,eD(r,A.href,t,globalThis,i,"",e.status))}let eD=performance.markResourceTiming;function em(e,t,A,r,i){if(e&&e.reject(r),t.body?.stream!=null&&ea(t.body.stream)&&t.body.stream.cancel(r).catch(e=>{if("ERR_INVALID_STATE"!==e.code)throw e}),null==A)return;let s=l(A);s.body?.stream!=null&&ea(s.body.stream)&&i.error(r)}function eS({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseEndOfBody:i,processResponseConsumeBody:s,useParallelQueue:n=!1,dispatcher:o=eQ(),requestObject:a=null}){j(o);let l=null,g=!1;null!=e.client&&(l=e.client.globalObject,g=e.client.crossOriginIsolatedCapability);let h=S({startTime:T(g)}),c={controller:new ey(o),request:e,timingInfo:h,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:i,taskDestination:l,crossOriginIsolatedCapability:g,requestObject:a};return j(!e.body||e.body.stream),"client"===e.window&&(e.window=e.client?.globalObject?.constructor?.name==="Window"?e.client:"no-window"),"client"===e.origin&&(e.origin=e.client.origin),"client"===e.policyContainer&&(null!=e.client?e.policyContainer=C(e.client.policyContainer):e.policyContainer=u()),e.headersList.contains("accept",!0)||e.headersList.append("accept","*/*",!0),e.headersList.contains("accept-language",!0)||e.headersList.append("accept-language","*",!0),e.priority,eA.has(e.destination),eN(c,!1),c.controller}async function eN(e,t){try{let A=e.request,r=null;if(A.localURLsOnly&&!H(w(A))&&(r=i("local URLs only")),m(A),"blocked"===B(A)&&(r=i("bad port")),""===A.referrerPolicy&&(A.referrerPolicy=A.policyContainer.referrerPolicy),"no-referrer"!==A.referrer&&(A.referrer=U(A)),null===r){let t=w(A);F(t,A.url)&&"basic"===A.responseTainting||"data:"===t.protocol||"navigate"===A.mode||"websocket"===A.mode?(A.responseTainting="basic",r=await eR(e)):"same-origin"===A.mode?r=i('request mode cannot be "same-origin"'):"no-cors"===A.mode?"follow"!==A.redirect?r=i('redirect mode cannot be "follow" for "no-cors" request'):(A.responseTainting="opaque",r=await eR(e)):O(w(A))?(A.responseTainting="cors",r=await eU(e)):r=i("URL scheme must be a HTTP(S) scheme")}if(t)return r;0===r.status||r.internalResponse||(A.responseTainting,"basic"===A.responseTainting?r=n(r,"basic"):"cors"===A.responseTainting?r=n(r,"cors"):"opaque"===A.responseTainting?r=n(r,"opaque"):j(!1));let s=0===r.status?r:r.internalResponse;if(0===s.urlList.length&&s.urlList.push(...A.urlList),A.timingAllowFailed||(r.timingAllowPassed=!0),"opaque"===r.type&&206===s.status&&s.rangeRequested&&!A.headers.contains("range",!0)&&(r=s=i()),0!==r.status&&("HEAD"===A.method||"CONNECT"===A.method||$.includes(s.status))&&(s.body=null,e.controller.dump=!0),A.integrity){let t=t=>eb(e,i(t));if("opaque"===A.responseTainting||null==r.body)return void t(r.error);v(r.body,i=>{eu(i,A.integrity)?(r.body=X(i)[0],eb(e,r)):t("integrity mismatch")},t)}else eb(e,r)}catch(t){e.controller.terminate(t)}}function eR(t){if(k(t)&&0===t.request.redirectCount)return Promise.resolve(s(t));let{request:A}=t,{protocol:n}=w(A);switch(n){case"about:":return Promise.resolve(i("about scheme is not supported"));case"blob:":{r||(r=e.r(951615).resolveObjectURL);let t=w(A);if(0!==t.search.length)return Promise.resolve(i("NetworkError when attempting to fetch resource."));let s=r(t.toString());if("GET"!==A.method||!eI.is.Blob(s))return Promise.resolve(i("invalid method"));let n=o(),a=s.size,l=eC(`${a}`),g=s.type;if(A.headersList.contains("range",!0)){n.rangeRequested=!0;let e=x(A.headersList.get("range",!0),!0);if("failure"===e)return Promise.resolve(i("failed to fetch the data URL"));let{rangeStartValue:t,rangeEndValue:r}=e;if(null===t)r=(t=a-r)+r-1;else{if(t>=a)return Promise.resolve(i("Range start is greater than the blob's size."));(null===r||r>=a)&&(r=a-1)}let o=s.slice(t,r+1,g);n.body=K(o)[0];let l=eC(`${o.size}`),h=J(t,r,a);n.status=206,n.statusText="Partial Content",n.headersList.set("content-length",l,!0),n.headersList.set("content-type",g,!0),n.headersList.set("content-range",h,!0)}else{let e=K(s);n.statusText="OK",n.body=e[0],n.headersList.set("content-length",l,!0),n.headersList.set("content-type",g,!0)}return Promise.resolve(n)}case"data:":{let e=eh(w(A));if("failure"===e)return Promise.resolve(i("failed to fetch the data URL"));return Promise.resolve(o({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:ec(e.mimeType)}]],body:X(e.body)[0]}))}case"file:":return Promise.resolve(i("not implemented... yet..."));case"http:":case"https:":return eU(t).catch(e=>i(e));default:return Promise.resolve(i("unknown scheme"))}}function eb(e,t){let A=e.timingInfo,r=()=>{let r=Date.now();"document"===e.request.destination&&(e.controller.fullTimingInfo=A),e.controller.reportTimingSteps=()=>{if(!O(e.request.url))return;A.endTime=r;let i=t.cacheState,s=t.bodyInfo;t.timingAllowPassed||(A=S(A),i="");let n=0;if("navigate"!==e.request.mode||!t.hasCrossOriginRedirects){n=t.status;let e=W(t.headersList);"failure"!==e&&(s.contentType=eE(e))}null!=e.request.initiatorType&&eD(A,e.request.url.href,e.request.initiatorType,globalThis,i,s,n)},queueMicrotask(()=>void(e.request.done=!0,null!=e.processResponseEndOfBody&&queueMicrotask(()=>e.processResponseEndOfBody(t)),null!=e.request.initiatorType&&e.controller.reportTimingSteps()))};null!=e.processResponse&&queueMicrotask(()=>{e.processResponse(t),e.processResponse=null});let i="error"===t.type?t:t.internalResponse??t;null==i.body?r():en(i.body.stream,()=>{r()})}async function eU(e){let t=e.request,A=null,r=null,s=e.timingInfo;if(t.serviceWorkers,null===A){if("follow"===t.redirect&&(t.serviceWorkers="none"),r=A=await eT(e),"cors"===t.responseTainting&&"failure"===R(t,A))return i("cors failure");"failure"===f(t,A)&&(t.timingAllowFailed=!0)}return("opaque"===t.responseTainting||"opaque"===A.type)&&"blocked"===b(t.origin,t.client,t.destination,r)?i("blocked"):(z.has(r.status)&&("manual"!==t.redirect&&e.controller.connection.destroy(void 0,!1),"error"===t.redirect?A=i("unexpected redirect"):"manual"===t.redirect?A=r:"follow"===t.redirect?A=await function(e,t){let A,r=e.request,s=t.internalResponse?t.internalResponse:t;try{if(A=y(s,w(r).hash),null==A)return t}catch(e){return Promise.resolve(i(e))}if(!O(A))return Promise.resolve(i("URL scheme must be a HTTP(S) scheme"));if(20===r.redirectCount)return Promise.resolve(i("redirect count exceeded"));if(r.redirectCount+=1,"cors"===r.mode&&(A.username||A.password)&&!F(r,A))return Promise.resolve(i('cross origin not allowed for request mode "cors"'));if("cors"===r.responseTainting&&(A.username||A.password))return Promise.resolve(i('URL cannot contain credentials for request mode "cors"'));if(303!==s.status&&null!=r.body&&null==r.body.source)return Promise.resolve(i());if([301,302].includes(s.status)&&"POST"===r.method||303===s.status&&!eB.includes(r.method))for(let e of(r.method="GET",r.body=null,et))r.headersList.delete(e);F(w(r),A)||(r.headersList.delete("authorization",!0),r.headersList.delete("proxy-authorization",!0),r.headersList.delete("cookie",!0),r.headersList.delete("host",!0)),null!=r.body&&(j(null!=r.body.source),r.body=X(r.body.source)[0]);let n=e.timingInfo;return n.redirectEndTime=n.postRedirectStartTime=T(e.crossOriginIsolatedCapability),0===n.redirectStartTime&&(n.redirectStartTime=n.startTime),r.urlList.push(A),D(r,s),eN(e,!0)}(e,A):j(!1)),A.timingInfo=s,A)}async function eT(e,t=!1,A=!1){let r=e.request,n=null,o=null,a=null;"no-window"===r.window&&"error"===r.redirect?(n=e,o=r):(r.body?.source!=null?o=c(r):(o=c({...r,body:null})).body=r.body,(n={...e}).request=o);let l="include"===r.credentials||"same-origin"===r.credentials&&"basic"===r.responseTainting,g=o.body?o.body.length:null,h=null;if(null==o.body&&["POST","PUT"].includes(o.method)&&(h="0"),null!=g&&(h=eC(`${g}`)),null==h||o.headersList.contains("content-length",!0)||o.headersList.append("content-length",h,!0),null!=g&&o.keepalive,eI.is.URL(o.referrer)&&o.headersList.append("referer",eC(o.referrer.href),!0),p(o),N(o),o.headersList.contains("user-agent",!0)||o.headersList.append("user-agent",ef,!0),"default"===o.cache&&(o.headersList.contains("if-modified-since",!0)||o.headersList.contains("if-none-match",!0)||o.headersList.contains("if-unmodified-since",!0)||o.headersList.contains("if-match",!0)||o.headersList.contains("if-range",!0))&&(o.cache="no-store"),"no-cache"!==o.cache||o.preventNoCacheCacheControlHeaderModification||o.headersList.contains("cache-control",!0)||o.headersList.append("cache-control","max-age=0",!0),("no-store"===o.cache||"reload"===o.cache)&&(o.headersList.contains("pragma",!0)||o.headersList.append("pragma","no-cache",!0),o.headersList.contains("cache-control",!0)||o.headersList.append("cache-control","no-cache",!0)),o.headersList.contains("range",!0)&&o.headersList.append("accept-encoding","identity",!0),o.headersList.contains("accept-encoding",!0)||(G(w(o))?o.headersList.append("accept-encoding","br, gzip, deflate, zstd",!0):o.headersList.append("accept-encoding","gzip, deflate",!0)),o.headersList.delete("host",!0),l&&!o.headersList.contains("authorization",!0)){let e=null;if(_(o)&&(void 0===o.useURLCredentials||!q(w(o))));else if(q(w(o))&&t){let{username:t,password:A}=w(o);e=`Basic ${Buffer.from(`${t}:${A}`).toString("base64")}`}null!==e&&o.headersList.append("Authorization",e,!1)}if(o.cache="no-store","no-store"!==o.cache&&o.cache,null==a){if("only-if-cached"===o.cache)return i("only if cached");let e=await eF(n,l,A);!ee.has(o.method)&&e.status>=200&&e.status,null==a&&(a=e)}if(a.urlList=[...o.urlList],o.headersList.contains("range",!0)&&(a.rangeRequested=!0),a.requestIncludesCredentials=l,401===a.status&&"cors"!==o.responseTainting&&l&&(void 0!==r.useURLCredentials||Z(r.traversableForUserPrompts))){if(null!=r.body){if(null==r.body.source)return a;r.body=X(r.body.source)[0]}if(void 0===r.useURLCredentials||t)return k(e)?s(e):a;e.controller.connection.destroy(),a=await eT(e,!0)}if(407===a.status)return"no-window"===r.window?i():k(e)?s(e):i("proxy authentication required");if(421===a.status&&!A&&(null==r.body||null!=r.body.source)){if(k(e))return s(e);e.controller.connection.destroy(),a=await eT(e,t,!0)}return a}async function eF(e,t=!1,A=!1){j(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(e,t=!0){!this.destroyed&&(this.destroyed=!0,t&&this.abort?.(e??new DOMException("The operation was aborted.","AbortError")))}};let r=e.request,n=null,a=e.timingInfo;r.cache="no-store",r.mode;let l=null;if(null==r.body&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(null!=r.body){let t=async function*(t){k(e)||(yield t,e.processRequestBodyChunkLength?.(t.byteLength))};l=async function*(){try{for await(let e of r.body.stream)yield*t(e);!k(e)&&e.processRequestEndOfBody&&e.processRequestEndOfBody()}catch(t){k(e)||("AbortError"===t.name?e.controller.abort():e.controller.terminate(t))}}()}try{let{body:t,status:A,statusText:i,headersList:s,socket:h}=await function({body:t}){let A=w(r),i=e.controller.dispatcher,s=A.pathname+A.search,n=0===A.search.length&&"?"===A.href[A.href.length-A.hash.length-1];return function t(o,l){return new Promise((h,c)=>i.dispatch({path:n?`${s}?`:s,origin:A.origin,method:r.method,body:i.isMockActive?r.body&&(r.body.source||r.body.stream):o,__mockAgentBodyForDispatch:o,headers:r.headersList.entries,maxRedirections:0,upgrade:"websocket"===r.mode?"websocket":void 0,...!1===l?{allowH2:l}:null},{body:null,abort:null,onRequestStart(t){let{connection:A}=e.controller;a.finalConnectionTimingInfo=V(void 0,a.postRedirectStartTime,e.crossOriginIsolatedCapability);let r=e=>t.abort(e);A.destroyed?r(new DOMException("The operation was aborted.","AbortError")):(e.controller.on("terminated",r),this.abort=A.abort=r),a.finalNetworkRequestStartTime=T(e.crossOriginIsolatedCapability)},onResponseStarted(){a.finalNetworkResponseStartTime=T(e.crossOriginIsolatedCapability)},onResponseStart(e,t,A,i){if(t<200)return;let s=e?.rawHeaders??[],n=new g;ep(n,A,s);let o=n.get("location",!0);this.body=new ei({read:()=>e.resume()});let a=o&&"follow"===r.redirect&&z.has(t),l=[];if("HEAD"!==r.method&&"CONNECT"!==r.method&&!$.includes(t)&&!a){let e=n.get("content-encoding",!0),t=e?e.toLowerCase().split(","):[];if(t.length>5)return void c(Error(`too many content-encodings in response: ${t.length}, maximum allowed is 5`));for(let e=t.length-1;e>=0;--e){let A=t[e].trim();if("x-gzip"===A||"gzip"===A)l.push(d.createGunzip({flush:d.constants.Z_SYNC_FLUSH,finishFlush:d.constants.Z_SYNC_FLUSH}));else if("deflate"===A)l.push(P({flush:d.constants.Z_SYNC_FLUSH,finishFlush:d.constants.Z_SYNC_FLUSH}));else if("br"===A)l.push(d.createBrotliDecompress({flush:d.constants.BROTLI_OPERATION_FLUSH,finishFlush:d.constants.BROTLI_OPERATION_FLUSH}));else if("zstd"===A)l.push(d.createZstdDecompress({flush:d.constants.ZSTD_e_continue,finishFlush:d.constants.ZSTD_e_end}));else{l.length=0;break}}}let E=t=>this.onResponseError(e,t);h({status:t,statusText:i,headersList:n,body:l.length?es(this.body,...l,t=>{t&&this.onResponseError(e,t)}).on("error",E):this.body.on("error",E)})},onResponseData(t,A){e.controller.dump||(a.encodedBodySize+=A.byteLength,!1===this.body.push(A)&&t.pause())},onResponseEnd(){this.abort&&e.controller.off("terminated",this.abort),e.controller.ended=!0,this.body?.push(null)},onResponseError(A,i){(this.abort&&e.controller.off("terminated",this.abort),"websocket"===r.mode&&!1!==l&&i?.code==="UND_ERR_INFO"&&i?.message==="HTTP/2: Extended CONNECT protocol not supported by server")?h(t(o,!1)):(this.body?.destroy(i),e.controller.terminate(i),c(i))},onRequestUpgrade(e,t,A,r){if(null!=r.session&&200!==t||null==r.session&&101!==t)return!1;let i=e?.rawHeaders??[],s=new g;return ep(s,A,i),h({status:t,statusText:ed[t],headersList:s,socket:r}),!0}}))}(t)}({body:l});if(h)n=o({status:A,statusText:i,headersList:s,socket:h});else{let r=t[Symbol.asyncIterator]();e.controller.next=()=>r.next(),n=o({status:A,statusText:i,headersList:s})}}catch(t){if("AbortError"===t.name)return e.controller.connection.destroy(),s(e,t);return i(t)}let h=new ReadableStream({start(t){e.controller.controller=t},pull:()=>e.controller.resume(),cancel:t=>{k(e)||e.controller.abort(t)},type:"bytes"});return n.body={stream:h,source:null,length:null},e.controller.resume||e.controller.on("terminated",function(t){M(e)?(n.aborted=!0,ea(h)&&e.controller.controller.error(e.controller.serializedAbortReason)):ea(h)&&e.controller.controller.error(TypeError("terminated",{cause:L(t)?t:void 0})),e.controller.connection.destroy()}),e.controller.resume=async()=>{for(;;){let t,A;try{let{done:A,value:r}=await e.controller.next();if(M(e))break;t=A?void 0:r}catch(r){e.controller.ended&&!a.encodedBodySize?t=void 0:(t=r,A=!0)}if(void 0===t){Y(e.controller.controller),function(e,t){e.request.done=!0,null!=e.processResponseDone&&queueMicrotask(()=>e.processResponseDone(t))}(e,n);return}if(a.decodedBodySize+=t?.byteLength??0,A)return void e.controller.terminate(t);let r=new Uint8Array(t);if(r.byteLength&&e.controller.controller.enqueue(r),eo(h))return void e.controller.terminate();if(e.controller.controller.desiredSize<=0)return}},n}t.exports={fetch:function(e,t){let A;eI.argumentLengthCheck(arguments,1,"globalThis.fetch");let r=Promise.withResolvers();try{A=new h(e,t)}catch(e){return r.reject(e),r.promise}let i=Q(A);if(A.signal.aborted)return em(r,i,null,A.signal.reason,null),r.promise;let s=i.client.globalObject;s?.constructor?.name==="ServiceWorkerGlobalScope"&&(i.serviceWorkers="none");let n=null,o=!1,l=null,g=el(A.signal,()=>{o=!0,j(null!=l),l.abort(A.signal.reason);let e=n?.deref();em(r,i,e,A.signal.reason,l.controller)}),c=()=>{g(),I(A)};return l=eS({request:i,processResponseEndOfBody:e=>{ew(e,"fetch"),c()},processResponse:e=>{if(!o){if(e.aborted){em(r,i,n,l.serializedAbortReason,l.controller),c();return}if("error"===e.type){r.reject(TypeError("fetch failed",{cause:e.error})),c();return}n=new WeakRef(a(e,"immutable")),r.resolve(n.deref()),r=null}},dispatcher:E(A),requestObject:A}),r.promise},Fetch:ey,fetching:eS,finalizeAndReportTiming:ew}},744032,(e,t,A)=>{"use strict";let r=e.r(57328),{URLSerializer:i}=e.r(561743),{isValidHeaderName:s}=e.r(359401);t.exports={urlEquals:function(e,t,A=!1){return i(e,A)===i(t,A)},getFieldValues:function(e){r(null!==e);let t=[];for(let A of e.split(","))s(A=A.trim())&&t.push(A);return t}}},845853,(e,t,A)=>{"use strict";let r=e.r(57328),{kConstruct:i}=e.r(35634),{urlEquals:s,getFieldValues:n}=e.r(744032),{kEnumerableProperty:o,isDisturbed:a}=e.r(780405),{webidl:l}=e.r(704143),{cloneResponse:g,fromInnerResponse:h,getResponseState:c}=e.r(650801),{Request:E,fromInnerRequest:Q,getRequestState:I}=e.r(341716),{fetching:d}=e.r(817906),{urlIsHttpHttpsScheme:u,readAllBytes:C}=e.r(359401);class B{#e3;constructor(){arguments[0]!==i&&l.illegalConstructor(),l.util.markAsUncloneable(this),this.#e3=arguments[1]}async match(e,t={}){l.brandCheck(this,B);let A="Cache.match";l.argumentLengthCheck(arguments,1,A),e=l.converters.RequestInfo(e),t=l.converters.CacheQueryOptions(t,A,"options");let r=this.#e6(e,t,1);if(0!==r.length)return r[0]}async matchAll(e,t={}){return l.brandCheck(this,B),void 0!==e&&(e=l.converters.RequestInfo(e)),t=l.converters.CacheQueryOptions(t,"Cache.matchAll","options"),this.#e6(e,t)}async add(e){l.brandCheck(this,B),l.argumentLengthCheck(arguments,1,"Cache.add");let t=[e=l.converters.RequestInfo(e)],A=this.addAll(t);return await A}async addAll(e){l.brandCheck(this,B);let t="Cache.addAll";l.argumentLengthCheck(arguments,1,t);let A=[],r=[];for(let A of e){if(void 0===A)throw l.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]});if("string"==typeof(A=l.converters.RequestInfo(A)))continue;let e=I(A);if(!u(e.url)||"GET"!==e.method)throw l.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}let i=[];for(let s of e){let e=I(new E(s));if(!u(e.url))throw l.errors.exception({header:t,message:"Expected http/s scheme."});e.initiator="fetch",e.destination="subresource",r.push(e);let o=Promise.withResolvers();i.push(d({request:e,processResponse(e){if("error"===e.type||206===e.status||e.status<200||e.status>299)o.reject(l.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(e.headersList.contains("vary")){for(let t of n(e.headersList.get("vary")))if("*"===t){for(let e of(o.reject(l.errors.exception({header:"Cache.addAll",message:"invalid vary field value"})),i))e.abort();return}}},processResponseEndOfBody(e){e.aborted?o.reject(new DOMException("aborted","AbortError")):o.resolve(e)}})),A.push(o.promise)}let s=Promise.all(A),o=await s,a=[],g=0;for(let e of o){let t={type:"put",request:r[g],response:e};a.push(t),g++}let h=Promise.withResolvers(),c=null;try{this.#e7(a)}catch(e){c=e}return queueMicrotask(()=>{null===c?h.resolve(void 0):h.reject(c)}),h.promise}async put(e,t){l.brandCheck(this,B);let A="Cache.put";l.argumentLengthCheck(arguments,2,A),e=l.converters.RequestInfo(e),t=l.converters.Response(t,A,"response");let r=null;if(!u((r=l.is.Request(e)?I(e):I(new E(e))).url)||"GET"!==r.method)throw l.errors.exception({header:A,message:"Expected an http/s scheme when method is not GET"});let i=c(t);if(206===i.status)throw l.errors.exception({header:A,message:"Got 206 status"});if(i.headersList.contains("vary")){for(let e of n(i.headersList.get("vary")))if("*"===e)throw l.errors.exception({header:A,message:"Got * vary field value"})}if(i.body&&(a(i.body.stream)||i.body.stream.locked))throw l.errors.exception({header:A,message:"Response body is locked or disturbed"});let s=g(i),o=Promise.withResolvers();null!=i.body?C(i.body.stream.getReader(),o.resolve,o.reject):o.resolve(void 0);let h=[],Q={type:"put",request:r,response:s};h.push(Q);let d=await o.promise;null!=s.body&&(s.body.source=d);let f=Promise.withResolvers(),p=null;try{this.#e7(h)}catch(e){p=e}return queueMicrotask(()=>{null===p?f.resolve():f.reject(p)}),f.promise}async delete(e,t={}){let A;l.brandCheck(this,B);let i="Cache.delete";l.argumentLengthCheck(arguments,1,i),e=l.converters.RequestInfo(e),t=l.converters.CacheQueryOptions(t,i,"options");let s=null;if(l.is.Request(e)){if("GET"!==(s=I(e)).method&&!t.ignoreMethod)return!1}else r("string"==typeof e),s=I(new E(e));let n=[],o={type:"delete",request:s,options:t};n.push(o);let a=Promise.withResolvers(),g=null;try{A=this.#e7(n)}catch(e){g=e}return queueMicrotask(()=>{null===g?a.resolve(!!A?.length):a.reject(g)}),a.promise}async keys(e,t={}){l.brandCheck(this,B),void 0!==e&&(e=l.converters.RequestInfo(e)),t=l.converters.CacheQueryOptions(t,"Cache.keys","options");let A=null;if(void 0!==e)if(l.is.Request(e)){if("GET"!==(A=I(e)).method&&!t.ignoreMethod)return[]}else"string"==typeof e&&(A=I(new E(e)));let r=Promise.withResolvers(),i=[];if(void 0===e)for(let e of this.#e3)i.push(e[0]);else for(let e of this.#te(A,t))i.push(e[0]);return queueMicrotask(()=>{let e=[];for(let t of i){let A=Q(t,void 0,new AbortController().signal,"immutable");e.push(A)}r.resolve(Object.freeze(e))}),r.promise}#e7(e){let t=this.#e3,A=[...t],i=[],s=[];try{for(let A of e){let e;if("delete"!==A.type&&"put"!==A.type)throw l.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if("delete"===A.type&&null!=A.response)throw l.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#te(A.request,A.options,i).length)throw new DOMException("???","InvalidStateError");if("delete"===A.type){if(e=this.#te(A.request,A.options),0===e.length)return[];for(let A of e){let e=t.indexOf(A);r(-1!==e),t.splice(e,1)}}else if("put"===A.type){if(null==A.response)throw l.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let s=A.request;if(!u(s.url))throw l.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if("GET"!==s.method)throw l.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(null!=A.options)throw l.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});for(let i of e=this.#te(A.request)){let e=t.indexOf(i);r(-1!==e),t.splice(e,1)}t.push([A.request,A.response]),i.push([A.request,A.response])}s.push([A.request,A.response])}return s}catch(e){throw this.#e3.length=0,this.#e3=A,e}}#te(e,t,A){let r=[];for(let i of A??this.#e3){let[A,s]=i;this.#tt(e,A,s,t)&&r.push(i)}return r}#tt(e,t,A=null,r){let i=new URL(e.url),o=new URL(t.url);if(r?.ignoreSearch&&(o.search="",i.search=""),!s(i,o,!0))return!1;if(null==A||r?.ignoreVary||!A.headersList.contains("vary"))return!0;for(let r of n(A.headersList.get("vary")))if("*"===r||t.headersList.get(r)!==e.headersList.get(r))return!1;return!0}#e6(e,t,A=1/0){let r=null;if(void 0!==e)if(l.is.Request(e)){if("GET"!==(r=I(e)).method&&!t.ignoreMethod)return[]}else"string"==typeof e&&(r=I(new E(e)));let i=[];if(void 0===e)for(let e of this.#e3)i.push(e[1]);else for(let e of this.#te(r,t))i.push(e[1]);let s=[];for(let e of i){let t=h(g(e),"immutable");if(s.push(t),s.length>=A)break}return Object.freeze(s)}}Object.defineProperties(B.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:o,matchAll:o,add:o,addAll:o,put:o,delete:o,keys:o});let f=[{key:"ignoreSearch",converter:l.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:l.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:l.converters.boolean,defaultValue:()=>!1}];l.converters.CacheQueryOptions=l.dictionaryConverter(f),l.converters.MultiCacheQueryOptions=l.dictionaryConverter([...f,{key:"cacheName",converter:l.converters.DOMString}]),l.converters.Response=l.interfaceConverter(l.is.Response,"Response"),l.converters["sequence<RequestInfo>"]=l.sequenceConverter(l.converters.RequestInfo),t.exports={Cache:B}},562899,(e,t,A)=>{"use strict";let{Cache:r}=e.r(845853),{webidl:i}=e.r(704143),{kEnumerableProperty:s}=e.r(780405),{kConstruct:n}=e.r(35634);class o{#tA=new Map;constructor(){arguments[0]!==n&&i.illegalConstructor(),i.util.markAsUncloneable(this)}async match(e,t={}){if(i.brandCheck(this,o),i.argumentLengthCheck(arguments,1,"CacheStorage.match"),e=i.converters.RequestInfo(e),null!=(t=i.converters.MultiCacheQueryOptions(t)).cacheName){if(this.#tA.has(t.cacheName)){let A=new r(n,this.#tA.get(t.cacheName));return await A.match(e,t)}}else for(let A of this.#tA.values()){let i=new r(n,A),s=await i.match(e,t);if(void 0!==s)return s}}async has(e){i.brandCheck(this,o);let t="CacheStorage.has";return i.argumentLengthCheck(arguments,1,t),e=i.converters.DOMString(e,t,"cacheName"),this.#tA.has(e)}async open(e){i.brandCheck(this,o);let t="CacheStorage.open";if(i.argumentLengthCheck(arguments,1,t),e=i.converters.DOMString(e,t,"cacheName"),this.#tA.has(e))return new r(n,this.#tA.get(e));let A=[];return this.#tA.set(e,A),new r(n,A)}async delete(e){i.brandCheck(this,o);let t="CacheStorage.delete";return i.argumentLengthCheck(arguments,1,t),e=i.converters.DOMString(e,t,"cacheName"),this.#tA.delete(e)}async keys(){return i.brandCheck(this,o),[...this.#tA.keys()]}}Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:s,has:s,open:s,delete:s,keys:s}),t.exports={CacheStorage:o}},301473,(e,t,A)=>{"use strict";t.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}},435708,(e,t,A)=>{"use strict";function r(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A<33||A>126||34===A||40===A||41===A||60===A||62===A||64===A||44===A||59===A||58===A||92===A||47===A||91===A||93===A||63===A||61===A||123===A||125===A)throw Error("Invalid cookie name")}}function i(e){let t=e.length,A=0;if('"'===e[0]){if(1===t||'"'!==e[t-1])throw Error("Invalid cookie value");--t,++A}for(;A<t;){let t=e.charCodeAt(A++);if(t<33||t>126||34===t||44===t||59===t||92===t)throw Error("Invalid cookie value")}}function s(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A<32||A>126||59===A)throw Error("Invalid cookie path")}}let n=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],o=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],a=Array(61).fill(0).map((e,t)=>t.toString().padStart(2,"0"));function l(e){return"number"==typeof e&&(e=new Date(e)),`${n[e.getUTCDay()]}, ${a[e.getUTCDate()]} ${o[e.getUTCMonth()]} ${e.getUTCFullYear()} ${a[e.getUTCHours()]}:${a[e.getUTCMinutes()]}:${a[e.getUTCSeconds()]} GMT`}t.exports={isCTLExcludingHtab:function(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A>=0&&A<=8||A>=10&&A<=31||127===A)return!0}return!1},validateCookieName:r,validateCookiePath:s,validateCookieValue:i,toIMFDate:l,stringify:function(e){if(0===e.name.length)return null;r(e.name),i(e.value);let t=[`${e.name}=${e.value}`];if(e.name.startsWith("__Secure-")&&(e.secure=!0),e.name.startsWith("__Host-")&&(e.secure=!0,e.domain=null,e.path="/"),e.secure&&t.push("Secure"),e.httpOnly&&t.push("HttpOnly"),"number"==typeof e.maxAge){if(e.maxAge<0)throw Error("Invalid cookie max-age");t.push(`Max-Age=${e.maxAge}`)}if(e.domain){var A=e.domain;if(A.startsWith("-")||A.endsWith(".")||A.endsWith("-"))throw Error("Invalid cookie domain");t.push(`Domain=${e.domain}`)}for(let A of(e.path&&(s(e.path),t.push(`Path=${e.path}`)),e.expires&&"Invalid Date"!==e.expires.toString()&&t.push(`Expires=${l(e.expires)}`),e.sameSite&&t.push(`SameSite=${e.sameSite}`),e.unparsed)){if(!A.includes("="))throw Error("Invalid unparsed");let[e,...r]=A.split("=");t.push(`${e.trim()}=${r.join("=")}`)}return t.join("; ")}}},798989,(e,t,A)=>{"use strict";let{collectASequenceOfCodePointsFast:r}=e.r(677682),{maxNameValuePairSize:i,maxAttributeValueSize:s}=e.r(301473),{isCTLExcludingHtab:n}=e.r(435708),o=e.r(57328);function a(e,t={}){if(0===e.length)return t;o(";"===e[0]);let A="";(e=e.slice(1)).includes(";")?(A=r(";",e,{position:0}),e=e.slice(A.length)):(A=e,e="");let i="",n="";if(A.includes("=")){let e={position:0};i=r("=",A,e),n=A.slice(e.position+1)}else i=A;if(i=i.trim(),(n=n.trim()).length>s)return a(e,t);let l=i.toLowerCase();if("expires"===l){let e=new Date(n);Number.isNaN(e.getTime())||(t.expires=e)}else if("max-age"===l){let A=n.charCodeAt(0);if((A<48||A>57)&&"-"!==n[0]||!/^\d+$/.test(n))return a(e,t);t.maxAge=Number(n)}else if("domain"===l){let e=n;"."===e[0]&&(e=e.slice(1)),t.domain=e=e.toLowerCase()}else if("path"===l)t.path=0===n.length||"/"!==n[0]?"/":n;else if("secure"===l)t.secure=!0;else if("httponly"===l)t.httpOnly=!0;else if("samesite"===l){let e=n.toLowerCase();"none"===e?t.sameSite="None":"strict"===e?t.sameSite="Strict":"lax"===e&&(t.sameSite="Lax")}else t.unparsed??=[],t.unparsed.push(`${i}=${n}`);return a(e,t)}t.exports={parseSetCookie:function(e){if(n(e))return null;let t="",A="",s="",o="";if(e.includes(";")){let i={position:0};t=r(";",e,i),A=e.slice(i.position)}else t=e;if(t.includes("=")){let e={position:0};s=r("=",t,e),o=t.slice(e.position+1)}else o=t;return(s=s.trim(),o=o.trim(),s.length+o.length>i)?null:{name:s,value:o,...a(A)}},parseUnparsedAttributes:a}},75864,(e,t,A)=>{"use strict";let{parseSetCookie:r}=e.r(798989),{stringify:i}=e.r(435708),{webidl:s}=e.r(704143),{Headers:n}=e.r(761883),o=s.brandCheckMultiple([n,globalThis.Headers].filter(Boolean));function a(e,t){s.argumentLengthCheck(arguments,2,"setCookie"),o(e);let A=i(t=s.converters.Cookie(t));A&&e.append("set-cookie",A,!0)}s.converters.DeleteCookieAttributes=s.dictionaryConverter([{converter:s.nullableConverter(s.converters.DOMString),key:"path",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.DOMString),key:"domain",defaultValue:()=>null}]),s.converters.Cookie=s.dictionaryConverter([{converter:s.converters.DOMString,key:"name"},{converter:s.converters.DOMString,key:"value"},{converter:s.nullableConverter(e=>"number"==typeof e?s.converters["unsigned long long"](e):new Date(e)),key:"expires",defaultValue:()=>null},{converter:s.nullableConverter(s.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.DOMString),key:"path",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.boolean),key:"secure",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:s.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:s.sequenceConverter(s.converters.DOMString),key:"unparsed",defaultValue:()=>[]}]),t.exports={getCookies:function(e){s.argumentLengthCheck(arguments,1,"getCookies"),o(e);let t=e.get("cookie"),A={};if(!t)return A;for(let e of t.split(";")){let[t,...r]=e.split("=");A[t.trim()]=r.join("=")}return A},deleteCookie:function(e,t,A){o(e);let r="deleteCookie";s.argumentLengthCheck(arguments,2,r),t=s.converters.DOMString(t,r,"name"),A=s.converters.DeleteCookieAttributes(A),a(e,{name:t,value:"",expires:new Date(0),...A})},getSetCookies:function(e){s.argumentLengthCheck(arguments,1,"getSetCookies"),o(e);let t=e.getSetCookie();return t?t.map(e=>r(e)):[]},setCookie:a,parseCookie:function(e){return r(e=s.converters.DOMString(e))}}},124672,(e,t,A)=>{"use strict";let{webidl:r}=e.r(704143),{kEnumerableProperty:i}=e.r(780405),{kConstruct:s}=e.r(35634);class n extends Event{#tr;constructor(e,t={}){if(e===s){super(arguments[1],arguments[2]),r.util.markAsUncloneable(this);return}const A="MessageEvent constructor";r.argumentLengthCheck(arguments,1,A),super(e=r.converters.DOMString(e,A,"type"),t=r.converters.MessageEventInit(t,A,"eventInitDict")),this.#tr=t,r.util.markAsUncloneable(this)}get data(){return r.brandCheck(this,n),this.#tr.data}get origin(){return r.brandCheck(this,n),this.#tr.origin}get lastEventId(){return r.brandCheck(this,n),this.#tr.lastEventId}get source(){return r.brandCheck(this,n),this.#tr.source}get ports(){return r.brandCheck(this,n),Object.isFrozen(this.#tr.ports)||Object.freeze(this.#tr.ports),this.#tr.ports}initMessageEvent(e,t=!1,A=!1,i=null,s="",o="",a=null,l=[]){return r.brandCheck(this,n),r.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new n(e,{bubbles:t,cancelable:A,data:i,origin:s,lastEventId:o,source:a,ports:l})}static createFastMessageEvent(e,t){let A=new n(s,e,t);return A.#tr=t,A.#tr.data??=null,A.#tr.origin??="",A.#tr.lastEventId??="",A.#tr.source??=null,A.#tr.ports??=[],A}}let{createFastMessageEvent:o}=n;delete n.createFastMessageEvent;class a extends Event{#tr;constructor(e,t={}){const A="CloseEvent constructor";r.argumentLengthCheck(arguments,1,A),super(e=r.converters.DOMString(e,A,"type"),t=r.converters.CloseEventInit(t)),this.#tr=t,r.util.markAsUncloneable(this)}get wasClean(){return r.brandCheck(this,a),this.#tr.wasClean}get code(){return r.brandCheck(this,a),this.#tr.code}get reason(){return r.brandCheck(this,a),this.#tr.reason}}class l extends Event{#tr;constructor(e,t){const A="ErrorEvent constructor";r.argumentLengthCheck(arguments,1,A),super(e,t),r.util.markAsUncloneable(this),e=r.converters.DOMString(e,A,"type"),t=r.converters.ErrorEventInit(t??{}),this.#tr=t}get message(){return r.brandCheck(this,l),this.#tr.message}get filename(){return r.brandCheck(this,l),this.#tr.filename}get lineno(){return r.brandCheck(this,l),this.#tr.lineno}get colno(){return r.brandCheck(this,l),this.#tr.colno}get error(){return r.brandCheck(this,l),this.#tr.error}}Object.defineProperties(n.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:i,origin:i,lastEventId:i,source:i,ports:i,initMessageEvent:i}),Object.defineProperties(a.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:i,code:i,wasClean:i}),Object.defineProperties(l.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:i,filename:i,lineno:i,colno:i,error:i}),r.converters.MessagePort=r.interfaceConverter(r.is.MessagePort,"MessagePort"),r.converters["sequence<MessagePort>"]=r.sequenceConverter(r.converters.MessagePort);let g=[{key:"bubbles",converter:r.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:r.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:r.converters.boolean,defaultValue:()=>!1}];r.converters.MessageEventInit=r.dictionaryConverter([...g,{key:"data",converter:r.converters.any,defaultValue:()=>null},{key:"origin",converter:r.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:r.converters.DOMString,defaultValue:()=>""},{key:"source",converter:r.nullableConverter(r.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:r.converters["sequence<MessagePort>"],defaultValue:()=>[]}]),r.converters.CloseEventInit=r.dictionaryConverter([...g,{key:"wasClean",converter:r.converters.boolean,defaultValue:()=>!1},{key:"code",converter:r.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:r.converters.USVString,defaultValue:()=>""}]),r.converters.ErrorEventInit=r.dictionaryConverter([...g,{key:"message",converter:r.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:r.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:r.converters.any}]),t.exports={MessageEvent:n,CloseEvent:a,ErrorEvent:l,createFastMessageEvent:o}},175512,(e,t,A)=>{"use strict";t.exports={uid:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",sentCloseFrameState:{SENT:1,RECEIVED:2},staticPropertyDescriptors:{enumerable:!0,writable:!1,configurable:!1},states:{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},opcodes:{CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},maxUnsigned16Bit:65535,parserStates:{INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},emptyBuffer:Buffer.allocUnsafe(0),sendHints:{text:1,typedArray:2,arrayBuffer:3,blob:4}}},666578,(e,t,A)=>{"use strict";let{states:r,opcodes:i}=e.r(175512),{isUtf8:s}=e.r(951615),{removeHTTPWhitespace:n}=e.r(561743),{collectASequenceOfCodePointsFast:o}=e.r(677682);function a(e){return e===i.CLOSE||e===i.PING||e===i.PONG}function l(e){return e===i.CONTINUATION}function g(e){return e===i.TEXT||e===i.BINARY}t.exports={isConnecting:function(e){return e===r.CONNECTING},isEstablished:function(e){return e===r.OPEN},isClosing:function(e){return e===r.CLOSING},isClosed:function(e){return e===r.CLOSED},fireEvent:function(e,t,A=(e,t)=>new Event(e,t),r={}){let i=A(e,r);t.dispatchEvent(i)},isValidSubprotocol:function(e){if(0===e.length)return!1;for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A<33||A>126||34===A||40===A||41===A||44===A||47===A||58===A||59===A||60===A||61===A||62===A||63===A||64===A||91===A||92===A||93===A||123===A||125===A)return!1}return!0},isValidStatusCode:function(e){return e>=1e3&&e<1015?1004!==e&&1005!==e&&1006!==e:e>=3e3&&e<=4999},websocketMessageReceived:function(e,t,A){e.onMessage(t,A)},utf8Decode:(()=>{if("string"==typeof process.versions.icu){let e=new TextDecoder("utf-8",{fatal:!0});return e.decode.bind(e)}return function(e){if(s(e))return e.toString("utf-8");throw TypeError("Invalid utf-8 received.")}})(),isControlFrame:a,isContinuationFrame:l,isTextBinaryFrame:g,isValidOpcode:function(e){return g(e)||l(e)||a(e)},parseExtensions:function(e){let t={position:0},A=new Map;for(;t.position<e.length;){let[r,i=""]=o(";",e,t).split("=",2);A.set(n(r,!0,!1),n(i,!1,!0)),t.position++}return A},isValidClientWindowBits:function(e){if(0===e.length)return!1;for(let t=0;t<e.length;t++){let A=e.charCodeAt(t);if(A<48||A>57)return!1}let t=Number.parseInt(e,10);return t>=8&&t<=15},toArrayBuffer:function(e){return e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer},getURLRecord:function(e,t){let A;try{A=new URL(e,t)}catch(e){throw new DOMException(e,"SyntaxError")}if("http:"===A.protocol?A.protocol="ws:":"https:"===A.protocol&&(A.protocol="wss:"),"ws:"!==A.protocol&&"wss:"!==A.protocol)throw new DOMException("expected a ws: or wss: url","SyntaxError");if(A.hash.length||A.href.endsWith("#"))throw new DOMException("hash","SyntaxError");return A},validateCloseCodeAndReason:function(e,t){if(null!==e&&1e3!==e&&(e<3e3||e>4999))throw new DOMException("invalid code","InvalidAccessError");if(null!==t){let e=Buffer.byteLength(t);if(e>123)throw new DOMException(`Reason must be less than 123 bytes; received ${e}`,"SyntaxError")}}}},659541,(e,t,A)=>{"use strict";let{runtimeFeatures:r}=e.r(509849),{maxUnsigned16Bit:i,opcodes:s}=e.r(175512),n=null,o=8192,a=r.has("crypto")?e.r(666680).randomFillSync:null;function l(){return 8192===o&&(o=0,a(n??=Buffer.allocUnsafeSlow(8192),0,8192)),[n[o++],n[o++],n[o++],n[o++]]}t.exports={WebsocketFrameSend:class{constructor(e){this.frameData=e}createFrame(e){let t=this.frameData,A=l(),r=t?.byteLength??0,s=r,n=6;r>i?(n+=8,s=127):r>125&&(n+=2,s=126);let o=Buffer.allocUnsafe(r+n);o[0]=o[1]=0,o[0]|=128,o[0]=(240&o[0])+e,o[n-4]=A[0],o[n-3]=A[1],o[n-2]=A[2],o[n-1]=A[3],o[1]=s,126===s?o.writeUInt16BE(r,2):127===s&&(o[2]=o[3]=0,o.writeUIntBE(r,4,6)),o[1]|=128;for(let e=0;e<r;++e)o[n+e]=t[e]^A[3&e];return o}static createFastTextFrame(e){let t=l(),A=e.length;for(let r=0;r<A;++r)e[r]^=t[3&r];let r=A,n=6;A>i?(n+=8,r=127):A>125&&(n+=2,r=126);let o=Buffer.allocUnsafeSlow(n);return o[0]=128|s.TEXT,o[1]=128|r,o[n-4]=t[0],o[n-3]=t[1],o[n-2]=t[2],o[n-1]=t[3],126===r?o.writeUInt16BE(A,2):127===r&&(o[2]=o[3]=0,o.writeUIntBE(A,4,6)),[o,e]}},generateMask:l}},856986,(e,t,A)=>{"use strict";let{uid:r,states:i,sentCloseFrameState:s,emptyBuffer:n,opcodes:o}=e.r(175512),{parseExtensions:a,isClosed:l,isClosing:g,isEstablished:h,isConnecting:c,validateCloseCodeAndReason:E}=e.r(666578),{makeRequest:Q}=e.r(341716),{fetching:I}=e.r(817906),{Headers:d,getHeadersList:u}=e.r(761883),{getDecodeSplit:C}=e.r(359401),{WebsocketFrameSend:B}=e.r(659541),f=e.r(57328),{runtimeFeatures:p}=e.r(509849),y=p.has("crypto")?e.r(666680):null,w=!1;function D(e,t,A,r=!1){if(t??=null,A??="",r&&E(t,A),l(e.readyState)||g(e.readyState));else if(h(e.readyState))if(e.closeState.has(s.SENT)||e.closeState.has(s.RECEIVED))e.readyState=i.CLOSING;else{let r=new B;0!==A.length&&null===t&&(t=1e3),f(null===t||Number.isInteger(t)),null===t&&0===A.length?r.frameData=n:null!==t&&null===A?(r.frameData=Buffer.allocUnsafe(2),r.frameData.writeUInt16BE(t,0)):null!==t&&null!==A?(r.frameData=Buffer.allocUnsafe(2+Buffer.byteLength(A)),r.frameData.writeUInt16BE(t,0),r.frameData.write(A,2,"utf-8")):r.frameData=n,e.socket.write(r.createFrame(o.CLOSE)),e.closeState.add(s.SENT),e.readyState=i.CLOSING}else m(e),e.readyState=i.CLOSING}function m(e,t,A,r){h(e.readyState)&&D(e,t,A,!1),e.controller.abort(),c(e.readyState)?e.onSocketClose():e.socket?.destroyed===!1&&e.socket.destroy()}t.exports={establishWebSocketConnection:function(e,t,A,i,s){e.protocol="ws:"===e.protocol?"http:":"https:";let n=Q({urlList:[e],client:A,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error",useURLCredentials:!0});s.headers&&(n.headersList=u(new d(s.headers)));let o=y.randomBytes(16).toString("base64");for(let e of(n.headersList.append("sec-websocket-key",o,!0),n.headersList.append("sec-websocket-version","13",!0),t))n.headersList.append("sec-websocket-protocol",e,!0);return n.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits",!0),I({request:n,useParallelQueue:!0,dispatcher:s.dispatcher,processResponse(e){let A;if("error"===e.type||101!==e.status){if(e.socket?.session==null)return void m(i,1002,"Received network error or non-101 status code.",e.error);if(200!==e.status)return void m(i,1002,"Received network error or non-200 status code.",e.error)}if(!1===w&&e.socket?.session!=null&&(process.emitWarning("WebSocket over HTTP2 is experimental, and subject to change.","ExperimentalWarning"),w=!0),0!==t.length&&!e.headersList.get("Sec-WebSocket-Protocol"))return void m(i,1002,"Server did not respond with sent protocols.");if(null==e.socket.session&&e.headersList.get("Upgrade")?.toLowerCase()!=="websocket")return void m(i,1002,'Server did not set Upgrade header to "websocket".');if(null==e.socket.session&&e.headersList.get("Connection")?.toLowerCase()!=="upgrade")return void m(i,1002,'Server did not set Connection header to "upgrade".');if(e.headersList.get("Sec-WebSocket-Accept")!==y.hash("sha1",o+r,"base64"))return void m(i,1002,"Incorrect hash received in Sec-WebSocket-Accept header.");let s=e.headersList.get("Sec-WebSocket-Extensions");if(null!==s&&!(A=a(s)).has("permessage-deflate"))return void m(i,1002,"Sec-WebSocket-Extensions header does not match.");let l=e.headersList.get("Sec-WebSocket-Protocol");null===l||C("sec-websocket-protocol",n.headersList).includes(l)?(e.socket.on("data",i.onSocketData),e.socket.on("close",i.onSocketClose),e.socket.on("error",i.onSocketError),i.wasEverConnected=!0,i.onConnectionEstablished(e,A)):m(i,1002,"Protocol was not set in the opening handshake.")}})},failWebsocketConnection:m,closeWebSocketConnection:D}},49044,(e,t,A)=>{"use strict";let{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:i}=e.r(727028),{isValidClientWindowBits:s}=e.r(666578),{MessageSizeExceededError:n}=e.r(920788),o=Buffer.from([0,0,255,255]),a=Symbol("kBuffer"),l=Symbol("kLength");t.exports={PerMessageDeflate:class{#ti;#S={};#ts=0;constructor(e,t){this.#S.serverNoContextTakeover=e.has("server_no_context_takeover"),this.#S.serverMaxWindowBits=e.get("server_max_window_bits"),this.#ts=t.maxPayloadSize}decompress(e,t,A){if(!this.#ti){let e=i;if(this.#S.serverMaxWindowBits){if(!s(this.#S.serverMaxWindowBits))return void A(Error("Invalid server_max_window_bits"));e=Number.parseInt(this.#S.serverMaxWindowBits)}try{this.#ti=r({windowBits:e})}catch(e){A(e);return}this.#ti[a]=[],this.#ti[l]=0,this.#ti.on("data",e=>{if(this.#ti[l]+=e.length,this.#ts>0&&this.#ti[l]>this.#ts){A(new n),this.#ti.removeAllListeners(),this.#ti=null;return}this.#ti[a].push(e)}),this.#ti.on("error",e=>{this.#ti=null,A(e)})}this.#ti.write(e),t&&this.#ti.write(o),this.#ti.flush(()=>{if(!this.#ti)return;let e=Buffer.concat(this.#ti[a],this.#ti[l]);this.#ti[a].length=0,this.#ti[l]=0,A(null,e)})}}}},928694,(e,t,A)=>{"use strict";let{Writable:r}=e.r(81111),i=e.r(57328),{parserStates:s,opcodes:n,states:o,emptyBuffer:a,sentCloseFrameState:l}=e.r(175512),{isValidStatusCode:g,isValidOpcode:h,websocketMessageReceived:c,utf8Decode:E,isControlFrame:Q,isTextBinaryFrame:I,isContinuationFrame:d}=e.r(666578),{failWebsocketConnection:u}=e.r(856986),{WebsocketFrameSend:C}=e.r(659541),{PerMessageDeflate:B}=e.r(49044),{MessageSizeExceededError:f}=e.r(920788);class p extends r{#tn=[];#to=0;#ta=0;#tl=!1;#g=s.INFO;#tg={};#th=[];#tc;#c;#tE;#ts;constructor(e,t,A={}){super(),this.#c=e,this.#tc=null==t?new Map:t,this.#tE=A.maxFragments??0,this.#ts=A.maxPayloadSize??0,this.#tc.has("permessage-deflate")&&this.#tc.set("permessage-deflate",new B(t,A))}_write(e,t,A){this.#tn.push(e),this.#ta+=e.length,this.#tl=!0,this.run(A)}#tQ(){return!(this.#ts>0)||!!Q(this.#tg.opcode)||!(this.#tg.payloadLength+this.#to>this.#ts)||(u(this.#c,1009,"Payload size exceeds maximum allowed size"),!1)}run(e){for(;this.#tl;)if(this.#g===s.INFO){if(this.#ta<2)return e();let t=this.consume(2),A=(128&t[0])!=0,r=15&t[0],i=(128&t[1])==128,o=!A&&r!==n.CONTINUATION,a=127&t[1],l=64&t[0],g=32&t[0],c=16&t[0];if(!h(r))return u(this.#c,1002,"Invalid opcode received"),e();if(i)return u(this.#c,1002,"Frame cannot be masked"),e();if(0!==l&&!this.#tc.has("permessage-deflate"))return void u(this.#c,1002,"Expected RSV1 to be clear.");if(0!==g||0!==c)return void u(this.#c,1002,"RSV1, RSV2, RSV3 must be clear");if(o&&!I(r))return void u(this.#c,1002,"Invalid frame type was fragmented.");if(I(r)&&this.#th.length>0)return void u(this.#c,1002,"Expected continuation frame");if(this.#tg.fragmented&&o)return void u(this.#c,1002,"Fragmented frame exceeded 125 bytes.");if((a>125||o)&&Q(r))return void u(this.#c,1002,"Control frame either too large or fragmented");if(d(r)&&0===this.#th.length&&!this.#tg.compressed)return void u(this.#c,1002,"Unexpected continuation frame");if(a<=125){if(this.#tg.payloadLength=a,this.#g=s.READ_DATA,!this.#tQ())return}else 126===a?this.#g=s.PAYLOADLENGTH_16:127===a&&(this.#g=s.PAYLOADLENGTH_64);I(r)&&(this.#tg.binaryType=r,this.#tg.compressed=0!==l),this.#tg.opcode=r,this.#tg.masked=i,this.#tg.fin=A,this.#tg.fragmented=o}else if(this.#g===s.PAYLOADLENGTH_16){if(this.#ta<2)return e();let t=this.consume(2);if(this.#tg.payloadLength=t.readUInt16BE(0),this.#g=s.READ_DATA,!this.#tQ())return}else if(this.#g===s.PAYLOADLENGTH_64){if(this.#ta<8)return e();let t=this.consume(8),A=t.readUInt32BE(0),r=t.readUInt32BE(4);if(0!==A||r>0x80000000-1)return void u(this.#c,1009,"Received payload length > 2^31 bytes.");if(this.#tg.payloadLength=r,this.#g=s.READ_DATA,!this.#tQ())return}else if(this.#g===s.READ_DATA){if(this.#ta<this.#tg.payloadLength)return e();let t=this.consume(this.#tg.payloadLength);if(Q(this.#tg.opcode))this.#tl=this.parseControlFrame(t),this.#g=s.INFO;else if(this.#tg.compressed){this.#tc.get("permessage-deflate").decompress(t,this.#tg.fin,(t,A)=>{if(t){let e=t instanceof f?1009:1007;u(this.#c,e,t.message);return}if(this.writeFragments(A)){if(this.#ts>0&&this.#to>this.#ts)return void u(this.#c,1009,new f().message);if(!this.#tg.fin){this.#g=s.INFO,this.#tl=!0,this.run(e);return}c(this.#c,this.#tg.binaryType,this.consumeFragments()),this.#tl=!0,this.#g=s.INFO,this.run(e)}},this.#to),this.#tl=!1;break}else{if(!this.writeFragments(t))return;!this.#tg.fragmented&&this.#tg.fin&&c(this.#c,this.#tg.binaryType,this.consumeFragments()),this.#g=s.INFO}}}consume(e){if(e>this.#ta)throw Error("Called consume() before buffers satiated.");if(0===e)return a;this.#ta-=e;let t=this.#tn[0];if(t.length>e)return this.#tn[0]=t.subarray(e,t.length),t.subarray(0,e);{if(t.length===e)return this.#tn.shift();let A=0,r=Buffer.allocUnsafeSlow(e);for(;A!==e;){let t=this.#tn[0],i=t.length;if(i+A===e){r.set(this.#tn.shift(),A);break}if(i+A>e){r.set(t.subarray(0,e-A),A),this.#tn[0]=t.subarray(e-A);break}r.set(this.#tn.shift(),A),A+=i}return r}}writeFragments(e){return this.#tE>0&&this.#th.length===this.#tE?(u(this.#c,1008,"Too many message fragments"),!1):(this.#to+=e.length,this.#th.push(e),!0)}consumeFragments(){let e=this.#th;if(1===e.length)return this.#to=0,e.shift();let t=0,A=Buffer.allocUnsafeSlow(this.#to);for(let r=0;r<e.length;++r){let i=e[r];A.set(i,t),t+=i.length}return this.#th=[],this.#to=0,A}parseCloseBody(e){let t;if(i(1!==e.length),e.length>=2&&(t=e.readUInt16BE(0)),void 0!==t&&!g(t))return{code:1002,reason:"Invalid status code",error:!0};let A=e.subarray(2);239===A[0]&&187===A[1]&&191===A[2]&&(A=A.subarray(3));try{A=E(A)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:t,reason:A,error:!1}}parseControlFrame(e){let{opcode:t,payloadLength:A}=this.#tg;if(t===n.CLOSE){if(1===A)return u(this.#c,1002,"Received close frame with a 1-byte body."),!1;if(this.#tg.closeInfo=this.parseCloseBody(e),this.#tg.closeInfo.error){let{code:e,reason:t}=this.#tg.closeInfo;return u(this.#c,e,t),!1}if(!this.#c.closeState.has(l.SENT)&&!this.#c.closeState.has(l.RECEIVED)){let e=a;this.#tg.closeInfo.code&&(e=Buffer.allocUnsafe(2)).writeUInt16BE(this.#tg.closeInfo.code,0);let t=new C(e);this.#c.socket.write(t.createFrame(n.CLOSE)),this.#c.closeState.add(l.SENT)}return this.#c.readyState=o.CLOSING,this.#c.closeState.add(l.RECEIVED),!1}if(t===n.PING){if(!this.#c.closeState.has(l.RECEIVED)){let t=new C(e);this.#c.socket.write(t.createFrame(n.PONG)),this.#c.onPing(e)}}else t===n.PONG&&this.#c.onPong(e);return!0}get closingInfo(){return this.#tg.closeInfo}}t.exports={ByteParser:p}},643802,(e,t,A)=>{"use strict";let{WebsocketFrameSend:r}=e.r(659541),{opcodes:i,sendHints:s}=e.r(175512),n=e.r(21842);class o{#tI=new n;#td=!1;#tu;constructor(e){this.#tu=e}add(e,t,A){if(A!==s.blob){if(this.#td){let r={promise:null,callback:t,frame:a(e,A)};this.#tI.push(r)}else if(A===s.text){let{0:A,1:i}=r.createFastTextFrame(e);this.#tu.cork(),this.#tu.write(A),this.#tu.write(i,t),this.#tu.uncork()}else this.#tu.write(a(e,A),t);return}let i={promise:e.arrayBuffer().then(e=>{i.promise=null,i.frame=a(e,A)}),callback:t,frame:null};this.#tI.push(i),this.#td||this.#tC()}async #tC(){this.#td=!0;let e=this.#tI;for(;!e.isEmpty();){let t=e.shift();null!==t.promise&&await t.promise,this.#tu.write(t.frame,t.callback),t.callback=t.frame=null}this.#td=!1}}function a(e,t){return new r(function(e,t){switch(t){case s.text:case s.typedArray:return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);case s.arrayBuffer:case s.blob:return new Uint8Array(e)}}(e,t)).createFrame(t===s.text?i.TEXT:i.BINARY)}t.exports={SendQueue:o}},126507,(e,t,A)=>{"use strict";let{isArrayBuffer:r}=e.r(107417),{webidl:i}=e.r(704143),{URLSerializer:s}=e.r(561743),{environmentSettingsObject:n}=e.r(359401),{staticPropertyDescriptors:o,states:a,sentCloseFrameState:l,sendHints:g,opcodes:h}=e.r(175512),{isConnecting:c,isEstablished:E,isClosing:Q,isClosed:I,isValidSubprotocol:d,fireEvent:u,utf8Decode:C,toArrayBuffer:B,getURLRecord:f}=e.r(666578),{establishWebSocketConnection:p,closeWebSocketConnection:y,failWebsocketConnection:w}=e.r(856986),{ByteParser:D}=e.r(928694),{kEnumerableProperty:m}=e.r(780405),{getGlobalDispatcher:S}=e.r(403264),{ErrorEvent:N,CloseEvent:R,createFastMessageEvent:b}=e.r(124672),{SendQueue:U}=e.r(643802),{WebsocketFrameSend:T}=e.r(659541),{channels:F}=e.r(519842);class k extends EventTarget{#tB={open:null,error:null,close:null,message:null};#tf=0;#tp="";#tc="";#ty;#c={onConnectionEstablished:(e,t)=>this.#tw(e,t),onMessage:(e,t)=>this.#tD(e,t),onParserError:e=>w(this.#c,null,e.message),onParserDrain:()=>this.#tm(),onSocketData:e=>{this.#tS.write(e)||this.#c.socket.pause()},onSocketError:e=>{this.#c.readyState=a.CLOSING,F.socketError.hasSubscribers&&F.socketError.publish(e),this.#c.socket.destroy()},onSocketClose:()=>this.#tN(),onPing:e=>{F.ping.hasSubscribers&&F.ping.publish({payload:e,websocket:this})},onPong:e=>{F.pong.hasSubscribers&&F.pong.publish({payload:e,websocket:this})},readyState:a.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#tR;#tb;#tS;constructor(e,t=[]){super(),i.util.markAsUncloneable(this);const A="WebSocket constructor";i.argumentLengthCheck(arguments,1,A);const r=i.converters["DOMString or sequence<DOMString> or WebSocketInit"](t,A,"options");e=i.converters.USVString(e),t=r.protocols;const s=f(e,n.settingsObject.baseUrl);if("string"==typeof t&&(t=[t]),t.length!==new Set(t.map(e=>e.toLowerCase())).size||t.length>0&&!t.every(e=>d(e)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this.#tR=new URL(s.href);const o=n.settingsObject;this.#c.controller=p(s,t,o,this.#c,r),this.#c.readyState=k.CONNECTING,this.#tb="blob"}close(e,t){i.brandCheck(this,k),void 0!==e&&(e=i.converters["unsigned short"](e,"WebSocket.close","code",i.attributes.Clamp)),void 0!==t&&(t=i.converters.USVString(t)),e??=null,t??="",y(this.#c,e,t,!0)}send(e){i.brandCheck(this,k);let t="WebSocket.send";if(i.argumentLengthCheck(arguments,1,t),e=i.converters.WebSocketSendData(e,t,"data"),c(this.#c.readyState))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!E(this.#c.readyState)||Q(this.#c.readyState)))if("string"==typeof e){let t=Buffer.from(e);this.#tf+=t.byteLength,this.#ty.add(t,()=>{this.#tf-=t.byteLength},g.text)}else r(e)?(this.#tf+=e.byteLength,this.#ty.add(e,()=>{this.#tf-=e.byteLength},g.arrayBuffer)):ArrayBuffer.isView(e)?(this.#tf+=e.byteLength,this.#ty.add(e,()=>{this.#tf-=e.byteLength},g.typedArray)):i.is.Blob(e)&&(this.#tf+=e.size,this.#ty.add(e,()=>{this.#tf-=e.size},g.blob))}get readyState(){return i.brandCheck(this,k),this.#c.readyState}get bufferedAmount(){return i.brandCheck(this,k),this.#tf}get url(){return i.brandCheck(this,k),s(this.#tR)}get extensions(){return i.brandCheck(this,k),this.#tc}get protocol(){return i.brandCheck(this,k),this.#tp}get onopen(){return i.brandCheck(this,k),this.#tB.open}set onopen(e){i.brandCheck(this,k),this.#tB.open&&this.removeEventListener("open",this.#tB.open);let t=i.converters.EventHandlerNonNull(e);null!==t?(this.addEventListener("open",t),this.#tB.open=e):this.#tB.open=null}get onerror(){return i.brandCheck(this,k),this.#tB.error}set onerror(e){i.brandCheck(this,k),this.#tB.error&&this.removeEventListener("error",this.#tB.error);let t=i.converters.EventHandlerNonNull(e);null!==t?(this.addEventListener("error",t),this.#tB.error=e):this.#tB.error=null}get onclose(){return i.brandCheck(this,k),this.#tB.close}set onclose(e){i.brandCheck(this,k),this.#tB.close&&this.removeEventListener("close",this.#tB.close);let t=i.converters.EventHandlerNonNull(e);null!==t?(this.addEventListener("close",t),this.#tB.close=e):this.#tB.close=null}get onmessage(){return i.brandCheck(this,k),this.#tB.message}set onmessage(e){i.brandCheck(this,k),this.#tB.message&&this.removeEventListener("message",this.#tB.message);let t=i.converters.EventHandlerNonNull(e);null!==t?(this.addEventListener("message",t),this.#tB.message=e):this.#tB.message=null}get binaryType(){return i.brandCheck(this,k),this.#tb}set binaryType(e){i.brandCheck(this,k),"blob"!==e&&"arraybuffer"!==e?this.#tb="blob":this.#tb=e}#tw(e,t){this.#c.socket=e.socket;let A=this.#c.controller.dispatcher?.webSocketOptions?.maxFragments,r=this.#c.controller.dispatcher?.webSocketOptions?.maxPayloadSize,i=new D(this.#c,t,{maxFragments:A,maxPayloadSize:r});i.on("drain",()=>this.#c.onParserDrain()),i.on("error",e=>this.#c.onParserError(e)),this.#tS=i,this.#ty=new U(e.socket),this.#c.readyState=a.OPEN;let s=e.headersList.get("sec-websocket-extensions");null!==s&&(this.#tc=s);let n=e.headersList.get("sec-websocket-protocol");if(null!==n&&(this.#tp=n),u("open",this),F.open.hasSubscribers){var o;let t=e.headersList.entries;F.open.publish({address:(o=e.socket,"function"==typeof o?.address?o.address():"function"==typeof o?.session?.socket?.address?o.session.socket.address():null),protocol:this.#tp,extensions:this.#tc,websocket:this,handshakeResponse:{status:e.status,statusText:e.statusText,headers:t}})}}#tD(e,t){let A;if(this.#c.readyState===a.OPEN){if(e===h.TEXT)try{A=C(t)}catch{w(this.#c,1007,"Received invalid UTF-8 in text frame.");return}else e===h.BINARY&&(A="blob"===this.#tb?new Blob([t]):B(t));u("message",this,b,{origin:this.#tR.origin,data:A})}}#tm(){this.#c.socket.resume()}#tN(){let e=this.#c.closeState.has(l.SENT)&&this.#c.closeState.has(l.RECEIVED),t=1005,A="",r=this.#tS?.closingInfo;r&&!r.error&&(t=r.code??1005,A=r.reason),this.#c.readyState=a.CLOSED,this.#c.closeState.has(l.RECEIVED)||(t=1006,u("error",this,(e,t)=>new N(e,t),{error:TypeError(A)})),u("close",this,(e,t)=>new R(e,t),{wasClean:e,code:t,reason:A}),F.close.hasSubscribers&&F.close.publish({websocket:this,code:t,reason:A})}static ping(e,t){if(Buffer.isBuffer(t)){if(t.length>125)throw TypeError("A PING frame cannot have a body larger than 125 bytes.")}else if(void 0!==t)throw TypeError("Expected buffer payload");let A=e.#c.readyState;if(E(A)&&!Q(A)&&!I(A)){let A=new T(t);e.#c.socket.write(A.createFrame(h.PING))}}}let{ping:M}=k;Reflect.deleteProperty(k,"ping"),k.CONNECTING=k.prototype.CONNECTING=a.CONNECTING,k.OPEN=k.prototype.OPEN=a.OPEN,k.CLOSING=k.prototype.CLOSING=a.CLOSING,k.CLOSED=k.prototype.CLOSED=a.CLOSED,Object.defineProperties(k.prototype,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o,url:m,readyState:m,bufferedAmount:m,onopen:m,onerror:m,onclose:m,close:m,onmessage:m,binaryType:m,send:m,extensions:m,protocol:m,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(k,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o}),i.converters["sequence<DOMString>"]=i.sequenceConverter(i.converters.DOMString),i.converters["DOMString or sequence<DOMString>"]=function(e,t,A){return i.util.Type(e)===i.util.Types.OBJECT&&Symbol.iterator in e?i.converters["sequence<DOMString>"](e):i.converters.DOMString(e,t,A)},i.converters.WebSocketInit=i.dictionaryConverter([{key:"protocols",converter:i.converters["DOMString or sequence<DOMString>"],defaultValue:()=>[]},{key:"dispatcher",converter:i.converters.any,defaultValue:()=>S()},{key:"headers",converter:i.nullableConverter(i.converters.HeadersInit)}]),i.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(e){return i.util.Type(e)!==i.util.Types.OBJECT||Symbol.iterator in e?{protocols:i.converters["DOMString or sequence<DOMString>"](e)}:i.converters.WebSocketInit(e)},i.converters.WebSocketSendData=function(e){return i.util.Type(e)===i.util.Types.OBJECT&&(i.is.Blob(e)||i.is.BufferSource(e))?e:i.converters.USVString(e)},t.exports={WebSocket:k,ping:M}},691168,(e,t,A)=>{"use strict";let{webidl:r}=e.r(704143),{validateCloseCodeAndReason:i}=e.r(666578),{kConstruct:s}=e.r(35634),{kEnumerableProperty:n}=e.r(780405);function o(){class e extends DOMException{get reason(){return""}}return void 0!==new e().reason?DOMException:new Proxy(DOMException,{construct(e,t,A){let r=Reflect.construct(e,t,e);return Object.setPrototypeOf(r,A.prototype),r}})}class a extends o(){#tU;#t;constructor(e="",t){if(super(e=r.converters.DOMString(e,"WebSocketError","message"),"WebSocketError"),t===s)return;null!==t&&(t=r.converters.WebSocketCloseInfo(t));let A=t.closeCode??null;const n=t.reason??"";i(A,n),0!==n.length&&null===A&&(A=1e3),this.#tU=A,this.#t=n}get closeCode(){return this.#tU}get reason(){return this.#t}static createUnvalidatedWebSocketError(e,t,A){let r=new a(e,s);return r.#tU=t,r.#t=A,r}}let{createUnvalidatedWebSocketError:l}=a;delete a.createUnvalidatedWebSocketError,Object.defineProperties(a.prototype,{closeCode:n,reason:n,[Symbol.toStringTag]:{value:"WebSocketError",writable:!1,enumerable:!1,configurable:!0}}),r.is.WebSocketError=r.util.MakeTypeAssertion(a),t.exports={WebSocketError:a,createUnvalidatedWebSocketError:l}},326101,(e,t,A)=>{"use strict";let{addAbortListener:r}=e.r(687769),{environmentSettingsObject:i,readableStreamClose:s}=e.r(359401),{states:n,opcodes:o,sentCloseFrameState:a}=e.r(175512),{webidl:l}=e.r(704143),{getURLRecord:g,isValidSubprotocol:h,isEstablished:c,utf8Decode:E}=e.r(666578),{establishWebSocketConnection:Q,failWebsocketConnection:I,closeWebSocketConnection:d}=e.r(856986),{channels:u}=e.r(519842),{WebsocketFrameSend:C}=e.r(659541),{ByteParser:B}=e.r(928694),{WebSocketError:f,createUnvalidatedWebSocketError:p}=e.r(691168),{kEnumerableProperty:y}=e.r(780405),{utf8DecodeBytes:w}=e.r(668242),D=!1;class m{#tR;#tT;#tF;#tk;#tM;#tL;#tv=!1;#c={onConnectionEstablished:(e,t)=>this.#tw(e,t),onMessage:(e,t)=>this.#tD(e,t),onParserError:e=>I(this.#c,null,e.message),onParserDrain:()=>this.#c.socket.resume(),onSocketData:e=>{this.#tS.write(e)||this.#c.socket.pause()},onSocketError:e=>{this.#c.readyState=n.CLOSING,u.socketError.hasSubscribers&&u.socketError.publish(e),this.#c.socket.destroy()},onSocketClose:()=>this.#tN(),onPing:()=>{},onPong:()=>{},readyState:n.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#tS;constructor(e,t){D||(process.emitWarning("WebSocketStream is experimental! Expect it to change at any time.",{code:"UNDICI-WSS"}),D=!0),l.argumentLengthCheck(arguments,1,"WebSocket"),e=l.converters.USVString(e),null!==t&&(t=l.converters.WebSocketStreamOptions(t));const A=g(e,i.settingsObject.baseUrl),s=t.protocols;if(s.length!==new Set(s.map(e=>e.toLowerCase())).size||s.length>0&&!s.every(e=>h(e)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(this.#tR=A.toString(),this.#tT=Promise.withResolvers(),this.#tF=Promise.withResolvers(),null!=t.signal){const e=t.signal;if(e.aborted){this.#tT.reject(e.reason),this.#tF.reject(e.reason);return}r(e,()=>{c(this.#c.readyState)||(I(this.#c),this.#c.readyState=n.CLOSING,this.#tT.reject(e.reason),this.#tF.reject(e.reason),this.#tv=!0)})}const o=i.settingsObject;this.#c.controller=Q(A,s,o,this.#c,t)}get url(){return this.#tR.toString()}get opened(){return this.#tT.promise}get closed(){return this.#tF.promise}close(e){null!==e&&(e=l.converters.WebSocketCloseInfo(e));let t=e.closeCode??null,A=e.reason;d(this.#c,t,A,!0)}#tY(e){e=l.converters.WebSocketStreamWrite(e);let t=Promise.withResolvers(),A=null,r=null;if(l.is.BufferSource(e))A=new Uint8Array(ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e.slice()),r=o.BINARY;else{let i;try{i=l.converters.DOMString(e)}catch(e){return t.reject(e),t.promise}A=new TextEncoder().encode(i),r=o.TEXT}if(!this.#c.closeState.has(a.SENT)&&!this.#c.closeState.has(a.RECEIVED)){let e=new C(A);this.#c.socket.write(e.createFrame(r),()=>{t.resolve(void 0)})}return t.promise}#tw(e,t){this.#c.socket=e.socket;let A=this.#c.controller.dispatcher?.webSocketOptions?.maxFragments,r=this.#c.controller.dispatcher?.webSocketOptions?.maxPayloadSize,i=new B(this.#c,t,{maxFragments:A,maxPayloadSize:r});i.on("drain",()=>this.#c.onParserDrain()),i.on("error",e=>this.#c.onParserError(e)),this.#tS=i,this.#c.readyState=n.OPEN;let s=t??"",o=e.headersList.get("sec-websocket-protocol")??"",a=new ReadableStream({start:e=>{this.#tM=e},cancel:e=>this.#tH(e)}),l=new WritableStream({write:e=>this.#tY(e),close:()=>d(this.#c,null,null),abort:e=>this.#tO(e)});this.#tk=a,this.#tL=l,this.#tT.resolve({extensions:s,protocol:o,readable:a,writable:l})}#tD(e,t){let A;if(this.#c.readyState===n.OPEN){if(e===o.TEXT)try{A=E(t)}catch{I(this.#c,1007,"Received invalid UTF-8 in text frame.");return}else e===o.BINARY&&(A=new Uint8Array(t.buffer,t.byteOffset,t.byteLength));this.#tM.enqueue(A)}}#tN(){let e=this.#c.closeState.has(a.SENT)&&this.#c.closeState.has(a.RECEIVED);if(this.#c.readyState=n.CLOSED,this.#tv)return;this.#c.wasEverConnected||this.#tT.reject(new f("Socket never opened"));let t=this.#tS?.closingInfo,A=t?.code??1005;this.#c.closeState.has(a.SENT)||this.#c.closeState.has(a.RECEIVED)||(A=1006);let r=t?.reason==null?"":w(Buffer.from(t.reason));if(e)s(this.#tM),this.#tL.locked||this.#tL.abort(new DOMException("A closed WebSocketStream cannot be written to","InvalidStateError")),this.#tF.resolve({closeCode:A,reason:r});else{let e=p("unclean close",A,r);this.#tM?.error(e),this.#tL?.abort(e),this.#tF.reject(e)}}#tO(e){let t=null,A="";l.is.WebSocketError(e)&&(t=e.closeCode,A=e.reason),d(this.#c,t,A)}#tH(e){this.#tO(e)}}Object.defineProperties(m.prototype,{url:y,opened:y,closed:y,close:y,[Symbol.toStringTag]:{value:"WebSocketStream",writable:!1,enumerable:!1,configurable:!0}}),l.converters.WebSocketStreamOptions=l.dictionaryConverter([{key:"protocols",converter:l.sequenceConverter(l.converters.USVString),defaultValue:()=>[]},{key:"signal",converter:l.nullableConverter(l.converters.AbortSignal),defaultValue:()=>null}]),l.converters.WebSocketCloseInfo=l.dictionaryConverter([{key:"closeCode",converter:e=>l.converters["unsigned short"](e,l.attributes.EnforceRange)},{key:"reason",converter:l.converters.USVString,defaultValue:()=>""}]),l.converters.WebSocketStreamWrite=function(e){return"string"==typeof e?l.converters.USVString(e):l.converters.BufferSource(e)},t.exports={WebSocketStream:m}},535488,(e,t,A)=>{"use strict";let{makeRequest:r}=e.r(341716);t.exports={isValidLastEventId:function(e){return -1===e.indexOf("\0")},isASCIINumber:function(e){if(0===e.length)return!1;for(let t=0;t<e.length;t++)if(48>e.charCodeAt(t)||e.charCodeAt(t)>57)return!1;return!0},createPotentialCORSRequest:function(e,t,A,i){let s="no cors"===A?"no-cors":"cors";i&&"no-cors"===s&&(s="same-origin");let n="include";return"anonymous"===A&&(n="same-origin"),r({urlList:[e],destination:t,mode:s,credentials:n,useURLCredentials:!0})}}},28534,(e,t,A)=>{"use strict";let{Transform:r}=e.r(81111),{isASCIINumber:i,isValidLastEventId:s}=e.r(535488),n=Buffer.from("data"),o=Buffer.from("event"),a=Buffer.from("id"),l=Buffer.from("retry");function g(e,t,A){if(t!==A.length)return!1;for(let r=0;r<t;r++)if(e[r]!==A[r])return!1;return!0}t.exports={EventSourceStream:class extends r{state;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;chunks=[];chunkIndex=0;pos=0;lineChunkIndex=0;linePos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(e={}){e.readableObjectMode=!0,super(e),this.state=e.eventSourceSettings||{},e.push&&(this.push=e.push)}_transform(e,t,A){if(0===e.length||(this.chunks.push(e),this.checkBOM&&this.handleBOM()))return void A();for(;this.hasCurrentByte();){let e=this.currentByte();if(this.eventEndCheck){if(this.crlfCheck){if(10===e){this.crlfCheck=!1,this.consumeCurrentByte();continue}this.crlfCheck=!1}if(10===e||13===e){13===e&&(this.crlfCheck=!0),this.consumeCurrentByte(),this.hasPendingEvent()&&this.processEvent(this.event),this.clearEvent();continue}this.eventEndCheck=!1;continue}if(10===e||13===e){13===e&&(this.crlfCheck=!0),this.parseLine(this.readLine(),this.event),this.consumeCurrentByte(),this.eventEndCheck=!0;continue}this.advanceCursor()}A()}parseLine(e,t){if(0===e.length)return;let A=e.indexOf(58);if(0===A)return;let r=e.length,i=e.length;if(-1!==A&&(r=A,32===e[i=A+1]&&++i),g(e,r,n)){let A=e.toString("utf8",i);void 0===t.data?t.data=A:t.data+=`
120
120
  ${A}`;return}if(g(e,r,l)){(function(e,t){if(t>=e.length)return!1;for(let A=t;A<e.length;A++)if(e[A]<48||e[A]>57)return!1;return!0})(e,i)&&(t.retry=e.toString("utf8",i));return}if(g(e,r,a)){(function(e,t){for(let A=t;A<e.length;A++)if(0===e[A])return!1;return!0})(e,i)&&(t.id=e.toString("utf8",i));return}if(g(e,r,o)){let A=e.toString("utf8",i);A.length>0&&(t.event=A)}}processEvent(e){e.retry&&i(e.retry)&&(this.state.reconnectionTime=parseInt(e.retry,10)),void 0!==e.id&&s(e.id)&&(this.state.lastEventId=e.id),void 0!==e.data&&this.push({type:e.event||"message",options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event.data=void 0,this.event.event=void 0,this.event.id=void 0,this.event.retry=void 0}hasPendingEvent(){return void 0!==this.event.data||void 0!==this.event.event||void 0!==this.event.id||void 0!==this.event.retry}hasCurrentByte(){return this.chunkIndex<this.chunks.length&&this.pos<this.chunks[this.chunkIndex].length}currentByte(){return this.chunks[this.chunkIndex][this.pos]}consumeCurrentByte(){this.advanceCursor(),this.syncLineStartToCursor()}advanceCursor(){for(this.pos++;this.chunkIndex<this.chunks.length&&this.pos>=this.chunks[this.chunkIndex].length;)this.chunkIndex++,this.pos=0}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex,this.linePos=this.pos,this.dropConsumedChunks()}dropConsumedChunks(){for(;this.lineChunkIndex>0;)this.chunks.shift(),this.lineChunkIndex--,this.chunkIndex--;this.chunkIndex===this.chunks.length&&(this.chunks.length=0,this.chunkIndex=0,this.pos=0,this.lineChunkIndex=0,this.linePos=0)}readLine(){if(this.lineChunkIndex===this.chunkIndex)return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos);let e=[],t=0;for(let A=this.lineChunkIndex;A<=this.chunkIndex;A++){let r=this.chunks[A],i=A===this.lineChunkIndex?this.linePos:0,s=A===this.chunkIndex?this.pos:r.length,n=r.subarray(i,s);t+=n.length,e.push(n)}return Buffer.concat(e,t)}peekBufferedByte(e){let t=this.lineChunkIndex,A=this.linePos;for(;t<this.chunks.length;){let r=this.chunks[t],i=r.length-A;if(e<i)return r[A+e];e-=i,t++,A=0}}discardLeadingBytes(e){for(;e>0&&this.lineChunkIndex<this.chunks.length;){let t=this.chunks[this.lineChunkIndex].length-this.linePos;e<t?(this.linePos+=e,e=0):(e-=t,this.lineChunkIndex++,this.linePos=0)}this.chunkIndex=this.lineChunkIndex,this.pos=this.linePos,this.dropConsumedChunks()}handleBOM(){let e=this.peekBufferedByte(0),t=this.peekBufferedByte(1),A=this.peekBufferedByte(2);return void 0===t?239===e||(this.checkBOM=!1,!0):void 0===A?239===e&&187===t||(this.checkBOM=!1,!1):(239===e&&187===t&&191===A&&this.discardLeadingBytes(3),this.checkBOM=!1,!this.hasCurrentByte())}}}},763785,(e,t,A)=>{"use strict";let{pipeline:r}=e.r(81111),{fetching:i}=e.r(817906),{webidl:s}=e.r(704143),{EventSourceStream:n}=e.r(28534),{parseMIMEType:o}=e.r(561743),{createFastMessageEvent:a}=e.r(124672),{isNetworkError:l}=e.r(650801),{kEnumerableProperty:g}=e.r(780405),{environmentSettingsObject:h}=e.r(359401),{createPotentialCORSRequest:c}=e.r(535488),E=!1;class Q extends EventTarget{#tB={open:null,error:null,message:null};#tR;#tG=!1;#tV=0;#tx=null;#$=null;#E;#g;constructor(e,t={}){let A;super(),s.util.markAsUncloneable(this);const r="EventSource constructor";s.argumentLengthCheck(arguments,1,r),E||(E=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),e=s.converters.USVString(e),t=s.converters.EventSourceInitDict(t,r,"eventSourceInitDict"),this.#E=t.node.dispatcher||t.dispatcher,this.#g={lastEventId:"",reconnectionTime:t.node.reconnectionTime};try{A=new URL(e,h.settingsObject.baseUrl),this.#g.origin=A.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#tR=A.href;let i="anonymous";!0===t.withCredentials&&(i="use-credentials",this.#tG=!0);const n=c(A,"",i);n.client=h.settingsObject,n.headersList.set("Accept","text/event-stream"),n.cache="no-store",n.initiator="other",this.#tx=n,this.#tJ()}get readyState(){return this.#tV}get url(){return this.#tR}get withCredentials(){return this.#tG}#tJ(){if(2===this.#tV)return;this.#tV=0;let e={request:this.#tx,dispatcher:this.#E};e.processResponseEndOfBody=e=>{if(!l(e))return this.#tP()},e.processResponse=e=>{if(l(e))if(!e.aborted)return void this.#tP();else{this.close(),this.dispatchEvent(new Event("error"));return}let t=e.headersList.get("content-type",!0),A=null!==t?o(t):"failure",i="failure"!==A&&"text/event-stream"===A.essence;if(200!==e.status||!1===i){this.close(),this.dispatchEvent(new Event("error"));return}this.#tV=1,this.dispatchEvent(new Event("open")),this.#g.origin=e.urlList[e.urlList.length-1].origin;let s=new n({eventSourceSettings:this.#g,push:e=>{this.dispatchEvent(a(e.type,e.options))}});r(e.body.stream,s,e=>{e?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#$=i(e)}#tP(){2!==this.#tV&&(this.#tV=0,this.dispatchEvent(new Event("error")),setTimeout(()=>{0===this.#tV&&(this.#g.lastEventId.length&&this.#tx.headersList.set("last-event-id",this.#g.lastEventId,!0),this.#tJ())},this.#g.reconnectionTime)?.unref())}close(){s.brandCheck(this,Q),2!==this.#tV&&(this.#tV=2,this.#$.abort(),this.#tx=null)}get onopen(){return this.#tB.open}set onopen(e){this.#tB.open&&this.removeEventListener("open",this.#tB.open);let t=s.converters.EventHandlerNonNull(e);null!==t?(this.addEventListener("open",t),this.#tB.open=e):this.#tB.open=null}get onmessage(){return this.#tB.message}set onmessage(e){this.#tB.message&&this.removeEventListener("message",this.#tB.message);let t=s.converters.EventHandlerNonNull(e);null!==t?(this.addEventListener("message",t),this.#tB.message=e):this.#tB.message=null}get onerror(){return this.#tB.error}set onerror(e){this.#tB.error&&this.removeEventListener("error",this.#tB.error);let t=s.converters.EventHandlerNonNull(e);null!==t?(this.addEventListener("error",t),this.#tB.error=e):this.#tB.error=null}}let I={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:0,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:1,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:2,writable:!1}};Object.defineProperties(Q,I),Object.defineProperties(Q.prototype,I),Object.defineProperties(Q.prototype,{close:g,onerror:g,onmessage:g,onopen:g,readyState:g,url:g,withCredentials:g}),s.converters.EventSourceInitDict=s.dictionaryConverter([{key:"withCredentials",converter:s.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:s.converters.any},{key:"node",converter:s.dictionaryConverter([{key:"reconnectionTime",converter:s.converters["unsigned long"],defaultValue:()=>3e3},{key:"dispatcher",converter:s.converters.any}]),defaultValue:()=>({})}]),t.exports={EventSource:Q,defaultReconnectionTime:3e3}},936689,(e,t,A)=>{"use strict";let r=e.r(261273),i=e.r(590706),s=e.r(767084),n=e.r(195209),o=e.r(60133),a=e.r(520404),l=e.r(758681),g=e.r(791290),h=e.r(641294),c=e.r(243304),E=e.r(41755),Q=e.r(416546),I=e.r(920788),d=e.r(780405),{InvalidArgumentError:u}=I,C=e.r(351783),B=e.r(451650),f=e.r(437157),{MockCallHistory:p,MockCallHistoryLog:y}=e.r(64241),w=e.r(919030),D=e.r(698097),m=e.r(707121),S=e.r(535750),N=e.r(734919),{getGlobalDispatcher:R,setGlobalDispatcher:b}=e.r(403264),U=e.r(156516),T=e.r(841459);Object.assign(i.prototype,C),t.exports.Dispatcher=i,t.exports.Client=r,t.exports.Pool=s,t.exports.BalancedPool=n,t.exports.RoundRobinPool=o,t.exports.Agent=a,t.exports.Dispatcher1Wrapper=l,t.exports.ProxyAgent=g,t.exports.Socks5ProxyAgent=h,t.exports.EnvHttpProxyAgent=c,t.exports.RetryAgent=E,t.exports.H2CClient=Q,t.exports.RetryHandler=N,t.exports.DecoratorHandler=U,t.exports.RedirectHandler=T,t.exports.interceptors={redirect:e.r(194094),responseError:e.r(791990),retry:e.r(480472),dump:e.r(161695),dns:e.r(384858),cache:e.r(117137),decompress:e.r(280699),deduplicate:e.r(378135)},t.exports.cacheStores={MemoryCacheStore:e.r(814574)};let F=e.r(467569);function k(e){return(t,A,r)=>{if("function"==typeof A&&(r=A,A=null),!t||"string"!=typeof t&&"object"!=typeof t&&!(t instanceof URL))throw new u("invalid url");if(null!=A&&"object"!=typeof A)throw new u("invalid opts");if(A&&null!=A.path){if("string"!=typeof A.path)throw new u("invalid opts.path");let e=A.path;A.path.startsWith("/")||(e=`/${e}`),t=new URL(d.parseOrigin(t).origin+e)}else A||(A="object"==typeof t?t:{}),t=d.parseURL(t);let{agent:i,dispatcher:s=R(),...n}=A;if(i)throw new u("unsupported opts.agent. Did you mean opts.client?");return e.call(s,{...n,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:A.method||(A.body?"PUT":"GET")},r)}}t.exports.cacheStores.SqliteCacheStore=F,t.exports.buildConnector=B,t.exports.errors=I,t.exports.util={parseHeaders:d.parseHeaders,headerNameToString:d.headerNameToString},t.exports.setGlobalDispatcher=b,t.exports.getGlobalDispatcher=R;let M=e.r(817906).fetch,L="/ROOT/node_modules/undici/index.js";t.exports.fetch=function(e,A){return M(e,A).catch(e=>{throw L?!function e(t,A){if(!t||"object"!=typeof t)return;let r="string"==typeof t.stack?t.stack:"",i=A.replace(/\\/g,"/");if(r&&(r.includes(A)||r.includes(i)))return;let s={};if(Error.captureStackTrace(s,e),!s.stack)return;let n=s.stack.split("\n").slice(1).join("\n");t.stack=r?`${r}
121
- ${n}`:s.stack}(e,L):e&&"object"==typeof e&&Error.captureStackTrace(e,t.exports.fetch),e})},t.exports.Headers=e.r(761883).Headers,t.exports.Response=e.r(650801).Response,t.exports.Request=e.r(341716).Request,t.exports.FormData=e.r(740526).FormData;let{setGlobalOrigin:v,getGlobalOrigin:Y}=e.r(65616);t.exports.setGlobalOrigin=v,t.exports.getGlobalOrigin=Y;let{CacheStorage:H}=e.r(562899),{kConstruct:O}=e.r(35634);t.exports.caches=new H(O);let{deleteCookie:G,getCookies:V,getSetCookies:x,setCookie:J,parseCookie:P}=e.r(75864);t.exports.deleteCookie=G,t.exports.getCookies=V,t.exports.getSetCookies=x,t.exports.setCookie=J,t.exports.parseCookie=P;let{parseMIMEType:W,serializeAMimeType:_}=e.r(561743);t.exports.parseMIMEType=W,t.exports.serializeAMimeType=_;let{CloseEvent:q,ErrorEvent:Z,MessageEvent:j}=e.r(124672),{WebSocket:X,ping:K}=e.r(126507);t.exports.WebSocket=X,t.exports.CloseEvent=q,t.exports.ErrorEvent=Z,t.exports.MessageEvent=j,t.exports.ping=K,t.exports.WebSocketStream=e.r(326101).WebSocketStream,t.exports.WebSocketError=e.r(691168).WebSocketError,t.exports.request=k(C.request),t.exports.stream=k(C.stream),t.exports.pipeline=k(C.pipeline),t.exports.connect=k(C.connect),t.exports.upgrade=k(C.upgrade),t.exports.MockClient=f,t.exports.MockCallHistory=p,t.exports.MockCallHistoryLog=y,t.exports.MockPool=D,t.exports.MockAgent=w,t.exports.SnapshotAgent=m,t.exports.mockErrors=S;let{EventSource:z}=e.r(763785);t.exports.EventSource=z,t.exports.install=function(){globalThis.fetch=t.exports.fetch,globalThis.Headers=t.exports.Headers,globalThis.Response=t.exports.Response,globalThis.Request=t.exports.Request,globalThis.FormData=t.exports.FormData,globalThis.WebSocket=t.exports.WebSocket,globalThis.CloseEvent=t.exports.CloseEvent,globalThis.ErrorEvent=t.exports.ErrorEvent,globalThis.MessageEvent=t.exports.MessageEvent,globalThis.EventSource=t.exports.EventSource}},582482,318905,91022,783396,e=>{"use strict";var t=e.i(187126),A=e.i(666680);function r(e){return(0,A.createHash)("sha256").update(e).digest("hex")}function i(e,t){return Buffer.from(JSON.stringify({id:e.id,kind:e.kind,version:t}),"utf8")}function s(e,t,s){let n=(0,A.randomBytes)(12),o=(0,A.createCipheriv)("aes-256-gcm",s,n,{authTagLength:16});return o.setAAD(i(e,1)),{payload:Buffer.concat([o.update(Buffer.from(t)),o.final()]),encryptionVersion:1,nonce:n,authTag:o.getAuthTag(),keyFingerprint:r(s)}}function n(e,t,r){if(1!==t.encryptionVersion)throw Error("The credential encryption envelope version is unsupported");if(12!==t.nonce.byteLength||16!==t.authTag.byteLength)throw Error("The credential encryption envelope is invalid");try{let s=(0,A.createDecipheriv)("aes-256-gcm",r,t.nonce,{authTagLength:16});return s.setAAD(i(e,t.encryptionVersion)),s.setAuthTag(Buffer.from(t.authTag)),Buffer.concat([s.update(Buffer.from(t.payload)),s.final()])}catch{throw Error("The credential could not be decrypted; restore the original encryption key or re-enter the credential")}}let o="secret",a="ai-development-environment/credentials",l=new Set(["accept","connection","content-length","content-type","expect","host","transfer-encoding","upgrade","x-vault-request"]);function g(e,t){return{code:e,message:t}}function h(e,t){if(!e||"0"===e||"false"===e.toLowerCase())return!1;if("1"===e||"true"===e.toLowerCase())return!0;throw Error(`${t} must be true, false, 1, or 0`)}function c(e,t){let A=e.replace(/^\/+|\/+$/g,""),r=A.split("/");if(!A||r.some(e=>!e||"."===e||".."===e||e.includes("\\")))throw Error(`${t} must contain non-empty Vault path segments`);return A}function E(e,t){return Object.keys(e).some(e=>e.toLowerCase()===t.toLowerCase())}function Q(e,t){let A=e.CREDENTIAL_VAULT_READ_ONLY?.trim();return A&&"0"!==A&&"false"!==A.toLowerCase()?[g("VAULT_READ_ONLY_IGNORED",`CREDENTIAL_VAULT_READ_ONLY only applies to Vault storage and is ignored while CREDENTIAL_STORAGE_TYPE is ${t}`)]:[]}function I(e=process.env,A=process.platform){let i,s=e.CREDENTIAL_STORAGE_TYPE?.trim().toLowerCase()||"database";if("database"!==s&&"vault"!==s&&"keychain"!==s)return{requestedStorageType:s,storageType:"unknown",config:null,warnings:[],errors:[g("CREDENTIAL_STORAGE_TYPE_INVALID","CREDENTIAL_STORAGE_TYPE must be database, vault, or keychain")],details:[{label:"Configured value",value:s}]};if("database"===s)try{let A=(0,t.getAppSecrets)(e);if(A.ephemeral)throw Error("APP_SECRET is required before credentials can be read or written");let i=A.credentialKey;return{requestedStorageType:s,storageType:"database",config:{storageType:"database",encryptionKey:i,keyFingerprint:r(i),previousKeys:(0,t.getPreviousCredentialKeys)(e)},warnings:Q(e,"database"),errors:[],details:[{label:"Location",value:"Application database"},{label:"Encryption key",value:"Derived from APP_SECRET"}]}}catch(t){return{requestedStorageType:s,storageType:"database",config:null,warnings:Q(e,"database"),errors:[g("APP_SECRET_INVALID",t instanceof Error?t.message:"APP_SECRET is invalid")],details:[{label:"Location",value:"Application database"},{label:"Encryption key",value:"Invalid"}]}}if("keychain"===s)return{requestedStorageType:s,storageType:"keychain",config:{storageType:"keychain",platform:A,service:"com.bludesign.ai-development-environment.credentials"},warnings:Q(e,"keychain"),errors:"darwin"===A?[]:[g("KEYCHAIN_UNSUPPORTED_PLATFORM","macOS Keychain storage is only available when the Next.js host runs on macOS")],details:[{label:"Service",value:"com.bludesign.ai-development-environment.credentials"},{label:"Host platform",value:A}]};let n=[],d=[],u={},C=o,B=a,f=!1,p=!1;try{if(!e.VAULT_ADDR?.trim())throw Error("VAULT_ADDR is required");if(i=new URL(e.VAULT_ADDR),"https:"!==i.protocol&&"http:"!==i.protocol)throw Error("VAULT_ADDR must use http or https");if(i.username||i.password||i.search||i.hash)throw Error("VAULT_ADDR cannot contain credentials, query parameters, or a fragment");if(i.pathname=i.pathname.replace(/\/+$/,""),u=function(e){let t;if(!e?.trim())return{};try{t=JSON.parse(e)}catch{throw Error("CREDENTIAL_VAULT_HEADERS must be a JSON object")}if("object"!=typeof t||null===t||Array.isArray(t))throw Error("CREDENTIAL_VAULT_HEADERS must be a JSON object");let A={};for(let[e,r]of Object.entries(t)){let t=e.trim();if(!t||"string"!=typeof r)throw Error("CREDENTIAL_VAULT_HEADERS must contain only string header values");try{new Headers({[t]:r})}catch{throw Error(`CREDENTIAL_VAULT_HEADERS contains invalid header ${t}`)}if(l.has(t.toLowerCase()))throw Error(`CREDENTIAL_VAULT_HEADERS cannot override the managed ${t} header`);if(Object.keys(A).find(e=>e.toLowerCase()===t.toLowerCase()))throw Error(`CREDENTIAL_VAULT_HEADERS repeats the ${t} header`);A[t]=r}return A}(e.CREDENTIAL_VAULT_HEADERS),C=c(e.CREDENTIAL_VAULT_MOUNT||o,"CREDENTIAL_VAULT_MOUNT"),B=c(e.CREDENTIAL_VAULT_PATH_PREFIX||a,"CREDENTIAL_VAULT_PATH_PREFIX"),f=h(e.VAULT_SKIP_VERIFY,"VAULT_SKIP_VERIFY"),p=h(e.CREDENTIAL_VAULT_READ_ONLY,"CREDENTIAL_VAULT_READ_ONLY"),e.VAULT_TOKEN&&E(u,"x-vault-token"))throw Error("VAULT_TOKEN conflicts with X-Vault-Token in CREDENTIAL_VAULT_HEADERS");if(e.VAULT_NAMESPACE&&E(u,"x-vault-namespace"))throw Error("VAULT_NAMESPACE conflicts with X-Vault-Namespace in CREDENTIAL_VAULT_HEADERS")}catch(e){n.push(g("VAULT_CONFIGURATION_INVALID",e instanceof Error?e.message:"Vault configuration is invalid")),i=new URL("https://invalid.local")}"http:"===i.protocol&&d.push(g("VAULT_INSECURE_HTTP","VAULT_ADDR uses plaintext HTTP; Vault credentials and authentication headers are not protected in transit")),f&&d.push(g("VAULT_TLS_VERIFICATION_DISABLED","VAULT_SKIP_VERIFY disables certificate verification for Vault connections"));let y=Object.keys(u).sort((e,t)=>e.localeCompare(t)),w=[{label:"Address",value:n.length?"Invalid":i.toString()},{label:"KV v2 mount",value:C},{label:"Path prefix",value:B},{label:"Namespace",value:e.VAULT_NAMESPACE?"Configured":"Not configured"},{label:"Authentication token",value:e.VAULT_TOKEN||E(u,"x-vault-token")?"Configured":"Not configured"},{label:"Additional headers",value:y.length?y.join(", "):"None"},{label:"Custom CA",value:e.VAULT_CACERT?"Configured":"Not configured"},{label:"TLS server name",value:e.VAULT_TLS_SERVER_NAME?"Configured":"Not configured"},{label:"Vault access",value:p?"Read-only":"Read-write"}];return{requestedStorageType:s,storageType:"vault",config:0===n.length?{storageType:"vault",address:i,token:e.VAULT_TOKEN||null,namespace:e.VAULT_NAMESPACE||null,mount:C,pathPrefix:B,headers:u,caCertPath:e.VAULT_CACERT||null,tlsServerName:e.VAULT_TLS_SERVER_NAME||null,skipVerify:f,readOnly:p}:null,warnings:d,errors:n,details:w}}var d=e.i(243783);let u=new Map;async function C(e,t){let A,r=[...new Set(e)].sort();if(!r.length)return t();let i=r.flatMap(e=>{let t=u.get(e);return t?[t]:[]}),s=new Promise(e=>{A=e});for(let e of r)u.set(e,s);await Promise.all(i);try{return await t()}finally{for(let e of(A(),r))u.get(e)===s&&u.delete(e)}}let B={jiraConnectionSettings:"jira-connection-settings",jiraApiToken:"jira-api-token",jiraWebhookSettings:"jira-webhook-settings",jiraWebhookSecret:"jira-webhook-secret",githubPersonalAccessToken:"github-personal-access-token",githubAppSettings:"github-app-settings",githubAppPrivateKey:"github-app-private-key",githubAppWebhookSecret:"github-app-webhook-secret",cacheServerSettings:"cache-server-settings",cacheServerApiKey:"cache-server-api-key",externalMcpServerHeaders:"external-mcp-server-headers",iosProfileSignerPrivateKey:"ios-profile-signer-private-key",appStoreConnectSettings:"app-store-connect-settings",appStoreConnectPrivateKey:"app-store-connect-private-key",apnsTokenSettings:"apns-token-settings",apnsTokenPrivateKey:"apns-token-private-key",apnsCertificateCatalog:"apns-certificate-catalog",apnsCertificateBundle:"apns-certificate-bundle",webPushVapidPrivateKey:"web-push-vapid-private-key"},f={jiraConnectionSettings:{id:"jira/default/connection-settings",kind:B.jiraConnectionSettings,ownerId:"default"},jiraApiToken:{id:"jira/default/api-token",kind:B.jiraApiToken,ownerId:"default"},jiraWebhookSecret:{id:"jira/default/webhook-secret",kind:B.jiraWebhookSecret,ownerId:"default"},jiraWebhookSettings:{id:"jira/default/webhook-settings",kind:B.jiraWebhookSettings,ownerId:"default"},githubPersonalAccessToken:{id:"github/default/personal-access-token",kind:B.githubPersonalAccessToken,ownerId:"default"},githubAppPrivateKey:{id:"github-app/default/private-key",kind:B.githubAppPrivateKey,ownerId:"default"},githubAppSettings:{id:"github-app/default/settings",kind:B.githubAppSettings,ownerId:"default"},githubAppWebhookSecret:{id:"github-app/default/webhook-secret",kind:B.githubAppWebhookSecret,ownerId:"default"},cacheServerSettings:{id:"cache-server/default/settings",kind:B.cacheServerSettings,ownerId:"default"},cacheServerApiKey:{id:"cache-server/default/api-key",kind:B.cacheServerApiKey,ownerId:"default"},iosProfileSignerPrivateKey:{id:"ios-devices/default/profile-signer-private-key",kind:B.iosProfileSignerPrivateKey,ownerId:"default"},appStoreConnectPrivateKey:{id:"ios-devices/default/app-store-connect-private-key",kind:B.appStoreConnectPrivateKey,ownerId:"default"},appStoreConnectSettings:{id:"ios-devices/default/app-store-connect-settings",kind:B.appStoreConnectSettings,ownerId:"default"},apnsTokenPrivateKey:{id:"push-notifications/default/token-private-key",kind:B.apnsTokenPrivateKey,ownerId:"default"},apnsTokenSettings:{id:"push-notifications/default/token-settings",kind:B.apnsTokenSettings,ownerId:"default"},apnsCertificateCatalog:{id:"push-notifications/default/certificate-catalog",kind:B.apnsCertificateCatalog,ownerId:"default"},webPushVapidPrivateKey:{id:"notifications/default/web-push-vapid-private-key",kind:B.webPushVapidPrivateKey,ownerId:"default"}};function p(e){return Buffer.from(JSON.stringify({version:1,value:e}),"utf8")}function y(e){let t;try{t=JSON.parse(Buffer.from(e).toString("utf8"))}catch{throw Error("The stored credential envelope is invalid")}if("object"!=typeof t||null===t||1!==t.version||!("value"in t))throw Error("The stored credential envelope version is unsupported");return t.value}function w(e){switch(e){case B.jiraConnectionSettings:case B.jiraApiToken:case B.jiraWebhookSettings:case B.jiraWebhookSecret:return"Jira";case B.githubPersonalAccessToken:case B.githubAppSettings:case B.githubAppPrivateKey:case B.githubAppWebhookSecret:return"GitHub";case B.cacheServerSettings:case B.cacheServerApiKey:return"Actions cache";case B.externalMcpServerHeaders:return"External MCP server";case B.iosProfileSignerPrivateKey:case B.appStoreConnectSettings:case B.appStoreConnectPrivateKey:return"iOS devices";case B.apnsTokenSettings:case B.apnsTokenPrivateKey:case B.apnsCertificateCatalog:case B.apnsCertificateBundle:return"Push notifications";case B.webPushVapidPrivateKey:return"Notifications";default:return"Unknown"}}e.s(["CREDENTIALS",0,f,"CREDENTIAL_KINDS",0,B,"apnsCertificateCredential",0,function(e){return{id:`apns-certificate/${e}/bundle`,kind:B.apnsCertificateBundle,ownerId:e}},"credentialOwnerFeature",0,w,"decodeJsonCredential",0,y,"encodeJsonCredential",0,p,"externalMcpHeadersCredential",0,function(e){return{id:`external-mcp-server/${e}/headers`,kind:B.externalMcpServerHeaders,ownerId:e}}],318905);let D={adopted:0,repointed:0,skipped:0,issue:null};async function m(e,t,A){let r=Array(e.length),i=0,s=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let t=i++;r[t]=await A(e[t])}});return await Promise.all(s),r}async function S(e,t){let A=new Set(Object.values(f).map(e=>e.id));for(let e of t)A.add(e);if(e.list)try{for(let t of(await e.list()))A.add(t)}catch{}return[...A]}async function N(e,t){let A=t.describe?.bind(t);if(!A)return D;try{let r=await e.credential.findMany({select:{id:!0,storageType:!0}}),i=new Set,s=new Set;for(let e of r)(e.storageType===t.storageType?i:s).add(e.id);let n=(await S(t,s)).filter(e=>!i.has(e));if(!n.length)return D;let o=0,a=(await m(n,4,async e=>{try{return await A(e)}catch{return o+=1,null}})).filter(e=>null!==e);if(!a.length)return{adopted:0,repointed:0,skipped:o,issue:null};let l=await C(a.map(e=>e.id),async()=>{let A=new Map((await e.credential.findMany({where:{id:{in:a.map(e=>e.id)}},select:{id:!0,storageType:!0}})).map(e=>[e.id,e.storageType])),r=a.filter(e=>!A.has(e.id)),i=a.filter(e=>A.has(e.id)&&A.get(e.id)!==t.storageType);for(let A of(r.length&&await e.credential.createMany({data:r.map(e=>({id:e.id,kind:e.kind,ownerId:e.ownerId,storageType:t.storageType,payload:null,encrypted:!1}))}),i))await e.credential.update({where:{id:A.id},data:{kind:A.kind,ownerId:A.ownerId,storageType:t.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}});return{adopted:r.length,repointed:i.length}});return l.repointed>0&&console.log(`[credentials] Repointed ${l.repointed} credential row(s) to ${t.storageType}, which already holds those secrets.`),{...l,skipped:o,issue:null}}catch(e){return{adopted:0,repointed:0,skipped:0,issue:{code:"VAULT_ADOPTION_FAILED",message:e instanceof Error?`Existing ${t.storageType} credentials could not be adopted: ${e.message}`:`Existing ${t.storageType} credentials could not be adopted`}}}}class R extends Error{code;constructor(e,t){super(e),this.code=t,this.name="CredentialStoreOperationError"}}function b(e){return new R(e,"CREDENTIAL_DATA_INVALID")}function U(e){return Uint8Array.from(e)}function*T(e){for(let t=0;t<e.length;t+=50)yield e.slice(t,t+50)}async function F(e){let[t]=await e.$queryRawUnsafe("PRAGMA wal_checkpoint(TRUNCATE);");if(!t||0!==Number(t.busy))throw Error("SQLite WAL could not be truncated after credential encryption")}async function k(e){await F(e),await e.$executeRawUnsafe("VACUUM;"),await F(e)}class M{prisma;config;storageType;readOnly;constructor(e,t){this.prisma=e,this.config=t,this.storageType="database",this.readOnly=!1}async initialize(){let e=this.config.encryptionKey;await this.prisma.$queryRawUnsafe("PRAGMA secure_delete = ON;"),await this.reencryptRotatedRows();let t=await this.prisma.credential.findMany({where:{storageType:this.storageType,encrypted:!0},select:{id:!0,keyFingerprint:!0,encryptionVersion:!0,nonce:!0,authTag:!0,payload:!0}});if(t.some(e=>e.keyFingerprint!==this.config.keyFingerprint))throw new R("APP_SECRET does not match existing credentials. Restore the original value, or set APP_SECRET_PREVIOUS to it so stored credentials are re-encrypted on the next start.","CREDENTIAL_KEY_MISMATCH");if(t.some(e=>!e.payload||1!==e.encryptionVersion||!e.nonce||!e.authTag))throw b("One or more encrypted credential records have invalid encryption metadata");let A=await this.prisma.credential.findMany({where:{storageType:this.storageType,encrypted:!1},select:{id:!0,kind:!0,payload:!0}}),r=0;for(let t of T(A))r+=await this.prisma.$transaction(async A=>{for(let r of t){if(!r.payload)throw b(`Credential metadata for ${r.id} has no database payload`);let t=s({id:r.id,kind:r.kind},r.payload,e);await A.credential.update({where:{id:r.id},data:{payload:U(t.payload),encrypted:!0,encryptionVersion:t.encryptionVersion,nonce:U(t.nonce),authTag:U(t.authTag),keyFingerprint:t.keyFingerprint}})}return t.length});r>0&&(await k(this.prisma),console.log(`[credentials] Encrypted ${r} plaintext credential row(s) under the key derived from APP_SECRET.`))}async reencryptRotatedRows(){let e=this.config.previousKeys;if(0===e.length)return 0;let t=await this.prisma.credential.findMany({where:{storageType:this.storageType,encrypted:!0,keyFingerprint:{not:this.config.keyFingerprint}},select:{id:!0,kind:!0,payload:!0,encryptionVersion:!0,nonce:!0,authTag:!0}});if(0===t.length)return 0;let A=0;for(let r of T(t))A+=await this.prisma.$transaction(async t=>{let A=0;for(let i of r){if(!i.payload||!i.encryptionVersion||!i.nonce||!i.authTag)throw b(`Credential ${i.id} has invalid encryption metadata and cannot be rotated`);let r={id:i.id,kind:i.kind},o={payload:i.payload,encryptionVersion:i.encryptionVersion,nonce:i.nonce,authTag:i.authTag},a=null;for(let t of e)try{a=n(r,o,t);break}catch{}if(!a)continue;let l=s(r,a,this.config.encryptionKey);await t.credential.update({where:{id:i.id},data:{payload:U(l.payload),encryptionVersion:l.encryptionVersion,nonce:U(l.nonce),authTag:U(l.authTag),keyFingerprint:l.keyFingerprint}}),A+=1}return A});if(A>0){await k(this.prisma);let e=t.length-A;console.log(`[credentials] Re-encrypted ${A} credential row(s) under the current APP_SECRET.`+(e>0?` ${e} row(s) matched no key in APP_SECRET_PREVIOUS and were left untouched.`:" APP_SECRET_PREVIOUS can now be removed."))}return A}async get(e){let t=await this.prisma.credential.findUnique({where:{id:e.id}});return t?this.getFromRecord(e,t):null}getFromRecord(e,t){if(t.kind!==e.kind)throw b(`Credential ${e.id} has unexpected kind metadata`);if(t.storageType!==this.storageType)throw new R(`Credential ${e.id} was stored in ${t.storageType}; re-enter it for database storage`,"BACKEND_MISMATCH");if(!t.payload)throw b(`Credential ${e.id} has no database payload`);if(!t.encrypted)return Buffer.from(t.payload);if(t.keyFingerprint!==this.config.keyFingerprint)throw new R("APP_SECRET does not match this credential","CREDENTIAL_KEY_MISMATCH");if(!t.encryptionVersion||!t.nonce||!t.authTag)throw b(`Credential ${e.id} has invalid encryption metadata`);return n(e,{payload:t.payload,encryptionVersion:t.encryptionVersion,nonce:t.nonce,authTag:t.authTag},this.config.encryptionKey)}async set(e,t){await this.prisma.$transaction(A=>this.setInTransaction(A,e,t))}async setInTransaction(e,t,A){let r=s(t,A,this.config.encryptionKey),i={kind:t.kind,ownerId:t.ownerId??null,storageType:this.storageType,payload:U(r.payload),encrypted:!0,encryptionVersion:r.encryptionVersion,nonce:U(r.nonce),authTag:U(r.authTag),keyFingerprint:r.keyFingerprint};await e.credential.upsert({where:{id:t.id},create:{id:t.id,...i},update:i})}async delete(e){await this.prisma.$transaction(t=>this.deleteInTransaction(t,e))}async deleteInTransaction(e,t){await e.credential.deleteMany({where:{id:t.id}})}}let L=()=>e.A(12202);class v{config;moduleLoader;storageType;readOnly;constructor(e,t=L){this.config=e,this.moduleLoader=t,this.storageType="keychain",this.readOnly=!1}async initialize(){this.assertSupported()}assertSupported(){if("darwin"!==this.config.platform)throw new R("macOS Keychain credential storage is unavailable on this host. Select database or Vault storage and restart the server.","KEYCHAIN_UNSUPPORTED_PLATFORM")}async entry(e){this.assertSupported();let{AsyncEntry:t}=await this.moduleLoader();return new t(this.config.service,e)}async get(e){try{let t=await (await this.entry(e.id)).getSecret();return t?Buffer.from(t):null}catch(t){throw Error(`macOS Keychain could not read ${e.id}: ${t instanceof Error?t.message:"credential operation failed"}`)}}async set(e,t){try{await (await this.entry(e.id)).setSecret(Buffer.from(t))}catch(t){throw Error(`macOS Keychain could not store ${e.id}: ${t instanceof Error?t.message:"credential operation failed"}`)}}async delete(e){try{await (await this.entry(e.id)).deleteCredential()}catch(t){throw Error(`macOS Keychain could not delete ${e.id}: ${t instanceof Error?t.message:"credential operation failed"}`)}}}var Y=e.i(912714),H=e.i(936689);let O=new Set(Object.values(B));function G(e){return e.split("/").map(encodeURIComponent).join("/")}class V{config;requestImplementation;dispatcherFactory;storageType;readOnly;dispatcherPromise;constructor(e,t=H.request,A=e=>new H.Agent(e)){this.config=e,this.requestImplementation=t,this.dispatcherFactory=A,this.storageType="vault",this.dispatcherPromise=null,this.readOnly=e.readOnly}async initialize(){await this.dispatcher()}dispatcher(){return this.dispatcherPromise||(this.dispatcherPromise=(async()=>{let e="https:"===this.config.address.protocol&&this.config.caCertPath?await (0,Y.readFile)(this.config.caCertPath):void 0;return this.dispatcherFactory({connect:{...e?{ca:e}:{},...this.config.tlsServerName?{servername:this.config.tlsServerName}:{},rejectUnauthorized:!this.config.skipVerify},connectTimeout:1e4,headersTimeout:1e4,bodyTimeout:1e4,maxResponseSize:0x4000000})})()),this.dispatcherPromise}endpoint(e,t){return`${this.prefixEndpoint(e)}/${G(t)}`}prefixEndpoint(e){let t=this.config.address.toString().replace(/\/+$/,"");return`${t}/v1/${G(this.config.mount)}/${e}/${G(this.config.pathPrefix)}`}assertWritable(e){if(this.readOnly)throw new R(`This install uses a read-only Vault; ${e} cannot be changed here. Update it from a read-write install or clear CREDENTIAL_VAULT_READ_ONLY.`,"CREDENTIAL_STORE_READ_ONLY")}deniedError(e){return new R(`The Vault token is not permitted to modify ${e}; this install has read-only access.`,"CREDENTIAL_STORE_READ_ONLY")}headers(e){let t={...this.config.headers,accept:"application/json","x-vault-request":"true"};return e&&(t["content-type"]="application/json"),this.config.token&&(t["x-vault-token"]=this.config.token),this.config.namespace&&(t["x-vault-namespace"]=this.config.namespace),t}async call(e,t,A){try{let e=await this.requestImplementation(t,{method:A.method,headers:this.headers(!!A.body),body:A.body,dispatcher:await this.dispatcher(),signal:AbortSignal.timeout(1e4),headersTimeout:1e4,bodyTimeout:1e4});return{statusCode:e.statusCode,body:await e.body.text()}}catch(A){let t="object"==typeof A&&null!==A&&"code"in A&&"string"==typeof A.code?A.code:null;throw Error(`Vault credential ${e} failed${t?` (${t})`:""}`)}}async read(e){let t=await this.call("read",this.endpoint("data",e),{method:"GET"});if(404===t.statusCode)return null;if(t.statusCode<200||t.statusCode>=300)throw Error(`Vault credential read failed (HTTP ${t.statusCode})`);return function(e,t){let A,r;try{A=JSON.parse(e)}catch{throw Error("Vault returned an invalid credential payload")}let i=A?.data?.data,s=i?.value,n=i?.kind;if(!i||"string"!=typeof s||1!==i.version||"string"!=typeof n||!O.has(n))throw Error("Vault returned an invalid credential payload");let o=i.ownerId;return{value:s,kind:n,ownerId:"string"==typeof o&&o?o:null===o?null:(r=t.split("/")).length>=3?r[1]:null}}(t.body,e)}async get(e){let t=await this.read(e.id);if(!t)return null;if(t.kind!==e.kind)throw Error("Vault returned an invalid credential payload");return Buffer.from(t.value,"base64")}async describe(e){let t=await this.read(e);return t?{id:e,kind:t.kind,ownerId:t.ownerId}:null}async list(){let e=[],t=0,A=[{path:"",depth:0}];for(;A.length&&t<500;){let{path:r,depth:i}=A.shift();for(let s of(await this.listKeys(r))){if(t>=500)return e;t+=1;let n=r?`${r}/${s.replace(/\/$/,"")}`:s.replace(/\/$/,"");if(!s.endsWith("/")){e.push(n);continue}i+1<4&&A.push({path:n,depth:i+1})}}return e}async listKeys(e){let t,A=this.prefixEndpoint("metadata"),r=`${e?`${A}/${G(e)}`:A}?list=true`,i=await this.call("list",r,{method:"GET"});if(404===i.statusCode)return[];if(i.statusCode<200||i.statusCode>=300)throw Error(`Vault credential list failed (HTTP ${i.statusCode})`);try{t=JSON.parse(i.body)}catch{throw Error("Vault returned an invalid credential listing")}let s=t?.data?.keys;if(!Array.isArray(s))throw Error("Vault returned an invalid credential listing");return s.filter(e=>"string"==typeof e&&e.length>0)}async set(e,t){this.assertWritable(e.id);let A=await this.call("write",this.endpoint("data",e.id),{method:"POST",body:JSON.stringify({data:{value:Buffer.from(t).toString("base64"),version:1,kind:e.kind,ownerId:e.ownerId??null}})});if(403===A.statusCode)throw this.deniedError(e.id);if(A.statusCode<200||A.statusCode>=300)throw Error(`Vault credential write failed (HTTP ${A.statusCode})`)}async delete(e){this.assertWritable(e.id);let t=await this.call("delete",this.endpoint("metadata",e.id),{method:"DELETE"});if(403===t.statusCode)throw this.deniedError(e.id);if(404!==t.statusCode&&(t.statusCode<200||t.statusCode>=300))throw Error(`Vault credential delete failed (HTTP ${t.statusCode})`)}}function x(e){return"database"===e||"vault"===e||"keychain"===e?e:"unknown"}function J(e){if(e.readOnly)throw new R(`Credential storage is read-only; ${e.storageType} credentials cannot be changed from this install`,"CREDENTIAL_STORE_READ_ONLY")}let P=new Map;async function W(e,t,A){if("function"==typeof e.getValidatedJsonWithMetadata)return e.getValidatedJsonWithMetadata(t,A);if("function"==typeof e.getJsonWithMetadata){let r=await e.getJsonWithMetadata(t);return r?{...r,value:A(r.value)}:null}let r=await e.getJson(t);return r?{value:A(r),createdAt:new Date(0),updatedAt:new Date(0)}:null}function _(e){throw new R(`The stored ${e} credential is invalid`,"CREDENTIAL_DATA_INVALID")}function q(e,t){return!e||"object"!=typeof e||Array.isArray(e)?_(t):e}function Z(e,t){return"string"==typeof e&&e?e:_(t)}function j(e,t){return null===e?null:Z(e,t)}e.s(["CredentialService",0,class{env;platform;configResult;prismaFactory;prismaPromise=null;driverPromise=null;initializationPromise=null;runtimeIssue=null;adoptionIssue=null;adoptedCount=0;keychainModuleLoader;vaultRequest;vaultDispatcherFactory;constructor(e={}){this.env=e.env??process.env,this.platform=e.platform??process.platform,this.configResult=I(this.env,this.platform),this.prismaFactory=e.prisma?async()=>e.prisma:e.prismaFactory??d.getPrismaClient,this.keychainModuleLoader=e.keychainModuleLoader,this.vaultRequest=e.vaultRequest,this.vaultDispatcherFactory=e.vaultDispatcherFactory}prisma(){return this.prismaPromise??=this.prismaFactory()}configurationError(){let e=this.configResult.errors[0];return e?Error(`Credential storage is not configured: ${e.message}`):null}async createDriver(e){return"database"===e.storageType?new M(await this.prisma(),e):"vault"===e.storageType?new V(e,this.vaultRequest,this.vaultDispatcherFactory):new v(e,this.keychainModuleLoader)}driver(){return this.driverPromise||(this.driverPromise=(async()=>{let e=this.configurationError();if(e)throw e;if(!this.configResult.config)throw Error("Credential storage is not configured");return this.createDriver(this.configResult.config)})()),this.driverPromise}async ensureInitialized(){return this.initializationPromise||(this.initializationPromise=(async()=>{let e=await this.driver();await e.initialize(),await this.adopt(e)})().catch(e=>{throw 0===this.configResult.errors.length&&(this.runtimeIssue=this.issueForInitializationError(e)),e})),this.initializationPromise}async adopt(e){let t=this.configResult.config;if(!t||!e.describe)return;let A="vault"!==t.storageType?t.storageType:[t.storageType,t.address.toString(),t.namespace??"",t.mount,t.pathPrefix].join("|"),r=P.get(A);r||(r=(async()=>N(await this.prisma(),e))(),P.set(A,r));let i=await r;this.adoptedCount=i.adopted+i.repointed,this.adoptionIssue=i.issue}issueForInitializationError(e){return e instanceof R?{code:e.code,message:e.message}:"vault"===this.configResult.storageType?{code:"VAULT_CONFIGURATION_INVALID",message:"Vault TLS configuration could not be initialized"}:{code:"CREDENTIAL_STORE_UNAVAILABLE",message:e instanceof Error?e.message:"Credential storage could not be initialized"}}async requireCurrentDriver(){return await this.ensureInitialized(),this.driver()}async recordForDescriptor(e,t){let A=await this.prisma(),r=await A.credential.findUnique({where:{id:t.id}});if(!e.describe||r&&r.storageType===e.storageType)return r;let i=await e.describe(t.id);if(!i)return r;if(i.kind!==t.kind||i.ownerId!==(t.ownerId??null))throw new R(`Credential ${t.id} has unexpected backend metadata`,"CREDENTIAL_DATA_INVALID");return await C([t.id],async()=>{await A.credential.upsert({where:{id:t.id},create:{id:t.id,kind:t.kind,ownerId:t.ownerId??null,storageType:e.storageType,payload:null,encrypted:!1},update:{kind:t.kind,ownerId:t.ownerId??null,storageType:e.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}})}),r=await A.credential.findUnique({where:{id:t.id}})}async getWithMetadata(e){let t=await this.requireCurrentDriver(),A=await this.recordForDescriptor(t,e);if(!A)return null;if(A.kind!==e.kind)throw new R(`Credential ${e.id} has unexpected kind metadata`,"CREDENTIAL_DATA_INVALID");if(A.storageType!==t.storageType)throw new R(`Credential ${e.id} was stored in ${A.storageType} and ${t.storageType} does not hold it; re-enter it for ${t.storageType} storage`,"BACKEND_MISMATCH");let r=t instanceof M?t.getFromRecord(e,A):await t.get(e);if(!r)throw Error(`Credential ${e.id} is missing from ${t.storageType}; re-enter it in its owning settings form`);return r?{value:r,createdAt:A.createdAt,updatedAt:A.updatedAt}:null}async get(e){return(await this.getWithMetadata(e))?.value??null}async getText(e){let t=await this.get(e);return t?t.toString("utf8"):null}async getJson(e){let t=await this.get(e);return t?y(t):null}async getJsonWithMetadata(e){let t=await this.getWithMetadata(e);return t?{value:y(t.value),createdAt:t.createdAt,updatedAt:t.updatedAt}:null}async getValidatedJson(e,t){let A=await this.getJson(e);return null===A?null:t(A)}async getValidatedJsonWithMetadata(e,t){let A=await this.getJsonWithMetadata(e);return A?{...A,value:t(A.value)}:null}async ensureInitializedForRead(){await this.ensureInitialized().catch(()=>{})}async isConfigured(e){let t,A;await this.ensureInitializedForRead();try{t=await this.driver()}catch{return!1}try{A=await this.recordForDescriptor(t,e)}catch{return!1}return!!(A&&A.kind===e.kind&&A.storageType===this.configResult.storageType)}async assertWritable(){J(await this.requireCurrentDriver())}async set(e,t,A){await this.setMany([{descriptor:e,value:t}],A)}async setMany(e,t){let A=e.map(e=>e.descriptor.id);if(new Set(A).size!==A.length)throw Error("Credential writes must use unique IDs");let r=await this.requireCurrentDriver();J(r);let i=await this.prisma();await C(A,async()=>{if(r instanceof M)return void await i.$transaction(async A=>{for(let t of e)await r.setInTransaction(A,t.descriptor,t.value);await t?.(A)});let A=new Map;for(let t of e)A.set(t.descriptor.id,await r.get(t.descriptor));let s=[];try{for(let t of e)s.push(t),await r.set(t.descriptor,t.value);await i.$transaction(async A=>{for(let{descriptor:t}of e)await A.credential.upsert({where:{id:t.id},create:{id:t.id,kind:t.kind,ownerId:t.ownerId??null,storageType:r.storageType},update:{kind:t.kind,ownerId:t.ownerId??null,storageType:r.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}});await t?.(A)})}catch(e){try{for(let e of s.reverse()){let t=A.get(e.descriptor.id);t?await r.set(e.descriptor,t):await r.delete(e.descriptor)}}catch{throw Error(`Credential metadata could not be saved and the ${r.storageType} rollback also failed; re-enter the affected credentials`,{cause:e})}throw e}})}async setAndDeleteMany(e,t,A){let r=[...e.map(({descriptor:e})=>e.id),...t.map(({id:e})=>e)];if(new Set(r).size!==r.length)throw Error("Credential changes must use unique IDs");let i=await this.requireCurrentDriver();J(i);let s=await this.prisma();await C(r,async()=>{if(i instanceof M)return void await s.$transaction(async r=>{for(let t of e)await i.setInTransaction(r,t.descriptor,t.value);for(let e of t)await i.deleteInTransaction(r,e);await A?.(r)});let r=await s.credential.findMany({where:{id:{in:t.map(({id:e})=>e)}},select:{id:!0,kind:!0,storageType:!0}}),n=new Map(t.map(e=>[e.id,e]));for(let e of r){let t=n.get(e.id);if(e.kind!==t.kind||e.storageType!==i.storageType)throw new R(`Credential ${t.id} has unexpected backend metadata`,"CREDENTIAL_DATA_INVALID")}let o=new Map,a=new Map;for(let{descriptor:t}of e)o.set(t.id,await i.get(t));for(let e of t)a.set(e.id,await i.get(e));let l=[],g=[];try{for(let t of e)l.push(t),await i.set(t.descriptor,t.value);for(let e of t)g.push(e),await i.delete(e);await s.$transaction(async t=>{for(let{descriptor:A}of e)await t.credential.upsert({where:{id:A.id},create:{id:A.id,kind:A.kind,ownerId:A.ownerId??null,storageType:i.storageType},update:{kind:A.kind,ownerId:A.ownerId??null,storageType:i.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}});await t.credential.deleteMany({where:{id:{in:r.map(({id:e})=>e)}}}),await A?.(t)})}catch(e){try{for(let e of g.reverse()){let t=a.get(e.id);t&&await i.set(e,t)}for(let e of l.reverse()){let t=o.get(e.descriptor.id);t?await i.set(e.descriptor,t):await i.delete(e.descriptor)}}catch{throw Error(`Credential metadata could not be saved and the ${i.storageType} rollback also failed; re-enter the affected credentials`,{cause:e})}throw e}})}async setText(e,t,A){await this.set(e,Buffer.from(t,"utf8"),A)}async setJson(e,t,A){await this.set(e,p(t),A)}async driverForRecordedStorage(e){if(0===this.configResult.errors.length&&this.configResult.config?.storageType===e){let e=await this.driver();return await e.initialize(),e}let t=I({...this.env,CREDENTIAL_STORAGE_TYPE:e},this.platform);if(!t.config||t.errors.length)throw Error(`Cannot delete the credential from its recorded ${e} backend: ${t.errors[0]?.message??"backend configuration is unavailable"}`);let A=await this.createDriver(t.config);return await A.initialize(),A}clearRecoverableDatabaseInitializationIssue(){(this.runtimeIssue?.code==="CREDENTIAL_KEY_MISMATCH"||this.runtimeIssue?.code==="CREDENTIAL_DATA_INVALID")&&(this.initializationPromise=null,this.runtimeIssue=null)}async delete(e,t){await this.deleteMany([e],t)}async deleteMany(e,t){let A=e.map(e=>e.id);if(new Set(A).size!==A.length)throw Error("Credential deletes must use unique IDs");let r=await this.prisma();await C(A,async()=>{let i=await r.credential.findMany({where:{id:{in:A}},select:{id:!0,kind:!0,storageType:!0}});if(!i.length){t&&await r.$transaction(t);return}let s=new Map(e.map(e=>[e.id,e])),n=[];for(let e of i){let t=s.get(e.id);if(e.kind!==t.kind)throw new R(`Credential ${t.id} has unexpected kind metadata`,"CREDENTIAL_DATA_INVALID");let A=x(e.storageType);if("unknown"===A)throw new R(`Credential ${t.id} has an unknown backend`,"CREDENTIAL_DATA_INVALID");if("database"===A)continue;let r=await this.driverForRecordedStorage(A);J(r),n.push({descriptor:t,driver:r,previous:await r.get(t)})}let o=[];try{for(let e of n)o.push(e),await e.driver.delete(e.descriptor);await r.$transaction(async e=>{await e.credential.deleteMany({where:{id:{in:i.map(e=>e.id)}}}),await t?.(e)})}catch(e){try{for(let e of o.reverse())e.previous&&await e.driver.set(e.descriptor,e.previous)}catch{throw Error("Credential metadata could not be deleted and an external-backend rollback also failed; re-enter the affected credentials",{cause:e})}throw e}i.some(e=>"database"===e.storageType)&&this.clearRecoverableDatabaseInitializationIssue()})}async list(){return await this.ensureInitializedForRead(),(await (await this.prisma()).credential.findMany({select:{id:!0,kind:!0,ownerId:!0,storageType:!0,encrypted:!0,createdAt:!0,updatedAt:!0},orderBy:[{kind:"asc"},{id:"asc"}]})).map(e=>({id:e.id,kind:e.kind,ownerId:e.ownerId,ownerFeature:w(e.kind),storageType:x(e.storageType),protection:"vault"===e.storageType?"VAULT":"keychain"===e.storageType?"KEYCHAIN":e.encrypted?"ENCRYPTED":"PLAINTEXT",createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async status(){var e;let t;try{await this.ensureInitialized()}catch{}let A=await (await this.prisma()).credential.findMany({select:{storageType:!0,encrypted:!0}}),r=A.filter(e=>e.storageType!==this.configResult.storageType).length,i=r?[{code:"BACKEND_MISMATCH",message:`${r} credential item${1===r?" was":"s were"} stored with another backend and must be re-entered`}]:[],s=(e=[...this.configResult.warnings,...this.configResult.errors,...this.runtimeIssue?[this.runtimeIssue]:[],...this.adoptionIssue?[this.adoptionIssue]:[],...i],t=new Set,e.filter(e=>{let A=`${e.code}:${e.message}`;return!t.has(A)&&(t.add(A),!0)})),n=this.configResult.errors.length>0||!!this.runtimeIssue,o=n?"ERROR":"database"===this.configResult.storageType?"ENCRYPTED":"EXTERNAL";return{storageType:this.configResult.storageType,state:n?"ERROR":s.length?"WARNING":"READY",encryptionState:o,details:this.configResult.details,itemCount:A.length,mismatchCount:r,readOnly:this.configResult.config?.storageType==="vault"&&this.configResult.config.readOnly,adoptedCount:this.adoptedCount,warnings:s}}}],91022),e.s([],582482),e.s(["apnsCertificateCatalog",0,function(e){if(!Array.isArray(e))return _("APNs certificate catalog");let t=new Set;return e.map(e=>{let A=q(e,"APNs certificate catalog"),r=Z(A.id,"APNs certificate catalog");if(t.has(r))return _("APNs certificate catalog");t.add(r);let i=Z(A.environment,"APNs certificate catalog");return"SANDBOX"!==i&&"PRODUCTION"!==i?_("APNs certificate catalog"):{id:r,name:Z(A.name,"APNs certificate catalog"),topic:Z(A.topic,"APNs certificate catalog"),environment:i}})},"apnsTokenConnectionSettings",0,function(e){let t=q(e,"APNs token settings");return{teamId:Z(t.teamId,"APNs token settings"),keyId:Z(t.keyId,"APNs token settings")}},"appStoreConnectConnectionSettings",0,function(e){let t=q(e,"App Store Connect settings");return{issuerId:Z(t.issuerId,"App Store Connect settings"),keyId:Z(t.keyId,"App Store Connect settings")}},"cacheServerConnectionSettings",0,function(e){let t=q(e,"Actions cache settings");return Array.isArray(t.headers)?{baseUrl:Z(t.baseUrl,"Actions cache settings"),headers:t.headers.map(e=>{let t=q(e,"Actions cache settings");return{name:Z(t.name,"Actions cache settings"),value:Z(t.value,"Actions cache settings")}})}:_("Actions cache settings")},"githubAppConnectionSettings",0,function(e){let t=q(e,"GitHub App settings");return{appId:Z(t.appId,"GitHub App settings"),installationId:Z(t.installationId,"GitHub App settings"),webhookUrl:j(t.webhookUrl,"GitHub App settings")}},"jiraConnectionSettings",0,function(e){let t=q(e,"Jira connection settings");return{siteUrl:Z(t.siteUrl,"Jira connection settings"),email:Z(t.email,"Jira connection settings")}},"jiraWebhookConnectionSettings",0,function(e){let t=q(e,"Jira webhook settings");return{url:Z(t.url,"Jira webhook settings"),jql:j(t.jql,"Jira webhook settings")}},"readConnectionSettings",0,W],783396)},483291,e=>{"use strict";var t=e.i(135160);e.s(["compileRe2",0,function(e,{flags:A="",label:r="Regex pattern",maxLength:i=1024}={}){if(e.length>i)throw Error(`${r} must not exceed ${i} characters`);try{return new t.RE2(e,A.includes("u")?A:`${A}u`)}catch(e){throw Error(`${r} is not valid RE2 syntax: ${e instanceof Error?e.message:String(e)}`)}}])},250246,104503,516785,715199,e=>{"use strict";var t=e.i(666680),A=e.i(184015),r=e.i(119909),i=e.i(243783),s=e.i(483291),n=e.i(988349);e.i(805422);var o=e.i(694355),a=e.i(661983);let l="default";function g(e){if("SUCCEEDED"!==e.status||!e.resultJson)throw Error(e.error||`${e.kind} failed`);let t=JSON.parse(e.resultJson);if(!t||"object"!=typeof t||Array.isArray(t))throw Error(`${e.kind} returned an invalid result`);return t}function h(e){try{let t=JSON.parse(e.capabilitiesJson);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}function c(e){return null!==e.lastSeenAt&&Date.now()-e.lastSeenAt.getTime()<=(0,o.agentOnlineWindowMs)(e)&&null===e.disconnectedAt}e.s(["CodebasesService",0,class{agentControl;skillsService;constructor(e,t){for(const r of(this.agentControl=e,this.skillsService=t,[A.CODEBASE_REFRESH_JOB_KIND,A.CODEBASE_FETCH_JOB_KIND]))this.agentControl.registerCompletionHandler(r,e=>this.projectJob(e));this.agentControl.registerCompletionHandler(A.CODEBASE_GIT_OPERATION_JOB_KIND,e=>this.projectGitOperation(e))}async overview(){return await this.cleanupInternalJobs(),(await (0,i.getPrismaClient)()).codebaseRepository.findMany({orderBy:[{name:"asc"},{canonicalOrigin:"asc"}],include:{skillGroups:{include:{group:!0}},quickActionWorkflows:{include:{workflow:!0}},codebases:{orderBy:{folder:"asc"},include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,orderBy:{createdAt:"desc"},take:1}}}}})}async repositoryDetail(e){return await this.cleanupInternalJobs(),(await (0,i.getPrismaClient)()).codebaseRepository.findUnique({where:{id:e},include:{skillGroups:{include:{group:!0}},quickActionWorkflows:{include:{workflow:!0}},codebases:{orderBy:[{agent:{name:"asc"}},{folder:"asc"}],include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,orderBy:{createdAt:"desc"},take:1}}}}})}async detail(e){return await this.cleanupInternalJobs(),(await (0,i.getPrismaClient)()).codebase.findUnique({where:{id:e},include:{agent:!0,repository:{include:{skillGroups:{include:{group:!0}}}},jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,orderBy:{createdAt:"desc"},take:1}}})}async agentCodebases(e){return(await (0,i.getPrismaClient)()).codebase.findMany({where:{agentId:e},orderBy:{folder:"asc"},select:{id:!0,folder:!0,defaultBranch:!0,lastFetchedAt:!0,lastFetchAttemptAt:!0,repository:{select:{canonicalOrigin:!0,keepBaseBranchUpToDate:!0}},worktrees:{where:{missingAt:null},select:{id:!0,folder:!0,branch:!0,gitDirectory:!0,baseBranchOverride:!0}}}})}async settings(){let e=await (0,i.getPrismaClient)(),t=await e.codebaseSettings.findUnique({where:{id:l}});return t||e.codebaseSettings.upsert({where:{id:l},create:{id:l,refreshIntervalSeconds:A.DEFAULT_CODEBASE_RECONCILE_INTERVAL_SECONDS,fetchIntervalSeconds:r.DEFAULT_WORKTREE_FETCH_INTERVAL_SECONDS,defaultJiraBranchRegex:r.DEFAULT_JIRA_BRANCH_REGEX},update:{}})}async agentConfiguration(e){let t=await (0,i.getPrismaClient)(),[A,r,s]=await Promise.all([this.settings(),t.agent.findUnique({where:{id:e},select:{codebaseScanIntervalSeconds:!0,gitFetchIntervalSeconds:!0}}),this.agentCodebases(e)]);return{refreshIntervalSeconds:r?.codebaseScanIntervalSeconds??A.refreshIntervalSeconds,fetchIntervalSeconds:r?.gitFetchIntervalSeconds??A.fetchIntervalSeconds,codebases:s}}async updateSettings(e){let t="number"==typeof e?e:e.refreshIntervalSeconds,n="number"==typeof e?r.DEFAULT_WORKTREE_FETCH_INTERVAL_SECONDS:e.fetchIntervalSeconds;if(!Number.isInteger(t)||t<A.MIN_CODEBASE_RECONCILE_INTERVAL_SECONDS||t>A.MAX_CODEBASE_RECONCILE_INTERVAL_SECONDS)throw Error(`Refresh interval must be an integer from ${A.MIN_CODEBASE_RECONCILE_INTERVAL_SECONDS} to ${A.MAX_CODEBASE_RECONCILE_INTERVAL_SECONDS} seconds`);if(!Number.isInteger(n)||n<r.MIN_WORKTREE_FETCH_INTERVAL_SECONDS||n>r.MAX_WORKTREE_FETCH_INTERVAL_SECONDS)throw Error(`Fetch interval must be an integer from ${r.MIN_WORKTREE_FETCH_INTERVAL_SECONDS} to ${r.MAX_WORKTREE_FETCH_INTERVAL_SECONDS} seconds`);let o="number"==typeof e?r.DEFAULT_JIRA_BRANCH_REGEX:e.defaultJiraBranchRegex.trim();o&&(0,s.compileRe2)(o,{flags:"i",label:"Default Jira branch regex"});let a=await (0,i.getPrismaClient)(),g="number"==typeof e?{refreshIntervalSeconds:t}:{refreshIntervalSeconds:t,fetchIntervalSeconds:n,defaultJiraBranchRegex:o},h=await a.codebaseSettings.upsert({where:{id:l},create:{id:l,...g},update:g});return this.publish(null,null),h}async browse(e,t,r){await this.cleanupInternalJobs(),await this.requireAgentCapability(e,A.CODEBASE_BROWSE_JOB_KIND);let s=await this.agentControl.createJob({agentId:e,kind:A.CODEBASE_BROWSE_JOB_KIND,payload:{path:t},idempotencyKey:`codebase:browse:${r}`,timeoutSeconds:30,visibility:"SYSTEM"}),n=await this.waitForJob(s.id),o=(0,A.parseCodebaseDirectoryListing)(g(n).listing),a=await (0,i.getPrismaClient)();return await a.agentJob.deleteMany({where:{id:s.id}}),o}async inspect(e,t,r){await this.cleanupInternalJobs(),await this.requireAgentCapability(e,A.CODEBASE_INSPECT_JOB_KIND);let s=await this.agentControl.createJob({agentId:e,kind:A.CODEBASE_INSPECT_JOB_KIND,payload:{folder:t},idempotencyKey:`codebase:inspect:${r}`,timeoutSeconds:30,visibility:"SYSTEM"}),n=await this.waitForJob(s.id),o=(0,A.parseCodebaseSnapshot)(g(n).snapshot);if("AVAILABLE"!==o.availability)throw Error(o.error||"The selected folder is unavailable");if(o.linkedWorktree)throw Error("Linked Git worktrees are not supported yet");if(!o.canonicalOrigin)throw Error("Git origin is required");let a=await (0,i.getPrismaClient)(),l=await a.codebaseRepository.findUnique({where:{canonicalOrigin:o.canonicalOrigin}});return{jobId:s.id,snapshot:o,repository:l}}async confirm(e){let r=await (0,i.getPrismaClient)(),s=await r.agentJob.findUnique({where:{id:e.inspectionJobId}});if(!s||s.kind!==A.CODEBASE_INSPECT_JOB_KIND)throw Error("Codebase inspection was not found");if(!s.finishedAt||Date.now()-s.finishedAt.getTime()>9e5)throw Error("Codebase inspection expired; inspect the folder again");let n=(0,A.parseCodebaseSnapshot)(g(s).snapshot);if("AVAILABLE"!==n.availability||n.linkedWorktree||!n.canonicalOrigin||!n.displayOrigin||!n.observedOrigin)throw Error("Codebase inspection is not eligible for confirmation");let o=e.name?.trim()??"",a=e.description?.trim()??"";if(o.length>120)throw Error("Name must be 120 characters or fewer");if(a.length>2e3)throw Error("Description must be 2,000 characters or fewer");let l=await r.$transaction(async e=>{let A=await e.codebaseRepository.findUnique({where:{canonicalOrigin:n.canonicalOrigin}});if(!A){if(!o)throw Error("Name is required for a new repository");A=await e.codebaseRepository.upsert({where:{canonicalOrigin:n.canonicalOrigin},create:{id:(0,t.randomUUID)(),canonicalOrigin:n.canonicalOrigin,displayOrigin:n.displayOrigin,name:o,description:a},update:{}})}let r=await e.codebase.findUnique({where:{agentId_folder:{agentId:s.agentId,folder:n.folder}},select:{lastFetchedAt:!0}}),i=n.fetchedAt?new Date(n.fetchedAt):null,l=i&&(!r?.lastFetchedAt||i>r.lastFetchedAt)?i:r?.lastFetchedAt??null;return e.codebase.upsert({where:{agentId_folder:{agentId:s.agentId,folder:n.folder}},create:{id:(0,t.randomUUID)(),agentId:s.agentId,repositoryId:A.id,...this.snapshotData(n,l)},update:{repositoryId:A.id,...this.snapshotData(n,l)},include:{agent:!0,repository:!0,jobs:!0}})});return this.publish(l.id,l.repositoryId),await r.agentJob.deleteMany({where:{id:e.inspectionJobId,visibility:"SYSTEM"}}),await this.agentControl.requestCodebaseReconcile([l.agentId]),await this.skillsService?.requestAutoReconcile(),l}async updateRepository(e,t,A,r,n=!0,o){let a=t.trim(),l=A.trim();if(!a)throw Error("Name is required");if(a.length>120)throw Error("Name must be 120 characters or fewer");if(l.length>2e3)throw Error("Description must be 2,000 characters or fewer");let g=r?.trim()||null;g&&(0,s.compileRe2)(g,{flags:"i",label:"Jira branch regex"});let h=null==o?null:await this.skillsService?.validateGroupIds(o),c=await (0,i.getPrismaClient)(),E=await c.codebaseRepository.update({where:{id:e},data:{name:a,description:l,jiraBranchRegex:g,keepBaseBranchUpToDate:n}});return h&&await this.skillsService?.setRepositoryGroups(e,h),this.publish(null,e),E}async removeCodebase(e){let t=await (0,i.getPrismaClient)(),A=await t.$transaction(async t=>{let A=await t.codebase.findUnique({where:{id:e},select:{id:!0,repositoryId:!0}});if(!A)throw Error("Codebase not found");await t.codebase.delete({where:{id:e}});let r=await t.codebase.count({where:{repositoryId:A.repositoryId}}),i=await t.appRepository.count({where:{repositoryId:A.repositoryId}}),s=0===r&&0===i;return s&&await t.codebaseRepository.delete({where:{id:A.repositoryId}}),{id:A.id,repositoryId:A.repositoryId,repositoryRemoved:s}});return this.publish(A.id,A.repositoryId),A}async report(e,t){let r=[],i=!1;try{for(let s of t.slice(0,500)){let t=(0,A.parseCodebaseSnapshot)(s.snapshot),n=await this.applySnapshot(e,s.codebaseId,t);r.push(n.codebase),i||=n.changed}}finally{i&&this.publish(null,null)}return r}async runOperation(e,t,r){if(!r.trim())throw Error("requestId is required");let s=await (0,i.getPrismaClient)(),o=await s.codebase.findMany({where:{id:{in:[...new Set(t)].slice(0,500)}},include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,select:{id:!0},take:1}}}),a=[],l=[];for(let t of o){if(t.jobs.length>0){l.push({codebaseId:t.id,reason:"ACTIVE_OPERATION"});continue}if(!c(t.agent)){l.push({codebaseId:t.id,reason:"OFFLINE"});continue}if(!h(t.agent).includes(e)){l.push({codebaseId:t.id,reason:"UNSUPPORTED"});continue}if(e===A.CODEBASE_FETCH_JOB_KIND&&"AVAILABLE"!==t.availability){l.push({codebaseId:t.id,reason:t.availability});continue}try{a.push(await this.agentControl.createJob({agentId:t.agentId,codebaseId:t.id,kind:e,payload:{codebaseId:t.id,folder:t.folder,expectedOrigin:t.repository.canonicalOrigin,...e===A.CODEBASE_FETCH_JOB_KIND&&t.defaultBranch?{baseBranch:t.defaultBranch}:{},...e===A.CODEBASE_FETCH_JOB_KIND?{keepBaseBranchUpToDate:t.repository.keepBaseBranchUpToDate}:{}},idempotencyKey:`codebase:${e}:${r}:${t.id}`,timeoutSeconds:e===A.CODEBASE_FETCH_JOB_KIND?300:30}))}catch(e){if(!await s.agentJob.findFirst({where:{codebaseId:t.id,...n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE},select:{id:!0}}))throw e;l.push({codebaseId:t.id,reason:"ACTIVE_OPERATION"})}}return{jobs:a,skipped:l}}async inspectGitState(e,t){if(!t.trim())throw Error("requestId is required");let r=await this.requireRunnableCodebase(e,A.CODEBASE_GIT_INSPECT_JOB_KIND),s=await this.agentControl.createJob({agentId:r.agentId,codebaseId:r.id,kind:A.CODEBASE_GIT_INSPECT_JOB_KIND,payload:{action:"STATE",codebaseId:r.id,folder:r.folder,expectedOrigin:r.repository.canonicalOrigin},idempotencyKey:`codebase:git:state:${t}:${r.id}`,timeoutSeconds:30,visibility:"SYSTEM"}),n=await (0,i.getPrismaClient)();try{let e=await this.waitForJob(s.id);return(0,A.parseCodebaseGitState)(g(e).state)}finally{await n.agentJob.deleteMany({where:{id:s.id,visibility:"SYSTEM"}})}}async inspectStash(e,t,r){if(!r.trim())throw Error("requestId is required");let s=await this.requireRunnableCodebase(e,A.CODEBASE_GIT_INSPECT_JOB_KIND),n=await this.agentControl.createJob({agentId:s.agentId,codebaseId:s.id,kind:A.CODEBASE_GIT_INSPECT_JOB_KIND,payload:{action:"STASH_DIFF",codebaseId:s.id,folder:s.folder,expectedOrigin:s.repository.canonicalOrigin,stashOid:t},idempotencyKey:`codebase:git:stash:${r}:${s.id}`,timeoutSeconds:30,visibility:"SYSTEM"}),o=await (0,i.getPrismaClient)();try{let e=await this.waitForJob(n.id);return(0,A.parseCodebaseStashDiff)(g(e).diff)}finally{await o.agentJob.deleteMany({where:{id:n.id,visibility:"SYSTEM"}})}}async runGitOperation(e){if(!e.requestId.trim())throw Error("requestId is required");let t=await this.requireRunnableCodebase(e.codebaseId,A.CODEBASE_GIT_OPERATION_JOB_KIND);return this.agentControl.createJob({agentId:t.agentId,codebaseId:t.id,kind:A.CODEBASE_GIT_OPERATION_JOB_KIND,payload:{codebaseId:t.id,folder:t.folder,expectedOrigin:t.repository.canonicalOrigin,defaultBranch:t.defaultBranch,operation:e.operation,...e.branch?{branch:e.branch}:{},...e.stashOid?{stashOid:e.stashOid}:{},..."SWITCH_BRANCH"===e.operation?{stashChanges:!!e.stashChanges}:{}},idempotencyKey:`codebase:git:${e.operation}:${e.requestId}:${t.id}`,timeoutSeconds:"PULL_BRANCH"===e.operation?300:60})}subscribe(){return a.agentEventBus.iterate(a.CODEBASE_CHANGED_TOPIC)}async projectJob(e){if(!e.codebaseId||!e.resultJson)return;let t=JSON.parse(e.resultJson);if(!t||"object"!=typeof t||Array.isArray(t))return;let r=t.snapshot;if(!r)return;let i=await this.applySnapshot(e.agentId,e.codebaseId,(0,A.parseCodebaseSnapshot)(r));i.changed&&this.publish(i.codebase.id,i.codebase.repositoryId)}async projectGitOperation(e){if("SUCCEEDED"===e.status)try{await this.projectJob(e)}catch(e){console.error("Could not project codebase Git operation:",e instanceof Error?e.message:e)}try{await this.agentControl.requestCodebaseReconcile([e.agentId])}catch(e){console.error("Could not request codebase reconciliation:",e instanceof Error?e.message:e)}}async applySnapshot(e,t,A){let r=await (0,i.getPrismaClient)(),s=await r.codebase.findUnique({where:{id:t},include:{repository:!0}});if(!s||s.agentId!==e)throw Error("Codebase not found for this agent");let n=new Date(A.checkedAt),o=null!==A.canonicalOrigin&&A.canonicalOrigin!==s.repository.canonicalOrigin,a=A.fetchedAt?new Date(A.fetchedAt):null,l=await r.codebase.updateMany({where:{id:t,agentId:e,OR:[{lastCheckedAt:null},{lastCheckedAt:{lt:n}}]},data:{folder:A.folder,...null===A.observedOrigin?{}:{observedOrigin:A.observedOrigin},branch:A.branch,headSha:A.headSha,upstream:A.upstream,ahead:A.ahead,behind:A.behind,syncState:A.syncState,availability:o?"ORIGIN_MISMATCH":A.availability,statusError:o?`Origin changed to ${A.displayOrigin??"an unknown remote"}`:A.error,lastCheckedAt:n}});l.count>0&&a&&await r.codebase.updateMany({where:{id:t,agentId:e,OR:[{lastFetchedAt:null},{lastFetchedAt:{lt:a}}]},data:{lastFetchedAt:a}});let g=await r.codebase.findUnique({where:{id:t},include:{agent:!0,repository:!0,jobs:!0}});if(!g||g.agentId!==e)throw Error("Codebase not found for this agent");return{codebase:g,changed:l.count>0}}snapshotData(e,t){return{folder:e.folder,observedOrigin:e.observedOrigin??"",branch:e.branch,headSha:e.headSha,upstream:e.upstream,ahead:e.ahead,behind:e.behind,syncState:e.syncState,availability:e.availability,statusError:e.error,lastCheckedAt:new Date(e.checkedAt),lastFetchedAt:t}}async requireAgentCapability(e,t){let A=await this.agentControl.getAgent(e);if(!A)throw Error("Agent not found");if(!c(A))throw Error("Agent is offline");if(!h(A).includes(t))throw Error("Agent must be updated to use codebases")}async requireRunnableCodebase(e,t){await this.cleanupInternalJobs();let A=await (0,i.getPrismaClient)(),r=await A.codebase.findUnique({where:{id:e},include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,select:{id:!0},take:1}}});if(!r)throw Error("Codebase not found");if(!c(r.agent))throw Error("Agent is offline");if(!h(r.agent).includes(t))throw Error("Agent must be updated to manage Git branches and stashes");if("AVAILABLE"!==r.availability)throw Error(r.statusError||"Codebase is unavailable");if(r.jobs.length)throw Error("Another codebase operation is already running");return r}async waitForJob(e){let t=a.agentEventBus.iterate((0,a.agentJobChangedTopic)(e)),A=Date.now()+3e4;try{for(;Date.now()<A;){let r=await this.agentControl.getJob(e);if(!r)throw Error("Agent job disappeared");if(["SUCCEEDED","FAILED","CANCELLED","TIMED_OUT"].includes(r.status))return r;await Promise.race([t.next(),new Promise(e=>setTimeout(e,A-Date.now()))])}throw await this.agentControl.cancelJob(e),Error("Agent did not respond in time")}finally{await t.return?.()}}publish(e,t){a.agentEventBus.publish(a.CODEBASE_CHANGED_TOPIC,{codebaseOverviewChanged:{codebaseId:e,repositoryId:t}})}async cleanupInternalJobs(){let e=await (0,i.getPrismaClient)();await e.agentJob.deleteMany({where:{visibility:"SYSTEM",kind:{in:[...A.CODEBASE_JOB_KINDS]},finishedAt:{lt:new Date(Date.now()-9e5)}}})}}],104503);var E=e.i(907855);let Q=E.enum(["IN_SYNC","AHEAD","BEHIND","DIVERGED","NO_UPSTREAM","DETACHED","UNKNOWN"]),I=E.enum(["AVAILABLE","MISSING","NOT_REPOSITORY","ORIGIN_MISMATCH","ERROR"]),d=E.object({id:E.string(),path:E.string(),observedOrigin:E.string(),branch:E.string().nullable(),headSha:E.string().nullable(),upstream:E.string().nullable(),ahead:E.number().int().nullable(),behind:E.number().int().nullable(),syncState:Q,availability:I,statusError:E.string().nullable(),lastCheckedAt:E.string().nullable(),lastFetchedAt:E.string().nullable(),lastFetchAttemptAt:E.string().nullable().optional(),lastFetchError:E.string().nullable().optional(),defaultBranch:E.string().nullable().optional(),localBranches:E.array(E.string()).optional(),remoteBranches:E.array(E.string()).optional(),createdAt:E.string().optional(),updatedAt:E.string().optional(),repository:E.object({id:E.string(),name:E.string(),description:E.string(),canonicalOrigin:E.string(),displayOrigin:E.string()}),agent:E.object({id:E.string(),name:E.string(),hostname:E.string(),connectionStatus:E.enum(["ONLINE","OFFLINE"])}),activeJob:E.object({id:E.string(),kind:E.string(),status:E.enum(["QUEUED","RUNNING"])}).nullable()}),u=E.object({codebases:E.array(d)}),C=E.object({}),B=E.union([E.object({id:E.string().min(1).describe("Registered codebase ID")}),E.object({path:E.string().min(1).describe("Exact absolute folder path of the codebase"),agentId:E.string().min(1).optional().describe("Agent ID used to disambiguate a shared folder path")})]),f=E.object({codebase:d}),p=E.object({query:E.string().min(1).optional(),agentId:E.string().min(1).optional(),repositoryId:E.string().min(1).optional(),branch:E.string().min(1).optional(),availability:I.optional(),syncState:Q.optional(),limit:E.number().int().min(1).max(500).default(100)}).refine(({query:e,agentId:t,repositoryId:A,branch:r,availability:i,syncState:s})=>!!(e||t||A||r||i||s),{message:"At least one codebase search criterion is required"}),y=E.object({codebases:E.array(d),matchingCount:E.number().int().nonnegative()}),w=E.object({id:E.string(),name:E.string(),description:E.string(),canonicalOrigin:E.string(),displayOrigin:E.string(),jiraBranchRegex:E.string().nullable(),keepBaseBranchUpToDate:E.boolean(),codebaseCount:E.number().int().nonnegative(),agentIds:E.array(E.string()),createdAt:E.string(),updatedAt:E.string()}),D=E.object({repositories:E.array(w)}),m=E.object({id:E.string().min(1)}),S=E.object({repository:w.extend({codebases:E.array(d)})});class N extends Error{code;matches;constructor(e,t,A=[]){super(t),this.code=e,this.matches=A,this.name="CodebaseLookupError"}}e.s(["CodebaseLookupError",0,N,"CodebaseToolRecordSchema",0,d,"CodebaseToolsService",0,class{codebasesService;constructor(e){this.codebasesService=e}stringArray(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}record(e,t){var A;let r=t.jobs[0]??null;return d.parse({id:t.id,path:t.folder,observedOrigin:t.observedOrigin,branch:t.branch,headSha:t.headSha,upstream:t.upstream,ahead:t.ahead,behind:t.behind,syncState:t.syncState,availability:t.availability,statusError:t.statusError,lastCheckedAt:t.lastCheckedAt?.toISOString()??null,lastFetchedAt:t.lastFetchedAt?.toISOString()??null,lastFetchAttemptAt:t.lastFetchAttemptAt?.toISOString()??null,lastFetchError:t.lastFetchError,defaultBranch:t.defaultBranch,localBranches:this.stringArray(t.localBranchesJson),remoteBranches:this.stringArray(t.remoteBranchesJson),createdAt:t.createdAt.toISOString(),updatedAt:t.updatedAt.toISOString(),repository:{id:e.id,name:e.name,description:e.description,canonicalOrigin:e.canonicalOrigin,displayOrigin:e.displayOrigin},agent:{id:t.agent.id,name:t.agent.name,hostname:t.agent.hostname,connectionStatus:null!==(A=t.agent).lastSeenAt&&Date.now()-A.lastSeenAt.getTime()<=(0,o.agentOnlineWindowMs)(A)&&null===A.disconnectedAt?"ONLINE":"OFFLINE"},activeJob:r?{id:r.id,kind:r.kind,status:r.status}:null})}async list(){return(await this.codebasesService.overview()).flatMap(e=>e.codebases.map(t=>this.record(e,t)))}async getByPath(e,t){if("string"!=typeof e||0===e.trim().length)throw new N("INVALID_PATH","A non-empty codebase path is required");let A=(await this.list()).filter(A=>A.path===e&&(!t||A.agent.id===t));if(0===A.length)throw new N("CODEBASE_NOT_FOUND",`No codebase is registered at path ${e}`);if(A.length>1)throw new N("AMBIGUOUS_PATH",`More than one agent has a codebase registered at path ${e}`,A.map(({agent:e})=>({agentId:e.id,name:e.name,hostname:e.hostname})));return A[0]}async getById(e){let t=(await this.list()).find(t=>t.id===e);if(!t)throw new N("CODEBASE_NOT_FOUND",`No codebase is registered with id ${e}`);return t}async get(e){return"id"in e?this.getById(e.id):this.getByPath(e.path,e.agentId)}async search(e){let t=e.query?.toLocaleLowerCase(),A=(await this.list()).filter(A=>(!e.agentId||A.agent.id===e.agentId)&&(!e.repositoryId||A.repository.id===e.repositoryId)&&(!e.branch||A.branch===e.branch)&&(!e.availability||A.availability===e.availability)&&(!e.syncState||A.syncState===e.syncState)&&(!t||[A.id,A.path,A.observedOrigin,A.branch??"",A.repository.name,A.repository.description,A.repository.canonicalOrigin,A.agent.name,A.agent.hostname].some(e=>e.toLocaleLowerCase().includes(t))));return{codebases:A.slice(0,e.limit),matchingCount:A.length}}async repositories(){return(await this.codebasesService.overview()).map(e=>({id:e.id,name:e.name,description:e.description,canonicalOrigin:e.canonicalOrigin,displayOrigin:e.displayOrigin,jiraBranchRegex:e.jiraBranchRegex,keepBaseBranchUpToDate:e.keepBaseBranchUpToDate,codebaseCount:e.codebases.length,agentIds:[...new Set(e.codebases.map(e=>e.agentId))],createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async repository(e){let t=(await this.codebasesService.overview()).find(t=>t.id===e);if(!t)throw Error("Codebase repository not found");return{...(await this.repositories()).find(t=>t.id===e),codebases:t.codebases.map(e=>this.record(t,e))}}},"GetCodebaseInputSchema",0,B,"GetCodebaseOutputSchema",0,f,"GetCodebaseRepositoriesOutputSchema",0,D,"GetCodebaseRepositoryInputSchema",0,m,"GetCodebaseRepositoryOutputSchema",0,S,"GetCodebasesInputSchema",0,C,"GetCodebasesOutputSchema",0,u,"SearchCodebasesInputSchema",0,p,"SearchCodebasesOutputSchema",0,y],516785);let R={openapi:"3.1.0",info:{title:"AI Development Environment Codebases API",version:"0.1.0",description:"Read-only access to registered codebase checkouts."},tags:[{name:"Codebases"}],paths:{"/api/codebases":{get:{tags:["Codebases"],operationId:"getCodebases",summary:"List codebases",security:[{BetterAuthCookie:[]},{BetterAuthBearer:[]}],responses:{200:{description:"Registered codebase checkouts",content:{"application/json":{schema:{type:"object",required:["codebases"],properties:{codebases:{type:"array",items:{$ref:"#/components/schemas/CodebaseToolRecord"}}}}}}},401:{$ref:"#/components/responses/Unauthorized"},500:{$ref:"#/components/responses/InternalError"}}}},"/api/codebases/by-path":{get:{tags:["Codebases"],operationId:"getCodebaseByPath",summary:"Get a codebase by folder path",security:[{BetterAuthCookie:[]},{BetterAuthBearer:[]}],parameters:[{name:"path",in:"query",required:!0,description:"Exact absolute folder path of the codebase",schema:{type:"string",minLength:1}}],responses:{200:{description:"Matching codebase checkout",content:{"application/json":{schema:{type:"object",required:["codebase"],properties:{codebase:{$ref:"#/components/schemas/CodebaseToolRecord"}}}}}},400:{$ref:"#/components/responses/BadRequest"},401:{$ref:"#/components/responses/Unauthorized"},404:{$ref:"#/components/responses/NotFound"},409:{$ref:"#/components/responses/AmbiguousPath"},500:{$ref:"#/components/responses/InternalError"}}}}},components:{schemas:{CodebaseToolRecord:e.i(865889).toJSONSchema(d),ErrorResponse:{type:"object",required:["error"],properties:{error:{type:"object",required:["code","message"],properties:{code:{type:"string"},message:{type:"string"},matches:{type:"array",items:{type:"object",required:["agentId","name","hostname"],properties:{agentId:{type:"string"},name:{type:"string"},hostname:{type:"string"}}}}}}}}},securitySchemes:{BetterAuthCookie:{type:"apiKey",in:"cookie",name:"better-auth.session_token",description:"Better Auth browser session cookie."},BetterAuthBearer:{type:"http",scheme:"bearer",description:"Better Auth native-client session token."}},responses:Object.fromEntries([["BadRequest","The path is missing or invalid"],["NotFound","No codebase uses the requested path"],["AmbiguousPath","Multiple agents use the requested path"],["Unauthorized","A Better Auth user session is required"],["InternalError","Unexpected server error"]].map(([e,t])=>[e,{description:t,content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}]))}};e.s(["codebasesOpenApiDocument",0,R],715199),e.s([],250246)},247287,e=>{"use strict";var t=e.i(666680),A=e.i(246479),r=e.i(397554),i=e.i(827957);let s=new Set([429,500,503]);async function n(e){await new Promise(t=>setTimeout(t,e))}e.s(["ApnsClient",0,class{sessionFactory;sessions;jwtCache;constructor(e=A.connect){this.sessionFactory=e,this.sessions=new Map,this.jwtCache=new Map}close(){for(let e of this.sessions.values())e.close();this.sessions.clear()}session(e,t){let A="TOKEN"===t.kind?`token:${t.teamId}:${t.keyId}`:`certificate:${t.fingerprint}`,r=`${e}:${A}`,i=this.sessions.get(r);if(i&&!i.closed&&!i.destroyed)return i;let s="CERTIFICATE"===t.kind?{pfx:Buffer.from(t.p12Base64,"base64"),passphrase:t.passphrase}:{},n=this.sessionFactory("SANDBOX"===e?"https://api.sandbox.push.apple.com":"https://api.push.apple.com",s);return n.on("error",()=>{this.sessions.get(r)===n&&this.sessions.delete(r)}),n.on("close",()=>{this.sessions.get(r)===n&&this.sessions.delete(r)}),this.sessions.set(r,n),n}async authorization(e){let A;if("CERTIFICATE"===e.kind)return null;let s=`${e.teamId}:${e.keyId}:${(0,t.createHash)("sha256").update(e.privateKey).digest("hex")}`,n=this.jwtCache.get(s);if(n&&Date.now()-n.createdAt<3e6)return`bearer ${n.token}`;try{A=await (0,r.importPKCS8)(e.privateKey,"ES256")}catch{throw Error("The APNs .p8 key must be an ES256 PKCS#8 private key")}let o=await new i.SignJWT({}).setProtectedHeader({alg:"ES256",kid:e.keyId}).setIssuer(e.teamId).setIssuedAt().sign(A);return this.jwtCache.set(s,{token:o,createdAt:Date.now()}),`bearer ${o}`}async requestOnce(e){let t=await this.authorization(e.authentication),r=this.session(e.environment,e.authentication);return new Promise((i,s)=>{let n=r.request({[A.constants.HTTP2_HEADER_METHOD]:e.method??"POST",[A.constants.HTTP2_HEADER_PATH]:e.path,[A.constants.HTTP2_HEADER_SCHEME]:"https","content-type":"application/json",...t?{authorization:t}:{},...e.headers}),o={},a="";n.setEncoding("utf8"),n.on("response",e=>{o=e}),n.on("data",e=>{(a+=e).length>65536&&n.close(A.constants.NGHTTP2_CANCEL)}),n.on("error",s),n.on("end",()=>{let e=o[A.constants.HTTP2_HEADER_STATUS];i({status:Number(Array.isArray(e)?e[0]:e)||0,body:a,headers:o})}),n.setTimeout(2e4,()=>{n.close(A.constants.NGHTTP2_CANCEL),s(Error("APNs request timed out"))}),n.end(JSON.stringify(e.payload))})}async send(e){if(!e.deviceToken&&!e.broadcastTopic)throw Error("An APNs device token or broadcast topic is required");let A=e.deviceToken?`/3/device/${e.deviceToken.toLowerCase()}`:`/4/broadcasts/apps/${encodeURIComponent(e.broadcastTopic)}`,r=Date.now(),i=0;for(;;){let o;try{o=await this.requestOnce({...e,path:A})}catch(e){if(i>=3)throw e;await n(Math.min(4e3,250*2**i)),i+=1;continue}let a={};try{a=o.body?JSON.parse(o.body):{}}catch{a={}}if(s.has(o.status)&&i<3){await n(function(e,t){let A=Array.isArray(e)?e[0]:e;if(A){let e=Number(A);if(Number.isFinite(e))return Math.min(3e4,1e3*e);let t=Date.parse(A);if(Number.isFinite(t))return Math.max(0,Math.min(3e4,t-Date.now()))}return Math.min(4e3,250*2**t)}(o.headers["retry-after"],i)),i+=1;continue}let l=o.headers["apns-id"];return{status:o.status,reason:a.reason??null,timestamp:"number"==typeof a.timestamp?new Date(a.timestamp):null,apnsId:(Array.isArray(l)?l[0]:l)??e.headers["apns-id"]??(0,t.randomUUID)(),attempts:i+1,durationMs:Date.now()-r}}}async createBroadcastChannel(e){let t=await this.requestOnce({environment:e.environment,authentication:e.authentication,path:`/4/broadcasts/apps/${encodeURIComponent(e.bundleId)}`,payload:{"channel-storage-policy":+("NO_STORAGE"!==e.storagePolicy)},headers:{"apns-topic":`${e.bundleId}.push-type.liveactivity`,"apns-push-type":"liveactivity"}}),A=t.headers["apns-channel-id"],r=Array.isArray(A)?A[0]:A;if(![200,201].includes(t.status)||!r)throw Error(`APNs could not create the broadcast channel (HTTP ${t.status})`);return r}async deleteBroadcastChannel(e){let t=await this.requestOnce({environment:e.environment,authentication:e.authentication,method:"DELETE",path:`/4/broadcasts/apps/${encodeURIComponent(e.bundleId)}`,payload:{},headers:{"apns-topic":`${e.bundleId}.push-type.liveactivity`,"apns-push-type":"liveactivity","apns-channel-id":e.channelId}});if(![200,204].includes(t.status))throw Error(`APNs could not delete the broadcast channel (HTTP ${t.status})`)}}])},282790,474170,308810,e=>{"use strict";var t=e.i(247287),A=e.i(666680),r=e.i(685560),i=e.i(397554),s=e.i(243783);e.i(582482);var n=e.i(783396),o=e.i(318905),a=e.i(91022),l=e.i(661983);let g=new Set(["alert","background","complication","controls","fileprovider","liveactivity","location","mdm","pushtotalk","voip","widgets"]),h=/^[A-Za-z0-9][A-Za-z0-9.-]{0,254}$/;function c(e,t){if(!e||"object"!=typeof e||Array.isArray(e))throw Error(`${t} must be an object`);return e}function E(e,t,A){if("string"!=typeof e||!e.trim())throw Error(`${t} is required`);let r=e.trim();if(r.length>A||r.includes("\0"))throw Error(`${t} is invalid`);return r}function Q(e,t,A){return null==e||""===e?null:E(e,t,A)}function I(e,t){let A;if("HEX"===t){let t=e.replace(/[\s<>]/g,"");if(!/^[A-Fa-f0-9]{64}$/.test(t))throw Error("token must contain exactly 32 bytes of hexadecimal data");A=Buffer.from(t,"hex")}else{let t=e.trim();if(!/^[A-Za-z0-9+/_-]+={0,2}$/.test(t))throw Error("token is not valid Base64");try{A=Buffer.from(t.replaceAll("-","+").replaceAll("_","/"),"base64")}catch{throw Error("token is not valid Base64")}if(A.toString("base64").replace(/=+$/,"")!==t.replaceAll("-","+").replaceAll("_","/").replace(/=+$/,""))throw Error("token is not valid Base64")}if(32!==A.length)throw Error("token must decode to exactly 32 bytes");return A.toString("hex").toUpperCase()}function d(e){let t=c(e,"registration"),A=new Set(["clientRegistrationId","token","tokenEncoding","topic","environment","supportedPushTypes","displayName","deviceModel","osVersion","appVersion","appBuild","locale","pushMagic"]),r=Object.keys(t).find(e=>!A.has(e));if(r)throw Error(`Unexpected registration field: ${r}`);let i=E(t.tokenEncoding,"tokenEncoding",10);if("HEX"!==i&&"BASE64"!==i)throw Error("tokenEncoding must be HEX or BASE64");let s=E(t.environment,"environment",20);if("SANDBOX"!==s&&"PRODUCTION"!==s)throw Error("environment must be SANDBOX or PRODUCTION");let n=E(t.topic,"topic",255);if(!h.test(n))throw Error("topic is invalid");if(!Array.isArray(t.supportedPushTypes)||!t.supportedPushTypes.length)throw Error("supportedPushTypes must contain at least one push type");let o=[...new Set(t.supportedPushTypes.map(e=>{if("string"!=typeof e||!g.has(e))throw Error(`Unsupported APNs push type: ${String(e)}`);return e}))],a=Q(t.pushMagic,"pushMagic",500);if(o.includes("mdm")&&!a)throw Error("pushMagic is required when MDM is supported");return{clientRegistrationId:E(t.clientRegistrationId,"clientRegistrationId",200),token:I(E(t.token,"token",1024),i),tokenEncoding:i,topic:n,environment:s,supportedPushTypes:o,displayName:E(t.displayName,"displayName",120),deviceModel:Q(t.deviceModel,"deviceModel",120),osVersion:Q(t.osVersion,"osVersion",50),appVersion:Q(t.appVersion,"appVersion",50),appBuild:Q(t.appBuild,"appBuild",50),locale:Q(t.locale,"locale",35),pushMagic:a}}function u(e){let t,A=c(e,"push editor"),r=E(A.pushType,"pushType",30);if(!g.has(r))throw Error("pushType is unsupported");let i=c(A.headers??{},"headers"),s=c(A.aps??{},"aps"),n=c(A.custom??{},"custom"),o=Q(A.credentialId,"credentialId",100),a=Number(i.priority??("background"===r?5:10));if(![1,5,10].includes(a))throw Error("APNs priority must be 1, 5, or 10");if("background"===r&&5!==a)throw Error("Background notifications require priority 5");if(["voip","mdm","pushtotalk"].includes(r)&&10!==a)throw Error(`${r} notifications require priority 10`);if(1===a&&"location"!==r)throw Error("Priority 1 is supported only for location notifications");let l=E(i.topic,"topic",255);if(!h.test(l))throw Error("topic is invalid");let I={complication:".complication",fileprovider:".pushkit.fileprovider",liveactivity:".push-type.liveactivity",location:".location-query",pushtotalk:".voip-ptt",voip:".voip",widgets:".push-type.widgets",controls:".push-type.controls"}[r];if(I&&!l.endsWith(I))throw Error(`${r} notifications require a topic ending in ${I}`);if("mdm"===r){if(!o)throw Error("MDM requires a certificate credential");if(Object.keys(s).length)throw Error("MDM payloads cannot contain aps");if(Object.keys(n).length)throw Error("MDM payloads cannot contain custom root fields");t={mdm:"__PUSH_MAGIC__"}}else{let e={...s},i=e["relevance-score"];if(void 0!==i&&("number"!=typeof i||i<0||i>1))throw Error("aps.relevance-score must be between 0 and 1");let o=e.badge;if(void 0!==o&&("number"!=typeof o||!Number.isInteger(o)||o<0))throw Error("aps.badge must be a non-negative integer");let a=e["interruption-level"];if(void 0!==a&&!["passive","active","time-sensitive","critical"].includes(String(a)))throw Error("aps.interruption-level is invalid");let l=e.sound;if(l&&"object"==typeof l&&!Array.isArray(l)){let e=l.volume;if("number"!=typeof e||!Number.isFinite(e)||e<0||e>1)throw Error("Critical sound volume must be between 0 and 1")}if("background"===r){for(let t of["alert","badge","sound"])if(void 0!==e[t])throw Error(`Background notifications cannot contain aps.${t}`);e["content-available"]=1}if("alert"===r&&!Object.keys(e).length)throw Error("Alert notifications require at least one aps field");if("liveactivity"===r){let t=c(A.liveActivity??{},"liveActivity");if(!Number.isInteger(t.timestamp))throw Error("Live Activity timestamp must be an integer Unix timestamp");if(!["start","update","end"].includes(String(t.event)))throw Error("Live Activity event must be start, update, or end");Object.assign(e,t)}t={...n,aps:e}}let d=Buffer.byteLength(JSON.stringify(t)),u="voip"===r?5120:4096;if(d>u)throw Error(`Payload is ${d} bytes; ${r} allows ${u}`);let C={"apns-push-type":r,"apns-topic":l,"apns-priority":String(a)};for(let[e,t]of[["apns-id",i.id],["apns-expiration",i.expiration],["apns-collapse-id",i.collapseId],["apns-channel-id",i.broadcastChannelId]])null!=t&&""!==t&&(C[e]=E(t,e,"apns-collapse-id"===e?64:200));if(C["apns-id"]&&!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(C["apns-id"]))throw Error("apns-id must be a UUID");if(C["apns-expiration"]&&(!/^\d+$/.test(C["apns-expiration"])||0>Number(C["apns-expiration"])))throw Error("apns-expiration must be a non-negative Unix timestamp");return{editor:{pushType:r,headers:i,aps:s,custom:n,liveActivity:"liveactivity"===r?c(A.liveActivity??{},"liveActivity"):null,credentialId:o},payload:t,headers:C,byteLength:d}}e.s(["normalizeDeviceToken",0,I,"parseApnsRegistrationInput",0,d,"validatePushEditor",0,u],474170);let C="default",B=["DEVICES","ALL","DIRECT","BROADCAST"],f="server:apns-recovery";function p(e){return(0,A.createHash)("sha256").update(e).digest("hex").toUpperCase()}function y(e,t){let i;try{i=(0,r.createSecureContext)({pfx:e,passphrase:t})}catch{throw Error("The .p12 file or passphrase is invalid")}let s=i.context.getCertificate();if(!s?.length)throw Error("The .p12 file does not contain a leaf certificate");let n=new A.X509Certificate(s),o=new Date(n.validTo);if(Number.isNaN(o.getTime()))throw Error("The .p12 certificate expiration date is invalid");return{expiresAt:o,fingerprint:n.fingerprint256.replaceAll(":","").toUpperCase()}}function w(e){return JSON.parse(e)}function D(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}function m(e,t,A=200){let r=e.trim();if(!r||r.length>A||r.includes("\0"))throw Error(`${t} is required or invalid`);return r}let S=Promise.resolve();async function N(e){let t,A=S;S=new Promise(e=>{t=e}),await A;try{return await e()}finally{t()}}e.s(["PushNotificationsService",0,class{client;credentials;polling;async storedTokenSettings(){return(0,n.readConnectionSettings)(this.credentials,o.CREDENTIALS.apnsTokenSettings,n.apnsTokenConnectionSettings)}async storedCertificateCatalog(){return(0,n.readConnectionSettings)(this.credentials,o.CREDENTIALS.apnsCertificateCatalog,n.apnsCertificateCatalog)}recoveryStarted;activeBatchIds;constructor(e=new t.ApnsClient,A=new a.CredentialService,r){this.client=e,this.credentials=A,this.polling=r,this.recoveryStarted=!1,this.activeBatchIds=new Set,this.polling?.register({id:f,kind:"APNS_RECOVERY",runtime:"SERVER",enabled:!0,cadenceSeconds:30,details:{}}),queueMicrotask(()=>void this.pollRecovery()),setInterval(()=>void this.pollRecovery(),3e4).unref()}async pollRecovery(){this.polling?.schedule(f,new Date(Date.now()+3e4));try{this.polling?await this.polling.run(f,()=>this.recover(),e=>e):await this.recover()}catch{}}changed(){l.agentEventBus.publish(l.PUSH_NOTIFICATIONS_CHANGED_TOPIC,{changed:!0})}subscribe(){return l.agentEventBus.iterate(l.PUSH_NOTIFICATIONS_CHANGED_TOPIC)}async register(e,t){let A=d(e);return this.registerValidated(A,t)}async registerValidated(e,t){let r=await (0,s.getPrismaClient)(),i=p(e.token),n=new Date,o={clientRegistrationId:e.clientRegistrationId,topic:e.topic,environment:e.environment},a=await r.$transaction(async r=>{let s=await r.apnsRegistration.findUnique({where:{clientRegistrationId_topic_environment:o}}),a=await r.apnsRegistration.findUnique({where:{tokenHash_topic_environment:{tokenHash:i,topic:e.topic,environment:e.environment}}});a&&a.id!==s?.id&&await r.apnsRegistration.update({where:{id:a.id},data:{token:"",tokenHash:`REASSIGNED:${a.id}:${a.tokenHash}`,status:"INACTIVE",invalidatedAt:n,lastFailureReason:"TOKEN_REASSIGNED",lastFailureAt:n}});let l={token:e.token,tokenHash:i,pushTypesJson:JSON.stringify(e.supportedPushTypes),displayName:e.displayName,deviceModel:e.deviceModel,osVersion:e.osVersion,appVersion:e.appVersion,appBuild:e.appBuild,locale:e.locale,pushMagic:e.pushMagic,lastIpAddress:t,status:"ACTIVE",invalidatedAt:null,lastFailureReason:null,lastFailureAt:null,lastRegisteredAt:n};return{registration:s?await r.apnsRegistration.update({where:{id:s.id},data:l}):await r.apnsRegistration.create({data:{id:(0,A.randomUUID)(),...o,...l}}),created:!s}});return this.changed(),a}async registrations(){let e=await (0,s.getPrismaClient)();return(await e.apnsRegistration.findMany({orderBy:[{status:"asc"},{lastRegisteredAt:"desc"}]})).map(e=>({...e,tokenMasked:e.token?`${e.token.slice(0,8)}…${e.token.slice(-8)}`:"—",supportedPushTypes:D(e.pushTypesJson)}))}async renameRegistration(e,t){let A=await (0,s.getPrismaClient)(),r=await A.apnsRegistration.update({where:{id:e},data:{displayName:m(t,"Display name",120)}});return this.changed(),r}async setRegistrationActive(e,t){let A=await (0,s.getPrismaClient)(),r=await A.apnsRegistration.update({where:{id:e},data:{status:t?"ACTIVE":"INACTIVE",invalidatedAt:t?null:new Date}});return this.changed(),r}async deleteRegistration(e){let t=await (0,s.getPrismaClient)();return await t.apnsRegistration.delete({where:{id:e}}),this.changed(),!0}async rawSettings(){return(await (0,s.getPrismaClient)()).pushNotificationSettings.upsert({where:{id:C},create:{id:C},update:{}})}async settings(){let e=await (0,s.getPrismaClient)(),[t,A,r,i]=await Promise.all([this.rawSettings(),this.storedTokenSettings(),this.storedCertificateCatalog(),this.credentials.isConfigured(o.CREDENTIALS.apnsTokenPrivateKey)]),n=r?.value??[],a=new Map((await e.apnsCertificateCredential.findMany({where:{id:{in:n.map(({id:e})=>e)}}})).map(e=>[e.id,e]));return{tokenConfigured:!!(A&&i),tokenTeamId:A?.value.teamId??null,tokenKeyId:A?.value.keyId??null,tokenPrivateKeyFingerprint:t.tokenPrivateKeyFingerprint,tokenConfiguredAt:t.tokenConfiguredAt,tokenLastUsedAt:t.tokenLastUsedAt,tokenLastError:t.tokenLastError,certificates:n.map(e=>{let t=a.get(e.id);return t?{...e,fingerprint:t.fingerprint,expiresAt:t.expiresAt,lastTestedAt:t.lastTestedAt,lastError:t.lastError,createdAt:t.createdAt,updatedAt:t.updatedAt}:null}).filter(e=>null!==e).sort((e,t)=>e.name.localeCompare(t.name)),updatedAt:new Date(Math.max(t.updatedAt.getTime(),A?.updatedAt.getTime()??0,r?.updatedAt.getTime()??0))}}async saveTokenSettings(e){await this.rawSettings();let t=m(e.teamId,"Team ID",20),A=m(e.keyId,"Key ID",20),r=await this.storedTokenSettings(),n=e.privateKey?.trim()||await this.credentials.getText(o.CREDENTIALS.apnsTokenPrivateKey);if(!n?.includes("-----BEGIN PRIVATE KEY-----"))throw Error("An APNs PKCS#8 .p8 private key is required");try{await (0,i.importPKCS8)(n,"ES256")}catch{throw Error("The APNs .p8 key must be an ES256 PKCS#8 private key")}let a={teamId:t,keyId:A},l=async e=>{await e.pushNotificationSettings.update({where:{id:C},data:{tokenPrivateKeyFingerprint:p(n),tokenConfiguredAt:new Date,tokenLastError:null}})},g=[...r&&JSON.stringify(r.value)===JSON.stringify(a)?[]:[{descriptor:o.CREDENTIALS.apnsTokenSettings,value:(0,o.encodeJsonCredential)(a)}],...e.privateKey?.trim()?[{descriptor:o.CREDENTIALS.apnsTokenPrivateKey,value:Buffer.from(n,"utf8")}]:[]];return g.length?await this.credentials.setMany(g,l):await (await (0,s.getPrismaClient)()).$transaction(l),this.changed(),this.settings()}async clearTokenSettings(){return await this.credentials.deleteMany([o.CREDENTIALS.apnsTokenSettings,o.CREDENTIALS.apnsTokenPrivateKey],async e=>{await e.pushNotificationSettings.upsert({where:{id:C},create:{id:C},update:{tokenPrivateKeyFingerprint:null,tokenConfiguredAt:null,tokenLastUsedAt:null,tokenLastError:null}})}),this.changed(),this.settings()}async addCertificateCredential(e){let t=Buffer.from(e.p12Base64,"base64");if(!t.length||t.length>0x1400000)throw Error("The .p12 file is empty or larger than 20 MiB");if(!["SANDBOX","PRODUCTION"].includes(e.environment))throw Error("Certificate environment is invalid");let r=y(t,e.passphrase),i=(0,A.randomUUID)(),s={id:i,name:m(e.name,"Credential name",100),topic:m(e.topic,"Topic",255),environment:e.environment};return await N(async()=>{let t=await this.storedCertificateCatalog();if(t?.value.some(({name:e})=>e===s.name))throw Error("Credential name already exists");let A=[...t?.value??[],s];await this.credentials.setMany([{descriptor:o.CREDENTIALS.apnsCertificateCatalog,value:(0,o.encodeJsonCredential)(A)},{descriptor:(0,o.apnsCertificateCredential)(i),value:(0,o.encodeJsonCredential)({p12Base64:e.p12Base64,passphrase:e.passphrase})}],async e=>{await e.apnsCertificateCredential.create({data:{id:i,fingerprint:r.fingerprint,expiresAt:r.expiresAt,lastTestedAt:new Date}})})}),this.changed(),this.settings()}async deleteCertificateCredential(e){return await N(async()=>{let t=await this.storedCertificateCatalog();if(!t?.value.some(t=>t.id===e))throw Error("APNs certificate credential not found");await this.credentials.setAndDeleteMany([{descriptor:o.CREDENTIALS.apnsCertificateCatalog,value:(0,o.encodeJsonCredential)(t.value.filter(t=>t.id!==e))}],[(0,o.apnsCertificateCredential)(e)],async t=>{await t.apnsCertificateCredential.delete({where:{id:e}})})}),this.changed(),!0}async retestCertificateCredential(e){let t=await (0,s.getPrismaClient)();if(!await t.apnsCertificateCredential.findUnique({where:{id:e}}))throw Error("APNs certificate credential not found");let A=await this.credentials.getJson((0,o.apnsCertificateCredential)(e));if(!A)throw Error("APNs certificate credential is not configured");try{let r=y(Buffer.from(A.p12Base64,"base64"),A.passphrase);await t.apnsCertificateCredential.update({where:{id:e},data:{fingerprint:r.fingerprint,expiresAt:r.expiresAt,lastTestedAt:new Date,lastError:null}})}catch(A){throw await t.apnsCertificateCredential.update({where:{id:e},data:{lastTestedAt:new Date,lastError:A instanceof Error?A.message:String(A)}}),this.changed(),A}return this.changed(),this.settings()}async channels(){return(await (0,s.getPrismaClient)()).apnsBroadcastChannel.findMany({orderBy:{createdAt:"desc"}})}async tokenAuthentication(e="APNs token authentication is not configured"){let t=await this.storedTokenSettings();if(!t)throw Error(e);let A=await this.credentials.getText(o.CREDENTIALS.apnsTokenPrivateKey);if(!A)throw Error(e);return{kind:"TOKEN",teamId:t.value.teamId,keyId:t.value.keyId,privateKey:A}}async createChannel(e){if(!["SANDBOX","PRODUCTION"].includes(e.environment))throw Error("Channel environment is invalid");if(!["NO_STORAGE","MOST_RECENT"].includes(e.storagePolicy))throw Error("Channel storage policy is invalid");let t=m(e.bundleId,"Bundle ID",255),r=e.channelId?null:await this.tokenAuthentication("APNs token authentication is required for broadcast channels"),i=e.channelId?.trim()||await this.client.createBroadcastChannel({environment:e.environment,authentication:r,bundleId:t,storagePolicy:e.storagePolicy}),n=await (0,s.getPrismaClient)(),o=await n.apnsBroadcastChannel.create({data:{id:(0,A.randomUUID)(),channelId:i,bundleId:t,environment:e.environment,storagePolicy:e.storagePolicy}});return this.changed(),o}async deleteChannel(e){let t=await (0,s.getPrismaClient)(),A=await t.apnsBroadcastChannel.findUnique({where:{id:e}});if(!A)throw Error("Broadcast channel not found");let r=await this.tokenAuthentication("APNs token authentication is required for broadcast channels");return await this.client.deleteBroadcastChannel({environment:A.environment,authentication:r,bundleId:A.bundleId,channelId:A.channelId}),await t.apnsBroadcastChannel.delete({where:{id:e}}),this.changed(),!0}async presets(){return(await (0,s.getPrismaClient)()).pushNotificationPreset.findMany({orderBy:{updatedAt:"desc"}})}async preset(e){return(await (0,s.getPrismaClient)()).pushNotificationPreset.findUnique({where:{id:e}})}async savePreset(e,t,r){let i=u(t),n=await (0,s.getPrismaClient)(),o=r?await n.pushNotificationPreset.update({where:{id:r},data:{name:m(e,"Preset name",100),editorJson:JSON.stringify(i.editor)}}):await n.pushNotificationPreset.create({data:{id:(0,A.randomUUID)(),name:m(e,"Preset name",100),editorJson:JSON.stringify(i.editor)}});return this.changed(),o}async deletePreset(e){let t=await (0,s.getPrismaClient)();return await t.pushNotificationPreset.delete({where:{id:e}}),this.changed(),!0}async history(e=100){return(await (0,s.getPrismaClient)()).pushNotificationBatch.findMany({include:{deliveries:{orderBy:{createdAt:"asc"}}},orderBy:{createdAt:"desc"},take:Math.max(1,Math.min(e,200))})}async historyItem(e){return(await (0,s.getPrismaClient)()).pushNotificationBatch.findUnique({where:{id:e},include:{deliveries:{orderBy:{createdAt:"asc"}}}})}async saveDraft(e){let t=u(e),r=await (0,s.getPrismaClient)(),i=await r.pushNotificationBatch.create({data:{id:(0,A.randomUUID)(),requestId:(0,A.randomUUID)(),status:"DRAFT",editorJson:JSON.stringify(t.editor),payloadJson:JSON.stringify(t.payload),headersJson:JSON.stringify(t.headers),targetMode:"DRAFT"},include:{deliveries:!0}});return this.changed(),i}async deleteHistory(e){let t=await (0,s.getPrismaClient)();if(1!==(await t.pushNotificationBatch.deleteMany({where:{id:e,status:{notIn:["QUEUED","SENDING"]}}})).count){if(!await t.pushNotificationBatch.findUnique({where:{id:e},select:{status:!0}}))throw Error("Push history item not found");throw Error("Queued or sending push notifications cannot be deleted")}return this.changed(),!0}async clearHistory(){let e=await (0,s.getPrismaClient)(),t=await e.pushNotificationBatch.deleteMany({where:{status:{notIn:["QUEUED","SENDING"]}}});return this.changed(),t.count}async send(e){var t;if(t=e.targetMode,!B.includes(t))throw Error(`Unsupported push target mode: ${e.targetMode}`);let r=e.targetMode,i=u(e.editor),n=await (0,s.getPrismaClient)(),o=await n.pushNotificationBatch.findUnique({where:{requestId:e.requestId},include:{deliveries:!0}});if(o)return o;let a=[],l=null,g=null;if("BROADCAST"===r){if("liveactivity"!==i.editor.pushType)throw Error("Broadcast delivery is available only for Live Activities");if(!e.channelId)throw Error("Select a broadcast channel");if(!(l=await n.apnsBroadcastChannel.findUnique({where:{id:e.channelId}})))throw Error("Broadcast channel not found")}else if("DIRECT"===r){if("liveactivity"!==i.editor.pushType)throw Error("Direct-token delivery is available only for Live Activities");if(!e.directToken)throw Error("Enter a Live Activity push token");let t=e.directTokenEncoding??"HEX";if("HEX"!==t&&"BASE64"!==t)throw Error("Direct token encoding must be HEX or BASE64");let A=e.directEnvironment??"SANDBOX";if("SANDBOX"!==A&&"PRODUCTION"!==A)throw Error("Direct token environment is invalid");let r=I(e.directToken,t);g={token:r,tokenHash:p(r),environment:A}}else{let t=[...new Set(e.registrationIds??[])];if(!(a=(await n.apnsRegistration.findMany({where:{status:"ACTIVE",topic:i.headers["apns-topic"],..."DEVICES"===r?{id:{in:t}}:{}}})).filter(e=>D(e.pushTypesJson).includes(i.editor.pushType)).map(e=>({id:e.id,tokenHash:e.tokenHash,topic:e.topic,environment:e.environment}))).length)throw Error("No eligible APNs devices selected")}let h=await n.pushNotificationBatch.create({data:{id:(0,A.randomUUID)(),requestId:e.requestId,status:"QUEUED",editorJson:JSON.stringify(i.editor),payloadJson:JSON.stringify(i.payload),headersJson:JSON.stringify(i.headers),targetMode:r,channelId:l?.id??null,recipientCount:l||g?1:a.length,deliveries:{create:l?[{id:(0,A.randomUUID)(),topic:l.bundleId,environment:l.environment}]:g?[{id:(0,A.randomUUID)(),tokenHash:g.tokenHash,topic:i.headers["apns-topic"],environment:g.environment,recipientSecret:{create:{id:(0,A.randomUUID)(),token:g.token}}}]:a.map(e=>({id:(0,A.randomUUID)(),registrationId:e.id,tokenHash:e.tokenHash,topic:e.topic,environment:e.environment}))}},include:{deliveries:!0}});return this.changed(),this.processBatch(h.id).catch(()=>void 0),h}async resend(e,t){let A=await (0,s.getPrismaClient)(),r=await A.pushNotificationBatch.findUnique({where:{id:e},include:{deliveries:!0}});if(!r)throw Error("Push history item not found");if("DRAFT"===r.targetMode)throw Error("Choose recipients before sending a draft");if("DIRECT"===r.targetMode)throw Error("Direct Live Activity tokens are not retained; load the item and enter the token again");return this.send({requestId:t,editor:w(r.editorJson),targetMode:r.targetMode,registrationIds:r.deliveries.map(e=>e.registrationId).filter(e=>!!e),channelId:r.channelId})}async authentication(e,t,A){let r=await (0,s.getPrismaClient)();if(e.credentialId){let[i,s]=await Promise.all([r.apnsCertificateCredential.findUnique({where:{id:e.credentialId}}),this.storedCertificateCatalog()]),n=s?.value.find(({id:t})=>t===e.credentialId);if(!i||!n)throw Error("APNs certificate credential not found");if(n.environment!==t||n.topic!==A)throw Error("APNs certificate does not match the target topic/environment");let a=await this.credentials.getJson((0,o.apnsCertificateCredential)(i.id));if(!a)throw Error("APNs certificate credential is not configured");return{kind:"CERTIFICATE",p12Base64:a.p12Base64,passphrase:a.passphrase,fingerprint:i.fingerprint}}if("mdm"===e.pushType)throw Error("MDM requires certificate authentication");return this.tokenAuthentication()}async failDelivery(e,t){let A=await (0,s.getPrismaClient)();await A.pushNotificationDelivery.update({where:{id:e},data:{status:"FAILED",reason:t,finishedAt:new Date}}),this.changed()}async executeDelivery(e,t,A,r,i){let n=await (0,s.getPrismaClient)();await n.pushNotificationDelivery.update({where:{id:e.id},data:{status:"SENDING",startedAt:new Date}}),this.changed();try{let s=e.registrationId?await n.apnsRegistration.findUnique({where:{id:e.registrationId}}):null,o=e.registrationId?null:await n.apnsPushRecipientSecret.findUnique({where:{deliveryId:e.id}});if(e.registrationId&&(!s||"ACTIVE"!==s.status))return void await this.failDelivery(e.id,"Registration is no longer active");if(!s&&!o&&!i)return void await this.failDelivery(e.id,"Direct recipient token expired");let a=await this.authentication(t,e.environment,e.topic),l="mdm"===t.pushType?{mdm:s?.pushMagic}:A;if("mdm"===t.pushType&&!s?.pushMagic)return void await this.failDelivery(e.id,"Registration has no MDM push magic");let g=await this.client.send({environment:e.environment,authentication:a,deviceToken:s?.token||o?.token,broadcastTopic:i?.bundleId,payload:l,headers:{...r,...i?{"apns-channel-id":i.channelId}:{}}});await this.recordResponse(e.id,s,g,"TOKEN"===a.kind),"CERTIFICATE"===a.kind&&t.credentialId&&await n.apnsCertificateCredential.updateMany({where:{id:t.credentialId},data:{lastTestedAt:new Date,lastError:200===g.status?null:`HTTP ${g.status}${g.reason?`: ${g.reason}`:""}`}})}catch(A){if(!t.credentialId&&"mdm"!==t.pushType){let e=await (0,s.getPrismaClient)();await e.pushNotificationSettings.updateMany({where:{id:C},data:{tokenLastError:A instanceof Error?A.message:String(A)}})}if(t.credentialId){let e=await (0,s.getPrismaClient)();await e.apnsCertificateCredential.updateMany({where:{id:t.credentialId},data:{lastTestedAt:new Date,lastError:A instanceof Error?A.message:String(A)}})}await this.failDelivery(e.id,A instanceof Error?A.message:String(A))}finally{await n.apnsPushRecipientSecret.deleteMany({where:{deliveryId:e.id}})}}async recordResponse(e,t,A,r){let i=await (0,s.getPrismaClient)(),n=200===A.status;if(await i.pushNotificationDelivery.update({where:{id:e},data:{status:n?"SUCCEEDED":"FAILED",responseCode:A.status,reason:A.reason,responseTimestamp:A.timestamp,apnsId:A.apnsId,attempts:A.attempts,durationMs:A.durationMs,finishedAt:new Date}}),this.changed(),r&&await i.pushNotificationSettings.updateMany({where:{id:C},data:n?{tokenLastUsedAt:new Date,tokenLastError:null}:{tokenLastError:`HTTP ${A.status}${A.reason?`: ${A.reason}`:""}`}}),!t)return;if(n)return void await i.apnsRegistration.update({where:{id:t.id},data:{lastSentAt:new Date,lastFailureReason:null}});let o=410===A.status&&"Unregistered"===A.reason,a=400===A.status&&["BadDeviceToken","DeviceTokenNotForTopic"].includes(A.reason??""),l=!A.timestamp||A.timestamp>=t.lastRegisteredAt;o&&l||a?await i.apnsRegistration.updateMany({where:{id:t.id,lastRegisteredAt:t.lastRegisteredAt},data:{status:"INVALID",invalidatedAt:new Date,lastFailureReason:A.reason,lastFailureAt:new Date}}):await i.apnsRegistration.update({where:{id:t.id},data:{lastFailureReason:A.reason,lastFailureAt:new Date}})}async processBatch(e){let t=await (0,s.getPrismaClient)();if(1===(await t.pushNotificationBatch.updateMany({where:{id:e,status:"QUEUED"},data:{status:"SENDING",startedAt:new Date,error:null}})).count){this.activeBatchIds.add(e);try{let A=await t.pushNotificationBatch.findUnique({where:{id:e},include:{deliveries:{where:{status:"QUEUED"}}}});if(!A)return;let r=w(A.editorJson),i=w(A.payloadJson),s=w(A.headersJson),n=A.channelId?await t.apnsBroadcastChannel.findUnique({where:{id:A.channelId}}):null,o=0,a=Array.from({length:Math.min(16,A.deliveries.length)},async()=>{for(;o<A.deliveries.length;){let e=A.deliveries[o++];if(!e)return;await this.executeDelivery(e,r,i,s,n)}});await Promise.all(a);let l=await t.pushNotificationDelivery.findMany({where:{batchId:e},select:{status:!0}}),g=l.filter(e=>"SUCCEEDED"===e.status).length,h=l.length-g;await t.pushNotificationBatch.update({where:{id:e},data:{status:h?g?"PARTIAL":"FAILED":"SUCCEEDED",successCount:g,failureCount:h,finishedAt:new Date}}),this.changed()}finally{this.activeBatchIds.delete(e)}}}async recover(){if(this.recoveryStarted)return{queuedBatches:0,staleBatches:0,recoveredBatches:0,alreadyRunning:!0};this.recoveryStarted=!0;let e=0,t=0,A=0;try{let r=await (0,s.getPrismaClient)();for(;;){let i=new Date(Date.now()-12e4),s=await r.pushNotificationBatch.findMany({where:{OR:[{status:"QUEUED"},{status:"SENDING",startedAt:{lt:i}}]},orderBy:{createdAt:"asc"},take:100});if(!s.length)break;e+=s.filter(e=>"QUEUED"===e.status).length,t+=s.filter(e=>"SENDING"===e.status).length;let n=[];for(let e of s)if(!this.activeBatchIds.has(e.id)){if("SENDING"===e.status){await r.pushNotificationDelivery.updateMany({where:{batchId:e.id,status:"SENDING"},data:{status:"QUEUED",startedAt:null}});let t=await r.pushNotificationBatch.updateMany({where:{id:e.id,status:"SENDING",startedAt:{lt:i}},data:{status:"QUEUED",startedAt:null}});if(1!==t.count)continue}n.push(e.id)}if(!n.length)break;await Promise.all(n.map(e=>this.processBatch(e))),A+=n.length}return{queuedBatches:e,staleBatches:t,recoveredBatches:A}}finally{this.recoveryStarted=!1}}}],308810),e.s([],282790)},464841,218202,220629,689245,906148,e=>{"use strict";var t=e.i(135160);let A=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function r(e){return function e(t){return null===t?"null":Array.isArray(t)?`[${t.map(e).join(",")}]`:"object"==typeof t?`{${Object.entries(t).sort(([e],[t])=>e.localeCompare(t)).map(([t,A])=>`${JSON.stringify(t)}:${e(A)}`).join(",")}}`:JSON.stringify(t)}(e)}function i(e){return A.test(e)?`.${e}`:`[${JSON.stringify(e)}]`}function s(e,t){let A={},r=(e,t)=>{if(t&&"object"==typeof t&&!Array.isArray(t)&&Object.getPrototypeOf(t)===Object.prototype){let s=Object.entries(t);if(0===s.length)A[e]=t;else for(let[t,A]of s)r(`${e}${i(t)}`,A)}else A[e]=t};for(let[A,s]of Object.entries(t))r(`${e}${i(A)}`,s);return A}function n(e){let t={default:e.defaultParameters,additional:e.additionalParameters};return{...{source:e.entryType,time:e.clientTime,receivedAt:e.receivedAt,deviceIp:e.deviceIp,message:e.message,level:e.level,category:e.category,eventName:e.eventName,eventKind:e.eventKind,levelKind:e.level??e.eventKind,screenName:e.screenName,buildId:e.buildId,sessionId:e.sessionId,attributes:e.attributes,defaultParameters:e.defaultParameters,additionalParameters:e.additionalParameters,parameters:t,detail:"CONSOLE"===e.entryType?e.message:`${e.eventName??""}${e.screenName?` (${e.screenName})`:""}`},...s("attributes",e.attributes),...s("defaultParameters",e.defaultParameters),...s("additionalParameters",e.additionalParameters)}}function o(e){return null==e?"":"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):r(e)}function a(e){return Object.entries(n(e)).flatMap(([e,t])=>[e,o(t)]).join("\n")}let l=["CONSOLE","ANALYTICS","UNIFIED"],g=["TEXT","GLOB","REGEX"],h=["CONTAINS","DOES_NOT_CONTAIN","IS","IS_NOT","MATCHES_GLOB","MATCHES_REGEX","NO_REGEX_MATCH","IS_EMPTY","IS_NOT_EMPTY"],c={CONSOLE:["time","level","category","message","buildId","sessionId"],ANALYTICS:["time","eventKind","eventName","screenName","parameters","buildId","sessionId"],UNIFIED:["time","source","levelKind","detail","buildId","sessionId"]},E=["gray","stone","red","rose","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink"];e.s(["DEFAULT_TELEMETRY_COLUMNS",0,c,"TELEMETRY_COLORS",0,E,"TELEMETRY_FILTER_OPERATORS",0,h,"TELEMETRY_SEARCH_MODES",0,g,"TELEMETRY_VIEWS",0,l],218202);let Q=new Map;function I(e,A,r){let i;if(A.length>1024)throw Error("Pattern must not exceed 1024 characters");if(!g.includes(e))throw Error("Unknown search mode");let s=`${e}\u0000${r?"1":"0"}\u0000${A}`,n=Q.get(s);if(n)return n;if("TEXT"===e){let e=r?A:A.toLocaleLowerCase();i=t=>(r?t:t.toLocaleLowerCase()).includes(e)}else{let s="GLOB"===e?`^${function(e){let t="";for(let A=0;A<e.length;A+=1){let r=e[A];if("*"===r)t+=".*";else if("?"===r)t+=".";else if("["===r){let r=e.indexOf("]",A+1);if(-1===r)throw Error("Invalid glob pattern: missing ]");{let i=e.slice(A+1,r).replace(/^!/,"^");t+=`[${i}]`,A=r}}else t+=r.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}return t}(A)}$`:A,n=new t.RE2(s,r?"su":"isu");i=e=>n.test(e)}return Q.set(s,i),Q.size>100&&Q.delete(Q.keys().next().value),i}function d(e){return null==e||""===e||Array.isArray(e)&&0===e.length||"object"==typeof e&&!Array.isArray(e)&&0===Object.keys(e).length}function u(e){return"CONSOLE"===e?["CONSOLE"]:"ANALYTICS"===e?["ANALYTICS"]:["CONSOLE","ANALYTICS"]}function C(e,t){return"SEPARATOR"!==e.entryType&&!!u(t.view).includes(e.entryType)&&(!t.search||!!I(t.searchMode??"TEXT",t.search,!0===t.caseSensitive)(a(e)))&&function(e,t){if(!t)return!0;let A=n(e);return Object.entries(t).every(([e,t])=>0===t.length||t.includes(o(A[e])))}(e,t.quickFilters)&&function(e,t){if(!t?.conditions.length)return!0;let A=t.conditions.filter(t=>!t.sources?.length||"SEPARATOR"!==e.entryType&&t.sources.includes(e.entryType));if(0===A.length)return!0;let r=n(e),i=A.map(e=>(function(e,t){if(!h.includes(t.operator))throw Error("Unknown filter operator");let A=e[t.field];if("IS_EMPTY"===t.operator)return d(A);if("IS_NOT_EMPTY"===t.operator)return!d(A);let r=o(A),i=t.value??"",s=!0===t.caseSensitive,n=s?r:r.toLocaleLowerCase(),a=s?i:i.toLocaleLowerCase();if("CONTAINS"===t.operator)return n.includes(a);if("DOES_NOT_CONTAIN"===t.operator)return!n.includes(a);if("IS"===t.operator)return n===a;if("IS_NOT"===t.operator)return n!==a;if("MATCHES_GLOB"===t.operator)return I("GLOB",i,s)(r);let l=I("REGEX",i,s)(r);return"MATCHES_REGEX"===t.operator?l:!l})(r,e));return"ANY"===t.mode?i.some(Boolean):i.every(Boolean)}(e,t.advancedFilter)}function B(e){for(let t of(e.search&&I(e.searchMode??"TEXT",e.search,!0===e.caseSensitive),e.advancedFilter?.conditions??[]))["MATCHES_GLOB","MATCHES_REGEX","NO_REGEX_MATCH"].includes(t.operator)&&I("MATCHES_GLOB"===t.operator?"GLOB":"REGEX",t.value??"",!0===t.caseSensitive)}var f=e.i(666680),p=e.i(243783);e.i(805422);var y=e.i(661983),w=e.i(660526);let D="default";function m(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}function S(e){return{id:e.id,entryType:e.entryType,clientTime:e.clientTime.toISOString(),receivedAt:e.receivedAt.toISOString(),deviceIp:e.deviceIp,message:e.message,level:e.level,category:e.category,eventName:e.eventName,eventKind:e.eventKind,screenName:e.screenName,buildId:e.buildId,sessionId:e.sessionId,attributes:m(e.attributesJson),defaultParameters:m(e.defaultParametersJson),additionalParameters:m(e.additionalParametersJson),highlightColor:e.highlightColor,separatorKind:e.separatorKind,separatorName:e.separatorName}}function N(e){if(!l.includes(e))throw Error("Unknown telemetry view");return e}function R(e){let t=e.trim();if(!t||t.length>100)throw Error("Name must contain 1-100 characters");return{name:t,normalizedName:t.toLocaleLowerCase()}}function b(e){let t;try{t=new URL(e.trim())}catch{throw Error("Telemetry URL must be a valid HTTP(S) origin")}if(!["http:","https:"].includes(t.protocol)||t.username||t.password||"/"!==t.pathname&&""!==t.pathname||t.search||t.hash)throw Error("Telemetry URL must be an HTTP(S) origin without a path, credentials, query, or fragment");return t.origin}function U(e){return e?.trim()?b(e):null}function T(e){if(!e?.trim())return null;try{let t=new URL(e.trim());return["http:","https:"].includes(t.protocol)?t.origin:null}catch{return null}}function F(e){if(!e)return null;try{let t=JSON.parse(Buffer.from(e,"base64url").toString("utf8"));if(t&&"object"==typeof t&&"string"==typeof t.clientTime&&"string"==typeof t.receivedAt&&"string"==typeof t.id&&Number.isFinite(Date.parse(t.clientTime))&&Number.isFinite(Date.parse(t.receivedAt)))return t}catch{}throw Error("Invalid telemetry cursor")}function k(e){let t=new Date(e.clientTime),A=new Date(e.receivedAt);return{OR:[{clientTime:{lt:t}},{clientTime:t,receivedAt:{lt:A}},{clientTime:t,receivedAt:A,id:{lt:e.id}}]}}function M(e){return Buffer.from(JSON.stringify({clientTime:e.clientTime,receivedAt:e.receivedAt,id:e.id})).toString("base64url")}function L(e,t){return e.clientTime!==t.clientTime?e.clientTime<t.clientTime:e.receivedAt!==t.receivedAt?e.receivedAt<t.receivedAt:e.id<t.id}function v(e){return!!(e.search||Object.values(e.quickFilters??{}).some(e=>e.length)||e.advancedFilter?.conditions.length)}function Y(e){return{entryType:{in:u(e)}}}let H={source:{name:"entryType",nullable:!1},deviceIp:{name:"deviceIp",nullable:!0},message:{name:"message",nullable:!0},level:{name:"level",nullable:!0},category:{name:"category",nullable:!0},eventName:{name:"eventName",nullable:!0},eventKind:{name:"eventKind",nullable:!0},screenName:{name:"screenName",nullable:!0},buildId:{name:"buildId",nullable:!0},sessionId:{name:"sessionId",nullable:!0}};function O(e){let t=[...new Set(e.map(e=>e.trim()).filter(Boolean))];if(0===t.length||t.length>100||t.some(e=>e.length>512))throw Error("Columns must contain 1-100 valid column identifiers");return JSON.stringify(t)}function G(e,t){try{let t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>"string"==typeof e)&&t.length)return t}catch{}return c[t]}e.s(["TelemetryService",0,class{subscribe(){return y.agentEventBus.iterate(y.TELEMETRY_CHANGED_TOPIC)}subscribeSettings(){return y.agentEventBus.iterate(y.TELEMETRY_SETTINGS_CHANGED_TOPIC)}publish(e,t){y.agentEventBus.publish(y.TELEMETRY_CHANGED_TOPIC,{ids:e,reason:t})}notifyChange(e,t){this.publish(e,t)}async rawSettings(){return(await (0,p.getPrismaClient)()).telemetrySettings.upsert({where:{id:D},create:{id:D},update:{}})}async settings(e={}){let[t,A]=await Promise.all([this.rawSettings(),Promise.resolve(function(e={}){let t,A=T(e.requestOrigin),r=(e.localOrigins??function(){let e=Number(process.env.PORT??3e3),t=Number.isInteger(e)&&e>0&&e<=65535?e:3e3;var A=(0,w.networkInterfaces)();let r=new Set;for(let e of Object.values(A))for(let A of e??[])A&&!A.internal&&("IPv4"===A.family?r.add(`http://${A.address}:${t}`):"IPv6"!==A.family||A.address.toLowerCase().startsWith("fe80:")||r.add(`http://[${A.address}]:${t}`));return[...r]}()).flatMap(e=>{try{return[b(e)]}catch{return[]}}),i=T(e.publicBaseUrl??process.env.PUBLIC_BASE_URL),s=!!A&&("localhost"===(t=new URL(A).hostname.toLowerCase().replace(/^\[|\]$/g,""))||"::1"===t||t.endsWith(".local")||/^127\./.test(t)||/^10\./.test(t)||/^192\.168\./.test(t)||/^172\.(1[6-9]|2\d|3[01])\./.test(t)),n=A&&s?A:r[0]??A??"http://127.0.0.1:3000",o=i??A??n;return{local:n,remote:o}}(e))]);return{localBaseUrlOverride:t.localBaseUrlOverride,remoteBaseUrlOverride:t.remoteBaseUrlOverride,consoleCollectionEnabled:t.consoleCollectionEnabled,analyticsCollectionEnabled:t.analyticsCollectionEnabled,detectedLocalBaseUrl:A.local,detectedRemoteBaseUrl:A.remote,effectiveLocalBaseUrl:t.localBaseUrlOverride??A.local,effectiveRemoteBaseUrl:t.remoteBaseUrlOverride??A.remote,updatedAt:t.updatedAt.toISOString()}}async saveSettings(e,t={}){let A=await (0,p.getPrismaClient)(),r=await this.rawSettings(),i=await A.telemetrySettings.update({where:{id:D},data:{localBaseUrlOverride:void 0===e.localBaseUrlOverride?r.localBaseUrlOverride:U(e.localBaseUrlOverride),remoteBaseUrlOverride:void 0===e.remoteBaseUrlOverride?r.remoteBaseUrlOverride:U(e.remoteBaseUrlOverride),consoleCollectionEnabled:e.consoleCollectionEnabled??r.consoleCollectionEnabled,analyticsCollectionEnabled:e.analyticsCollectionEnabled??r.analyticsCollectionEnabled}});return y.agentEventBus.publish(y.TELEMETRY_SETTINGS_CHANGED_TOPIC,{updatedAt:i.updatedAt.toISOString()}),this.settings(t)}async buildSettings(e,t={}){let A=await this.settings(t),r="SIMULATOR"===e?A.effectiveLocalBaseUrl:A.effectiveRemoteBaseUrl;return{localBaseUrl:A.effectiveLocalBaseUrl,remoteBaseUrl:A.effectiveRemoteBaseUrl,selectedBaseUrl:r,consoleLogsUrl:`${r}/api/telemetry/console-logs`,analyticsEventsUrl:`${r}/api/telemetry/analytics-events`,consoleCollectionEnabled:A.consoleCollectionEnabled,analyticsCollectionEnabled:A.analyticsCollectionEnabled}}async ingestConsole(e,t){if(!(await this.rawSettings()).consoleCollectionEnabled)return{collected:!1,items:[]};let A=await (0,p.getPrismaClient)(),r=new Date,i=e.map(e=>{let A={id:(0,f.randomUUID)(),entryType:"CONSOLE",clientTime:new Date(e.time),receivedAt:r,deviceIp:t,message:e.message,level:e.level,category:e.category,buildId:e.buildId,sessionId:e.sessionId,attributesJson:JSON.stringify(e.attributes),searchText:""},i=S({...A,eventName:null,eventKind:null,screenName:null,defaultParametersJson:"{}",additionalParametersJson:"{}",highlightColor:null,separatorKind:null,separatorName:null});return{...A,searchText:a(i)}});return await A.telemetryEntry.createMany({data:i}),this.publish(i.map(({id:e})=>e),"INGESTED"),{collected:!0,items:i.map(({id:e})=>({id:e,receivedAt:r.toISOString(),deviceIp:t}))}}async ingestAnalytics(e,t){if(!(await this.rawSettings()).analyticsCollectionEnabled)return{collected:!1,items:[]};let A=await (0,p.getPrismaClient)(),r=new Date,i=e.map(e=>{let A={id:(0,f.randomUUID)(),entryType:"ANALYTICS",clientTime:new Date(e.time),receivedAt:r,deviceIp:t,eventName:e.eventName,eventKind:e.kind,screenName:e.screenName,buildId:e.buildId,sessionId:e.sessionId,defaultParametersJson:JSON.stringify(e.defaultParameters),additionalParametersJson:JSON.stringify(e.additionalParameters),searchText:""},i=S({...A,message:null,level:null,category:null,attributesJson:"{}",highlightColor:null,separatorKind:null,separatorName:null});return{...A,searchText:a(i)}});return await A.telemetryEntry.createMany({data:i}),this.publish(i.map(({id:e})=>e),"INGESTED"),{collected:!0,items:i.map(({id:e})=>({id:e,receivedAt:r.toISOString(),deviceIp:t}))}}async scan(e,t,A=1e3){let r=await (0,p.getPrismaClient)(),i=null;for(;;){let s=await r.telemetryEntry.findMany({where:i?{AND:[e,{OR:[{clientTime:{lt:i.clientTime}},{clientTime:i.clientTime,receivedAt:{lt:i.receivedAt}},{clientTime:i.clientTime,receivedAt:i.receivedAt,id:{lt:i.id}}]}]}:e,orderBy:[{clientTime:"desc"},{receivedAt:"desc"},{id:"desc"}],take:A});for(let e of s)if(await t(S(e))===!1)return;if(s.length<A)break;i=s.at(-1)}}async timeline(e){let t=N(e.view);B(e);let A=Math.min(500,Math.max(1,e.first??200)),r=F(e.after),i=await (0,p.getPrismaClient)(),s=await i.telemetryEntry.count({where:Y(t)}),n=v(e);if(!n){let e=[],i=0,n=!1,o=null,a=!1,l={entryType:{in:[...u(t),"SEPARATOR"]}};return(await this.scan(r?{AND:[l,k(r)]}:l,t=>{if("SEPARATOR"===t.entryType){a&&e.push(t),a=!1;return}if(i<A){e.push(t),i+=1,o=t,a=!0;return}return n=!0,!1},Math.min(1e3,A+1)),o)?{items:e,nextCursor:n?M(o):null,matchingCount:s,totalCount:s}:{items:[],nextCursor:null,matchingCount:s,totalCount:s}}let o=[],a=0,l=!1,g=0,h=null,c=!1,E=!1,Q=function(e){let t=[];for(let[A,r]of(e.search&&(e.searchMode??"TEXT")==="TEXT"&&!0===e.caseSensitive&&t.push({searchText:{contains:e.search}}),Object.entries(e.quickFilters??{}))){if(!r.length)continue;let e=H[A];if(!e)continue;let i=function(e,t){let A=[...new Set(t)],r=A.filter(Boolean),i=[];return(r.length&&i.push({[e.name]:{in:r}}),A.includes("")&&(i.push({[e.name]:""}),e.nullable&&i.push({[e.name]:null})),0===i.length)?null:1===i.length?i[0]:{OR:i}}(e,r);i&&t.push(i)}if(e.advancedFilter?.mode==="ALL")for(let A of e.advancedFilter.conditions){if(A.sources?.length||!0!==A.caseSensitive)continue;let e=H[A.field],r=A.value??"";e&&r&&("IS"===A.operator?t.push({[e.name]:r}):"CONTAINS"===A.operator&&t.push({[e.name]:{contains:r}}))}return t.length?1===t.length?t[0]:{AND:t}:null}(e);return(await this.scan(Q?{OR:[{entryType:"SEPARATOR"},{AND:[Y(t),Q]}]}:{entryType:{in:[...u(t),"SEPARATOR"]}},t=>{if("SEPARATOR"===t.entryType){(!r||L(t,r))&&(!n&&!l||n&&c&&!E)&&o.push(t),c=!1,E=!1;return}!C(t,e)||(a+=1,(!r||L(t,r))&&(g<A?(o.push(t),g+=1,h=t,c=!0):(l=!0,E=!0)))}),h)?{items:o,nextCursor:l?M(h):null,matchingCount:a,totalCount:s}:{items:[],nextCursor:null,matchingCount:a,totalCount:s}}async entries(e){let t=await (0,p.getPrismaClient)(),A=[...new Set(e)].slice(0,1e3);return(await t.telemetryEntry.findMany({where:{id:{in:A}}})).map(S)}async entry(e,t){let A=N(t),r=(await this.entries([e]))[0]??null;if(!r)return null;if("SEPARATOR"===r.entryType||!u(A).includes(r.entryType))throw Error(`Telemetry entry ${e} does not belong to ${A}`);return r}async latestSeparator(){let e=await (0,p.getPrismaClient)(),t=await e.telemetryEntry.findFirst({where:{entryType:"SEPARATOR"},orderBy:[{clientTime:"desc"},{receivedAt:"desc"},{id:"desc"}]});return t?S(t):null}async separators(e){let t=Math.min(500,Math.max(1,e.first??100)),A=F(e.after),r=[{entryType:"SEPARATOR"}];e.kind?.trim()&&r.push({separatorKind:e.kind.trim()}),e.name?.trim()&&r.push({separatorName:{contains:e.name.trim()}}),e.buildId?.trim()&&r.push({buildId:e.buildId.trim()}),A&&r.push(k(A));let i=await (0,p.getPrismaClient)(),s=await i.telemetryEntry.findMany({where:{AND:r},orderBy:[{clientTime:"desc"},{receivedAt:"desc"},{id:"desc"}],take:t+1}),n=s.length>t,o=s.slice(0,t).map(S);return{items:o,nextCursor:n&&o.length?M(o.at(-1)):null}}async timelineSinceLatestSeparator(e){let t,A,r=N(e.view);B(e);let i=Math.min(500,Math.max(1,e.first??200)),s=F(e.after),n=await this.latestSeparator(),o=n?{clientTime:n.clientTime,receivedAt:n.receivedAt,id:n.id}:null,a=v(e),l=o?{AND:[Y(r),(t=new Date(o.clientTime),{OR:[{clientTime:{gt:t}},{clientTime:t,receivedAt:{gt:A=new Date(o.receivedAt)}},{clientTime:t,receivedAt:A,id:{gt:o.id}}]})]}:Y(r);if(!a){let e=await (0,p.getPrismaClient)(),t=await e.telemetryEntry.count({where:l}),A=[],r=!1,o=null;return await this.scan(s?{AND:[l,k(s)]}:l,e=>{if(A.length<i){A.push(e),o=e;return}return r=!0,!1},Math.min(1e3,i+1)),{separator:n,items:A,nextCursor:r&&o?M(o):null,matchingCount:t,totalCount:t}}let g=[],h=0,c=0,E=!1,Q=null;return await this.scan(l,t=>{c+=1,!C(t,e)||(h+=1,(!s||L(t,s))&&(g.length<i?(g.push(t),Q=t):E=!0))}),{separator:n,items:g,nextCursor:E&&Q?M(Q):null,matchingCount:h,totalCount:c}}async facets(e){let t=N(e),A="CONSOLE"===t?["level","category","deviceIp","buildId","sessionId"]:"ANALYTICS"===t?["eventKind","eventName","screenName","deviceIp","buildId","sessionId"]:["source","level","eventKind","deviceIp","buildId","sessionId"],r=Object.fromEntries(A.map(e=>[e,new Set]));return await this.scan(Y(t),e=>{let i=n(e);for(let e of A){let t=i[e];null!=t&&""!==String(t)&&r[e].add(String(t))}"UNIFIED"===t&&r.source.add(e.entryType)}),Object.fromEntries(Object.entries(r).map(([e,t])=>[e,[...t].sort((e,t)=>e.localeCompare(t))]))}async fields(e){let t=N(e),A=new Set;return await this.scan(Y(t),e=>{for(let t of Object.keys(n(e)))A.add(t)}),[...A].sort((e,t)=>e.localeCompare(t))}async addSeparator(e){let t=e?.trim()||null;if(t&&t.length>100)throw Error("Separator name must not exceed 100 characters");let A=await (0,p.getPrismaClient)(),r=await A.telemetryEntry.create({data:{id:(0,f.randomUUID)(),entryType:"SEPARATOR",clientTime:new Date,receivedAt:new Date,separatorKind:"MANUAL",separatorName:t}});return this.publish([r.id],"SEPARATOR_ADDED"),S(r)}async addBuildSeparator(e){let t=await (0,p.getPrismaClient)(),A=await t.telemetryEntry.upsert({where:{separatorKind_buildId:{separatorKind:"BUILD",buildId:e.buildId}},create:{id:(0,f.randomUUID)(),entryType:"SEPARATOR",clientTime:e.clientTime??new Date,receivedAt:new Date,separatorKind:"BUILD",separatorName:e.name.slice(0,100),buildId:e.buildId},update:{}});return this.publish([A.id],"BUILD_SEPARATOR_ADDED"),S(A)}async highlight(e,t){if(null!==t&&!E.includes(t))throw Error("Unknown telemetry highlight color");let A=await (0,p.getPrismaClient)();if("SEPARATOR"===(await A.telemetryEntry.findUniqueOrThrow({where:{id:e}})).entryType)throw Error("Separators cannot be highlighted");let r=await A.telemetryEntry.update({where:{id:e},data:{highlightColor:t}});return this.publish([e],"HIGHLIGHT_CHANGED"),S(r)}selectionRanges(e){return(Array.isArray(e.ranges)?e.ranges.slice(0,500):[]).map(e=>{if(!e||"object"!=typeof e)throw Error("Invalid telemetry selection range");let t=e.startTime?Date.parse(e.startTime):null,A=e.endTime?Date.parse(e.endTime):null;if(null!==t&&!Number.isFinite(t)||null!==A&&!Number.isFinite(A)||null!==t&&null!==A&&t>=A)throw Error("Invalid telemetry selection range");return{start:t,end:A,includeSeparators:!0===e.includeSeparators}})}async selectionIds(e){let t=new Set((Array.isArray(e.ids)?e.ids:[]).filter(e=>"string"==typeof e).slice(0,1e5)),A=new Set((Array.isArray(e.excludedIds)?e.excludedIds:[]).filter(e=>"string"==typeof e).slice(0,1e5));if(!e.query){for(let e of A)t.delete(e);return[...t]}if("object"!=typeof e.query||Array.isArray(e.query))throw Error("Invalid telemetry selection query");N(e.query.view),B(e.query);let r=this.selectionRanges(e);return await this.scan(e.includeSeparators||r.some(e=>e.includeSeparators)?{entryType:{in:[...u(e.query.view),"SEPARATOR"]}}:Y(e.query.view),i=>{let s=Date.parse(i.clientTime),n=r.filter(e=>(null===e.start||s>=e.start)&&(null===e.end||s<e.end));if((!(r.length>0)||0!==n.length)&&!A.has(i.id)){if("SEPARATOR"===i.entryType){(e.includeSeparators||n.some(e=>e.includeSeparators))&&t.add(i.id);return}C(i,e.query)&&t.add(i.id)}}),[...t]}async clearSelected(e){let t=await this.selectionIds(e);if(!t.length)return 0;let A=await (0,p.getPrismaClient)(),r=0;for(let e=0;e<t.length;e+=500)r+=(await A.telemetryEntry.deleteMany({where:{id:{in:t.slice(e,e+500)}}})).count;return this.publish([],"CLEARED"),r}async clearAll(e,t=!1){let A=N(e),r=await (0,p.getPrismaClient)(),i=await r.telemetryEntry.deleteMany({where:t?{entryType:{in:[...u(A),"SEPARATOR"]}}:Y(A)});return this.publish([],t?"CLEARED_WITH_SEPARATORS":"CLEARED"),i.count}async clearBeforeLatestSeparator(e,t=!1){let A=N(e),r=await this.latestSeparator();if(!r)return 0;let i=await (0,p.getPrismaClient)(),s=await i.telemetryEntry.deleteMany({where:{AND:[t?{entryType:{in:[...u(A),"SEPARATOR"]}}:Y(A),k({clientTime:r.clientTime,receivedAt:r.receivedAt,id:r.id})]}});return this.publish([],"CLEARED_BEFORE_SEPARATOR"),s.count}async clearScoped(e){let t=N(e.view);if("ALL"===e.scope)return this.clearAll(t,!!e.includeSeparators);if("BEFORE_LATEST_SEPARATOR"===e.scope)return this.clearBeforeLatestSeparator(t,!!e.includeSeparators);if("MATCHING"===e.scope){if(!e.query)throw Error("A matching query is required");return this.clearSelected({query:{...e.query,view:t}})}let A=[...new Set(e.ids??[])].slice(0,1e3);if(!A.length)throw Error("At least one telemetry entry ID is required");let r=await (0,p.getPrismaClient)(),i=await r.telemetryEntry.findMany({where:{id:{in:A},entryType:{in:[...u(t),"SEPARATOR"]}},select:{id:!0}});if(!i.length)return 0;let s=await r.telemetryEntry.deleteMany({where:{id:{in:i.map(({id:e})=>e)}}});return this.publish([],"CLEARED"),s.count}async viewSettings(e){let t=N(e),A=await (0,p.getPrismaClient)(),r=await A.telemetryViewSettings.upsert({where:{view:t},create:{id:t,view:t,columnsJson:JSON.stringify(c[t])},update:{}});return{view:t,columns:G(r.columnsJson,t),timeFormat:"24"===r.timeFormat?"24":"12",activeColumnPresetId:r.activeColumnPresetId,activeSavedFilterId:r.activeSavedFilterId}}async saveViewSettings(e){let t=N(e.view);if(e.timeFormat&&!["12","24"].includes(e.timeFormat))throw Error("Unknown time format");let A=await this.viewSettings(t),r=await (0,p.getPrismaClient)();return await r.telemetryViewSettings.upsert({where:{view:t},create:{id:t,view:t,columnsJson:O(e.columns??A.columns),timeFormat:e.timeFormat??A.timeFormat,activeColumnPresetId:e.activeColumnPresetId??null,activeSavedFilterId:e.activeSavedFilterId??null},update:{columnsJson:e.columns?O(e.columns):void 0,timeFormat:e.timeFormat??void 0,activeColumnPresetId:void 0===e.activeColumnPresetId?void 0:e.activeColumnPresetId,activeSavedFilterId:void 0===e.activeSavedFilterId?void 0:e.activeSavedFilterId}}),this.viewSettings(t)}async columnPresets(e){let t=N(e),A=await (0,p.getPrismaClient)();return(await A.telemetryColumnPreset.findMany({where:{view:t},orderBy:[{isDefault:"desc"},{name:"asc"}]})).map(e=>({id:e.id,view:t,name:e.name,columns:G(e.columnsJson,t),isDefault:e.isDefault,createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async saveColumnPreset(e){let t=N(e.view),{name:A,normalizedName:r}=R(e.name),i=await (0,p.getPrismaClient)(),s=e.id??(0,f.randomUUID)();return await i.$transaction(async i=>{e.isDefault&&await i.telemetryColumnPreset.updateMany({where:{view:t},data:{isDefault:!1}}),await i.telemetryColumnPreset.upsert({where:{id:s},create:{id:s,view:t,name:A,normalizedName:r,columnsJson:O(e.columns),isDefault:!0===e.isDefault},update:{name:A,normalizedName:r,columnsJson:O(e.columns),isDefault:e.isDefault??void 0}})}),(await this.columnPresets(t)).find(e=>e.id===s)}async deleteColumnPreset(e){let t=await (0,p.getPrismaClient)();return await t.telemetryViewSettings.updateMany({where:{activeColumnPresetId:e},data:{activeColumnPresetId:null}}),(await t.telemetryColumnPreset.deleteMany({where:{id:e}})).count>0}async savedFilters(e){let t=N(e),A=await (0,p.getPrismaClient)();return(await A.telemetrySavedFilter.findMany({where:{view:t},orderBy:{name:"asc"}})).map(e=>({id:e.id,view:t,name:e.name,definition:JSON.parse(e.definitionJson),createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async saveFilter(e){let t=N(e.view);B({view:t,advancedFilter:e.definition});let{name:A,normalizedName:i}=R(e.name),s=await (0,p.getPrismaClient)(),n=e.id??(0,f.randomUUID)();return await s.telemetrySavedFilter.upsert({where:{id:n},create:{id:n,view:t,name:A,normalizedName:i,definitionJson:r(e.definition)},update:{name:A,normalizedName:i,definitionJson:r(e.definition)}}),(await this.savedFilters(t)).find(e=>e.id===n)}async deleteFilter(e){let t=await (0,p.getPrismaClient)();return await t.telemetryViewSettings.updateMany({where:{activeSavedFilterId:e},data:{activeSavedFilterId:null}}),(await t.telemetrySavedFilter.deleteMany({where:{id:e}})).count>0}async exportEntries(e){B(e.query);let t=e.selection??(e.ids?.length?{ids:e.ids}:null);if(t){let e=new Set(await this.selectionIds(t)),A=[],r=[...e];for(let e=0;e<r.length;e+=500)await this.scan({id:{in:r.slice(e,e+500)}},e=>{A.push(e)});return A.sort((e,t)=>{let A=t.clientTime.localeCompare(e.clientTime);return A||t.receivedAt.localeCompare(e.receivedAt)||t.id.localeCompare(e.id)}),A}let A=[],r=!1,i=v(e.query);return await this.scan({entryType:{in:[...u(e.query.view),"SEPARATOR"]}},t=>{"SEPARATOR"===t.entryType?((!i||r)&&A.push(t),r=!1):C(t,e.query)&&(A.push(t),r=!0)}),A}}],220629);let V={type:"object",additionalProperties:{description:"Any JSON value; objects may be nested to a maximum depth of 10."},maxProperties:500},x={type:"string",minLength:1,maxLength:256},J={type:"string",format:"date-time",description:"ISO-8601 timestamp including Z or an explicit UTC offset."},P={id:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},entryType:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},receivedAt:{type:"string",format:"date-time",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},deviceIp:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},highlightColor:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},separatorKind:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},separatorName:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."}},W={type:"object",required:["collected","items"],properties:{collected:{type:"boolean"},items:{type:"array",items:{type:"object",required:["id","receivedAt","deviceIp"],properties:{id:{type:"string",format:"uuid"},receivedAt:{type:"string",format:"date-time"},deviceIp:{type:"string"}}}}}};function _(e,t,A){return{post:{tags:["Telemetry"],summary:A,description:"Unauthenticated ingestion. Accepts one record or an atomic `{ items: [...] }` batch of at most 500 records. The request body is capped at 2 MiB.",requestBody:{required:!0,content:{"application/json":{schema:{oneOf:[e,{type:"object",additionalProperties:!1,required:["items"],properties:{items:{type:"array",minItems:1,maxItems:500,items:e}}}]},examples:{single:{value:t},batch:{value:{items:[t]}}}}}},responses:{201:{description:"Records collected",content:{"application/json":{schema:W}}},202:{description:"Payload valid but collection is disabled",content:{"application/json":{schema:W}}},400:{$ref:"#/components/responses/TelemetryBadRequest"},413:{$ref:"#/components/responses/TelemetryPayloadTooLarge"},415:{$ref:"#/components/responses/TelemetryUnsupportedMediaType"},500:{$ref:"#/components/responses/InternalError"}}}}}let q={tags:[{name:"Telemetry"}],paths:{"/api/telemetry/console-logs":_({$ref:"#/components/schemas/ConsoleLogInput"},{message:"Checkout completed",time:"2026-07-20T18:30:00.000Z",level:"info",category:"checkout",buildId:"build-123",sessionId:"session-456",attributes:{durationMs:412,cache:{hit:!0}}},"Collect console logs"),"/api/telemetry/analytics-events":_({$ref:"#/components/schemas/AnalyticsEventInput"},{eventName:"checkout_completed",kind:"product",screenName:"Checkout",time:"2026-07-20T18:30:00.000Z",defaultParameters:{appVersion:"1.0"},additionalParameters:{cartItems:3},buildId:"build-123",sessionId:"session-456"},"Collect analytics events")},components:{schemas:{ConsoleLogInput:{type:"object",additionalProperties:!1,required:["message","time","level","category","buildId","sessionId","attributes"],properties:{...P,message:{type:"string",minLength:1,maxLength:65536},time:J,level:x,category:x,buildId:x,sessionId:x,attributes:V}},AnalyticsEventInput:{type:"object",additionalProperties:!1,required:["eventName","kind","screenName","time","defaultParameters","additionalParameters","buildId","sessionId"],properties:{...P,eventName:x,kind:x,screenName:x,time:J,defaultParameters:V,additionalParameters:V,buildId:x,sessionId:x}}},responses:{TelemetryBadRequest:{description:"Malformed or invalid telemetry payload"},TelemetryPayloadTooLarge:{description:"Request exceeds the 2 MiB limit"},TelemetryUnsupportedMediaType:{description:"Content-Type is not application/json"}}}};e.s(["telemetryOpenApiDocument",0,q],689245);var Z=e.i(750227),j=e.i(477685);let X=new Map,K=new Map,z=[["year",31536e3],["month",2592e3],["week",604800],["day",86400],["hour",3600],["minute",60]];function $(e,t="short",A={}){let r=function(e){if(null==e||""===e)return null;let t=e instanceof Date?e:new Date(e);return Number.isFinite(t.getTime())?t:null}(e);if(!r)return A.fallback??"—";let i=A.locale||"en";if("relative"===t){var s=A.now??Date.now();let e=Math.round((r.getTime()-s)/1e3),t=function(e){let t=K.get(e);if(t)return t;let A=new Intl.RelativeTimeFormat(e,{numeric:"auto"});return K.set(e,A),A}(i);for(let[A,r]of z)if(Math.abs(e)>=r)return t.format(Math.round(e/r),A);return t.format(e,"second")}let n=A.hour12??!0,o=A.utc?"UTC":A.timeZone,a=A.showTime??!0;return(function(e,t,A){let r=X.get(e);if(r)return r;let i=new Intl.DateTimeFormat(t,A);return X.set(e,i),i})(`${i}|${t}|${n}|${o??""}|${a}`,i,function(e,t,A,r){let i={hourCycle:t?"h12":"h23"},s=A?{timeZone:A}:{};if("time"===e)return{timeStyle:"medium",...i,...s};let n="long"===e?"full":"medium";return r?{dateStyle:n,timeStyle:"medium",...i,...s}:{dateStyle:n,...s}}(t,n,o,a)).format(r)}let ee="TelemetryUnicode",et="TelemetryEmoji",eA=(0,Z.join)(process.cwd(),"node_modules","@fontpkg","unifont","unifont-15.0.01.ttf"),er=(0,Z.join)(process.cwd(),"node_modules","@expo-google-fonts","noto-emoji","400Regular","NotoEmoji_400Regular.ttf"),ei=new Intl.Segmenter(void 0,{granularity:"grapheme"}),es=/\p{Extended_Pictographic}|\p{Regional_Indicator}|\u20e3|\ufe0f/u;function en(e,t){let A=es.test(t);return e.font(A?et:ee),{emoji:A,value:t,width:e.widthOfString(t)}}function eo(e){e.font(ee);let t=e.currentLineHeight(!0);return e.font(et),Math.max(t,e.currentLineHeight(!0))}function ea(e,t,A,r=1/0){let i=Math.max(1,A),s=[{glyphs:[],width:0}],n=!1;for(let{segment:A}of ei.segment(t)){if(/^[\r\n]+$/.test(A)){if(s.length>=r){n=!0;break}s.push({glyphs:[],width:0});continue}let t=en(e,A),o=s.at(-1);if(o.glyphs.length&&o.width+t.width>i){if(s.length>=r){n=!0;break}o={glyphs:[],width:0},s.push(o)}o.glyphs.push(t),o.width+=t.width}if(n){let t=s.at(-1),A=en(e,"…");for(;t.glyphs.length&&t.width+A.width>i;)t.width-=t.glyphs.pop().width;t.glyphs.push(A),t.width+=A.width}return s}function el(e,t,A,r,i){let s=Math.max(1,i.width??e.page.width-A-e.page.margins.right),n=eo(e);ea(e,t,s,!1===i.lineBreak?1:i.height?Math.max(1,Math.floor(i.height/n)):1/0).forEach((t,o)=>{let a="center"===i.align?A+(s-t.width)/2:"right"===i.align?A+s-t.width:A,l=[];for(let e of t.glyphs){let t=l.at(-1);t?.emoji===e.emoji?(t.value+=e.value,t.width+=e.width):l.push({...e})}for(let t of l)e.font(t.emoji?et:ee).text(t.value,a,r+o*n,{lineBreak:!1}),a+=t.width})}let eg={time:"Time",receivedAt:"Received",source:"Source",level:"Level",category:"Category",message:"Message",eventKind:"Kind",levelKind:"Level / Kind",eventName:"Name",screenName:"Screen Name",parameters:"Parameters",detail:"Detail",deviceIp:"Device IP",buildId:"Build ID",sessionId:"Session ID"},eh={CONTAINS:"contains",DOES_NOT_CONTAIN:"does not contain",IS:"is",IS_NOT:"is not",MATCHES_GLOB:"matches glob",MATCHES_REGEX:"matches regex",NO_REGEX_MATCH:"does not match regex",IS_EMPTY:"is empty",IS_NOT_EMPTY:"is not empty"};function ec(e){return null==e?"":"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):JSON.stringify(e)}function eE(e){return Object.entries(n(e)).filter(([e])=>e.startsWith("defaultParameters.")||e.startsWith("defaultParameters[")||e.startsWith("additionalParameters.")||e.startsWith("additionalParameters[")).map(([e,t])=>`${e}: ${ec(t)}`).join(" • ")}function eQ(e,t,A){return $(e,A?"short":"time",{locale:t.locale||"en",hour12:"24"!==t.timeFormat,timeZone:t.timeZone??void 0})}function eI(e,t,A){return"time"===t?eQ(e.clientTime,A,!0):"receivedAt"===t?eQ(e.receivedAt,A,!0):"source"===t?"CONSOLE"===e.entryType?"Console":"Analytics":"levelKind"===t?e.level??e.eventKind??"":"parameters"===t?eE(e):"detail"===t?"CONSOLE"===e.entryType?e.message??"":`${e.eventName??""}${e.screenName?` (${e.screenName})`:""}${eE(e)?` - ${eE(e)}`:""}`:ec(n(e)[t])}function ed(e){let t=[...new Set(e.fields.map(e=>e.trim()).filter(Boolean))];return t.length?t.slice(0,30):c[e.view]}function eu(e){return eg[e]?eg[e]:e.replace(/^attributes[.[]/,"").replace(/^defaultParameters[.[]/,"Default: ").replace(/^additionalParameters[.[]/,"Additional: ").replace(/]$/g,"")}function eC(e){return"message"===e||"detail"===e?2.8:"parameters"===e?2.4:"time"===e||"receivedAt"===e?1.35:"sessionId"===e?1.2:"buildId"===e||"screenName"===e?.95:"category"===e||"eventName"===e?.9:"level"===e||"eventKind"===e||"levelKind"===e||"source"===e?.65:e.startsWith("attributes.")||e.startsWith("attributes[")||"deviceIp"===e?.8:1}function eB(e){return String(e??"").replace(/\s+/g," ").trim().slice(0,200)}function ef(e){let t=/^[=+\-@]/.test(e)?`'${e}`:e;return`"${t.replaceAll('"','""')}"`}function ep(e){return e.replaceAll("|","\\|").replace(/[\r\n]+/g," ")}function ey(e,t){return $(e.clientTime,"long",{locale:t.locale||"en",showTime:!1,timeZone:t.timeZone??void 0})}async function ew(e,t){let A=ed(t),r=new j.default({size:"LETTER",layout:"landscape",margin:32,bufferPages:!0});r.registerFont(ee,eA),r.registerFont(et,er);let i=[];r.on("data",e=>i.push(e));let s=new Promise((e,t)=>{r.on("end",()=>{let t=new Uint8Array(i.reduce((e,t)=>e+t.byteLength,0)),A=0;for(let e of i)t.set(e,A),A+=e.byteLength;e(t)}),r.on("error",t)}),n=r.page.width-r.page.margins.left-r.page.margins.right,o=A.map(eC),a=o.reduce((e,t)=>e+t,0),l=o.map(e=>n*e/a),g=r.page.margins.left,h=l.map(e=>{let t=g;return g+=e,t}),c=()=>{r.font(ee).fontSize(8).fillColor("#111111");let e=r.y;A.forEach((t,A)=>{el(r,eu(t),h[A],e,{width:l[A]-6,lineBreak:!1,ellipsis:!0})}),r.x=r.page.margins.left,r.y=e+12,r.moveTo(r.page.margins.left,r.y).lineTo(r.page.width-r.page.margins.right,r.y).strokeColor("#aaaaaa").stroke(),r.y+=5},E=e=>{let t=r.y+5;r.fontSize(8).fillColor("#3f3f46"),el(r,e,r.page.margins.left,t,{width:n,align:"center",lineBreak:!1,ellipsis:!0});let A=t+14;r.save().strokeColor("#dddddd").moveTo(r.page.margins.left,A).lineTo(r.page.width-r.page.margins.right,A).stroke().restore(),r.x=r.page.margins.left,r.y=A+7};r.font(ee).fontSize(16).text("Observability export"),r.font(ee).fontSize(8).fillColor("#555555").text(`Generated ${eQ(new Date().toISOString(),t,!0)} - ${e.filter(e=>"SEPARATOR"!==e.entryType).length} records`);let Q=function(e){let t;if(!e)return["None"];try{t=JSON.parse(e)}catch{return["Custom filter applied"]}if(!t||"object"!=typeof t||Array.isArray(t))return["None"];let A=t,r=[];if("string"==typeof A.search&&A.search.trim()){let e="GLOB"===A.searchMode?"Glob":"REGEX"===A.searchMode?"Regex":"Text";r.push(`Search - ${e}, ${!0===A.caseSensitive?"case-sensitive":"case-insensitive"}: ${eB(A.search)}`)}if(A.quickFilters&&"object"==typeof A.quickFilters&&!Array.isArray(A.quickFilters))for(let[e,t]of Object.entries(A.quickFilters)){if(!Array.isArray(t))continue;let A=t.map(eB).filter(Boolean).slice(0,20);A.length&&r.push(`Quick filter - ${eu(e)}: ${A.join(", ")}`)}if(A.advancedFilter&&"object"==typeof A.advancedFilter&&!Array.isArray(A.advancedFilter)){let e=A.advancedFilter;if(Array.isArray(e.conditions)&&e.conditions.length)for(let t of(r.push(`Advanced filters - match ${"ANY"===e.mode?"any":"all"}:`),e.conditions)){if(!t||"object"!=typeof t||Array.isArray(t)||"string"!=typeof t.field)continue;let e="string"==typeof t.operator?eh[t.operator]??t.operator.toLocaleLowerCase().replaceAll("_"," "):"matches",A=eB(t.value),i=Array.isArray(t.sources)?t.sources.filter(e=>"CONSOLE"===e||"ANALYTICS"===e):[],s=1===i.length?` [${"CONSOLE"===i[0]?"Console":"Analytics"} only]`:"",n=!0===t.caseSensitive?" (case-sensitive)":"";r.push(`${eu(t.field)} ${e}${A?` "${A}"`:""}${n}${s}`)}}return r.length?r:["None"]}(t.filterSummary),I=Q.slice(0,6);Q.length>I.length&&(I[I.length-1]=`${Q.length-I.length+1} more filter conditions`);let d=r.y+5,u=20+10*I.length;r.save().lineWidth(.5).roundedRect(r.page.margins.left,d,n,u,4).fillAndStroke("#f7f7f8","#dddddd").restore(),r.font(ee).fontSize(8).fillColor("#333333").text("Filters",r.page.margins.left+8,d+6,{width:n-16,lineBreak:!1}),r.font(ee).fontSize(7).fillColor("#555555"),I.forEach((e,t)=>{el(r,`- ${e}`,r.page.margins.left+8,d+18+10*t,{width:n-16,lineBreak:!1,ellipsis:!0})}),r.x=r.page.margins.left,r.y=d+u+10,c();let C="";for(let i of e){let e=ey(i,t),s=e!==C,n="SEPARATOR"===i.entryType?(i.separatorName||"Separator").replace(/[·—–‑]/g,"-"):null;r.font(ee).fontSize(7);let o=n?[]:A.map(e=>(function(e){let t="",A=0;for(let{segment:r}of ei.segment(e)){if(4e3===A)return`${t}…`;t+=r,A+=1}return t})(eI(i,e,t))),a=n?0:Math.max(14,...o.map((e,t)=>(function(e,t,A){let r=eo(e);return ea(e,t,A).length*r})(r,e||" ",l[t]-6)))+4,g=Math.min(a,Math.max(14,r.page.height-60-r.page.margins.top-22-26*!!s)),Q=26*!!s+(n?26:g+3);if(r.y+Q>r.page.height-60&&(r.addPage(),c()),s&&E(C=e),n){E(n);continue}let I=r.y,d=Math.min(a,Math.max(14,r.page.height-60-I));r.font(ee).fontSize(7).fillColor("#111111"),o.forEach((e,t)=>{let A=Math.max(1,d-4);el(r,e,h[t],I,{width:l[t]-6,height:A})}),r.x=r.page.margins.left,r.y=I+d,r.moveTo(r.page.margins.left,r.y).lineTo(r.page.width-r.page.margins.right,r.y).strokeColor("#dddddd").stroke(),r.y+=3}let B=r.bufferedPageRange();for(let e=B.start;e<B.start+B.count;e+=1)r.switchToPage(e),r.font(ee).fontSize(7).fillColor("#666666").text(`Page ${e+1} of ${B.count}`,r.page.margins.left,r.page.height-r.page.margins.bottom-10,{align:"right",width:n,lineBreak:!1});return r.end(),s}e.s(["telemetryCsv",0,function(e,t){let A=ed(t),r=[A.map(e=>ef(eu(e))).join(",")],i="";for(let s of e){let e=ey(s,t);if(e!==i&&(i=e,r.push(A.map((e,t)=>ef(0===t?`[Day] ${i}`:"")).join(","))),"SEPARATOR"===s.entryType){r.push(A.map((e,t)=>ef(0===t?`[Separator] ${s.separatorName??""}`.trim():"")).join(","));continue}r.push(A.map(e=>ef(eI(s,e,t))).join(","))}return`${r.join("\r\n")}\r
121
+ ${n}`:s.stack}(e,L):e&&"object"==typeof e&&Error.captureStackTrace(e,t.exports.fetch),e})},t.exports.Headers=e.r(761883).Headers,t.exports.Response=e.r(650801).Response,t.exports.Request=e.r(341716).Request,t.exports.FormData=e.r(740526).FormData;let{setGlobalOrigin:v,getGlobalOrigin:Y}=e.r(65616);t.exports.setGlobalOrigin=v,t.exports.getGlobalOrigin=Y;let{CacheStorage:H}=e.r(562899),{kConstruct:O}=e.r(35634);t.exports.caches=new H(O);let{deleteCookie:G,getCookies:V,getSetCookies:x,setCookie:J,parseCookie:P}=e.r(75864);t.exports.deleteCookie=G,t.exports.getCookies=V,t.exports.getSetCookies=x,t.exports.setCookie=J,t.exports.parseCookie=P;let{parseMIMEType:W,serializeAMimeType:_}=e.r(561743);t.exports.parseMIMEType=W,t.exports.serializeAMimeType=_;let{CloseEvent:q,ErrorEvent:Z,MessageEvent:j}=e.r(124672),{WebSocket:X,ping:K}=e.r(126507);t.exports.WebSocket=X,t.exports.CloseEvent=q,t.exports.ErrorEvent=Z,t.exports.MessageEvent=j,t.exports.ping=K,t.exports.WebSocketStream=e.r(326101).WebSocketStream,t.exports.WebSocketError=e.r(691168).WebSocketError,t.exports.request=k(C.request),t.exports.stream=k(C.stream),t.exports.pipeline=k(C.pipeline),t.exports.connect=k(C.connect),t.exports.upgrade=k(C.upgrade),t.exports.MockClient=f,t.exports.MockCallHistory=p,t.exports.MockCallHistoryLog=y,t.exports.MockPool=D,t.exports.MockAgent=w,t.exports.SnapshotAgent=m,t.exports.mockErrors=S;let{EventSource:z}=e.r(763785);t.exports.EventSource=z,t.exports.install=function(){globalThis.fetch=t.exports.fetch,globalThis.Headers=t.exports.Headers,globalThis.Response=t.exports.Response,globalThis.Request=t.exports.Request,globalThis.FormData=t.exports.FormData,globalThis.WebSocket=t.exports.WebSocket,globalThis.CloseEvent=t.exports.CloseEvent,globalThis.ErrorEvent=t.exports.ErrorEvent,globalThis.MessageEvent=t.exports.MessageEvent,globalThis.EventSource=t.exports.EventSource}},582482,318905,91022,783396,e=>{"use strict";var t=e.i(187126),A=e.i(666680);function r(e){return(0,A.createHash)("sha256").update(e).digest("hex")}function i(e,t){return Buffer.from(JSON.stringify({id:e.id,kind:e.kind,version:t}),"utf8")}function s(e,t,s){let n=(0,A.randomBytes)(12),o=(0,A.createCipheriv)("aes-256-gcm",s,n,{authTagLength:16});return o.setAAD(i(e,1)),{payload:Buffer.concat([o.update(Buffer.from(t)),o.final()]),encryptionVersion:1,nonce:n,authTag:o.getAuthTag(),keyFingerprint:r(s)}}function n(e,t,r){if(1!==t.encryptionVersion)throw Error("The credential encryption envelope version is unsupported");if(12!==t.nonce.byteLength||16!==t.authTag.byteLength)throw Error("The credential encryption envelope is invalid");try{let s=(0,A.createDecipheriv)("aes-256-gcm",r,t.nonce,{authTagLength:16});return s.setAAD(i(e,t.encryptionVersion)),s.setAuthTag(Buffer.from(t.authTag)),Buffer.concat([s.update(Buffer.from(t.payload)),s.final()])}catch{throw Error("The credential could not be decrypted; restore the original encryption key or re-enter the credential")}}let o="secret",a="ai-development-environment/credentials",l=new Set(["accept","connection","content-length","content-type","expect","host","transfer-encoding","upgrade","x-vault-request"]);function g(e,t){return{code:e,message:t}}function h(e,t){if(!e||"0"===e||"false"===e.toLowerCase())return!1;if("1"===e||"true"===e.toLowerCase())return!0;throw Error(`${t} must be true, false, 1, or 0`)}function c(e,t){let A=e.replace(/^\/+|\/+$/g,""),r=A.split("/");if(!A||r.some(e=>!e||"."===e||".."===e||e.includes("\\")))throw Error(`${t} must contain non-empty Vault path segments`);return A}function E(e,t){return Object.keys(e).some(e=>e.toLowerCase()===t.toLowerCase())}function Q(e,t){let A=e.CREDENTIAL_VAULT_READ_ONLY?.trim();return A&&"0"!==A&&"false"!==A.toLowerCase()?[g("VAULT_READ_ONLY_IGNORED",`CREDENTIAL_VAULT_READ_ONLY only applies to Vault storage and is ignored while CREDENTIAL_STORAGE_TYPE is ${t}`)]:[]}function I(e=process.env,A=process.platform){let i,s=e.CREDENTIAL_STORAGE_TYPE?.trim().toLowerCase()||"database";if("database"!==s&&"vault"!==s&&"keychain"!==s)return{requestedStorageType:s,storageType:"unknown",config:null,warnings:[],errors:[g("CREDENTIAL_STORAGE_TYPE_INVALID","CREDENTIAL_STORAGE_TYPE must be database, vault, or keychain")],details:[{label:"Configured value",value:s}]};if("database"===s)try{let A=(0,t.getAppSecrets)(e);if(A.ephemeral)throw Error("APP_SECRET is required before credentials can be read or written");let i=A.credentialKey;return{requestedStorageType:s,storageType:"database",config:{storageType:"database",encryptionKey:i,keyFingerprint:r(i),previousKeys:(0,t.getPreviousCredentialKeys)(e)},warnings:Q(e,"database"),errors:[],details:[{label:"Location",value:"Application database"},{label:"Encryption key",value:"Derived from APP_SECRET"}]}}catch(t){return{requestedStorageType:s,storageType:"database",config:null,warnings:Q(e,"database"),errors:[g("APP_SECRET_INVALID",t instanceof Error?t.message:"APP_SECRET is invalid")],details:[{label:"Location",value:"Application database"},{label:"Encryption key",value:"Invalid"}]}}if("keychain"===s)return{requestedStorageType:s,storageType:"keychain",config:{storageType:"keychain",platform:A,service:"com.bludesign.ai-development-environment.credentials"},warnings:Q(e,"keychain"),errors:"darwin"===A?[]:[g("KEYCHAIN_UNSUPPORTED_PLATFORM","macOS Keychain storage is only available when the Next.js host runs on macOS")],details:[{label:"Service",value:"com.bludesign.ai-development-environment.credentials"},{label:"Host platform",value:A}]};let n=[],d=[],u={},C=o,B=a,f=!1,p=!1;try{if(!e.VAULT_ADDR?.trim())throw Error("VAULT_ADDR is required");if(i=new URL(e.VAULT_ADDR),"https:"!==i.protocol&&"http:"!==i.protocol)throw Error("VAULT_ADDR must use http or https");if(i.username||i.password||i.search||i.hash)throw Error("VAULT_ADDR cannot contain credentials, query parameters, or a fragment");if(i.pathname=i.pathname.replace(/\/+$/,""),u=function(e){let t;if(!e?.trim())return{};try{t=JSON.parse(e)}catch{throw Error("CREDENTIAL_VAULT_HEADERS must be a JSON object")}if("object"!=typeof t||null===t||Array.isArray(t))throw Error("CREDENTIAL_VAULT_HEADERS must be a JSON object");let A={};for(let[e,r]of Object.entries(t)){let t=e.trim();if(!t||"string"!=typeof r)throw Error("CREDENTIAL_VAULT_HEADERS must contain only string header values");try{new Headers({[t]:r})}catch{throw Error(`CREDENTIAL_VAULT_HEADERS contains invalid header ${t}`)}if(l.has(t.toLowerCase()))throw Error(`CREDENTIAL_VAULT_HEADERS cannot override the managed ${t} header`);if(Object.keys(A).find(e=>e.toLowerCase()===t.toLowerCase()))throw Error(`CREDENTIAL_VAULT_HEADERS repeats the ${t} header`);A[t]=r}return A}(e.CREDENTIAL_VAULT_HEADERS),C=c(e.CREDENTIAL_VAULT_MOUNT||o,"CREDENTIAL_VAULT_MOUNT"),B=c(e.CREDENTIAL_VAULT_PATH_PREFIX||a,"CREDENTIAL_VAULT_PATH_PREFIX"),f=h(e.VAULT_SKIP_VERIFY,"VAULT_SKIP_VERIFY"),p=h(e.CREDENTIAL_VAULT_READ_ONLY,"CREDENTIAL_VAULT_READ_ONLY"),e.VAULT_TOKEN&&E(u,"x-vault-token"))throw Error("VAULT_TOKEN conflicts with X-Vault-Token in CREDENTIAL_VAULT_HEADERS");if(e.VAULT_NAMESPACE&&E(u,"x-vault-namespace"))throw Error("VAULT_NAMESPACE conflicts with X-Vault-Namespace in CREDENTIAL_VAULT_HEADERS")}catch(e){n.push(g("VAULT_CONFIGURATION_INVALID",e instanceof Error?e.message:"Vault configuration is invalid")),i=new URL("https://invalid.local")}"http:"===i.protocol&&d.push(g("VAULT_INSECURE_HTTP","VAULT_ADDR uses plaintext HTTP; Vault credentials and authentication headers are not protected in transit")),f&&d.push(g("VAULT_TLS_VERIFICATION_DISABLED","VAULT_SKIP_VERIFY disables certificate verification for Vault connections"));let y=Object.keys(u).sort((e,t)=>e.localeCompare(t)),w=[{label:"Address",value:n.length?"Invalid":i.toString()},{label:"KV v2 mount",value:C},{label:"Path prefix",value:B},{label:"Namespace",value:e.VAULT_NAMESPACE?"Configured":"Not configured"},{label:"Authentication token",value:e.VAULT_TOKEN||E(u,"x-vault-token")?"Configured":"Not configured"},{label:"Additional headers",value:y.length?y.join(", "):"None"},{label:"Custom CA",value:e.VAULT_CACERT?"Configured":"Not configured"},{label:"TLS server name",value:e.VAULT_TLS_SERVER_NAME?"Configured":"Not configured"},{label:"Vault access",value:p?"Read-only":"Read-write"}];return{requestedStorageType:s,storageType:"vault",config:0===n.length?{storageType:"vault",address:i,token:e.VAULT_TOKEN||null,namespace:e.VAULT_NAMESPACE||null,mount:C,pathPrefix:B,headers:u,caCertPath:e.VAULT_CACERT||null,tlsServerName:e.VAULT_TLS_SERVER_NAME||null,skipVerify:f,readOnly:p}:null,warnings:d,errors:n,details:w}}var d=e.i(243783);let u=new Map;async function C(e,t){let A,r=[...new Set(e)].sort();if(!r.length)return t();let i=r.flatMap(e=>{let t=u.get(e);return t?[t]:[]}),s=new Promise(e=>{A=e});for(let e of r)u.set(e,s);await Promise.all(i);try{return await t()}finally{for(let e of(A(),r))u.get(e)===s&&u.delete(e)}}let B={jiraConnectionSettings:"jira-connection-settings",jiraApiToken:"jira-api-token",jiraWebhookSettings:"jira-webhook-settings",jiraWebhookSecret:"jira-webhook-secret",githubPersonalAccessToken:"github-personal-access-token",githubAppSettings:"github-app-settings",githubAppPrivateKey:"github-app-private-key",githubAppWebhookSecret:"github-app-webhook-secret",cacheServerSettings:"cache-server-settings",cacheServerApiKey:"cache-server-api-key",externalMcpServerHeaders:"external-mcp-server-headers",iosProfileSignerPrivateKey:"ios-profile-signer-private-key",appStoreConnectSettings:"app-store-connect-settings",appStoreConnectPrivateKey:"app-store-connect-private-key",apnsTokenSettings:"apns-token-settings",apnsTokenPrivateKey:"apns-token-private-key",apnsCertificateCatalog:"apns-certificate-catalog",apnsCertificateBundle:"apns-certificate-bundle",webPushVapidPrivateKey:"web-push-vapid-private-key"},f={jiraConnectionSettings:{id:"jira/default/connection-settings",kind:B.jiraConnectionSettings,ownerId:"default"},jiraApiToken:{id:"jira/default/api-token",kind:B.jiraApiToken,ownerId:"default"},jiraWebhookSecret:{id:"jira/default/webhook-secret",kind:B.jiraWebhookSecret,ownerId:"default"},jiraWebhookSettings:{id:"jira/default/webhook-settings",kind:B.jiraWebhookSettings,ownerId:"default"},githubPersonalAccessToken:{id:"github/default/personal-access-token",kind:B.githubPersonalAccessToken,ownerId:"default"},githubAppPrivateKey:{id:"github-app/default/private-key",kind:B.githubAppPrivateKey,ownerId:"default"},githubAppSettings:{id:"github-app/default/settings",kind:B.githubAppSettings,ownerId:"default"},githubAppWebhookSecret:{id:"github-app/default/webhook-secret",kind:B.githubAppWebhookSecret,ownerId:"default"},cacheServerSettings:{id:"cache-server/default/settings",kind:B.cacheServerSettings,ownerId:"default"},cacheServerApiKey:{id:"cache-server/default/api-key",kind:B.cacheServerApiKey,ownerId:"default"},iosProfileSignerPrivateKey:{id:"ios-devices/default/profile-signer-private-key",kind:B.iosProfileSignerPrivateKey,ownerId:"default"},appStoreConnectPrivateKey:{id:"ios-devices/default/app-store-connect-private-key",kind:B.appStoreConnectPrivateKey,ownerId:"default"},appStoreConnectSettings:{id:"ios-devices/default/app-store-connect-settings",kind:B.appStoreConnectSettings,ownerId:"default"},apnsTokenPrivateKey:{id:"push-notifications/default/token-private-key",kind:B.apnsTokenPrivateKey,ownerId:"default"},apnsTokenSettings:{id:"push-notifications/default/token-settings",kind:B.apnsTokenSettings,ownerId:"default"},apnsCertificateCatalog:{id:"push-notifications/default/certificate-catalog",kind:B.apnsCertificateCatalog,ownerId:"default"},webPushVapidPrivateKey:{id:"notifications/default/web-push-vapid-private-key",kind:B.webPushVapidPrivateKey,ownerId:"default"}};function p(e){return Buffer.from(JSON.stringify({version:1,value:e}),"utf8")}function y(e){let t;try{t=JSON.parse(Buffer.from(e).toString("utf8"))}catch{throw Error("The stored credential envelope is invalid")}if("object"!=typeof t||null===t||1!==t.version||!("value"in t))throw Error("The stored credential envelope version is unsupported");return t.value}function w(e){switch(e){case B.jiraConnectionSettings:case B.jiraApiToken:case B.jiraWebhookSettings:case B.jiraWebhookSecret:return"Jira";case B.githubPersonalAccessToken:case B.githubAppSettings:case B.githubAppPrivateKey:case B.githubAppWebhookSecret:return"GitHub";case B.cacheServerSettings:case B.cacheServerApiKey:return"Actions cache";case B.externalMcpServerHeaders:return"External MCP server";case B.iosProfileSignerPrivateKey:case B.appStoreConnectSettings:case B.appStoreConnectPrivateKey:return"iOS devices";case B.apnsTokenSettings:case B.apnsTokenPrivateKey:case B.apnsCertificateCatalog:case B.apnsCertificateBundle:return"Push notifications";case B.webPushVapidPrivateKey:return"Notifications";default:return"Unknown"}}e.s(["CREDENTIALS",0,f,"CREDENTIAL_KINDS",0,B,"apnsCertificateCredential",0,function(e){return{id:`apns-certificate/${e}/bundle`,kind:B.apnsCertificateBundle,ownerId:e}},"credentialOwnerFeature",0,w,"decodeJsonCredential",0,y,"encodeJsonCredential",0,p,"externalMcpHeadersCredential",0,function(e){return{id:`external-mcp-server/${e}/headers`,kind:B.externalMcpServerHeaders,ownerId:e}}],318905);let D={adopted:0,repointed:0,skipped:0,issue:null};async function m(e,t,A){let r=Array(e.length),i=0,s=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let t=i++;r[t]=await A(e[t])}});return await Promise.all(s),r}async function S(e,t){let A=new Set(Object.values(f).map(e=>e.id));for(let e of t)A.add(e);if(e.list)try{for(let t of(await e.list()))A.add(t)}catch{}return[...A]}async function N(e,t){let A=t.describe?.bind(t);if(!A)return D;try{let r=await e.credential.findMany({select:{id:!0,storageType:!0}}),i=new Set,s=new Set;for(let e of r)(e.storageType===t.storageType?i:s).add(e.id);let n=(await S(t,s)).filter(e=>!i.has(e));if(!n.length)return D;let o=0,a=(await m(n,4,async e=>{try{return await A(e)}catch{return o+=1,null}})).filter(e=>null!==e);if(!a.length)return{adopted:0,repointed:0,skipped:o,issue:null};let l=await C(a.map(e=>e.id),async()=>{let A=new Map((await e.credential.findMany({where:{id:{in:a.map(e=>e.id)}},select:{id:!0,storageType:!0}})).map(e=>[e.id,e.storageType])),r=a.filter(e=>!A.has(e.id)),i=a.filter(e=>A.has(e.id)&&A.get(e.id)!==t.storageType);for(let A of(r.length&&await e.credential.createMany({data:r.map(e=>({id:e.id,kind:e.kind,ownerId:e.ownerId,storageType:t.storageType,payload:null,encrypted:!1}))}),i))await e.credential.update({where:{id:A.id},data:{kind:A.kind,ownerId:A.ownerId,storageType:t.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}});return{adopted:r.length,repointed:i.length}});return l.repointed>0&&console.log(`[credentials] Repointed ${l.repointed} credential row(s) to ${t.storageType}, which already holds those secrets.`),{...l,skipped:o,issue:null}}catch(e){return{adopted:0,repointed:0,skipped:0,issue:{code:"VAULT_ADOPTION_FAILED",message:e instanceof Error?`Existing ${t.storageType} credentials could not be adopted: ${e.message}`:`Existing ${t.storageType} credentials could not be adopted`}}}}class R extends Error{code;constructor(e,t){super(e),this.code=t,this.name="CredentialStoreOperationError"}}function b(e){return new R(e,"CREDENTIAL_DATA_INVALID")}function U(e){return Uint8Array.from(e)}function*T(e){for(let t=0;t<e.length;t+=50)yield e.slice(t,t+50)}async function F(e){let[t]=await e.$queryRawUnsafe("PRAGMA wal_checkpoint(TRUNCATE);");if(!t||0!==Number(t.busy))throw Error("SQLite WAL could not be truncated after credential encryption")}async function k(e){await F(e),await e.$executeRawUnsafe("VACUUM;"),await F(e)}class M{prisma;config;storageType;readOnly;constructor(e,t){this.prisma=e,this.config=t,this.storageType="database",this.readOnly=!1}async initialize(){let e=this.config.encryptionKey;await this.prisma.$queryRawUnsafe("PRAGMA secure_delete = ON;"),await this.reencryptRotatedRows();let t=await this.prisma.credential.findMany({where:{storageType:this.storageType,encrypted:!0},select:{id:!0,keyFingerprint:!0,encryptionVersion:!0,nonce:!0,authTag:!0,payload:!0}});if(t.some(e=>e.keyFingerprint!==this.config.keyFingerprint))throw new R("APP_SECRET does not match existing credentials. Restore the original value, or set APP_SECRET_PREVIOUS to it so stored credentials are re-encrypted on the next start.","CREDENTIAL_KEY_MISMATCH");if(t.some(e=>!e.payload||1!==e.encryptionVersion||!e.nonce||!e.authTag))throw b("One or more encrypted credential records have invalid encryption metadata");let A=await this.prisma.credential.findMany({where:{storageType:this.storageType,encrypted:!1},select:{id:!0,kind:!0,payload:!0}}),r=0;for(let t of T(A))r+=await this.prisma.$transaction(async A=>{for(let r of t){if(!r.payload)throw b(`Credential metadata for ${r.id} has no database payload`);let t=s({id:r.id,kind:r.kind},r.payload,e);await A.credential.update({where:{id:r.id},data:{payload:U(t.payload),encrypted:!0,encryptionVersion:t.encryptionVersion,nonce:U(t.nonce),authTag:U(t.authTag),keyFingerprint:t.keyFingerprint}})}return t.length});r>0&&(await k(this.prisma),console.log(`[credentials] Encrypted ${r} plaintext credential row(s) under the key derived from APP_SECRET.`))}async reencryptRotatedRows(){let e=this.config.previousKeys;if(0===e.length)return 0;let t=await this.prisma.credential.findMany({where:{storageType:this.storageType,encrypted:!0,keyFingerprint:{not:this.config.keyFingerprint}},select:{id:!0,kind:!0,payload:!0,encryptionVersion:!0,nonce:!0,authTag:!0}});if(0===t.length)return 0;let A=0;for(let r of T(t))A+=await this.prisma.$transaction(async t=>{let A=0;for(let i of r){if(!i.payload||!i.encryptionVersion||!i.nonce||!i.authTag)throw b(`Credential ${i.id} has invalid encryption metadata and cannot be rotated`);let r={id:i.id,kind:i.kind},o={payload:i.payload,encryptionVersion:i.encryptionVersion,nonce:i.nonce,authTag:i.authTag},a=null;for(let t of e)try{a=n(r,o,t);break}catch{}if(!a)continue;let l=s(r,a,this.config.encryptionKey);await t.credential.update({where:{id:i.id},data:{payload:U(l.payload),encryptionVersion:l.encryptionVersion,nonce:U(l.nonce),authTag:U(l.authTag),keyFingerprint:l.keyFingerprint}}),A+=1}return A});if(A>0){await k(this.prisma);let e=t.length-A;console.log(`[credentials] Re-encrypted ${A} credential row(s) under the current APP_SECRET.`+(e>0?` ${e} row(s) matched no key in APP_SECRET_PREVIOUS and were left untouched.`:" APP_SECRET_PREVIOUS can now be removed."))}return A}async get(e){let t=await this.prisma.credential.findUnique({where:{id:e.id}});return t?this.getFromRecord(e,t):null}getFromRecord(e,t){if(t.kind!==e.kind)throw b(`Credential ${e.id} has unexpected kind metadata`);if(t.storageType!==this.storageType)throw new R(`Credential ${e.id} was stored in ${t.storageType}; re-enter it for database storage`,"BACKEND_MISMATCH");if(!t.payload)throw b(`Credential ${e.id} has no database payload`);if(!t.encrypted)return Buffer.from(t.payload);if(t.keyFingerprint!==this.config.keyFingerprint)throw new R("APP_SECRET does not match this credential","CREDENTIAL_KEY_MISMATCH");if(!t.encryptionVersion||!t.nonce||!t.authTag)throw b(`Credential ${e.id} has invalid encryption metadata`);return n(e,{payload:t.payload,encryptionVersion:t.encryptionVersion,nonce:t.nonce,authTag:t.authTag},this.config.encryptionKey)}async set(e,t){await this.prisma.$transaction(A=>this.setInTransaction(A,e,t))}async setInTransaction(e,t,A){let r=s(t,A,this.config.encryptionKey),i={kind:t.kind,ownerId:t.ownerId??null,storageType:this.storageType,payload:U(r.payload),encrypted:!0,encryptionVersion:r.encryptionVersion,nonce:U(r.nonce),authTag:U(r.authTag),keyFingerprint:r.keyFingerprint};await e.credential.upsert({where:{id:t.id},create:{id:t.id,...i},update:i})}async delete(e){await this.prisma.$transaction(t=>this.deleteInTransaction(t,e))}async deleteInTransaction(e,t){await e.credential.deleteMany({where:{id:t.id}})}}let L=()=>e.A(12202);class v{config;moduleLoader;storageType;readOnly;constructor(e,t=L){this.config=e,this.moduleLoader=t,this.storageType="keychain",this.readOnly=!1}async initialize(){this.assertSupported()}assertSupported(){if("darwin"!==this.config.platform)throw new R("macOS Keychain credential storage is unavailable on this host. Select database or Vault storage and restart the server.","KEYCHAIN_UNSUPPORTED_PLATFORM")}async entry(e){this.assertSupported();let{AsyncEntry:t}=await this.moduleLoader();return new t(this.config.service,e)}async get(e){try{let t=await (await this.entry(e.id)).getSecret();return t?Buffer.from(t):null}catch(t){throw Error(`macOS Keychain could not read ${e.id}: ${t instanceof Error?t.message:"credential operation failed"}`)}}async set(e,t){try{await (await this.entry(e.id)).setSecret(Buffer.from(t))}catch(t){throw Error(`macOS Keychain could not store ${e.id}: ${t instanceof Error?t.message:"credential operation failed"}`)}}async delete(e){try{await (await this.entry(e.id)).deleteCredential()}catch(t){throw Error(`macOS Keychain could not delete ${e.id}: ${t instanceof Error?t.message:"credential operation failed"}`)}}}var Y=e.i(912714),H=e.i(936689);let O=new Set(Object.values(B));function G(e){return e.split("/").map(encodeURIComponent).join("/")}class V{config;requestImplementation;dispatcherFactory;storageType;readOnly;dispatcherPromise;constructor(e,t=H.request,A=e=>new H.Agent(e)){this.config=e,this.requestImplementation=t,this.dispatcherFactory=A,this.storageType="vault",this.dispatcherPromise=null,this.readOnly=e.readOnly}async initialize(){await this.dispatcher()}dispatcher(){return this.dispatcherPromise||(this.dispatcherPromise=(async()=>{let e="https:"===this.config.address.protocol&&this.config.caCertPath?await (0,Y.readFile)(this.config.caCertPath):void 0;return this.dispatcherFactory({connect:{...e?{ca:e}:{},...this.config.tlsServerName?{servername:this.config.tlsServerName}:{},rejectUnauthorized:!this.config.skipVerify},connectTimeout:1e4,headersTimeout:1e4,bodyTimeout:1e4,maxResponseSize:0x4000000})})()),this.dispatcherPromise}endpoint(e,t){return`${this.prefixEndpoint(e)}/${G(t)}`}prefixEndpoint(e){let t=this.config.address.toString().replace(/\/+$/,"");return`${t}/v1/${G(this.config.mount)}/${e}/${G(this.config.pathPrefix)}`}assertWritable(e){if(this.readOnly)throw new R(`This install uses a read-only Vault; ${e} cannot be changed here. Update it from a read-write install or clear CREDENTIAL_VAULT_READ_ONLY.`,"CREDENTIAL_STORE_READ_ONLY")}deniedError(e){return new R(`The Vault token is not permitted to modify ${e}; this install has read-only access.`,"CREDENTIAL_STORE_READ_ONLY")}headers(e){let t={...this.config.headers,accept:"application/json","x-vault-request":"true"};return e&&(t["content-type"]="application/json"),this.config.token&&(t["x-vault-token"]=this.config.token),this.config.namespace&&(t["x-vault-namespace"]=this.config.namespace),t}async call(e,t,A){try{let e=await this.requestImplementation(t,{method:A.method,headers:this.headers(!!A.body),body:A.body,dispatcher:await this.dispatcher(),signal:AbortSignal.timeout(1e4),headersTimeout:1e4,bodyTimeout:1e4});return{statusCode:e.statusCode,body:await e.body.text()}}catch(A){let t="object"==typeof A&&null!==A&&"code"in A&&"string"==typeof A.code?A.code:null;throw Error(`Vault credential ${e} failed${t?` (${t})`:""}`)}}async read(e){let t=await this.call("read",this.endpoint("data",e),{method:"GET"});if(404===t.statusCode)return null;if(t.statusCode<200||t.statusCode>=300)throw Error(`Vault credential read failed (HTTP ${t.statusCode})`);return function(e,t){let A,r;try{A=JSON.parse(e)}catch{throw Error("Vault returned an invalid credential payload")}let i=A?.data?.data,s=i?.value,n=i?.kind;if(!i||"string"!=typeof s||1!==i.version||"string"!=typeof n||!O.has(n))throw Error("Vault returned an invalid credential payload");let o=i.ownerId;return{value:s,kind:n,ownerId:"string"==typeof o&&o?o:null===o?null:(r=t.split("/")).length>=3?r[1]:null}}(t.body,e)}async get(e){let t=await this.read(e.id);if(!t)return null;if(t.kind!==e.kind)throw Error("Vault returned an invalid credential payload");return Buffer.from(t.value,"base64")}async describe(e){let t=await this.read(e);return t?{id:e,kind:t.kind,ownerId:t.ownerId}:null}async list(){let e=[],t=0,A=[{path:"",depth:0}];for(;A.length&&t<500;){let{path:r,depth:i}=A.shift();for(let s of(await this.listKeys(r))){if(t>=500)return e;t+=1;let n=r?`${r}/${s.replace(/\/$/,"")}`:s.replace(/\/$/,"");if(!s.endsWith("/")){e.push(n);continue}i+1<4&&A.push({path:n,depth:i+1})}}return e}async listKeys(e){let t,A=this.prefixEndpoint("metadata"),r=`${e?`${A}/${G(e)}`:A}?list=true`,i=await this.call("list",r,{method:"GET"});if(404===i.statusCode)return[];if(i.statusCode<200||i.statusCode>=300)throw Error(`Vault credential list failed (HTTP ${i.statusCode})`);try{t=JSON.parse(i.body)}catch{throw Error("Vault returned an invalid credential listing")}let s=t?.data?.keys;if(!Array.isArray(s))throw Error("Vault returned an invalid credential listing");return s.filter(e=>"string"==typeof e&&e.length>0)}async set(e,t){this.assertWritable(e.id);let A=await this.call("write",this.endpoint("data",e.id),{method:"POST",body:JSON.stringify({data:{value:Buffer.from(t).toString("base64"),version:1,kind:e.kind,ownerId:e.ownerId??null}})});if(403===A.statusCode)throw this.deniedError(e.id);if(A.statusCode<200||A.statusCode>=300)throw Error(`Vault credential write failed (HTTP ${A.statusCode})`)}async delete(e){this.assertWritable(e.id);let t=await this.call("delete",this.endpoint("metadata",e.id),{method:"DELETE"});if(403===t.statusCode)throw this.deniedError(e.id);if(404!==t.statusCode&&(t.statusCode<200||t.statusCode>=300))throw Error(`Vault credential delete failed (HTTP ${t.statusCode})`)}}function x(e){return"database"===e||"vault"===e||"keychain"===e?e:"unknown"}function J(e){if(e.readOnly)throw new R(`Credential storage is read-only; ${e.storageType} credentials cannot be changed from this install`,"CREDENTIAL_STORE_READ_ONLY")}let P=new Map;async function W(e,t,A){if("function"==typeof e.getValidatedJsonWithMetadata)return e.getValidatedJsonWithMetadata(t,A);if("function"==typeof e.getJsonWithMetadata){let r=await e.getJsonWithMetadata(t);return r?{...r,value:A(r.value)}:null}let r=await e.getJson(t);return r?{value:A(r),createdAt:new Date(0),updatedAt:new Date(0)}:null}function _(e){throw new R(`The stored ${e} credential is invalid`,"CREDENTIAL_DATA_INVALID")}function q(e,t){return!e||"object"!=typeof e||Array.isArray(e)?_(t):e}function Z(e,t){return"string"==typeof e&&e?e:_(t)}function j(e,t){return null===e?null:Z(e,t)}e.s(["CredentialService",0,class{env;platform;configResult;prismaFactory;prismaPromise=null;driverPromise=null;initializationPromise=null;runtimeIssue=null;adoptionIssue=null;adoptedCount=0;keychainModuleLoader;vaultRequest;vaultDispatcherFactory;constructor(e={}){this.env=e.env??process.env,this.platform=e.platform??process.platform,this.configResult=I(this.env,this.platform),this.prismaFactory=e.prisma?async()=>e.prisma:e.prismaFactory??d.getPrismaClient,this.keychainModuleLoader=e.keychainModuleLoader,this.vaultRequest=e.vaultRequest,this.vaultDispatcherFactory=e.vaultDispatcherFactory}prisma(){return this.prismaPromise??=this.prismaFactory()}configurationError(){let e=this.configResult.errors[0];return e?Error(`Credential storage is not configured: ${e.message}`):null}async createDriver(e){return"database"===e.storageType?new M(await this.prisma(),e):"vault"===e.storageType?new V(e,this.vaultRequest,this.vaultDispatcherFactory):new v(e,this.keychainModuleLoader)}driver(){return this.driverPromise||(this.driverPromise=(async()=>{let e=this.configurationError();if(e)throw e;if(!this.configResult.config)throw Error("Credential storage is not configured");return this.createDriver(this.configResult.config)})()),this.driverPromise}async ensureInitialized(){return this.initializationPromise||(this.initializationPromise=(async()=>{let e=await this.driver();await e.initialize(),await this.adopt(e)})().catch(e=>{throw 0===this.configResult.errors.length&&(this.runtimeIssue=this.issueForInitializationError(e)),e})),this.initializationPromise}async adopt(e){let t=this.configResult.config;if(!t||!e.describe)return;let A="vault"!==t.storageType?t.storageType:[t.storageType,t.address.toString(),t.namespace??"",t.mount,t.pathPrefix].join("|"),r=P.get(A);r||(r=(async()=>N(await this.prisma(),e))(),P.set(A,r));let i=await r;this.adoptedCount=i.adopted+i.repointed,this.adoptionIssue=i.issue}issueForInitializationError(e){return e instanceof R?{code:e.code,message:e.message}:"vault"===this.configResult.storageType?{code:"VAULT_CONFIGURATION_INVALID",message:"Vault TLS configuration could not be initialized"}:{code:"CREDENTIAL_STORE_UNAVAILABLE",message:e instanceof Error?e.message:"Credential storage could not be initialized"}}async requireCurrentDriver(){return await this.ensureInitialized(),this.driver()}async recordForDescriptor(e,t){let A=await this.prisma(),r=await A.credential.findUnique({where:{id:t.id}});if(!e.describe||r&&r.storageType===e.storageType)return r;let i=await e.describe(t.id);if(!i)return r;if(i.kind!==t.kind||i.ownerId!==(t.ownerId??null))throw new R(`Credential ${t.id} has unexpected backend metadata`,"CREDENTIAL_DATA_INVALID");return await C([t.id],async()=>{await A.credential.upsert({where:{id:t.id},create:{id:t.id,kind:t.kind,ownerId:t.ownerId??null,storageType:e.storageType,payload:null,encrypted:!1},update:{kind:t.kind,ownerId:t.ownerId??null,storageType:e.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}})}),r=await A.credential.findUnique({where:{id:t.id}})}async getWithMetadata(e){let t=await this.requireCurrentDriver(),A=await this.recordForDescriptor(t,e);if(!A)return null;if(A.kind!==e.kind)throw new R(`Credential ${e.id} has unexpected kind metadata`,"CREDENTIAL_DATA_INVALID");if(A.storageType!==t.storageType)throw new R(`Credential ${e.id} was stored in ${A.storageType} and ${t.storageType} does not hold it; re-enter it for ${t.storageType} storage`,"BACKEND_MISMATCH");let r=t instanceof M?t.getFromRecord(e,A):await t.get(e);if(!r)throw Error(`Credential ${e.id} is missing from ${t.storageType}; re-enter it in its owning settings form`);return r?{value:r,createdAt:A.createdAt,updatedAt:A.updatedAt}:null}async get(e){return(await this.getWithMetadata(e))?.value??null}async getText(e){let t=await this.get(e);return t?t.toString("utf8"):null}async getJson(e){let t=await this.get(e);return t?y(t):null}async getJsonWithMetadata(e){let t=await this.getWithMetadata(e);return t?{value:y(t.value),createdAt:t.createdAt,updatedAt:t.updatedAt}:null}async getValidatedJson(e,t){let A=await this.getJson(e);return null===A?null:t(A)}async getValidatedJsonWithMetadata(e,t){let A=await this.getJsonWithMetadata(e);return A?{...A,value:t(A.value)}:null}async ensureInitializedForRead(){await this.ensureInitialized().catch(()=>{})}async isConfigured(e){let t,A;await this.ensureInitializedForRead();try{t=await this.driver()}catch{return!1}try{A=await this.recordForDescriptor(t,e)}catch{return!1}return!!(A&&A.kind===e.kind&&A.storageType===this.configResult.storageType)}async assertWritable(){J(await this.requireCurrentDriver())}async set(e,t,A){await this.setMany([{descriptor:e,value:t}],A)}async setMany(e,t){let A=e.map(e=>e.descriptor.id);if(new Set(A).size!==A.length)throw Error("Credential writes must use unique IDs");let r=await this.requireCurrentDriver();J(r);let i=await this.prisma();await C(A,async()=>{if(r instanceof M)return void await i.$transaction(async A=>{for(let t of e)await r.setInTransaction(A,t.descriptor,t.value);await t?.(A)});let A=new Map;for(let t of e)A.set(t.descriptor.id,await r.get(t.descriptor));let s=[];try{for(let t of e)s.push(t),await r.set(t.descriptor,t.value);await i.$transaction(async A=>{for(let{descriptor:t}of e)await A.credential.upsert({where:{id:t.id},create:{id:t.id,kind:t.kind,ownerId:t.ownerId??null,storageType:r.storageType},update:{kind:t.kind,ownerId:t.ownerId??null,storageType:r.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}});await t?.(A)})}catch(e){try{for(let e of s.reverse()){let t=A.get(e.descriptor.id);t?await r.set(e.descriptor,t):await r.delete(e.descriptor)}}catch{throw Error(`Credential metadata could not be saved and the ${r.storageType} rollback also failed; re-enter the affected credentials`,{cause:e})}throw e}})}async setAndDeleteMany(e,t,A){let r=[...e.map(({descriptor:e})=>e.id),...t.map(({id:e})=>e)];if(new Set(r).size!==r.length)throw Error("Credential changes must use unique IDs");let i=await this.requireCurrentDriver();J(i);let s=await this.prisma();await C(r,async()=>{if(i instanceof M)return void await s.$transaction(async r=>{for(let t of e)await i.setInTransaction(r,t.descriptor,t.value);for(let e of t)await i.deleteInTransaction(r,e);await A?.(r)});let r=await s.credential.findMany({where:{id:{in:t.map(({id:e})=>e)}},select:{id:!0,kind:!0,storageType:!0}}),n=new Map(t.map(e=>[e.id,e]));for(let e of r){let t=n.get(e.id);if(e.kind!==t.kind||e.storageType!==i.storageType)throw new R(`Credential ${t.id} has unexpected backend metadata`,"CREDENTIAL_DATA_INVALID")}let o=new Map,a=new Map;for(let{descriptor:t}of e)o.set(t.id,await i.get(t));for(let e of t)a.set(e.id,await i.get(e));let l=[],g=[];try{for(let t of e)l.push(t),await i.set(t.descriptor,t.value);for(let e of t)g.push(e),await i.delete(e);await s.$transaction(async t=>{for(let{descriptor:A}of e)await t.credential.upsert({where:{id:A.id},create:{id:A.id,kind:A.kind,ownerId:A.ownerId??null,storageType:i.storageType},update:{kind:A.kind,ownerId:A.ownerId??null,storageType:i.storageType,payload:null,encrypted:!1,encryptionVersion:null,nonce:null,authTag:null,keyFingerprint:null}});await t.credential.deleteMany({where:{id:{in:r.map(({id:e})=>e)}}}),await A?.(t)})}catch(e){try{for(let e of g.reverse()){let t=a.get(e.id);t&&await i.set(e,t)}for(let e of l.reverse()){let t=o.get(e.descriptor.id);t?await i.set(e.descriptor,t):await i.delete(e.descriptor)}}catch{throw Error(`Credential metadata could not be saved and the ${i.storageType} rollback also failed; re-enter the affected credentials`,{cause:e})}throw e}})}async setText(e,t,A){await this.set(e,Buffer.from(t,"utf8"),A)}async setJson(e,t,A){await this.set(e,p(t),A)}async driverForRecordedStorage(e){if(0===this.configResult.errors.length&&this.configResult.config?.storageType===e){let e=await this.driver();return await e.initialize(),e}let t=I({...this.env,CREDENTIAL_STORAGE_TYPE:e},this.platform);if(!t.config||t.errors.length)throw Error(`Cannot delete the credential from its recorded ${e} backend: ${t.errors[0]?.message??"backend configuration is unavailable"}`);let A=await this.createDriver(t.config);return await A.initialize(),A}clearRecoverableDatabaseInitializationIssue(){(this.runtimeIssue?.code==="CREDENTIAL_KEY_MISMATCH"||this.runtimeIssue?.code==="CREDENTIAL_DATA_INVALID")&&(this.initializationPromise=null,this.runtimeIssue=null)}async delete(e,t){await this.deleteMany([e],t)}async deleteMany(e,t){let A=e.map(e=>e.id);if(new Set(A).size!==A.length)throw Error("Credential deletes must use unique IDs");let r=await this.prisma();await C(A,async()=>{let i=await r.credential.findMany({where:{id:{in:A}},select:{id:!0,kind:!0,storageType:!0}});if(!i.length){t&&await r.$transaction(t);return}let s=new Map(e.map(e=>[e.id,e])),n=[];for(let e of i){let t=s.get(e.id);if(e.kind!==t.kind)throw new R(`Credential ${t.id} has unexpected kind metadata`,"CREDENTIAL_DATA_INVALID");let A=x(e.storageType);if("unknown"===A)throw new R(`Credential ${t.id} has an unknown backend`,"CREDENTIAL_DATA_INVALID");if("database"===A)continue;let r=await this.driverForRecordedStorage(A);J(r),n.push({descriptor:t,driver:r,previous:await r.get(t)})}let o=[];try{for(let e of n)o.push(e),await e.driver.delete(e.descriptor);await r.$transaction(async e=>{await e.credential.deleteMany({where:{id:{in:i.map(e=>e.id)}}}),await t?.(e)})}catch(e){try{for(let e of o.reverse())e.previous&&await e.driver.set(e.descriptor,e.previous)}catch{throw Error("Credential metadata could not be deleted and an external-backend rollback also failed; re-enter the affected credentials",{cause:e})}throw e}i.some(e=>"database"===e.storageType)&&this.clearRecoverableDatabaseInitializationIssue()})}async list(){return await this.ensureInitializedForRead(),(await (await this.prisma()).credential.findMany({select:{id:!0,kind:!0,ownerId:!0,storageType:!0,encrypted:!0,createdAt:!0,updatedAt:!0},orderBy:[{kind:"asc"},{id:"asc"}]})).map(e=>({id:e.id,kind:e.kind,ownerId:e.ownerId,ownerFeature:w(e.kind),storageType:x(e.storageType),protection:"vault"===e.storageType?"VAULT":"keychain"===e.storageType?"KEYCHAIN":e.encrypted?"ENCRYPTED":"PLAINTEXT",createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async status(){var e;let t;try{await this.ensureInitialized()}catch{}let A=await (await this.prisma()).credential.findMany({select:{storageType:!0,encrypted:!0}}),r=A.filter(e=>e.storageType!==this.configResult.storageType).length,i=r?[{code:"BACKEND_MISMATCH",message:`${r} credential item${1===r?" was":"s were"} stored with another backend and must be re-entered`}]:[],s=(e=[...this.configResult.warnings,...this.configResult.errors,...this.runtimeIssue?[this.runtimeIssue]:[],...this.adoptionIssue?[this.adoptionIssue]:[],...i],t=new Set,e.filter(e=>{let A=`${e.code}:${e.message}`;return!t.has(A)&&(t.add(A),!0)})),n=this.configResult.errors.length>0||!!this.runtimeIssue,o=n?"ERROR":"database"===this.configResult.storageType?"ENCRYPTED":"EXTERNAL";return{storageType:this.configResult.storageType,state:n?"ERROR":s.length?"WARNING":"READY",encryptionState:o,details:this.configResult.details,itemCount:A.length,mismatchCount:r,readOnly:this.configResult.config?.storageType==="vault"&&this.configResult.config.readOnly,adoptedCount:this.adoptedCount,warnings:s}}}],91022),e.s([],582482),e.s(["apnsCertificateCatalog",0,function(e){if(!Array.isArray(e))return _("APNs certificate catalog");let t=new Set;return e.map(e=>{let A=q(e,"APNs certificate catalog"),r=Z(A.id,"APNs certificate catalog");if(t.has(r))return _("APNs certificate catalog");t.add(r);let i=Z(A.environment,"APNs certificate catalog");return"SANDBOX"!==i&&"PRODUCTION"!==i?_("APNs certificate catalog"):{id:r,name:Z(A.name,"APNs certificate catalog"),topic:Z(A.topic,"APNs certificate catalog"),environment:i}})},"apnsTokenConnectionSettings",0,function(e){let t=q(e,"APNs token settings");return{teamId:Z(t.teamId,"APNs token settings"),keyId:Z(t.keyId,"APNs token settings")}},"appStoreConnectConnectionSettings",0,function(e){let t=q(e,"App Store Connect settings");return{issuerId:Z(t.issuerId,"App Store Connect settings"),keyId:Z(t.keyId,"App Store Connect settings")}},"cacheServerConnectionSettings",0,function(e){let t=q(e,"Actions cache settings");return Array.isArray(t.headers)?{baseUrl:Z(t.baseUrl,"Actions cache settings"),headers:t.headers.map(e=>{let t=q(e,"Actions cache settings");return{name:Z(t.name,"Actions cache settings"),value:Z(t.value,"Actions cache settings")}})}:_("Actions cache settings")},"githubAppConnectionSettings",0,function(e){let t=q(e,"GitHub App settings");return{appId:Z(t.appId,"GitHub App settings"),installationId:Z(t.installationId,"GitHub App settings"),webhookUrl:j(t.webhookUrl,"GitHub App settings")}},"jiraConnectionSettings",0,function(e){let t=q(e,"Jira connection settings");return{siteUrl:Z(t.siteUrl,"Jira connection settings"),email:Z(t.email,"Jira connection settings")}},"jiraWebhookConnectionSettings",0,function(e){let t=q(e,"Jira webhook settings");return{url:Z(t.url,"Jira webhook settings"),jql:j(t.jql,"Jira webhook settings")}},"readConnectionSettings",0,W],783396)},483291,e=>{"use strict";var t=e.i(374186);e.s(["compileRe2",0,function(e,{flags:A="",label:r="Regex pattern",maxLength:i=1024}={}){if(e.length>i)throw Error(`${r} must not exceed ${i} characters`);try{return new t.default(e,A.includes("u")?A:`${A}u`)}catch(t){let e=t instanceof Error?t.message:String(t);if(!(t instanceof SyntaxError))throw Error(`${r} could not be compiled: ${e}`,{cause:t});throw Error(`${r} is not valid RE2 syntax: ${e}`,{cause:t})}}])},250246,104503,516785,715199,e=>{"use strict";var t=e.i(666680),A=e.i(184015),r=e.i(119909),i=e.i(243783),s=e.i(483291),n=e.i(988349);e.i(805422);var o=e.i(694355),a=e.i(661983);let l="default";function g(e){if("SUCCEEDED"!==e.status||!e.resultJson)throw Error(e.error||`${e.kind} failed`);let t=JSON.parse(e.resultJson);if(!t||"object"!=typeof t||Array.isArray(t))throw Error(`${e.kind} returned an invalid result`);return t}function h(e){try{let t=JSON.parse(e.capabilitiesJson);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}function c(e){return null!==e.lastSeenAt&&Date.now()-e.lastSeenAt.getTime()<=(0,o.agentOnlineWindowMs)(e)&&null===e.disconnectedAt}e.s(["CodebasesService",0,class{agentControl;skillsService;constructor(e,t){for(const r of(this.agentControl=e,this.skillsService=t,[A.CODEBASE_REFRESH_JOB_KIND,A.CODEBASE_FETCH_JOB_KIND]))this.agentControl.registerCompletionHandler(r,e=>this.projectJob(e));this.agentControl.registerCompletionHandler(A.CODEBASE_GIT_OPERATION_JOB_KIND,e=>this.projectGitOperation(e))}async overview(){return await this.cleanupInternalJobs(),(await (0,i.getPrismaClient)()).codebaseRepository.findMany({orderBy:[{name:"asc"},{canonicalOrigin:"asc"}],include:{skillGroups:{include:{group:!0}},quickActionWorkflows:{include:{workflow:!0}},codebases:{orderBy:{folder:"asc"},include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,orderBy:{createdAt:"desc"},take:1}}}}})}async repositoryDetail(e){return await this.cleanupInternalJobs(),(await (0,i.getPrismaClient)()).codebaseRepository.findUnique({where:{id:e},include:{skillGroups:{include:{group:!0}},quickActionWorkflows:{include:{workflow:!0}},codebases:{orderBy:[{agent:{name:"asc"}},{folder:"asc"}],include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,orderBy:{createdAt:"desc"},take:1}}}}})}async detail(e){return await this.cleanupInternalJobs(),(await (0,i.getPrismaClient)()).codebase.findUnique({where:{id:e},include:{agent:!0,repository:{include:{skillGroups:{include:{group:!0}}}},jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,orderBy:{createdAt:"desc"},take:1}}})}async agentCodebases(e){return(await (0,i.getPrismaClient)()).codebase.findMany({where:{agentId:e},orderBy:{folder:"asc"},select:{id:!0,folder:!0,defaultBranch:!0,lastFetchedAt:!0,lastFetchAttemptAt:!0,repository:{select:{canonicalOrigin:!0,keepBaseBranchUpToDate:!0}},worktrees:{where:{missingAt:null},select:{id:!0,folder:!0,branch:!0,gitDirectory:!0,baseBranchOverride:!0}}}})}async settings(){let e=await (0,i.getPrismaClient)(),t=await e.codebaseSettings.findUnique({where:{id:l}});return t||e.codebaseSettings.upsert({where:{id:l},create:{id:l,refreshIntervalSeconds:A.DEFAULT_CODEBASE_RECONCILE_INTERVAL_SECONDS,fetchIntervalSeconds:r.DEFAULT_WORKTREE_FETCH_INTERVAL_SECONDS,defaultJiraBranchRegex:r.DEFAULT_JIRA_BRANCH_REGEX},update:{}})}async agentConfiguration(e){let t=await (0,i.getPrismaClient)(),[A,r,s]=await Promise.all([this.settings(),t.agent.findUnique({where:{id:e},select:{codebaseScanIntervalSeconds:!0,gitFetchIntervalSeconds:!0}}),this.agentCodebases(e)]);return{refreshIntervalSeconds:r?.codebaseScanIntervalSeconds??A.refreshIntervalSeconds,fetchIntervalSeconds:r?.gitFetchIntervalSeconds??A.fetchIntervalSeconds,codebases:s}}async updateSettings(e){let t="number"==typeof e?e:e.refreshIntervalSeconds,n="number"==typeof e?r.DEFAULT_WORKTREE_FETCH_INTERVAL_SECONDS:e.fetchIntervalSeconds;if(!Number.isInteger(t)||t<A.MIN_CODEBASE_RECONCILE_INTERVAL_SECONDS||t>A.MAX_CODEBASE_RECONCILE_INTERVAL_SECONDS)throw Error(`Refresh interval must be an integer from ${A.MIN_CODEBASE_RECONCILE_INTERVAL_SECONDS} to ${A.MAX_CODEBASE_RECONCILE_INTERVAL_SECONDS} seconds`);if(!Number.isInteger(n)||n<r.MIN_WORKTREE_FETCH_INTERVAL_SECONDS||n>r.MAX_WORKTREE_FETCH_INTERVAL_SECONDS)throw Error(`Fetch interval must be an integer from ${r.MIN_WORKTREE_FETCH_INTERVAL_SECONDS} to ${r.MAX_WORKTREE_FETCH_INTERVAL_SECONDS} seconds`);let o="number"==typeof e?r.DEFAULT_JIRA_BRANCH_REGEX:e.defaultJiraBranchRegex.trim();o&&(0,s.compileRe2)(o,{flags:"i",label:"Default Jira branch regex"});let a=await (0,i.getPrismaClient)(),g="number"==typeof e?{refreshIntervalSeconds:t}:{refreshIntervalSeconds:t,fetchIntervalSeconds:n,defaultJiraBranchRegex:o},h=await a.codebaseSettings.upsert({where:{id:l},create:{id:l,...g},update:g});return this.publish(null,null),h}async browse(e,t,r){await this.cleanupInternalJobs(),await this.requireAgentCapability(e,A.CODEBASE_BROWSE_JOB_KIND);let s=await this.agentControl.createJob({agentId:e,kind:A.CODEBASE_BROWSE_JOB_KIND,payload:{path:t},idempotencyKey:`codebase:browse:${r}`,timeoutSeconds:30,visibility:"SYSTEM"}),n=await this.waitForJob(s.id),o=(0,A.parseCodebaseDirectoryListing)(g(n).listing),a=await (0,i.getPrismaClient)();return await a.agentJob.deleteMany({where:{id:s.id}}),o}async inspect(e,t,r){await this.cleanupInternalJobs(),await this.requireAgentCapability(e,A.CODEBASE_INSPECT_JOB_KIND);let s=await this.agentControl.createJob({agentId:e,kind:A.CODEBASE_INSPECT_JOB_KIND,payload:{folder:t},idempotencyKey:`codebase:inspect:${r}`,timeoutSeconds:30,visibility:"SYSTEM"}),n=await this.waitForJob(s.id),o=(0,A.parseCodebaseSnapshot)(g(n).snapshot);if("AVAILABLE"!==o.availability)throw Error(o.error||"The selected folder is unavailable");if(o.linkedWorktree)throw Error("Linked Git worktrees are not supported yet");if(!o.canonicalOrigin)throw Error("Git origin is required");let a=await (0,i.getPrismaClient)(),l=await a.codebaseRepository.findUnique({where:{canonicalOrigin:o.canonicalOrigin}});return{jobId:s.id,snapshot:o,repository:l}}async confirm(e){let r=await (0,i.getPrismaClient)(),s=await r.agentJob.findUnique({where:{id:e.inspectionJobId}});if(!s||s.kind!==A.CODEBASE_INSPECT_JOB_KIND)throw Error("Codebase inspection was not found");if(!s.finishedAt||Date.now()-s.finishedAt.getTime()>9e5)throw Error("Codebase inspection expired; inspect the folder again");let n=(0,A.parseCodebaseSnapshot)(g(s).snapshot);if("AVAILABLE"!==n.availability||n.linkedWorktree||!n.canonicalOrigin||!n.displayOrigin||!n.observedOrigin)throw Error("Codebase inspection is not eligible for confirmation");let o=e.name?.trim()??"",a=e.description?.trim()??"";if(o.length>120)throw Error("Name must be 120 characters or fewer");if(a.length>2e3)throw Error("Description must be 2,000 characters or fewer");let l=await r.$transaction(async e=>{let A=await e.codebaseRepository.findUnique({where:{canonicalOrigin:n.canonicalOrigin}});if(!A){if(!o)throw Error("Name is required for a new repository");A=await e.codebaseRepository.upsert({where:{canonicalOrigin:n.canonicalOrigin},create:{id:(0,t.randomUUID)(),canonicalOrigin:n.canonicalOrigin,displayOrigin:n.displayOrigin,name:o,description:a},update:{}})}let r=await e.codebase.findUnique({where:{agentId_folder:{agentId:s.agentId,folder:n.folder}},select:{lastFetchedAt:!0}}),i=n.fetchedAt?new Date(n.fetchedAt):null,l=i&&(!r?.lastFetchedAt||i>r.lastFetchedAt)?i:r?.lastFetchedAt??null;return e.codebase.upsert({where:{agentId_folder:{agentId:s.agentId,folder:n.folder}},create:{id:(0,t.randomUUID)(),agentId:s.agentId,repositoryId:A.id,...this.snapshotData(n,l)},update:{repositoryId:A.id,...this.snapshotData(n,l)},include:{agent:!0,repository:!0,jobs:!0}})});return this.publish(l.id,l.repositoryId),await r.agentJob.deleteMany({where:{id:e.inspectionJobId,visibility:"SYSTEM"}}),await this.agentControl.requestCodebaseReconcile([l.agentId]),await this.skillsService?.requestAutoReconcile(),l}async updateRepository(e,t,A,r,n=!0,o){let a=t.trim(),l=A.trim();if(!a)throw Error("Name is required");if(a.length>120)throw Error("Name must be 120 characters or fewer");if(l.length>2e3)throw Error("Description must be 2,000 characters or fewer");let g=r?.trim()||null;g&&(0,s.compileRe2)(g,{flags:"i",label:"Jira branch regex"});let h=null==o?null:await this.skillsService?.validateGroupIds(o),c=await (0,i.getPrismaClient)(),E=await c.codebaseRepository.update({where:{id:e},data:{name:a,description:l,jiraBranchRegex:g,keepBaseBranchUpToDate:n}});return h&&await this.skillsService?.setRepositoryGroups(e,h),this.publish(null,e),E}async removeCodebase(e){let t=await (0,i.getPrismaClient)(),A=await t.$transaction(async t=>{let A=await t.codebase.findUnique({where:{id:e},select:{id:!0,repositoryId:!0}});if(!A)throw Error("Codebase not found");await t.codebase.delete({where:{id:e}});let r=await t.codebase.count({where:{repositoryId:A.repositoryId}}),i=await t.appRepository.count({where:{repositoryId:A.repositoryId}}),s=0===r&&0===i;return s&&await t.codebaseRepository.delete({where:{id:A.repositoryId}}),{id:A.id,repositoryId:A.repositoryId,repositoryRemoved:s}});return this.publish(A.id,A.repositoryId),A}async report(e,t){let r=[],i=!1;try{for(let s of t.slice(0,500)){let t=(0,A.parseCodebaseSnapshot)(s.snapshot),n=await this.applySnapshot(e,s.codebaseId,t);r.push(n.codebase),i||=n.changed}}finally{i&&this.publish(null,null)}return r}async runOperation(e,t,r){if(!r.trim())throw Error("requestId is required");let s=await (0,i.getPrismaClient)(),o=await s.codebase.findMany({where:{id:{in:[...new Set(t)].slice(0,500)}},include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,select:{id:!0},take:1}}}),a=[],l=[];for(let t of o){if(t.jobs.length>0){l.push({codebaseId:t.id,reason:"ACTIVE_OPERATION"});continue}if(!c(t.agent)){l.push({codebaseId:t.id,reason:"OFFLINE"});continue}if(!h(t.agent).includes(e)){l.push({codebaseId:t.id,reason:"UNSUPPORTED"});continue}if(e===A.CODEBASE_FETCH_JOB_KIND&&"AVAILABLE"!==t.availability){l.push({codebaseId:t.id,reason:t.availability});continue}try{a.push(await this.agentControl.createJob({agentId:t.agentId,codebaseId:t.id,kind:e,payload:{codebaseId:t.id,folder:t.folder,expectedOrigin:t.repository.canonicalOrigin,...e===A.CODEBASE_FETCH_JOB_KIND&&t.defaultBranch?{baseBranch:t.defaultBranch}:{},...e===A.CODEBASE_FETCH_JOB_KIND?{keepBaseBranchUpToDate:t.repository.keepBaseBranchUpToDate}:{}},idempotencyKey:`codebase:${e}:${r}:${t.id}`,timeoutSeconds:e===A.CODEBASE_FETCH_JOB_KIND?300:30}))}catch(e){if(!await s.agentJob.findFirst({where:{codebaseId:t.id,...n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE},select:{id:!0}}))throw e;l.push({codebaseId:t.id,reason:"ACTIVE_OPERATION"})}}return{jobs:a,skipped:l}}async inspectGitState(e,t){if(!t.trim())throw Error("requestId is required");let r=await this.requireRunnableCodebase(e,A.CODEBASE_GIT_INSPECT_JOB_KIND),s=await this.agentControl.createJob({agentId:r.agentId,codebaseId:r.id,kind:A.CODEBASE_GIT_INSPECT_JOB_KIND,payload:{action:"STATE",codebaseId:r.id,folder:r.folder,expectedOrigin:r.repository.canonicalOrigin},idempotencyKey:`codebase:git:state:${t}:${r.id}`,timeoutSeconds:30,visibility:"SYSTEM"}),n=await (0,i.getPrismaClient)();try{let e=await this.waitForJob(s.id);return(0,A.parseCodebaseGitState)(g(e).state)}finally{await n.agentJob.deleteMany({where:{id:s.id,visibility:"SYSTEM"}})}}async inspectStash(e,t,r){if(!r.trim())throw Error("requestId is required");let s=await this.requireRunnableCodebase(e,A.CODEBASE_GIT_INSPECT_JOB_KIND),n=await this.agentControl.createJob({agentId:s.agentId,codebaseId:s.id,kind:A.CODEBASE_GIT_INSPECT_JOB_KIND,payload:{action:"STASH_DIFF",codebaseId:s.id,folder:s.folder,expectedOrigin:s.repository.canonicalOrigin,stashOid:t},idempotencyKey:`codebase:git:stash:${r}:${s.id}`,timeoutSeconds:30,visibility:"SYSTEM"}),o=await (0,i.getPrismaClient)();try{let e=await this.waitForJob(n.id);return(0,A.parseCodebaseStashDiff)(g(e).diff)}finally{await o.agentJob.deleteMany({where:{id:n.id,visibility:"SYSTEM"}})}}async runGitOperation(e){if(!e.requestId.trim())throw Error("requestId is required");let t=await this.requireRunnableCodebase(e.codebaseId,A.CODEBASE_GIT_OPERATION_JOB_KIND);return this.agentControl.createJob({agentId:t.agentId,codebaseId:t.id,kind:A.CODEBASE_GIT_OPERATION_JOB_KIND,payload:{codebaseId:t.id,folder:t.folder,expectedOrigin:t.repository.canonicalOrigin,defaultBranch:t.defaultBranch,operation:e.operation,...e.branch?{branch:e.branch}:{},...e.stashOid?{stashOid:e.stashOid}:{},..."SWITCH_BRANCH"===e.operation?{stashChanges:!!e.stashChanges}:{}},idempotencyKey:`codebase:git:${e.operation}:${e.requestId}:${t.id}`,timeoutSeconds:"PULL_BRANCH"===e.operation?300:60})}subscribe(){return a.agentEventBus.iterate(a.CODEBASE_CHANGED_TOPIC)}async projectJob(e){if(!e.codebaseId||!e.resultJson)return;let t=JSON.parse(e.resultJson);if(!t||"object"!=typeof t||Array.isArray(t))return;let r=t.snapshot;if(!r)return;let i=await this.applySnapshot(e.agentId,e.codebaseId,(0,A.parseCodebaseSnapshot)(r));i.changed&&this.publish(i.codebase.id,i.codebase.repositoryId)}async projectGitOperation(e){if("SUCCEEDED"===e.status)try{await this.projectJob(e)}catch(e){console.error("Could not project codebase Git operation:",e instanceof Error?e.message:e)}try{await this.agentControl.requestCodebaseReconcile([e.agentId])}catch(e){console.error("Could not request codebase reconciliation:",e instanceof Error?e.message:e)}}async applySnapshot(e,t,A){let r=await (0,i.getPrismaClient)(),s=await r.codebase.findUnique({where:{id:t},include:{repository:!0}});if(!s||s.agentId!==e)throw Error("Codebase not found for this agent");let n=new Date(A.checkedAt),o=null!==A.canonicalOrigin&&A.canonicalOrigin!==s.repository.canonicalOrigin,a=A.fetchedAt?new Date(A.fetchedAt):null,l=await r.codebase.updateMany({where:{id:t,agentId:e,OR:[{lastCheckedAt:null},{lastCheckedAt:{lt:n}}]},data:{folder:A.folder,...null===A.observedOrigin?{}:{observedOrigin:A.observedOrigin},branch:A.branch,headSha:A.headSha,upstream:A.upstream,ahead:A.ahead,behind:A.behind,syncState:A.syncState,availability:o?"ORIGIN_MISMATCH":A.availability,statusError:o?`Origin changed to ${A.displayOrigin??"an unknown remote"}`:A.error,lastCheckedAt:n}});l.count>0&&a&&await r.codebase.updateMany({where:{id:t,agentId:e,OR:[{lastFetchedAt:null},{lastFetchedAt:{lt:a}}]},data:{lastFetchedAt:a}});let g=await r.codebase.findUnique({where:{id:t},include:{agent:!0,repository:!0,jobs:!0}});if(!g||g.agentId!==e)throw Error("Codebase not found for this agent");return{codebase:g,changed:l.count>0}}snapshotData(e,t){return{folder:e.folder,observedOrigin:e.observedOrigin??"",branch:e.branch,headSha:e.headSha,upstream:e.upstream,ahead:e.ahead,behind:e.behind,syncState:e.syncState,availability:e.availability,statusError:e.error,lastCheckedAt:new Date(e.checkedAt),lastFetchedAt:t}}async requireAgentCapability(e,t){let A=await this.agentControl.getAgent(e);if(!A)throw Error("Agent not found");if(!c(A))throw Error("Agent is offline");if(!h(A).includes(t))throw Error("Agent must be updated to use codebases")}async requireRunnableCodebase(e,t){await this.cleanupInternalJobs();let A=await (0,i.getPrismaClient)(),r=await A.codebase.findUnique({where:{id:e},include:{agent:!0,repository:!0,jobs:{where:n.ACTIVE_CODEBASE_BLOCKING_JOB_WHERE,select:{id:!0},take:1}}});if(!r)throw Error("Codebase not found");if(!c(r.agent))throw Error("Agent is offline");if(!h(r.agent).includes(t))throw Error("Agent must be updated to manage Git branches and stashes");if("AVAILABLE"!==r.availability)throw Error(r.statusError||"Codebase is unavailable");if(r.jobs.length)throw Error("Another codebase operation is already running");return r}async waitForJob(e){let t=a.agentEventBus.iterate((0,a.agentJobChangedTopic)(e)),A=Date.now()+3e4;try{for(;Date.now()<A;){let r=await this.agentControl.getJob(e);if(!r)throw Error("Agent job disappeared");if(["SUCCEEDED","FAILED","CANCELLED","TIMED_OUT"].includes(r.status))return r;await Promise.race([t.next(),new Promise(e=>setTimeout(e,A-Date.now()))])}throw await this.agentControl.cancelJob(e),Error("Agent did not respond in time")}finally{await t.return?.()}}publish(e,t){a.agentEventBus.publish(a.CODEBASE_CHANGED_TOPIC,{codebaseOverviewChanged:{codebaseId:e,repositoryId:t}})}async cleanupInternalJobs(){let e=await (0,i.getPrismaClient)();await e.agentJob.deleteMany({where:{visibility:"SYSTEM",kind:{in:[...A.CODEBASE_JOB_KINDS]},finishedAt:{lt:new Date(Date.now()-9e5)}}})}}],104503);var E=e.i(907855);let Q=E.enum(["IN_SYNC","AHEAD","BEHIND","DIVERGED","NO_UPSTREAM","DETACHED","UNKNOWN"]),I=E.enum(["AVAILABLE","MISSING","NOT_REPOSITORY","ORIGIN_MISMATCH","ERROR"]),d=E.object({id:E.string(),path:E.string(),observedOrigin:E.string(),branch:E.string().nullable(),headSha:E.string().nullable(),upstream:E.string().nullable(),ahead:E.number().int().nullable(),behind:E.number().int().nullable(),syncState:Q,availability:I,statusError:E.string().nullable(),lastCheckedAt:E.string().nullable(),lastFetchedAt:E.string().nullable(),lastFetchAttemptAt:E.string().nullable().optional(),lastFetchError:E.string().nullable().optional(),defaultBranch:E.string().nullable().optional(),localBranches:E.array(E.string()).optional(),remoteBranches:E.array(E.string()).optional(),createdAt:E.string().optional(),updatedAt:E.string().optional(),repository:E.object({id:E.string(),name:E.string(),description:E.string(),canonicalOrigin:E.string(),displayOrigin:E.string()}),agent:E.object({id:E.string(),name:E.string(),hostname:E.string(),connectionStatus:E.enum(["ONLINE","OFFLINE"])}),activeJob:E.object({id:E.string(),kind:E.string(),status:E.enum(["QUEUED","RUNNING"])}).nullable()}),u=E.object({codebases:E.array(d)}),C=E.object({}),B=E.union([E.object({id:E.string().min(1).describe("Registered codebase ID")}),E.object({path:E.string().min(1).describe("Exact absolute folder path of the codebase"),agentId:E.string().min(1).optional().describe("Agent ID used to disambiguate a shared folder path")})]),f=E.object({codebase:d}),p=E.object({query:E.string().min(1).optional(),agentId:E.string().min(1).optional(),repositoryId:E.string().min(1).optional(),branch:E.string().min(1).optional(),availability:I.optional(),syncState:Q.optional(),limit:E.number().int().min(1).max(500).default(100)}).refine(({query:e,agentId:t,repositoryId:A,branch:r,availability:i,syncState:s})=>!!(e||t||A||r||i||s),{message:"At least one codebase search criterion is required"}),y=E.object({codebases:E.array(d),matchingCount:E.number().int().nonnegative()}),w=E.object({id:E.string(),name:E.string(),description:E.string(),canonicalOrigin:E.string(),displayOrigin:E.string(),jiraBranchRegex:E.string().nullable(),keepBaseBranchUpToDate:E.boolean(),codebaseCount:E.number().int().nonnegative(),agentIds:E.array(E.string()),createdAt:E.string(),updatedAt:E.string()}),D=E.object({repositories:E.array(w)}),m=E.object({id:E.string().min(1)}),S=E.object({repository:w.extend({codebases:E.array(d)})});class N extends Error{code;matches;constructor(e,t,A=[]){super(t),this.code=e,this.matches=A,this.name="CodebaseLookupError"}}e.s(["CodebaseLookupError",0,N,"CodebaseToolRecordSchema",0,d,"CodebaseToolsService",0,class{codebasesService;constructor(e){this.codebasesService=e}stringArray(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}record(e,t){var A;let r=t.jobs[0]??null;return d.parse({id:t.id,path:t.folder,observedOrigin:t.observedOrigin,branch:t.branch,headSha:t.headSha,upstream:t.upstream,ahead:t.ahead,behind:t.behind,syncState:t.syncState,availability:t.availability,statusError:t.statusError,lastCheckedAt:t.lastCheckedAt?.toISOString()??null,lastFetchedAt:t.lastFetchedAt?.toISOString()??null,lastFetchAttemptAt:t.lastFetchAttemptAt?.toISOString()??null,lastFetchError:t.lastFetchError,defaultBranch:t.defaultBranch,localBranches:this.stringArray(t.localBranchesJson),remoteBranches:this.stringArray(t.remoteBranchesJson),createdAt:t.createdAt.toISOString(),updatedAt:t.updatedAt.toISOString(),repository:{id:e.id,name:e.name,description:e.description,canonicalOrigin:e.canonicalOrigin,displayOrigin:e.displayOrigin},agent:{id:t.agent.id,name:t.agent.name,hostname:t.agent.hostname,connectionStatus:null!==(A=t.agent).lastSeenAt&&Date.now()-A.lastSeenAt.getTime()<=(0,o.agentOnlineWindowMs)(A)&&null===A.disconnectedAt?"ONLINE":"OFFLINE"},activeJob:r?{id:r.id,kind:r.kind,status:r.status}:null})}async list(){return(await this.codebasesService.overview()).flatMap(e=>e.codebases.map(t=>this.record(e,t)))}async getByPath(e,t){if("string"!=typeof e||0===e.trim().length)throw new N("INVALID_PATH","A non-empty codebase path is required");let A=(await this.list()).filter(A=>A.path===e&&(!t||A.agent.id===t));if(0===A.length)throw new N("CODEBASE_NOT_FOUND",`No codebase is registered at path ${e}`);if(A.length>1)throw new N("AMBIGUOUS_PATH",`More than one agent has a codebase registered at path ${e}`,A.map(({agent:e})=>({agentId:e.id,name:e.name,hostname:e.hostname})));return A[0]}async getById(e){let t=(await this.list()).find(t=>t.id===e);if(!t)throw new N("CODEBASE_NOT_FOUND",`No codebase is registered with id ${e}`);return t}async get(e){return"id"in e?this.getById(e.id):this.getByPath(e.path,e.agentId)}async search(e){let t=e.query?.toLocaleLowerCase(),A=(await this.list()).filter(A=>(!e.agentId||A.agent.id===e.agentId)&&(!e.repositoryId||A.repository.id===e.repositoryId)&&(!e.branch||A.branch===e.branch)&&(!e.availability||A.availability===e.availability)&&(!e.syncState||A.syncState===e.syncState)&&(!t||[A.id,A.path,A.observedOrigin,A.branch??"",A.repository.name,A.repository.description,A.repository.canonicalOrigin,A.agent.name,A.agent.hostname].some(e=>e.toLocaleLowerCase().includes(t))));return{codebases:A.slice(0,e.limit),matchingCount:A.length}}async repositories(){return(await this.codebasesService.overview()).map(e=>({id:e.id,name:e.name,description:e.description,canonicalOrigin:e.canonicalOrigin,displayOrigin:e.displayOrigin,jiraBranchRegex:e.jiraBranchRegex,keepBaseBranchUpToDate:e.keepBaseBranchUpToDate,codebaseCount:e.codebases.length,agentIds:[...new Set(e.codebases.map(e=>e.agentId))],createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async repository(e){let t=(await this.codebasesService.overview()).find(t=>t.id===e);if(!t)throw Error("Codebase repository not found");return{...(await this.repositories()).find(t=>t.id===e),codebases:t.codebases.map(e=>this.record(t,e))}}},"GetCodebaseInputSchema",0,B,"GetCodebaseOutputSchema",0,f,"GetCodebaseRepositoriesOutputSchema",0,D,"GetCodebaseRepositoryInputSchema",0,m,"GetCodebaseRepositoryOutputSchema",0,S,"GetCodebasesInputSchema",0,C,"GetCodebasesOutputSchema",0,u,"SearchCodebasesInputSchema",0,p,"SearchCodebasesOutputSchema",0,y],516785);let R={openapi:"3.1.0",info:{title:"AI Development Environment Codebases API",version:"0.1.0",description:"Read-only access to registered codebase checkouts."},tags:[{name:"Codebases"}],paths:{"/api/codebases":{get:{tags:["Codebases"],operationId:"getCodebases",summary:"List codebases",security:[{BetterAuthCookie:[]},{BetterAuthBearer:[]}],responses:{200:{description:"Registered codebase checkouts",content:{"application/json":{schema:{type:"object",required:["codebases"],properties:{codebases:{type:"array",items:{$ref:"#/components/schemas/CodebaseToolRecord"}}}}}}},401:{$ref:"#/components/responses/Unauthorized"},500:{$ref:"#/components/responses/InternalError"}}}},"/api/codebases/by-path":{get:{tags:["Codebases"],operationId:"getCodebaseByPath",summary:"Get a codebase by folder path",security:[{BetterAuthCookie:[]},{BetterAuthBearer:[]}],parameters:[{name:"path",in:"query",required:!0,description:"Exact absolute folder path of the codebase",schema:{type:"string",minLength:1}}],responses:{200:{description:"Matching codebase checkout",content:{"application/json":{schema:{type:"object",required:["codebase"],properties:{codebase:{$ref:"#/components/schemas/CodebaseToolRecord"}}}}}},400:{$ref:"#/components/responses/BadRequest"},401:{$ref:"#/components/responses/Unauthorized"},404:{$ref:"#/components/responses/NotFound"},409:{$ref:"#/components/responses/AmbiguousPath"},500:{$ref:"#/components/responses/InternalError"}}}}},components:{schemas:{CodebaseToolRecord:e.i(865889).toJSONSchema(d),ErrorResponse:{type:"object",required:["error"],properties:{error:{type:"object",required:["code","message"],properties:{code:{type:"string"},message:{type:"string"},matches:{type:"array",items:{type:"object",required:["agentId","name","hostname"],properties:{agentId:{type:"string"},name:{type:"string"},hostname:{type:"string"}}}}}}}}},securitySchemes:{BetterAuthCookie:{type:"apiKey",in:"cookie",name:"better-auth.session_token",description:"Better Auth browser session cookie."},BetterAuthBearer:{type:"http",scheme:"bearer",description:"Better Auth native-client session token."}},responses:Object.fromEntries([["BadRequest","The path is missing or invalid"],["NotFound","No codebase uses the requested path"],["AmbiguousPath","Multiple agents use the requested path"],["Unauthorized","A Better Auth user session is required"],["InternalError","Unexpected server error"]].map(([e,t])=>[e,{description:t,content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}]))}};e.s(["codebasesOpenApiDocument",0,R],715199),e.s([],250246)},247287,e=>{"use strict";var t=e.i(666680),A=e.i(246479),r=e.i(397554),i=e.i(827957);let s=new Set([429,500,503]);async function n(e){await new Promise(t=>setTimeout(t,e))}e.s(["ApnsClient",0,class{sessionFactory;sessions;jwtCache;constructor(e=A.connect){this.sessionFactory=e,this.sessions=new Map,this.jwtCache=new Map}close(){for(let e of this.sessions.values())e.close();this.sessions.clear()}session(e,t){let A="TOKEN"===t.kind?`token:${t.teamId}:${t.keyId}`:`certificate:${t.fingerprint}`,r=`${e}:${A}`,i=this.sessions.get(r);if(i&&!i.closed&&!i.destroyed)return i;let s="CERTIFICATE"===t.kind?{pfx:Buffer.from(t.p12Base64,"base64"),passphrase:t.passphrase}:{},n=this.sessionFactory("SANDBOX"===e?"https://api.sandbox.push.apple.com":"https://api.push.apple.com",s);return n.on("error",()=>{this.sessions.get(r)===n&&this.sessions.delete(r)}),n.on("close",()=>{this.sessions.get(r)===n&&this.sessions.delete(r)}),this.sessions.set(r,n),n}async authorization(e){let A;if("CERTIFICATE"===e.kind)return null;let s=`${e.teamId}:${e.keyId}:${(0,t.createHash)("sha256").update(e.privateKey).digest("hex")}`,n=this.jwtCache.get(s);if(n&&Date.now()-n.createdAt<3e6)return`bearer ${n.token}`;try{A=await (0,r.importPKCS8)(e.privateKey,"ES256")}catch{throw Error("The APNs .p8 key must be an ES256 PKCS#8 private key")}let o=await new i.SignJWT({}).setProtectedHeader({alg:"ES256",kid:e.keyId}).setIssuer(e.teamId).setIssuedAt().sign(A);return this.jwtCache.set(s,{token:o,createdAt:Date.now()}),`bearer ${o}`}async requestOnce(e){let t=await this.authorization(e.authentication),r=this.session(e.environment,e.authentication);return new Promise((i,s)=>{let n=r.request({[A.constants.HTTP2_HEADER_METHOD]:e.method??"POST",[A.constants.HTTP2_HEADER_PATH]:e.path,[A.constants.HTTP2_HEADER_SCHEME]:"https","content-type":"application/json",...t?{authorization:t}:{},...e.headers}),o={},a="";n.setEncoding("utf8"),n.on("response",e=>{o=e}),n.on("data",e=>{(a+=e).length>65536&&n.close(A.constants.NGHTTP2_CANCEL)}),n.on("error",s),n.on("end",()=>{let e=o[A.constants.HTTP2_HEADER_STATUS];i({status:Number(Array.isArray(e)?e[0]:e)||0,body:a,headers:o})}),n.setTimeout(2e4,()=>{n.close(A.constants.NGHTTP2_CANCEL),s(Error("APNs request timed out"))}),n.end(JSON.stringify(e.payload))})}async send(e){if(!e.deviceToken&&!e.broadcastTopic)throw Error("An APNs device token or broadcast topic is required");let A=e.deviceToken?`/3/device/${e.deviceToken.toLowerCase()}`:`/4/broadcasts/apps/${encodeURIComponent(e.broadcastTopic)}`,r=Date.now(),i=0;for(;;){let o;try{o=await this.requestOnce({...e,path:A})}catch(e){if(i>=3)throw e;await n(Math.min(4e3,250*2**i)),i+=1;continue}let a={};try{a=o.body?JSON.parse(o.body):{}}catch{a={}}if(s.has(o.status)&&i<3){await n(function(e,t){let A=Array.isArray(e)?e[0]:e;if(A){let e=Number(A);if(Number.isFinite(e))return Math.min(3e4,1e3*e);let t=Date.parse(A);if(Number.isFinite(t))return Math.max(0,Math.min(3e4,t-Date.now()))}return Math.min(4e3,250*2**t)}(o.headers["retry-after"],i)),i+=1;continue}let l=o.headers["apns-id"];return{status:o.status,reason:a.reason??null,timestamp:"number"==typeof a.timestamp?new Date(a.timestamp):null,apnsId:(Array.isArray(l)?l[0]:l)??e.headers["apns-id"]??(0,t.randomUUID)(),attempts:i+1,durationMs:Date.now()-r}}}async createBroadcastChannel(e){let t=await this.requestOnce({environment:e.environment,authentication:e.authentication,path:`/4/broadcasts/apps/${encodeURIComponent(e.bundleId)}`,payload:{"channel-storage-policy":+("NO_STORAGE"!==e.storagePolicy)},headers:{"apns-topic":`${e.bundleId}.push-type.liveactivity`,"apns-push-type":"liveactivity"}}),A=t.headers["apns-channel-id"],r=Array.isArray(A)?A[0]:A;if(![200,201].includes(t.status)||!r)throw Error(`APNs could not create the broadcast channel (HTTP ${t.status})`);return r}async deleteBroadcastChannel(e){let t=await this.requestOnce({environment:e.environment,authentication:e.authentication,method:"DELETE",path:`/4/broadcasts/apps/${encodeURIComponent(e.bundleId)}`,payload:{},headers:{"apns-topic":`${e.bundleId}.push-type.liveactivity`,"apns-push-type":"liveactivity","apns-channel-id":e.channelId}});if(![200,204].includes(t.status))throw Error(`APNs could not delete the broadcast channel (HTTP ${t.status})`)}}])},282790,474170,308810,e=>{"use strict";var t=e.i(247287),A=e.i(666680),r=e.i(685560),i=e.i(397554),s=e.i(243783);e.i(582482);var n=e.i(783396),o=e.i(318905),a=e.i(91022),l=e.i(661983);let g=new Set(["alert","background","complication","controls","fileprovider","liveactivity","location","mdm","pushtotalk","voip","widgets"]),h=/^[A-Za-z0-9][A-Za-z0-9.-]{0,254}$/;function c(e,t){if(!e||"object"!=typeof e||Array.isArray(e))throw Error(`${t} must be an object`);return e}function E(e,t,A){if("string"!=typeof e||!e.trim())throw Error(`${t} is required`);let r=e.trim();if(r.length>A||r.includes("\0"))throw Error(`${t} is invalid`);return r}function Q(e,t,A){return null==e||""===e?null:E(e,t,A)}function I(e,t){let A;if("HEX"===t){let t=e.replace(/[\s<>]/g,"");if(!/^[A-Fa-f0-9]{64}$/.test(t))throw Error("token must contain exactly 32 bytes of hexadecimal data");A=Buffer.from(t,"hex")}else{let t=e.trim();if(!/^[A-Za-z0-9+/_-]+={0,2}$/.test(t))throw Error("token is not valid Base64");try{A=Buffer.from(t.replaceAll("-","+").replaceAll("_","/"),"base64")}catch{throw Error("token is not valid Base64")}if(A.toString("base64").replace(/=+$/,"")!==t.replaceAll("-","+").replaceAll("_","/").replace(/=+$/,""))throw Error("token is not valid Base64")}if(32!==A.length)throw Error("token must decode to exactly 32 bytes");return A.toString("hex").toUpperCase()}function d(e){let t=c(e,"registration"),A=new Set(["clientRegistrationId","token","tokenEncoding","topic","environment","supportedPushTypes","displayName","deviceModel","osVersion","appVersion","appBuild","locale","pushMagic"]),r=Object.keys(t).find(e=>!A.has(e));if(r)throw Error(`Unexpected registration field: ${r}`);let i=E(t.tokenEncoding,"tokenEncoding",10);if("HEX"!==i&&"BASE64"!==i)throw Error("tokenEncoding must be HEX or BASE64");let s=E(t.environment,"environment",20);if("SANDBOX"!==s&&"PRODUCTION"!==s)throw Error("environment must be SANDBOX or PRODUCTION");let n=E(t.topic,"topic",255);if(!h.test(n))throw Error("topic is invalid");if(!Array.isArray(t.supportedPushTypes)||!t.supportedPushTypes.length)throw Error("supportedPushTypes must contain at least one push type");let o=[...new Set(t.supportedPushTypes.map(e=>{if("string"!=typeof e||!g.has(e))throw Error(`Unsupported APNs push type: ${String(e)}`);return e}))],a=Q(t.pushMagic,"pushMagic",500);if(o.includes("mdm")&&!a)throw Error("pushMagic is required when MDM is supported");return{clientRegistrationId:E(t.clientRegistrationId,"clientRegistrationId",200),token:I(E(t.token,"token",1024),i),tokenEncoding:i,topic:n,environment:s,supportedPushTypes:o,displayName:E(t.displayName,"displayName",120),deviceModel:Q(t.deviceModel,"deviceModel",120),osVersion:Q(t.osVersion,"osVersion",50),appVersion:Q(t.appVersion,"appVersion",50),appBuild:Q(t.appBuild,"appBuild",50),locale:Q(t.locale,"locale",35),pushMagic:a}}function u(e){let t,A=c(e,"push editor"),r=E(A.pushType,"pushType",30);if(!g.has(r))throw Error("pushType is unsupported");let i=c(A.headers??{},"headers"),s=c(A.aps??{},"aps"),n=c(A.custom??{},"custom"),o=Q(A.credentialId,"credentialId",100),a=Number(i.priority??("background"===r?5:10));if(![1,5,10].includes(a))throw Error("APNs priority must be 1, 5, or 10");if("background"===r&&5!==a)throw Error("Background notifications require priority 5");if(["voip","mdm","pushtotalk"].includes(r)&&10!==a)throw Error(`${r} notifications require priority 10`);if(1===a&&"location"!==r)throw Error("Priority 1 is supported only for location notifications");let l=E(i.topic,"topic",255);if(!h.test(l))throw Error("topic is invalid");let I={complication:".complication",fileprovider:".pushkit.fileprovider",liveactivity:".push-type.liveactivity",location:".location-query",pushtotalk:".voip-ptt",voip:".voip",widgets:".push-type.widgets",controls:".push-type.controls"}[r];if(I&&!l.endsWith(I))throw Error(`${r} notifications require a topic ending in ${I}`);if("mdm"===r){if(!o)throw Error("MDM requires a certificate credential");if(Object.keys(s).length)throw Error("MDM payloads cannot contain aps");if(Object.keys(n).length)throw Error("MDM payloads cannot contain custom root fields");t={mdm:"__PUSH_MAGIC__"}}else{let e={...s},i=e["relevance-score"];if(void 0!==i&&("number"!=typeof i||i<0||i>1))throw Error("aps.relevance-score must be between 0 and 1");let o=e.badge;if(void 0!==o&&("number"!=typeof o||!Number.isInteger(o)||o<0))throw Error("aps.badge must be a non-negative integer");let a=e["interruption-level"];if(void 0!==a&&!["passive","active","time-sensitive","critical"].includes(String(a)))throw Error("aps.interruption-level is invalid");let l=e.sound;if(l&&"object"==typeof l&&!Array.isArray(l)){let e=l.volume;if("number"!=typeof e||!Number.isFinite(e)||e<0||e>1)throw Error("Critical sound volume must be between 0 and 1")}if("background"===r){for(let t of["alert","badge","sound"])if(void 0!==e[t])throw Error(`Background notifications cannot contain aps.${t}`);e["content-available"]=1}if("alert"===r&&!Object.keys(e).length)throw Error("Alert notifications require at least one aps field");if("liveactivity"===r){let t=c(A.liveActivity??{},"liveActivity");if(!Number.isInteger(t.timestamp))throw Error("Live Activity timestamp must be an integer Unix timestamp");if(!["start","update","end"].includes(String(t.event)))throw Error("Live Activity event must be start, update, or end");Object.assign(e,t)}t={...n,aps:e}}let d=Buffer.byteLength(JSON.stringify(t)),u="voip"===r?5120:4096;if(d>u)throw Error(`Payload is ${d} bytes; ${r} allows ${u}`);let C={"apns-push-type":r,"apns-topic":l,"apns-priority":String(a)};for(let[e,t]of[["apns-id",i.id],["apns-expiration",i.expiration],["apns-collapse-id",i.collapseId],["apns-channel-id",i.broadcastChannelId]])null!=t&&""!==t&&(C[e]=E(t,e,"apns-collapse-id"===e?64:200));if(C["apns-id"]&&!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(C["apns-id"]))throw Error("apns-id must be a UUID");if(C["apns-expiration"]&&(!/^\d+$/.test(C["apns-expiration"])||0>Number(C["apns-expiration"])))throw Error("apns-expiration must be a non-negative Unix timestamp");return{editor:{pushType:r,headers:i,aps:s,custom:n,liveActivity:"liveactivity"===r?c(A.liveActivity??{},"liveActivity"):null,credentialId:o},payload:t,headers:C,byteLength:d}}e.s(["normalizeDeviceToken",0,I,"parseApnsRegistrationInput",0,d,"validatePushEditor",0,u],474170);let C="default",B=["DEVICES","ALL","DIRECT","BROADCAST"],f="server:apns-recovery";function p(e){return(0,A.createHash)("sha256").update(e).digest("hex").toUpperCase()}function y(e,t){let i;try{i=(0,r.createSecureContext)({pfx:e,passphrase:t})}catch{throw Error("The .p12 file or passphrase is invalid")}let s=i.context.getCertificate();if(!s?.length)throw Error("The .p12 file does not contain a leaf certificate");let n=new A.X509Certificate(s),o=new Date(n.validTo);if(Number.isNaN(o.getTime()))throw Error("The .p12 certificate expiration date is invalid");return{expiresAt:o,fingerprint:n.fingerprint256.replaceAll(":","").toUpperCase()}}function w(e){return JSON.parse(e)}function D(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}function m(e,t,A=200){let r=e.trim();if(!r||r.length>A||r.includes("\0"))throw Error(`${t} is required or invalid`);return r}let S=Promise.resolve();async function N(e){let t,A=S;S=new Promise(e=>{t=e}),await A;try{return await e()}finally{t()}}e.s(["PushNotificationsService",0,class{client;credentials;polling;async storedTokenSettings(){return(0,n.readConnectionSettings)(this.credentials,o.CREDENTIALS.apnsTokenSettings,n.apnsTokenConnectionSettings)}async storedCertificateCatalog(){return(0,n.readConnectionSettings)(this.credentials,o.CREDENTIALS.apnsCertificateCatalog,n.apnsCertificateCatalog)}recoveryStarted;activeBatchIds;constructor(e=new t.ApnsClient,A=new a.CredentialService,r){this.client=e,this.credentials=A,this.polling=r,this.recoveryStarted=!1,this.activeBatchIds=new Set,this.polling?.register({id:f,kind:"APNS_RECOVERY",runtime:"SERVER",enabled:!0,cadenceSeconds:30,details:{}}),queueMicrotask(()=>void this.pollRecovery()),setInterval(()=>void this.pollRecovery(),3e4).unref()}async pollRecovery(){this.polling?.schedule(f,new Date(Date.now()+3e4));try{this.polling?await this.polling.run(f,()=>this.recover(),e=>e):await this.recover()}catch{}}changed(){l.agentEventBus.publish(l.PUSH_NOTIFICATIONS_CHANGED_TOPIC,{changed:!0})}subscribe(){return l.agentEventBus.iterate(l.PUSH_NOTIFICATIONS_CHANGED_TOPIC)}async register(e,t){let A=d(e);return this.registerValidated(A,t)}async registerValidated(e,t){let r=await (0,s.getPrismaClient)(),i=p(e.token),n=new Date,o={clientRegistrationId:e.clientRegistrationId,topic:e.topic,environment:e.environment},a=await r.$transaction(async r=>{let s=await r.apnsRegistration.findUnique({where:{clientRegistrationId_topic_environment:o}}),a=await r.apnsRegistration.findUnique({where:{tokenHash_topic_environment:{tokenHash:i,topic:e.topic,environment:e.environment}}});a&&a.id!==s?.id&&await r.apnsRegistration.update({where:{id:a.id},data:{token:"",tokenHash:`REASSIGNED:${a.id}:${a.tokenHash}`,status:"INACTIVE",invalidatedAt:n,lastFailureReason:"TOKEN_REASSIGNED",lastFailureAt:n}});let l={token:e.token,tokenHash:i,pushTypesJson:JSON.stringify(e.supportedPushTypes),displayName:e.displayName,deviceModel:e.deviceModel,osVersion:e.osVersion,appVersion:e.appVersion,appBuild:e.appBuild,locale:e.locale,pushMagic:e.pushMagic,lastIpAddress:t,status:"ACTIVE",invalidatedAt:null,lastFailureReason:null,lastFailureAt:null,lastRegisteredAt:n};return{registration:s?await r.apnsRegistration.update({where:{id:s.id},data:l}):await r.apnsRegistration.create({data:{id:(0,A.randomUUID)(),...o,...l}}),created:!s}});return this.changed(),a}async registrations(){let e=await (0,s.getPrismaClient)();return(await e.apnsRegistration.findMany({orderBy:[{status:"asc"},{lastRegisteredAt:"desc"}]})).map(e=>({...e,tokenMasked:e.token?`${e.token.slice(0,8)}…${e.token.slice(-8)}`:"—",supportedPushTypes:D(e.pushTypesJson)}))}async renameRegistration(e,t){let A=await (0,s.getPrismaClient)(),r=await A.apnsRegistration.update({where:{id:e},data:{displayName:m(t,"Display name",120)}});return this.changed(),r}async setRegistrationActive(e,t){let A=await (0,s.getPrismaClient)(),r=await A.apnsRegistration.update({where:{id:e},data:{status:t?"ACTIVE":"INACTIVE",invalidatedAt:t?null:new Date}});return this.changed(),r}async deleteRegistration(e){let t=await (0,s.getPrismaClient)();return await t.apnsRegistration.delete({where:{id:e}}),this.changed(),!0}async rawSettings(){return(await (0,s.getPrismaClient)()).pushNotificationSettings.upsert({where:{id:C},create:{id:C},update:{}})}async settings(){let e=await (0,s.getPrismaClient)(),[t,A,r,i]=await Promise.all([this.rawSettings(),this.storedTokenSettings(),this.storedCertificateCatalog(),this.credentials.isConfigured(o.CREDENTIALS.apnsTokenPrivateKey)]),n=r?.value??[],a=new Map((await e.apnsCertificateCredential.findMany({where:{id:{in:n.map(({id:e})=>e)}}})).map(e=>[e.id,e]));return{tokenConfigured:!!(A&&i),tokenTeamId:A?.value.teamId??null,tokenKeyId:A?.value.keyId??null,tokenPrivateKeyFingerprint:t.tokenPrivateKeyFingerprint,tokenConfiguredAt:t.tokenConfiguredAt,tokenLastUsedAt:t.tokenLastUsedAt,tokenLastError:t.tokenLastError,certificates:n.map(e=>{let t=a.get(e.id);return t?{...e,fingerprint:t.fingerprint,expiresAt:t.expiresAt,lastTestedAt:t.lastTestedAt,lastError:t.lastError,createdAt:t.createdAt,updatedAt:t.updatedAt}:null}).filter(e=>null!==e).sort((e,t)=>e.name.localeCompare(t.name)),updatedAt:new Date(Math.max(t.updatedAt.getTime(),A?.updatedAt.getTime()??0,r?.updatedAt.getTime()??0))}}async saveTokenSettings(e){await this.rawSettings();let t=m(e.teamId,"Team ID",20),A=m(e.keyId,"Key ID",20),r=await this.storedTokenSettings(),n=e.privateKey?.trim()||await this.credentials.getText(o.CREDENTIALS.apnsTokenPrivateKey);if(!n?.includes("-----BEGIN PRIVATE KEY-----"))throw Error("An APNs PKCS#8 .p8 private key is required");try{await (0,i.importPKCS8)(n,"ES256")}catch{throw Error("The APNs .p8 key must be an ES256 PKCS#8 private key")}let a={teamId:t,keyId:A},l=async e=>{await e.pushNotificationSettings.update({where:{id:C},data:{tokenPrivateKeyFingerprint:p(n),tokenConfiguredAt:new Date,tokenLastError:null}})},g=[...r&&JSON.stringify(r.value)===JSON.stringify(a)?[]:[{descriptor:o.CREDENTIALS.apnsTokenSettings,value:(0,o.encodeJsonCredential)(a)}],...e.privateKey?.trim()?[{descriptor:o.CREDENTIALS.apnsTokenPrivateKey,value:Buffer.from(n,"utf8")}]:[]];return g.length?await this.credentials.setMany(g,l):await (await (0,s.getPrismaClient)()).$transaction(l),this.changed(),this.settings()}async clearTokenSettings(){return await this.credentials.deleteMany([o.CREDENTIALS.apnsTokenSettings,o.CREDENTIALS.apnsTokenPrivateKey],async e=>{await e.pushNotificationSettings.upsert({where:{id:C},create:{id:C},update:{tokenPrivateKeyFingerprint:null,tokenConfiguredAt:null,tokenLastUsedAt:null,tokenLastError:null}})}),this.changed(),this.settings()}async addCertificateCredential(e){let t=Buffer.from(e.p12Base64,"base64");if(!t.length||t.length>0x1400000)throw Error("The .p12 file is empty or larger than 20 MiB");if(!["SANDBOX","PRODUCTION"].includes(e.environment))throw Error("Certificate environment is invalid");let r=y(t,e.passphrase),i=(0,A.randomUUID)(),s={id:i,name:m(e.name,"Credential name",100),topic:m(e.topic,"Topic",255),environment:e.environment};return await N(async()=>{let t=await this.storedCertificateCatalog();if(t?.value.some(({name:e})=>e===s.name))throw Error("Credential name already exists");let A=[...t?.value??[],s];await this.credentials.setMany([{descriptor:o.CREDENTIALS.apnsCertificateCatalog,value:(0,o.encodeJsonCredential)(A)},{descriptor:(0,o.apnsCertificateCredential)(i),value:(0,o.encodeJsonCredential)({p12Base64:e.p12Base64,passphrase:e.passphrase})}],async e=>{await e.apnsCertificateCredential.create({data:{id:i,fingerprint:r.fingerprint,expiresAt:r.expiresAt,lastTestedAt:new Date}})})}),this.changed(),this.settings()}async deleteCertificateCredential(e){return await N(async()=>{let t=await this.storedCertificateCatalog();if(!t?.value.some(t=>t.id===e))throw Error("APNs certificate credential not found");await this.credentials.setAndDeleteMany([{descriptor:o.CREDENTIALS.apnsCertificateCatalog,value:(0,o.encodeJsonCredential)(t.value.filter(t=>t.id!==e))}],[(0,o.apnsCertificateCredential)(e)],async t=>{await t.apnsCertificateCredential.delete({where:{id:e}})})}),this.changed(),!0}async retestCertificateCredential(e){let t=await (0,s.getPrismaClient)();if(!await t.apnsCertificateCredential.findUnique({where:{id:e}}))throw Error("APNs certificate credential not found");let A=await this.credentials.getJson((0,o.apnsCertificateCredential)(e));if(!A)throw Error("APNs certificate credential is not configured");try{let r=y(Buffer.from(A.p12Base64,"base64"),A.passphrase);await t.apnsCertificateCredential.update({where:{id:e},data:{fingerprint:r.fingerprint,expiresAt:r.expiresAt,lastTestedAt:new Date,lastError:null}})}catch(A){throw await t.apnsCertificateCredential.update({where:{id:e},data:{lastTestedAt:new Date,lastError:A instanceof Error?A.message:String(A)}}),this.changed(),A}return this.changed(),this.settings()}async channels(){return(await (0,s.getPrismaClient)()).apnsBroadcastChannel.findMany({orderBy:{createdAt:"desc"}})}async tokenAuthentication(e="APNs token authentication is not configured"){let t=await this.storedTokenSettings();if(!t)throw Error(e);let A=await this.credentials.getText(o.CREDENTIALS.apnsTokenPrivateKey);if(!A)throw Error(e);return{kind:"TOKEN",teamId:t.value.teamId,keyId:t.value.keyId,privateKey:A}}async createChannel(e){if(!["SANDBOX","PRODUCTION"].includes(e.environment))throw Error("Channel environment is invalid");if(!["NO_STORAGE","MOST_RECENT"].includes(e.storagePolicy))throw Error("Channel storage policy is invalid");let t=m(e.bundleId,"Bundle ID",255),r=e.channelId?null:await this.tokenAuthentication("APNs token authentication is required for broadcast channels"),i=e.channelId?.trim()||await this.client.createBroadcastChannel({environment:e.environment,authentication:r,bundleId:t,storagePolicy:e.storagePolicy}),n=await (0,s.getPrismaClient)(),o=await n.apnsBroadcastChannel.create({data:{id:(0,A.randomUUID)(),channelId:i,bundleId:t,environment:e.environment,storagePolicy:e.storagePolicy}});return this.changed(),o}async deleteChannel(e){let t=await (0,s.getPrismaClient)(),A=await t.apnsBroadcastChannel.findUnique({where:{id:e}});if(!A)throw Error("Broadcast channel not found");let r=await this.tokenAuthentication("APNs token authentication is required for broadcast channels");return await this.client.deleteBroadcastChannel({environment:A.environment,authentication:r,bundleId:A.bundleId,channelId:A.channelId}),await t.apnsBroadcastChannel.delete({where:{id:e}}),this.changed(),!0}async presets(){return(await (0,s.getPrismaClient)()).pushNotificationPreset.findMany({orderBy:{updatedAt:"desc"}})}async preset(e){return(await (0,s.getPrismaClient)()).pushNotificationPreset.findUnique({where:{id:e}})}async savePreset(e,t,r){let i=u(t),n=await (0,s.getPrismaClient)(),o=r?await n.pushNotificationPreset.update({where:{id:r},data:{name:m(e,"Preset name",100),editorJson:JSON.stringify(i.editor)}}):await n.pushNotificationPreset.create({data:{id:(0,A.randomUUID)(),name:m(e,"Preset name",100),editorJson:JSON.stringify(i.editor)}});return this.changed(),o}async deletePreset(e){let t=await (0,s.getPrismaClient)();return await t.pushNotificationPreset.delete({where:{id:e}}),this.changed(),!0}async history(e=100){return(await (0,s.getPrismaClient)()).pushNotificationBatch.findMany({include:{deliveries:{orderBy:{createdAt:"asc"}}},orderBy:{createdAt:"desc"},take:Math.max(1,Math.min(e,200))})}async historyItem(e){return(await (0,s.getPrismaClient)()).pushNotificationBatch.findUnique({where:{id:e},include:{deliveries:{orderBy:{createdAt:"asc"}}}})}async saveDraft(e){let t=u(e),r=await (0,s.getPrismaClient)(),i=await r.pushNotificationBatch.create({data:{id:(0,A.randomUUID)(),requestId:(0,A.randomUUID)(),status:"DRAFT",editorJson:JSON.stringify(t.editor),payloadJson:JSON.stringify(t.payload),headersJson:JSON.stringify(t.headers),targetMode:"DRAFT"},include:{deliveries:!0}});return this.changed(),i}async deleteHistory(e){let t=await (0,s.getPrismaClient)();if(1!==(await t.pushNotificationBatch.deleteMany({where:{id:e,status:{notIn:["QUEUED","SENDING"]}}})).count){if(!await t.pushNotificationBatch.findUnique({where:{id:e},select:{status:!0}}))throw Error("Push history item not found");throw Error("Queued or sending push notifications cannot be deleted")}return this.changed(),!0}async clearHistory(){let e=await (0,s.getPrismaClient)(),t=await e.pushNotificationBatch.deleteMany({where:{status:{notIn:["QUEUED","SENDING"]}}});return this.changed(),t.count}async send(e){var t;if(t=e.targetMode,!B.includes(t))throw Error(`Unsupported push target mode: ${e.targetMode}`);let r=e.targetMode,i=u(e.editor),n=await (0,s.getPrismaClient)(),o=await n.pushNotificationBatch.findUnique({where:{requestId:e.requestId},include:{deliveries:!0}});if(o)return o;let a=[],l=null,g=null;if("BROADCAST"===r){if("liveactivity"!==i.editor.pushType)throw Error("Broadcast delivery is available only for Live Activities");if(!e.channelId)throw Error("Select a broadcast channel");if(!(l=await n.apnsBroadcastChannel.findUnique({where:{id:e.channelId}})))throw Error("Broadcast channel not found")}else if("DIRECT"===r){if("liveactivity"!==i.editor.pushType)throw Error("Direct-token delivery is available only for Live Activities");if(!e.directToken)throw Error("Enter a Live Activity push token");let t=e.directTokenEncoding??"HEX";if("HEX"!==t&&"BASE64"!==t)throw Error("Direct token encoding must be HEX or BASE64");let A=e.directEnvironment??"SANDBOX";if("SANDBOX"!==A&&"PRODUCTION"!==A)throw Error("Direct token environment is invalid");let r=I(e.directToken,t);g={token:r,tokenHash:p(r),environment:A}}else{let t=[...new Set(e.registrationIds??[])];if(!(a=(await n.apnsRegistration.findMany({where:{status:"ACTIVE",topic:i.headers["apns-topic"],..."DEVICES"===r?{id:{in:t}}:{}}})).filter(e=>D(e.pushTypesJson).includes(i.editor.pushType)).map(e=>({id:e.id,tokenHash:e.tokenHash,topic:e.topic,environment:e.environment}))).length)throw Error("No eligible APNs devices selected")}let h=await n.pushNotificationBatch.create({data:{id:(0,A.randomUUID)(),requestId:e.requestId,status:"QUEUED",editorJson:JSON.stringify(i.editor),payloadJson:JSON.stringify(i.payload),headersJson:JSON.stringify(i.headers),targetMode:r,channelId:l?.id??null,recipientCount:l||g?1:a.length,deliveries:{create:l?[{id:(0,A.randomUUID)(),topic:l.bundleId,environment:l.environment}]:g?[{id:(0,A.randomUUID)(),tokenHash:g.tokenHash,topic:i.headers["apns-topic"],environment:g.environment,recipientSecret:{create:{id:(0,A.randomUUID)(),token:g.token}}}]:a.map(e=>({id:(0,A.randomUUID)(),registrationId:e.id,tokenHash:e.tokenHash,topic:e.topic,environment:e.environment}))}},include:{deliveries:!0}});return this.changed(),this.processBatch(h.id).catch(()=>void 0),h}async resend(e,t){let A=await (0,s.getPrismaClient)(),r=await A.pushNotificationBatch.findUnique({where:{id:e},include:{deliveries:!0}});if(!r)throw Error("Push history item not found");if("DRAFT"===r.targetMode)throw Error("Choose recipients before sending a draft");if("DIRECT"===r.targetMode)throw Error("Direct Live Activity tokens are not retained; load the item and enter the token again");return this.send({requestId:t,editor:w(r.editorJson),targetMode:r.targetMode,registrationIds:r.deliveries.map(e=>e.registrationId).filter(e=>!!e),channelId:r.channelId})}async authentication(e,t,A){let r=await (0,s.getPrismaClient)();if(e.credentialId){let[i,s]=await Promise.all([r.apnsCertificateCredential.findUnique({where:{id:e.credentialId}}),this.storedCertificateCatalog()]),n=s?.value.find(({id:t})=>t===e.credentialId);if(!i||!n)throw Error("APNs certificate credential not found");if(n.environment!==t||n.topic!==A)throw Error("APNs certificate does not match the target topic/environment");let a=await this.credentials.getJson((0,o.apnsCertificateCredential)(i.id));if(!a)throw Error("APNs certificate credential is not configured");return{kind:"CERTIFICATE",p12Base64:a.p12Base64,passphrase:a.passphrase,fingerprint:i.fingerprint}}if("mdm"===e.pushType)throw Error("MDM requires certificate authentication");return this.tokenAuthentication()}async failDelivery(e,t){let A=await (0,s.getPrismaClient)();await A.pushNotificationDelivery.update({where:{id:e},data:{status:"FAILED",reason:t,finishedAt:new Date}}),this.changed()}async executeDelivery(e,t,A,r,i){let n=await (0,s.getPrismaClient)();await n.pushNotificationDelivery.update({where:{id:e.id},data:{status:"SENDING",startedAt:new Date}}),this.changed();try{let s=e.registrationId?await n.apnsRegistration.findUnique({where:{id:e.registrationId}}):null,o=e.registrationId?null:await n.apnsPushRecipientSecret.findUnique({where:{deliveryId:e.id}});if(e.registrationId&&(!s||"ACTIVE"!==s.status))return void await this.failDelivery(e.id,"Registration is no longer active");if(!s&&!o&&!i)return void await this.failDelivery(e.id,"Direct recipient token expired");let a=await this.authentication(t,e.environment,e.topic),l="mdm"===t.pushType?{mdm:s?.pushMagic}:A;if("mdm"===t.pushType&&!s?.pushMagic)return void await this.failDelivery(e.id,"Registration has no MDM push magic");let g=await this.client.send({environment:e.environment,authentication:a,deviceToken:s?.token||o?.token,broadcastTopic:i?.bundleId,payload:l,headers:{...r,...i?{"apns-channel-id":i.channelId}:{}}});await this.recordResponse(e.id,s,g,"TOKEN"===a.kind),"CERTIFICATE"===a.kind&&t.credentialId&&await n.apnsCertificateCredential.updateMany({where:{id:t.credentialId},data:{lastTestedAt:new Date,lastError:200===g.status?null:`HTTP ${g.status}${g.reason?`: ${g.reason}`:""}`}})}catch(A){if(!t.credentialId&&"mdm"!==t.pushType){let e=await (0,s.getPrismaClient)();await e.pushNotificationSettings.updateMany({where:{id:C},data:{tokenLastError:A instanceof Error?A.message:String(A)}})}if(t.credentialId){let e=await (0,s.getPrismaClient)();await e.apnsCertificateCredential.updateMany({where:{id:t.credentialId},data:{lastTestedAt:new Date,lastError:A instanceof Error?A.message:String(A)}})}await this.failDelivery(e.id,A instanceof Error?A.message:String(A))}finally{await n.apnsPushRecipientSecret.deleteMany({where:{deliveryId:e.id}})}}async recordResponse(e,t,A,r){let i=await (0,s.getPrismaClient)(),n=200===A.status;if(await i.pushNotificationDelivery.update({where:{id:e},data:{status:n?"SUCCEEDED":"FAILED",responseCode:A.status,reason:A.reason,responseTimestamp:A.timestamp,apnsId:A.apnsId,attempts:A.attempts,durationMs:A.durationMs,finishedAt:new Date}}),this.changed(),r&&await i.pushNotificationSettings.updateMany({where:{id:C},data:n?{tokenLastUsedAt:new Date,tokenLastError:null}:{tokenLastError:`HTTP ${A.status}${A.reason?`: ${A.reason}`:""}`}}),!t)return;if(n)return void await i.apnsRegistration.update({where:{id:t.id},data:{lastSentAt:new Date,lastFailureReason:null}});let o=410===A.status&&"Unregistered"===A.reason,a=400===A.status&&["BadDeviceToken","DeviceTokenNotForTopic"].includes(A.reason??""),l=!A.timestamp||A.timestamp>=t.lastRegisteredAt;o&&l||a?await i.apnsRegistration.updateMany({where:{id:t.id,lastRegisteredAt:t.lastRegisteredAt},data:{status:"INVALID",invalidatedAt:new Date,lastFailureReason:A.reason,lastFailureAt:new Date}}):await i.apnsRegistration.update({where:{id:t.id},data:{lastFailureReason:A.reason,lastFailureAt:new Date}})}async processBatch(e){let t=await (0,s.getPrismaClient)();if(1===(await t.pushNotificationBatch.updateMany({where:{id:e,status:"QUEUED"},data:{status:"SENDING",startedAt:new Date,error:null}})).count){this.activeBatchIds.add(e);try{let A=await t.pushNotificationBatch.findUnique({where:{id:e},include:{deliveries:{where:{status:"QUEUED"}}}});if(!A)return;let r=w(A.editorJson),i=w(A.payloadJson),s=w(A.headersJson),n=A.channelId?await t.apnsBroadcastChannel.findUnique({where:{id:A.channelId}}):null,o=0,a=Array.from({length:Math.min(16,A.deliveries.length)},async()=>{for(;o<A.deliveries.length;){let e=A.deliveries[o++];if(!e)return;await this.executeDelivery(e,r,i,s,n)}});await Promise.all(a);let l=await t.pushNotificationDelivery.findMany({where:{batchId:e},select:{status:!0}}),g=l.filter(e=>"SUCCEEDED"===e.status).length,h=l.length-g;await t.pushNotificationBatch.update({where:{id:e},data:{status:h?g?"PARTIAL":"FAILED":"SUCCEEDED",successCount:g,failureCount:h,finishedAt:new Date}}),this.changed()}finally{this.activeBatchIds.delete(e)}}}async recover(){if(this.recoveryStarted)return{queuedBatches:0,staleBatches:0,recoveredBatches:0,alreadyRunning:!0};this.recoveryStarted=!0;let e=0,t=0,A=0;try{let r=await (0,s.getPrismaClient)();for(;;){let i=new Date(Date.now()-12e4),s=await r.pushNotificationBatch.findMany({where:{OR:[{status:"QUEUED"},{status:"SENDING",startedAt:{lt:i}}]},orderBy:{createdAt:"asc"},take:100});if(!s.length)break;e+=s.filter(e=>"QUEUED"===e.status).length,t+=s.filter(e=>"SENDING"===e.status).length;let n=[];for(let e of s)if(!this.activeBatchIds.has(e.id)){if("SENDING"===e.status){await r.pushNotificationDelivery.updateMany({where:{batchId:e.id,status:"SENDING"},data:{status:"QUEUED",startedAt:null}});let t=await r.pushNotificationBatch.updateMany({where:{id:e.id,status:"SENDING",startedAt:{lt:i}},data:{status:"QUEUED",startedAt:null}});if(1!==t.count)continue}n.push(e.id)}if(!n.length)break;await Promise.all(n.map(e=>this.processBatch(e))),A+=n.length}return{queuedBatches:e,staleBatches:t,recoveredBatches:A}}finally{this.recoveryStarted=!1}}}],308810),e.s([],282790)},464841,218202,220629,689245,906148,e=>{"use strict";var t=e.i(374186);let A=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function r(e){return function e(t){return null===t?"null":Array.isArray(t)?`[${t.map(e).join(",")}]`:"object"==typeof t?`{${Object.entries(t).sort(([e],[t])=>e.localeCompare(t)).map(([t,A])=>`${JSON.stringify(t)}:${e(A)}`).join(",")}}`:JSON.stringify(t)}(e)}function i(e){return A.test(e)?`.${e}`:`[${JSON.stringify(e)}]`}function s(e,t){let A={},r=(e,t)=>{if(t&&"object"==typeof t&&!Array.isArray(t)&&Object.getPrototypeOf(t)===Object.prototype){let s=Object.entries(t);if(0===s.length)A[e]=t;else for(let[t,A]of s)r(`${e}${i(t)}`,A)}else A[e]=t};for(let[A,s]of Object.entries(t))r(`${e}${i(A)}`,s);return A}function n(e){let t={default:e.defaultParameters,additional:e.additionalParameters};return{...{source:e.entryType,time:e.clientTime,receivedAt:e.receivedAt,deviceIp:e.deviceIp,message:e.message,level:e.level,category:e.category,eventName:e.eventName,eventKind:e.eventKind,levelKind:e.level??e.eventKind,screenName:e.screenName,buildId:e.buildId,sessionId:e.sessionId,attributes:e.attributes,defaultParameters:e.defaultParameters,additionalParameters:e.additionalParameters,parameters:t,detail:"CONSOLE"===e.entryType?e.message:`${e.eventName??""}${e.screenName?` (${e.screenName})`:""}`},...s("attributes",e.attributes),...s("defaultParameters",e.defaultParameters),...s("additionalParameters",e.additionalParameters)}}function o(e){return null==e?"":"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):r(e)}function a(e){return Object.entries(n(e)).flatMap(([e,t])=>[e,o(t)]).join("\n")}let l=["CONSOLE","ANALYTICS","UNIFIED"],g=["TEXT","GLOB","REGEX"],h=["CONTAINS","DOES_NOT_CONTAIN","IS","IS_NOT","MATCHES_GLOB","MATCHES_REGEX","NO_REGEX_MATCH","IS_EMPTY","IS_NOT_EMPTY"],c={CONSOLE:["time","level","category","message","buildId","sessionId"],ANALYTICS:["time","eventKind","eventName","screenName","parameters","buildId","sessionId"],UNIFIED:["time","source","levelKind","detail","buildId","sessionId"]},E=["gray","stone","red","rose","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink"];e.s(["DEFAULT_TELEMETRY_COLUMNS",0,c,"TELEMETRY_COLORS",0,E,"TELEMETRY_FILTER_OPERATORS",0,h,"TELEMETRY_SEARCH_MODES",0,g,"TELEMETRY_VIEWS",0,l],218202);let Q=new Map;function I(e,A,r){let i;if(A.length>1024)throw Error("Pattern must not exceed 1024 characters");if(!g.includes(e))throw Error("Unknown search mode");let s=`${e}\u0000${r?"1":"0"}\u0000${A}`,n=Q.get(s);if(n)return n;if("TEXT"===e){let e=r?A:A.toLocaleLowerCase();i=t=>(r?t:t.toLocaleLowerCase()).includes(e)}else{let s="GLOB"===e?`^${function(e){let t="";for(let A=0;A<e.length;A+=1){let r=e[A];if("*"===r)t+=".*";else if("?"===r)t+=".";else if("["===r){let r=e.indexOf("]",A+1);if(-1===r)throw Error("Invalid glob pattern: missing ]");{let i=e.slice(A+1,r).replace(/^!/,"^");t+=`[${i}]`,A=r}}else t+=r.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}return t}(A)}$`:A,n=new t.default(s,r?"su":"isu");i=e=>n.test(e)}return Q.set(s,i),Q.size>100&&Q.delete(Q.keys().next().value),i}function d(e){return null==e||""===e||Array.isArray(e)&&0===e.length||"object"==typeof e&&!Array.isArray(e)&&0===Object.keys(e).length}function u(e){return"CONSOLE"===e?["CONSOLE"]:"ANALYTICS"===e?["ANALYTICS"]:["CONSOLE","ANALYTICS"]}function C(e,t){return"SEPARATOR"!==e.entryType&&!!u(t.view).includes(e.entryType)&&(!t.search||!!I(t.searchMode??"TEXT",t.search,!0===t.caseSensitive)(a(e)))&&function(e,t){if(!t)return!0;let A=n(e);return Object.entries(t).every(([e,t])=>0===t.length||t.includes(o(A[e])))}(e,t.quickFilters)&&function(e,t){if(!t?.conditions.length)return!0;let A=t.conditions.filter(t=>!t.sources?.length||"SEPARATOR"!==e.entryType&&t.sources.includes(e.entryType));if(0===A.length)return!0;let r=n(e),i=A.map(e=>(function(e,t){if(!h.includes(t.operator))throw Error("Unknown filter operator");let A=e[t.field];if("IS_EMPTY"===t.operator)return d(A);if("IS_NOT_EMPTY"===t.operator)return!d(A);let r=o(A),i=t.value??"",s=!0===t.caseSensitive,n=s?r:r.toLocaleLowerCase(),a=s?i:i.toLocaleLowerCase();if("CONTAINS"===t.operator)return n.includes(a);if("DOES_NOT_CONTAIN"===t.operator)return!n.includes(a);if("IS"===t.operator)return n===a;if("IS_NOT"===t.operator)return n!==a;if("MATCHES_GLOB"===t.operator)return I("GLOB",i,s)(r);let l=I("REGEX",i,s)(r);return"MATCHES_REGEX"===t.operator?l:!l})(r,e));return"ANY"===t.mode?i.some(Boolean):i.every(Boolean)}(e,t.advancedFilter)}function B(e){for(let t of(e.search&&I(e.searchMode??"TEXT",e.search,!0===e.caseSensitive),e.advancedFilter?.conditions??[]))["MATCHES_GLOB","MATCHES_REGEX","NO_REGEX_MATCH"].includes(t.operator)&&I("MATCHES_GLOB"===t.operator?"GLOB":"REGEX",t.value??"",!0===t.caseSensitive)}var f=e.i(666680),p=e.i(243783);e.i(805422);var y=e.i(661983),w=e.i(660526);let D="default";function m(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}function S(e){return{id:e.id,entryType:e.entryType,clientTime:e.clientTime.toISOString(),receivedAt:e.receivedAt.toISOString(),deviceIp:e.deviceIp,message:e.message,level:e.level,category:e.category,eventName:e.eventName,eventKind:e.eventKind,screenName:e.screenName,buildId:e.buildId,sessionId:e.sessionId,attributes:m(e.attributesJson),defaultParameters:m(e.defaultParametersJson),additionalParameters:m(e.additionalParametersJson),highlightColor:e.highlightColor,separatorKind:e.separatorKind,separatorName:e.separatorName}}function N(e){if(!l.includes(e))throw Error("Unknown telemetry view");return e}function R(e){let t=e.trim();if(!t||t.length>100)throw Error("Name must contain 1-100 characters");return{name:t,normalizedName:t.toLocaleLowerCase()}}function b(e){let t;try{t=new URL(e.trim())}catch{throw Error("Telemetry URL must be a valid HTTP(S) origin")}if(!["http:","https:"].includes(t.protocol)||t.username||t.password||"/"!==t.pathname&&""!==t.pathname||t.search||t.hash)throw Error("Telemetry URL must be an HTTP(S) origin without a path, credentials, query, or fragment");return t.origin}function U(e){return e?.trim()?b(e):null}function T(e){if(!e?.trim())return null;try{let t=new URL(e.trim());return["http:","https:"].includes(t.protocol)?t.origin:null}catch{return null}}function F(e){if(!e)return null;try{let t=JSON.parse(Buffer.from(e,"base64url").toString("utf8"));if(t&&"object"==typeof t&&"string"==typeof t.clientTime&&"string"==typeof t.receivedAt&&"string"==typeof t.id&&Number.isFinite(Date.parse(t.clientTime))&&Number.isFinite(Date.parse(t.receivedAt)))return t}catch{}throw Error("Invalid telemetry cursor")}function k(e){let t=new Date(e.clientTime),A=new Date(e.receivedAt);return{OR:[{clientTime:{lt:t}},{clientTime:t,receivedAt:{lt:A}},{clientTime:t,receivedAt:A,id:{lt:e.id}}]}}function M(e){return Buffer.from(JSON.stringify({clientTime:e.clientTime,receivedAt:e.receivedAt,id:e.id})).toString("base64url")}function L(e,t){return e.clientTime!==t.clientTime?e.clientTime<t.clientTime:e.receivedAt!==t.receivedAt?e.receivedAt<t.receivedAt:e.id<t.id}function v(e){return!!(e.search||Object.values(e.quickFilters??{}).some(e=>e.length)||e.advancedFilter?.conditions.length)}function Y(e){return{entryType:{in:u(e)}}}let H={source:{name:"entryType",nullable:!1},deviceIp:{name:"deviceIp",nullable:!0},message:{name:"message",nullable:!0},level:{name:"level",nullable:!0},category:{name:"category",nullable:!0},eventName:{name:"eventName",nullable:!0},eventKind:{name:"eventKind",nullable:!0},screenName:{name:"screenName",nullable:!0},buildId:{name:"buildId",nullable:!0},sessionId:{name:"sessionId",nullable:!0}};function O(e){let t=[...new Set(e.map(e=>e.trim()).filter(Boolean))];if(0===t.length||t.length>100||t.some(e=>e.length>512))throw Error("Columns must contain 1-100 valid column identifiers");return JSON.stringify(t)}function G(e,t){try{let t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>"string"==typeof e)&&t.length)return t}catch{}return c[t]}e.s(["TelemetryService",0,class{subscribe(){return y.agentEventBus.iterate(y.TELEMETRY_CHANGED_TOPIC)}subscribeSettings(){return y.agentEventBus.iterate(y.TELEMETRY_SETTINGS_CHANGED_TOPIC)}publish(e,t){y.agentEventBus.publish(y.TELEMETRY_CHANGED_TOPIC,{ids:e,reason:t})}notifyChange(e,t){this.publish(e,t)}async rawSettings(){return(await (0,p.getPrismaClient)()).telemetrySettings.upsert({where:{id:D},create:{id:D},update:{}})}async settings(e={}){let[t,A]=await Promise.all([this.rawSettings(),Promise.resolve(function(e={}){let t,A=T(e.requestOrigin),r=(e.localOrigins??function(){let e=Number(process.env.PORT??3e3),t=Number.isInteger(e)&&e>0&&e<=65535?e:3e3;var A=(0,w.networkInterfaces)();let r=new Set;for(let e of Object.values(A))for(let A of e??[])A&&!A.internal&&("IPv4"===A.family?r.add(`http://${A.address}:${t}`):"IPv6"!==A.family||A.address.toLowerCase().startsWith("fe80:")||r.add(`http://[${A.address}]:${t}`));return[...r]}()).flatMap(e=>{try{return[b(e)]}catch{return[]}}),i=T(e.publicBaseUrl??process.env.PUBLIC_BASE_URL),s=!!A&&("localhost"===(t=new URL(A).hostname.toLowerCase().replace(/^\[|\]$/g,""))||"::1"===t||t.endsWith(".local")||/^127\./.test(t)||/^10\./.test(t)||/^192\.168\./.test(t)||/^172\.(1[6-9]|2\d|3[01])\./.test(t)),n=A&&s?A:r[0]??A??"http://127.0.0.1:3000",o=i??A??n;return{local:n,remote:o}}(e))]);return{localBaseUrlOverride:t.localBaseUrlOverride,remoteBaseUrlOverride:t.remoteBaseUrlOverride,consoleCollectionEnabled:t.consoleCollectionEnabled,analyticsCollectionEnabled:t.analyticsCollectionEnabled,detectedLocalBaseUrl:A.local,detectedRemoteBaseUrl:A.remote,effectiveLocalBaseUrl:t.localBaseUrlOverride??A.local,effectiveRemoteBaseUrl:t.remoteBaseUrlOverride??A.remote,updatedAt:t.updatedAt.toISOString()}}async saveSettings(e,t={}){let A=await (0,p.getPrismaClient)(),r=await this.rawSettings(),i=await A.telemetrySettings.update({where:{id:D},data:{localBaseUrlOverride:void 0===e.localBaseUrlOverride?r.localBaseUrlOverride:U(e.localBaseUrlOverride),remoteBaseUrlOverride:void 0===e.remoteBaseUrlOverride?r.remoteBaseUrlOverride:U(e.remoteBaseUrlOverride),consoleCollectionEnabled:e.consoleCollectionEnabled??r.consoleCollectionEnabled,analyticsCollectionEnabled:e.analyticsCollectionEnabled??r.analyticsCollectionEnabled}});return y.agentEventBus.publish(y.TELEMETRY_SETTINGS_CHANGED_TOPIC,{updatedAt:i.updatedAt.toISOString()}),this.settings(t)}async buildSettings(e,t={}){let A=await this.settings(t),r="SIMULATOR"===e?A.effectiveLocalBaseUrl:A.effectiveRemoteBaseUrl;return{localBaseUrl:A.effectiveLocalBaseUrl,remoteBaseUrl:A.effectiveRemoteBaseUrl,selectedBaseUrl:r,consoleLogsUrl:`${r}/api/telemetry/console-logs`,analyticsEventsUrl:`${r}/api/telemetry/analytics-events`,consoleCollectionEnabled:A.consoleCollectionEnabled,analyticsCollectionEnabled:A.analyticsCollectionEnabled}}async ingestConsole(e,t){if(!(await this.rawSettings()).consoleCollectionEnabled)return{collected:!1,items:[]};let A=await (0,p.getPrismaClient)(),r=new Date,i=e.map(e=>{let A={id:(0,f.randomUUID)(),entryType:"CONSOLE",clientTime:new Date(e.time),receivedAt:r,deviceIp:t,message:e.message,level:e.level,category:e.category,buildId:e.buildId,sessionId:e.sessionId,attributesJson:JSON.stringify(e.attributes),searchText:""},i=S({...A,eventName:null,eventKind:null,screenName:null,defaultParametersJson:"{}",additionalParametersJson:"{}",highlightColor:null,separatorKind:null,separatorName:null});return{...A,searchText:a(i)}});return await A.telemetryEntry.createMany({data:i}),this.publish(i.map(({id:e})=>e),"INGESTED"),{collected:!0,items:i.map(({id:e})=>({id:e,receivedAt:r.toISOString(),deviceIp:t}))}}async ingestAnalytics(e,t){if(!(await this.rawSettings()).analyticsCollectionEnabled)return{collected:!1,items:[]};let A=await (0,p.getPrismaClient)(),r=new Date,i=e.map(e=>{let A={id:(0,f.randomUUID)(),entryType:"ANALYTICS",clientTime:new Date(e.time),receivedAt:r,deviceIp:t,eventName:e.eventName,eventKind:e.kind,screenName:e.screenName,buildId:e.buildId,sessionId:e.sessionId,defaultParametersJson:JSON.stringify(e.defaultParameters),additionalParametersJson:JSON.stringify(e.additionalParameters),searchText:""},i=S({...A,message:null,level:null,category:null,attributesJson:"{}",highlightColor:null,separatorKind:null,separatorName:null});return{...A,searchText:a(i)}});return await A.telemetryEntry.createMany({data:i}),this.publish(i.map(({id:e})=>e),"INGESTED"),{collected:!0,items:i.map(({id:e})=>({id:e,receivedAt:r.toISOString(),deviceIp:t}))}}async scan(e,t,A=1e3){let r=await (0,p.getPrismaClient)(),i=null;for(;;){let s=await r.telemetryEntry.findMany({where:i?{AND:[e,{OR:[{clientTime:{lt:i.clientTime}},{clientTime:i.clientTime,receivedAt:{lt:i.receivedAt}},{clientTime:i.clientTime,receivedAt:i.receivedAt,id:{lt:i.id}}]}]}:e,orderBy:[{clientTime:"desc"},{receivedAt:"desc"},{id:"desc"}],take:A});for(let e of s)if(await t(S(e))===!1)return;if(s.length<A)break;i=s.at(-1)}}async timeline(e){let t=N(e.view);B(e);let A=Math.min(500,Math.max(1,e.first??200)),r=F(e.after),i=await (0,p.getPrismaClient)(),s=await i.telemetryEntry.count({where:Y(t)}),n=v(e);if(!n){let e=[],i=0,n=!1,o=null,a=!1,l={entryType:{in:[...u(t),"SEPARATOR"]}};return(await this.scan(r?{AND:[l,k(r)]}:l,t=>{if("SEPARATOR"===t.entryType){a&&e.push(t),a=!1;return}if(i<A){e.push(t),i+=1,o=t,a=!0;return}return n=!0,!1},Math.min(1e3,A+1)),o)?{items:e,nextCursor:n?M(o):null,matchingCount:s,totalCount:s}:{items:[],nextCursor:null,matchingCount:s,totalCount:s}}let o=[],a=0,l=!1,g=0,h=null,c=!1,E=!1,Q=function(e){let t=[];for(let[A,r]of(e.search&&(e.searchMode??"TEXT")==="TEXT"&&!0===e.caseSensitive&&t.push({searchText:{contains:e.search}}),Object.entries(e.quickFilters??{}))){if(!r.length)continue;let e=H[A];if(!e)continue;let i=function(e,t){let A=[...new Set(t)],r=A.filter(Boolean),i=[];return(r.length&&i.push({[e.name]:{in:r}}),A.includes("")&&(i.push({[e.name]:""}),e.nullable&&i.push({[e.name]:null})),0===i.length)?null:1===i.length?i[0]:{OR:i}}(e,r);i&&t.push(i)}if(e.advancedFilter?.mode==="ALL")for(let A of e.advancedFilter.conditions){if(A.sources?.length||!0!==A.caseSensitive)continue;let e=H[A.field],r=A.value??"";e&&r&&("IS"===A.operator?t.push({[e.name]:r}):"CONTAINS"===A.operator&&t.push({[e.name]:{contains:r}}))}return t.length?1===t.length?t[0]:{AND:t}:null}(e);return(await this.scan(Q?{OR:[{entryType:"SEPARATOR"},{AND:[Y(t),Q]}]}:{entryType:{in:[...u(t),"SEPARATOR"]}},t=>{if("SEPARATOR"===t.entryType){(!r||L(t,r))&&(!n&&!l||n&&c&&!E)&&o.push(t),c=!1,E=!1;return}!C(t,e)||(a+=1,(!r||L(t,r))&&(g<A?(o.push(t),g+=1,h=t,c=!0):(l=!0,E=!0)))}),h)?{items:o,nextCursor:l?M(h):null,matchingCount:a,totalCount:s}:{items:[],nextCursor:null,matchingCount:a,totalCount:s}}async entries(e){let t=await (0,p.getPrismaClient)(),A=[...new Set(e)].slice(0,1e3);return(await t.telemetryEntry.findMany({where:{id:{in:A}}})).map(S)}async entry(e,t){let A=N(t),r=(await this.entries([e]))[0]??null;if(!r)return null;if("SEPARATOR"===r.entryType||!u(A).includes(r.entryType))throw Error(`Telemetry entry ${e} does not belong to ${A}`);return r}async latestSeparator(){let e=await (0,p.getPrismaClient)(),t=await e.telemetryEntry.findFirst({where:{entryType:"SEPARATOR"},orderBy:[{clientTime:"desc"},{receivedAt:"desc"},{id:"desc"}]});return t?S(t):null}async separators(e){let t=Math.min(500,Math.max(1,e.first??100)),A=F(e.after),r=[{entryType:"SEPARATOR"}];e.kind?.trim()&&r.push({separatorKind:e.kind.trim()}),e.name?.trim()&&r.push({separatorName:{contains:e.name.trim()}}),e.buildId?.trim()&&r.push({buildId:e.buildId.trim()}),A&&r.push(k(A));let i=await (0,p.getPrismaClient)(),s=await i.telemetryEntry.findMany({where:{AND:r},orderBy:[{clientTime:"desc"},{receivedAt:"desc"},{id:"desc"}],take:t+1}),n=s.length>t,o=s.slice(0,t).map(S);return{items:o,nextCursor:n&&o.length?M(o.at(-1)):null}}async timelineSinceLatestSeparator(e){let t,A,r=N(e.view);B(e);let i=Math.min(500,Math.max(1,e.first??200)),s=F(e.after),n=await this.latestSeparator(),o=n?{clientTime:n.clientTime,receivedAt:n.receivedAt,id:n.id}:null,a=v(e),l=o?{AND:[Y(r),(t=new Date(o.clientTime),{OR:[{clientTime:{gt:t}},{clientTime:t,receivedAt:{gt:A=new Date(o.receivedAt)}},{clientTime:t,receivedAt:A,id:{gt:o.id}}]})]}:Y(r);if(!a){let e=await (0,p.getPrismaClient)(),t=await e.telemetryEntry.count({where:l}),A=[],r=!1,o=null;return await this.scan(s?{AND:[l,k(s)]}:l,e=>{if(A.length<i){A.push(e),o=e;return}return r=!0,!1},Math.min(1e3,i+1)),{separator:n,items:A,nextCursor:r&&o?M(o):null,matchingCount:t,totalCount:t}}let g=[],h=0,c=0,E=!1,Q=null;return await this.scan(l,t=>{c+=1,!C(t,e)||(h+=1,(!s||L(t,s))&&(g.length<i?(g.push(t),Q=t):E=!0))}),{separator:n,items:g,nextCursor:E&&Q?M(Q):null,matchingCount:h,totalCount:c}}async facets(e){let t=N(e),A="CONSOLE"===t?["level","category","deviceIp","buildId","sessionId"]:"ANALYTICS"===t?["eventKind","eventName","screenName","deviceIp","buildId","sessionId"]:["source","level","eventKind","deviceIp","buildId","sessionId"],r=Object.fromEntries(A.map(e=>[e,new Set]));return await this.scan(Y(t),e=>{let i=n(e);for(let e of A){let t=i[e];null!=t&&""!==String(t)&&r[e].add(String(t))}"UNIFIED"===t&&r.source.add(e.entryType)}),Object.fromEntries(Object.entries(r).map(([e,t])=>[e,[...t].sort((e,t)=>e.localeCompare(t))]))}async fields(e){let t=N(e),A=new Set;return await this.scan(Y(t),e=>{for(let t of Object.keys(n(e)))A.add(t)}),[...A].sort((e,t)=>e.localeCompare(t))}async addSeparator(e){let t=e?.trim()||null;if(t&&t.length>100)throw Error("Separator name must not exceed 100 characters");let A=await (0,p.getPrismaClient)(),r=await A.telemetryEntry.create({data:{id:(0,f.randomUUID)(),entryType:"SEPARATOR",clientTime:new Date,receivedAt:new Date,separatorKind:"MANUAL",separatorName:t}});return this.publish([r.id],"SEPARATOR_ADDED"),S(r)}async addBuildSeparator(e){let t=await (0,p.getPrismaClient)(),A=await t.telemetryEntry.upsert({where:{separatorKind_buildId:{separatorKind:"BUILD",buildId:e.buildId}},create:{id:(0,f.randomUUID)(),entryType:"SEPARATOR",clientTime:e.clientTime??new Date,receivedAt:new Date,separatorKind:"BUILD",separatorName:e.name.slice(0,100),buildId:e.buildId},update:{}});return this.publish([A.id],"BUILD_SEPARATOR_ADDED"),S(A)}async highlight(e,t){if(null!==t&&!E.includes(t))throw Error("Unknown telemetry highlight color");let A=await (0,p.getPrismaClient)();if("SEPARATOR"===(await A.telemetryEntry.findUniqueOrThrow({where:{id:e}})).entryType)throw Error("Separators cannot be highlighted");let r=await A.telemetryEntry.update({where:{id:e},data:{highlightColor:t}});return this.publish([e],"HIGHLIGHT_CHANGED"),S(r)}selectionRanges(e){return(Array.isArray(e.ranges)?e.ranges.slice(0,500):[]).map(e=>{if(!e||"object"!=typeof e)throw Error("Invalid telemetry selection range");let t=e.startTime?Date.parse(e.startTime):null,A=e.endTime?Date.parse(e.endTime):null;if(null!==t&&!Number.isFinite(t)||null!==A&&!Number.isFinite(A)||null!==t&&null!==A&&t>=A)throw Error("Invalid telemetry selection range");return{start:t,end:A,includeSeparators:!0===e.includeSeparators}})}async selectionIds(e){let t=new Set((Array.isArray(e.ids)?e.ids:[]).filter(e=>"string"==typeof e).slice(0,1e5)),A=new Set((Array.isArray(e.excludedIds)?e.excludedIds:[]).filter(e=>"string"==typeof e).slice(0,1e5));if(!e.query){for(let e of A)t.delete(e);return[...t]}if("object"!=typeof e.query||Array.isArray(e.query))throw Error("Invalid telemetry selection query");N(e.query.view),B(e.query);let r=this.selectionRanges(e);return await this.scan(e.includeSeparators||r.some(e=>e.includeSeparators)?{entryType:{in:[...u(e.query.view),"SEPARATOR"]}}:Y(e.query.view),i=>{let s=Date.parse(i.clientTime),n=r.filter(e=>(null===e.start||s>=e.start)&&(null===e.end||s<e.end));if((!(r.length>0)||0!==n.length)&&!A.has(i.id)){if("SEPARATOR"===i.entryType){(e.includeSeparators||n.some(e=>e.includeSeparators))&&t.add(i.id);return}C(i,e.query)&&t.add(i.id)}}),[...t]}async clearSelected(e){let t=await this.selectionIds(e);if(!t.length)return 0;let A=await (0,p.getPrismaClient)(),r=0;for(let e=0;e<t.length;e+=500)r+=(await A.telemetryEntry.deleteMany({where:{id:{in:t.slice(e,e+500)}}})).count;return this.publish([],"CLEARED"),r}async clearAll(e,t=!1){let A=N(e),r=await (0,p.getPrismaClient)(),i=await r.telemetryEntry.deleteMany({where:t?{entryType:{in:[...u(A),"SEPARATOR"]}}:Y(A)});return this.publish([],t?"CLEARED_WITH_SEPARATORS":"CLEARED"),i.count}async clearBeforeLatestSeparator(e,t=!1){let A=N(e),r=await this.latestSeparator();if(!r)return 0;let i=await (0,p.getPrismaClient)(),s=await i.telemetryEntry.deleteMany({where:{AND:[t?{entryType:{in:[...u(A),"SEPARATOR"]}}:Y(A),k({clientTime:r.clientTime,receivedAt:r.receivedAt,id:r.id})]}});return this.publish([],"CLEARED_BEFORE_SEPARATOR"),s.count}async clearScoped(e){let t=N(e.view);if("ALL"===e.scope)return this.clearAll(t,!!e.includeSeparators);if("BEFORE_LATEST_SEPARATOR"===e.scope)return this.clearBeforeLatestSeparator(t,!!e.includeSeparators);if("MATCHING"===e.scope){if(!e.query)throw Error("A matching query is required");return this.clearSelected({query:{...e.query,view:t}})}let A=[...new Set(e.ids??[])].slice(0,1e3);if(!A.length)throw Error("At least one telemetry entry ID is required");let r=await (0,p.getPrismaClient)(),i=await r.telemetryEntry.findMany({where:{id:{in:A},entryType:{in:[...u(t),"SEPARATOR"]}},select:{id:!0}});if(!i.length)return 0;let s=await r.telemetryEntry.deleteMany({where:{id:{in:i.map(({id:e})=>e)}}});return this.publish([],"CLEARED"),s.count}async viewSettings(e){let t=N(e),A=await (0,p.getPrismaClient)(),r=await A.telemetryViewSettings.upsert({where:{view:t},create:{id:t,view:t,columnsJson:JSON.stringify(c[t])},update:{}});return{view:t,columns:G(r.columnsJson,t),timeFormat:"24"===r.timeFormat?"24":"12",activeColumnPresetId:r.activeColumnPresetId,activeSavedFilterId:r.activeSavedFilterId}}async saveViewSettings(e){let t=N(e.view);if(e.timeFormat&&!["12","24"].includes(e.timeFormat))throw Error("Unknown time format");let A=await this.viewSettings(t),r=await (0,p.getPrismaClient)();return await r.telemetryViewSettings.upsert({where:{view:t},create:{id:t,view:t,columnsJson:O(e.columns??A.columns),timeFormat:e.timeFormat??A.timeFormat,activeColumnPresetId:e.activeColumnPresetId??null,activeSavedFilterId:e.activeSavedFilterId??null},update:{columnsJson:e.columns?O(e.columns):void 0,timeFormat:e.timeFormat??void 0,activeColumnPresetId:void 0===e.activeColumnPresetId?void 0:e.activeColumnPresetId,activeSavedFilterId:void 0===e.activeSavedFilterId?void 0:e.activeSavedFilterId}}),this.viewSettings(t)}async columnPresets(e){let t=N(e),A=await (0,p.getPrismaClient)();return(await A.telemetryColumnPreset.findMany({where:{view:t},orderBy:[{isDefault:"desc"},{name:"asc"}]})).map(e=>({id:e.id,view:t,name:e.name,columns:G(e.columnsJson,t),isDefault:e.isDefault,createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async saveColumnPreset(e){let t=N(e.view),{name:A,normalizedName:r}=R(e.name),i=await (0,p.getPrismaClient)(),s=e.id??(0,f.randomUUID)();return await i.$transaction(async i=>{e.isDefault&&await i.telemetryColumnPreset.updateMany({where:{view:t},data:{isDefault:!1}}),await i.telemetryColumnPreset.upsert({where:{id:s},create:{id:s,view:t,name:A,normalizedName:r,columnsJson:O(e.columns),isDefault:!0===e.isDefault},update:{name:A,normalizedName:r,columnsJson:O(e.columns),isDefault:e.isDefault??void 0}})}),(await this.columnPresets(t)).find(e=>e.id===s)}async deleteColumnPreset(e){let t=await (0,p.getPrismaClient)();return await t.telemetryViewSettings.updateMany({where:{activeColumnPresetId:e},data:{activeColumnPresetId:null}}),(await t.telemetryColumnPreset.deleteMany({where:{id:e}})).count>0}async savedFilters(e){let t=N(e),A=await (0,p.getPrismaClient)();return(await A.telemetrySavedFilter.findMany({where:{view:t},orderBy:{name:"asc"}})).map(e=>({id:e.id,view:t,name:e.name,definition:JSON.parse(e.definitionJson),createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString()}))}async saveFilter(e){let t=N(e.view);B({view:t,advancedFilter:e.definition});let{name:A,normalizedName:i}=R(e.name),s=await (0,p.getPrismaClient)(),n=e.id??(0,f.randomUUID)();return await s.telemetrySavedFilter.upsert({where:{id:n},create:{id:n,view:t,name:A,normalizedName:i,definitionJson:r(e.definition)},update:{name:A,normalizedName:i,definitionJson:r(e.definition)}}),(await this.savedFilters(t)).find(e=>e.id===n)}async deleteFilter(e){let t=await (0,p.getPrismaClient)();return await t.telemetryViewSettings.updateMany({where:{activeSavedFilterId:e},data:{activeSavedFilterId:null}}),(await t.telemetrySavedFilter.deleteMany({where:{id:e}})).count>0}async exportEntries(e){B(e.query);let t=e.selection??(e.ids?.length?{ids:e.ids}:null);if(t){let e=new Set(await this.selectionIds(t)),A=[],r=[...e];for(let e=0;e<r.length;e+=500)await this.scan({id:{in:r.slice(e,e+500)}},e=>{A.push(e)});return A.sort((e,t)=>{let A=t.clientTime.localeCompare(e.clientTime);return A||t.receivedAt.localeCompare(e.receivedAt)||t.id.localeCompare(e.id)}),A}let A=[],r=!1,i=v(e.query);return await this.scan({entryType:{in:[...u(e.query.view),"SEPARATOR"]}},t=>{"SEPARATOR"===t.entryType?((!i||r)&&A.push(t),r=!1):C(t,e.query)&&(A.push(t),r=!0)}),A}}],220629);let V={type:"object",additionalProperties:{description:"Any JSON value; objects may be nested to a maximum depth of 10."},maxProperties:500},x={type:"string",minLength:1,maxLength:256},J={type:"string",format:"date-time",description:"ISO-8601 timestamp including Z or an explicit UTC offset."},P={id:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},entryType:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},receivedAt:{type:"string",format:"date-time",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},deviceIp:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},highlightColor:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},separatorKind:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."},separatorName:{type:"string",readOnly:!0,description:"Server-owned. Any client-supplied value is ignored."}},W={type:"object",required:["collected","items"],properties:{collected:{type:"boolean"},items:{type:"array",items:{type:"object",required:["id","receivedAt","deviceIp"],properties:{id:{type:"string",format:"uuid"},receivedAt:{type:"string",format:"date-time"},deviceIp:{type:"string"}}}}}};function _(e,t,A){return{post:{tags:["Telemetry"],summary:A,description:"Unauthenticated ingestion. Accepts one record or an atomic `{ items: [...] }` batch of at most 500 records. The request body is capped at 2 MiB.",requestBody:{required:!0,content:{"application/json":{schema:{oneOf:[e,{type:"object",additionalProperties:!1,required:["items"],properties:{items:{type:"array",minItems:1,maxItems:500,items:e}}}]},examples:{single:{value:t},batch:{value:{items:[t]}}}}}},responses:{201:{description:"Records collected",content:{"application/json":{schema:W}}},202:{description:"Payload valid but collection is disabled",content:{"application/json":{schema:W}}},400:{$ref:"#/components/responses/TelemetryBadRequest"},413:{$ref:"#/components/responses/TelemetryPayloadTooLarge"},415:{$ref:"#/components/responses/TelemetryUnsupportedMediaType"},500:{$ref:"#/components/responses/InternalError"}}}}}let q={tags:[{name:"Telemetry"}],paths:{"/api/telemetry/console-logs":_({$ref:"#/components/schemas/ConsoleLogInput"},{message:"Checkout completed",time:"2026-07-20T18:30:00.000Z",level:"info",category:"checkout",buildId:"build-123",sessionId:"session-456",attributes:{durationMs:412,cache:{hit:!0}}},"Collect console logs"),"/api/telemetry/analytics-events":_({$ref:"#/components/schemas/AnalyticsEventInput"},{eventName:"checkout_completed",kind:"product",screenName:"Checkout",time:"2026-07-20T18:30:00.000Z",defaultParameters:{appVersion:"1.0"},additionalParameters:{cartItems:3},buildId:"build-123",sessionId:"session-456"},"Collect analytics events")},components:{schemas:{ConsoleLogInput:{type:"object",additionalProperties:!1,required:["message","time","level","category","buildId","sessionId","attributes"],properties:{...P,message:{type:"string",minLength:1,maxLength:65536},time:J,level:x,category:x,buildId:x,sessionId:x,attributes:V}},AnalyticsEventInput:{type:"object",additionalProperties:!1,required:["eventName","kind","screenName","time","defaultParameters","additionalParameters","buildId","sessionId"],properties:{...P,eventName:x,kind:x,screenName:x,time:J,defaultParameters:V,additionalParameters:V,buildId:x,sessionId:x}}},responses:{TelemetryBadRequest:{description:"Malformed or invalid telemetry payload"},TelemetryPayloadTooLarge:{description:"Request exceeds the 2 MiB limit"},TelemetryUnsupportedMediaType:{description:"Content-Type is not application/json"}}}};e.s(["telemetryOpenApiDocument",0,q],689245);var Z=e.i(750227),j=e.i(477685);let X=new Map,K=new Map,z=[["year",31536e3],["month",2592e3],["week",604800],["day",86400],["hour",3600],["minute",60]];function $(e,t="short",A={}){let r=function(e){if(null==e||""===e)return null;let t=e instanceof Date?e:new Date(e);return Number.isFinite(t.getTime())?t:null}(e);if(!r)return A.fallback??"—";let i=A.locale||"en";if("relative"===t){var s=A.now??Date.now();let e=Math.round((r.getTime()-s)/1e3),t=function(e){let t=K.get(e);if(t)return t;let A=new Intl.RelativeTimeFormat(e,{numeric:"auto"});return K.set(e,A),A}(i);for(let[A,r]of z)if(Math.abs(e)>=r)return t.format(Math.round(e/r),A);return t.format(e,"second")}let n=A.hour12??!0,o=A.utc?"UTC":A.timeZone,a=A.showTime??!0;return(function(e,t,A){let r=X.get(e);if(r)return r;let i=new Intl.DateTimeFormat(t,A);return X.set(e,i),i})(`${i}|${t}|${n}|${o??""}|${a}`,i,function(e,t,A,r){let i={hourCycle:t?"h12":"h23"},s=A?{timeZone:A}:{};if("time"===e)return{timeStyle:"medium",...i,...s};let n="long"===e?"full":"medium";return r?{dateStyle:n,timeStyle:"medium",...i,...s}:{dateStyle:n,...s}}(t,n,o,a)).format(r)}let ee="TelemetryUnicode",et="TelemetryEmoji",eA=(0,Z.join)(process.cwd(),"node_modules","@fontpkg","unifont","unifont-15.0.01.ttf"),er=(0,Z.join)(process.cwd(),"node_modules","@expo-google-fonts","noto-emoji","400Regular","NotoEmoji_400Regular.ttf"),ei=new Intl.Segmenter(void 0,{granularity:"grapheme"}),es=/\p{Extended_Pictographic}|\p{Regional_Indicator}|\u20e3|\ufe0f/u;function en(e,t){let A=es.test(t);return e.font(A?et:ee),{emoji:A,value:t,width:e.widthOfString(t)}}function eo(e){e.font(ee);let t=e.currentLineHeight(!0);return e.font(et),Math.max(t,e.currentLineHeight(!0))}function ea(e,t,A,r=1/0){let i=Math.max(1,A),s=[{glyphs:[],width:0}],n=!1;for(let{segment:A}of ei.segment(t)){if(/^[\r\n]+$/.test(A)){if(s.length>=r){n=!0;break}s.push({glyphs:[],width:0});continue}let t=en(e,A),o=s.at(-1);if(o.glyphs.length&&o.width+t.width>i){if(s.length>=r){n=!0;break}o={glyphs:[],width:0},s.push(o)}o.glyphs.push(t),o.width+=t.width}if(n){let t=s.at(-1),A=en(e,"…");for(;t.glyphs.length&&t.width+A.width>i;)t.width-=t.glyphs.pop().width;t.glyphs.push(A),t.width+=A.width}return s}function el(e,t,A,r,i){let s=Math.max(1,i.width??e.page.width-A-e.page.margins.right),n=eo(e);ea(e,t,s,!1===i.lineBreak?1:i.height?Math.max(1,Math.floor(i.height/n)):1/0).forEach((t,o)=>{let a="center"===i.align?A+(s-t.width)/2:"right"===i.align?A+s-t.width:A,l=[];for(let e of t.glyphs){let t=l.at(-1);t?.emoji===e.emoji?(t.value+=e.value,t.width+=e.width):l.push({...e})}for(let t of l)e.font(t.emoji?et:ee).text(t.value,a,r+o*n,{lineBreak:!1}),a+=t.width})}let eg={time:"Time",receivedAt:"Received",source:"Source",level:"Level",category:"Category",message:"Message",eventKind:"Kind",levelKind:"Level / Kind",eventName:"Name",screenName:"Screen Name",parameters:"Parameters",detail:"Detail",deviceIp:"Device IP",buildId:"Build ID",sessionId:"Session ID"},eh={CONTAINS:"contains",DOES_NOT_CONTAIN:"does not contain",IS:"is",IS_NOT:"is not",MATCHES_GLOB:"matches glob",MATCHES_REGEX:"matches regex",NO_REGEX_MATCH:"does not match regex",IS_EMPTY:"is empty",IS_NOT_EMPTY:"is not empty"};function ec(e){return null==e?"":"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):JSON.stringify(e)}function eE(e){return Object.entries(n(e)).filter(([e])=>e.startsWith("defaultParameters.")||e.startsWith("defaultParameters[")||e.startsWith("additionalParameters.")||e.startsWith("additionalParameters[")).map(([e,t])=>`${e}: ${ec(t)}`).join(" • ")}function eQ(e,t,A){return $(e,A?"short":"time",{locale:t.locale||"en",hour12:"24"!==t.timeFormat,timeZone:t.timeZone??void 0})}function eI(e,t,A){return"time"===t?eQ(e.clientTime,A,!0):"receivedAt"===t?eQ(e.receivedAt,A,!0):"source"===t?"CONSOLE"===e.entryType?"Console":"Analytics":"levelKind"===t?e.level??e.eventKind??"":"parameters"===t?eE(e):"detail"===t?"CONSOLE"===e.entryType?e.message??"":`${e.eventName??""}${e.screenName?` (${e.screenName})`:""}${eE(e)?` - ${eE(e)}`:""}`:ec(n(e)[t])}function ed(e){let t=[...new Set(e.fields.map(e=>e.trim()).filter(Boolean))];return t.length?t.slice(0,30):c[e.view]}function eu(e){return eg[e]?eg[e]:e.replace(/^attributes[.[]/,"").replace(/^defaultParameters[.[]/,"Default: ").replace(/^additionalParameters[.[]/,"Additional: ").replace(/]$/g,"")}function eC(e){return"message"===e||"detail"===e?2.8:"parameters"===e?2.4:"time"===e||"receivedAt"===e?1.35:"sessionId"===e?1.2:"buildId"===e||"screenName"===e?.95:"category"===e||"eventName"===e?.9:"level"===e||"eventKind"===e||"levelKind"===e||"source"===e?.65:e.startsWith("attributes.")||e.startsWith("attributes[")||"deviceIp"===e?.8:1}function eB(e){return String(e??"").replace(/\s+/g," ").trim().slice(0,200)}function ef(e){let t=/^[=+\-@]/.test(e)?`'${e}`:e;return`"${t.replaceAll('"','""')}"`}function ep(e){return e.replaceAll("|","\\|").replace(/[\r\n]+/g," ")}function ey(e,t){return $(e.clientTime,"long",{locale:t.locale||"en",showTime:!1,timeZone:t.timeZone??void 0})}async function ew(e,t){let A=ed(t),r=new j.default({size:"LETTER",layout:"landscape",margin:32,bufferPages:!0});r.registerFont(ee,eA),r.registerFont(et,er);let i=[];r.on("data",e=>i.push(e));let s=new Promise((e,t)=>{r.on("end",()=>{let t=new Uint8Array(i.reduce((e,t)=>e+t.byteLength,0)),A=0;for(let e of i)t.set(e,A),A+=e.byteLength;e(t)}),r.on("error",t)}),n=r.page.width-r.page.margins.left-r.page.margins.right,o=A.map(eC),a=o.reduce((e,t)=>e+t,0),l=o.map(e=>n*e/a),g=r.page.margins.left,h=l.map(e=>{let t=g;return g+=e,t}),c=()=>{r.font(ee).fontSize(8).fillColor("#111111");let e=r.y;A.forEach((t,A)=>{el(r,eu(t),h[A],e,{width:l[A]-6,lineBreak:!1,ellipsis:!0})}),r.x=r.page.margins.left,r.y=e+12,r.moveTo(r.page.margins.left,r.y).lineTo(r.page.width-r.page.margins.right,r.y).strokeColor("#aaaaaa").stroke(),r.y+=5},E=e=>{let t=r.y+5;r.fontSize(8).fillColor("#3f3f46"),el(r,e,r.page.margins.left,t,{width:n,align:"center",lineBreak:!1,ellipsis:!0});let A=t+14;r.save().strokeColor("#dddddd").moveTo(r.page.margins.left,A).lineTo(r.page.width-r.page.margins.right,A).stroke().restore(),r.x=r.page.margins.left,r.y=A+7};r.font(ee).fontSize(16).text("Observability export"),r.font(ee).fontSize(8).fillColor("#555555").text(`Generated ${eQ(new Date().toISOString(),t,!0)} - ${e.filter(e=>"SEPARATOR"!==e.entryType).length} records`);let Q=function(e){let t;if(!e)return["None"];try{t=JSON.parse(e)}catch{return["Custom filter applied"]}if(!t||"object"!=typeof t||Array.isArray(t))return["None"];let A=t,r=[];if("string"==typeof A.search&&A.search.trim()){let e="GLOB"===A.searchMode?"Glob":"REGEX"===A.searchMode?"Regex":"Text";r.push(`Search - ${e}, ${!0===A.caseSensitive?"case-sensitive":"case-insensitive"}: ${eB(A.search)}`)}if(A.quickFilters&&"object"==typeof A.quickFilters&&!Array.isArray(A.quickFilters))for(let[e,t]of Object.entries(A.quickFilters)){if(!Array.isArray(t))continue;let A=t.map(eB).filter(Boolean).slice(0,20);A.length&&r.push(`Quick filter - ${eu(e)}: ${A.join(", ")}`)}if(A.advancedFilter&&"object"==typeof A.advancedFilter&&!Array.isArray(A.advancedFilter)){let e=A.advancedFilter;if(Array.isArray(e.conditions)&&e.conditions.length)for(let t of(r.push(`Advanced filters - match ${"ANY"===e.mode?"any":"all"}:`),e.conditions)){if(!t||"object"!=typeof t||Array.isArray(t)||"string"!=typeof t.field)continue;let e="string"==typeof t.operator?eh[t.operator]??t.operator.toLocaleLowerCase().replaceAll("_"," "):"matches",A=eB(t.value),i=Array.isArray(t.sources)?t.sources.filter(e=>"CONSOLE"===e||"ANALYTICS"===e):[],s=1===i.length?` [${"CONSOLE"===i[0]?"Console":"Analytics"} only]`:"",n=!0===t.caseSensitive?" (case-sensitive)":"";r.push(`${eu(t.field)} ${e}${A?` "${A}"`:""}${n}${s}`)}}return r.length?r:["None"]}(t.filterSummary),I=Q.slice(0,6);Q.length>I.length&&(I[I.length-1]=`${Q.length-I.length+1} more filter conditions`);let d=r.y+5,u=20+10*I.length;r.save().lineWidth(.5).roundedRect(r.page.margins.left,d,n,u,4).fillAndStroke("#f7f7f8","#dddddd").restore(),r.font(ee).fontSize(8).fillColor("#333333").text("Filters",r.page.margins.left+8,d+6,{width:n-16,lineBreak:!1}),r.font(ee).fontSize(7).fillColor("#555555"),I.forEach((e,t)=>{el(r,`- ${e}`,r.page.margins.left+8,d+18+10*t,{width:n-16,lineBreak:!1,ellipsis:!0})}),r.x=r.page.margins.left,r.y=d+u+10,c();let C="";for(let i of e){let e=ey(i,t),s=e!==C,n="SEPARATOR"===i.entryType?(i.separatorName||"Separator").replace(/[·—–‑]/g,"-"):null;r.font(ee).fontSize(7);let o=n?[]:A.map(e=>(function(e){let t="",A=0;for(let{segment:r}of ei.segment(e)){if(4e3===A)return`${t}…`;t+=r,A+=1}return t})(eI(i,e,t))),a=n?0:Math.max(14,...o.map((e,t)=>(function(e,t,A){let r=eo(e);return ea(e,t,A).length*r})(r,e||" ",l[t]-6)))+4,g=Math.min(a,Math.max(14,r.page.height-60-r.page.margins.top-22-26*!!s)),Q=26*!!s+(n?26:g+3);if(r.y+Q>r.page.height-60&&(r.addPage(),c()),s&&E(C=e),n){E(n);continue}let I=r.y,d=Math.min(a,Math.max(14,r.page.height-60-I));r.font(ee).fontSize(7).fillColor("#111111"),o.forEach((e,t)=>{let A=Math.max(1,d-4);el(r,e,h[t],I,{width:l[t]-6,height:A})}),r.x=r.page.margins.left,r.y=I+d,r.moveTo(r.page.margins.left,r.y).lineTo(r.page.width-r.page.margins.right,r.y).strokeColor("#dddddd").stroke(),r.y+=3}let B=r.bufferedPageRange();for(let e=B.start;e<B.start+B.count;e+=1)r.switchToPage(e),r.font(ee).fontSize(7).fillColor("#666666").text(`Page ${e+1} of ${B.count}`,r.page.margins.left,r.page.height-r.page.margins.bottom-10,{align:"right",width:n,lineBreak:!1});return r.end(),s}e.s(["telemetryCsv",0,function(e,t){let A=ed(t),r=[A.map(e=>ef(eu(e))).join(",")],i="";for(let s of e){let e=ey(s,t);if(e!==i&&(i=e,r.push(A.map((e,t)=>ef(0===t?`[Day] ${i}`:"")).join(","))),"SEPARATOR"===s.entryType){r.push(A.map((e,t)=>ef(0===t?`[Separator] ${s.separatorName??""}`.trim():"")).join(","));continue}r.push(A.map(e=>ef(eI(s,e,t))).join(","))}return`${r.join("\r\n")}\r
122
122
  `},"telemetryMarkdown",0,function(e,t){let A=ed(t),r=["# Observability export",""];t.filterSummary&&r.push(`_Filters: ${t.filterSummary}_`,"");let i="",s=`| ${A.map(e=>ep(eu(e))).join(" | ")} |`,n=`| ${A.map(()=>"---").join(" | ")} |`;for(let o of e){let e=ey(o,t);e!==i&&(i=e,r.push(`## ${i}`,"",s,n)),"SEPARATOR"===o.entryType?r.push(`| ${[`**${ep(o.separatorName||"Separator")}**`,...A.slice(1).map(()=>"")].join(" | ")} |`):r.push(`| ${A.map(e=>ep(eI(o,e,t))).join(" | ")} |`)}return`${r.join("\n")}
123
123
  `},"telemetryPdf",0,ew],906148),e.s([],464841)}];
124
124