@chorus-aidlc/chorus 0.13.0 → 0.13.1

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 (641) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +410 -425
  3. package/.next/standalone/.next/app-path-routes-manifest.json +39 -41
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +33 -57
  6. package/.next/standalone/.next/routes-manifest.json +0 -6
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  51. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  52. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  55. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  56. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  58. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  59. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/admin.html +1 -1
  61. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  62. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
  106. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  127. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  130. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js.nft.json +1 -1
  131. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  133. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  134. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/events/notifications/route.js +4 -4
  136. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/events/route.js +6 -6
  139. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  140. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  144. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  146. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  147. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -0
  161. package/.next/standalone/.next/server/app/api/{auth/refresh → ideas/conversational}/route.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -0
  163. package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
  164. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  165. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  170. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  171. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  173. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  174. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  176. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  177. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  191. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js.nft.json +1 -1
  192. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  194. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js.nft.json +1 -1
  195. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/project-groups/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js.nft.json +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js.nft.json +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js.nft.json +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js.nft.json +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js.nft.json +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  235. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  237. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  241. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js.nft.json +1 -1
  242. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  243. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  244. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js.nft.json +1 -1
  245. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  246. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  247. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js.nft.json +1 -1
  248. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  249. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  250. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js.nft.json +1 -1
  251. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  253. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js.nft.json +1 -1
  254. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  255. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  256. package/.next/standalone/.next/server/app/api/session/route.js +1 -0
  257. package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -0
  258. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -0
  259. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  260. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  261. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  266. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  267. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  268. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  269. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  270. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  271. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  272. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  273. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  274. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  275. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  276. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  277. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  278. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  279. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  280. package/.next/standalone/.next/server/app/index.html +1 -1
  281. package/.next/standalone/.next/server/app/index.rsc +3 -3
  282. package/.next/standalone/.next/server/app/login/admin/page.js +2 -2
  283. package/.next/standalone/.next/server/app/login/admin/page.js.nft.json +1 -1
  284. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  286. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  287. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  288. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  289. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  290. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  291. package/.next/standalone/.next/server/app/login/callback.rsc +3 -3
  292. package/.next/standalone/.next/server/app/login/page.js +2 -2
  293. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  294. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  295. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +1 -1
  296. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  297. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  298. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +3 -3
  299. package/.next/standalone/.next/server/app/login.html +1 -1
  300. package/.next/standalone/.next/server/app/login.rsc +3 -3
  301. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  302. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  303. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  304. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  305. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  306. package/.next/standalone/.next/server/app/page.js +2 -2
  307. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  308. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  309. package/.next/standalone/.next/server/app/projects.html +1 -1
  310. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  311. package/.next/standalone/.next/server/app/settings.html +1 -1
  312. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  313. package/.next/standalone/.next/server/app-paths-manifest.json +39 -41
  314. package/.next/standalone/.next/server/chunks/1114.js +1 -0
  315. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  316. package/.next/standalone/.next/server/chunks/{7258.js → 2516.js} +1 -1
  317. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  318. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  319. package/.next/standalone/.next/server/chunks/3219.js +1 -1
  320. package/.next/standalone/.next/server/chunks/3371.js +1 -0
  321. package/.next/standalone/.next/server/chunks/3373.js +1 -1
  322. package/.next/standalone/.next/server/chunks/3419.js +1 -1
  323. package/.next/standalone/.next/server/chunks/4827.js +1 -0
  324. package/.next/standalone/.next/server/chunks/4958.js +1 -0
  325. package/.next/standalone/.next/server/chunks/{9855.js → 5095.js} +2 -2
  326. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  327. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  328. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  329. package/.next/standalone/.next/server/chunks/6496.js +1 -0
  330. package/.next/standalone/.next/server/chunks/679.js +1 -1
  331. package/.next/standalone/.next/server/chunks/6817.js +1 -0
  332. package/.next/standalone/.next/server/chunks/{178.js → 704.js} +3 -3
  333. package/.next/standalone/.next/server/chunks/7160.js +1 -1
  334. package/.next/standalone/.next/server/chunks/7364.js +1 -1
  335. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  336. package/.next/standalone/.next/server/chunks/8448.js +1 -0
  337. package/.next/standalone/.next/server/chunks/{8267.js → 8481.js} +1 -1
  338. package/.next/standalone/.next/server/chunks/8497.js +1 -0
  339. package/.next/standalone/.next/server/chunks/8577.js +153 -0
  340. package/.next/standalone/.next/server/chunks/8895.js +1 -0
  341. package/.next/standalone/.next/server/chunks/920.js +1 -1
  342. package/.next/standalone/.next/server/chunks/9726.js +1 -0
  343. package/.next/standalone/.next/server/instrumentation.js +1 -1
  344. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  345. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  346. package/.next/standalone/.next/server/pages/404.html +1 -1
  347. package/.next/standalone/.next/server/pages/500.html +1 -1
  348. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  349. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  350. package/.next/standalone/.next/server/src/middleware.js +5 -5
  351. package/.next/standalone/.next/static/chunks/15653-31c406c41bf58048.js +1 -0
  352. package/.next/standalone/.next/static/chunks/1892-9c03d4d3560ff572.js +1 -0
  353. package/.next/standalone/.next/static/chunks/225-8a41a800021f3d11.js +1 -0
  354. package/.next/standalone/.next/static/chunks/24459-3bc9657d71c77b47.js +1 -0
  355. package/.next/standalone/.next/static/chunks/38296-316ba18af72385fb.js +1 -0
  356. package/.next/standalone/.next/static/chunks/46055-f786ace4b994dc40.js +1 -0
  357. package/.next/standalone/.next/static/chunks/{4860.c3c83713d1f163a5.js → 4860.7844c573cb3914f3.js} +1 -1
  358. package/.next/standalone/.next/static/chunks/{49965-fa11628d5ac8fbbe.js → 52064-74d81c8d682deb6b.js} +1 -1
  359. package/.next/standalone/.next/static/chunks/57362-9ece5cc290dab705.js +1 -0
  360. package/.next/standalone/.next/static/chunks/{14655-4f3bc7f3044c42c1.js → 58037-55d7422c6b808356.js} +1 -1
  361. package/.next/standalone/.next/static/chunks/58262-395c00e04f610a32.js +1 -0
  362. package/.next/standalone/.next/static/chunks/68255-05c42a26602c6b37.js +1 -0
  363. package/.next/standalone/.next/static/chunks/75752-cc8fafe132943baa.js +1 -0
  364. package/.next/standalone/.next/static/chunks/80350-8ac8d602965bb4df.js +1 -0
  365. package/.next/standalone/.next/static/chunks/84169-71a87d06871ec9df.js +1 -0
  366. package/.next/standalone/.next/static/chunks/94528-ed3f03485480f5e5.js +1 -0
  367. package/.next/standalone/.next/static/chunks/94743-aff8a51a7f7970a9.js +1 -0
  368. package/.next/standalone/.next/static/chunks/{36493-5326c14a7240edc8.js → 97306-8834e12cdbeed920.js} +1 -1
  369. package/.next/standalone/.next/static/chunks/{99373.2b68fce200cc323e.js → 99373.6f0ec031fb759d88.js} +1 -1
  370. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-a3747bde1ddaba52.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-87b79c98e46fbd04.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-47e1d397c5fcef9e.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f72f17eb58614d2b.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-0467d744b84aa2c2.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-7ebb779f0db4c58b.js → page-7abff55f9bfebab3.js} +1 -1
  376. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-3238e0b5474c60f6.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-9f0ebba7e855b2f9.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6dbfbe5d97855e42.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-b8fbcac7224342db.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-0a04a31e1b383094.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-e2a69b645ec9ae13.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-0bc22273214e522f.js → page-b760877bfcd12dff.js} +1 -1
  383. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-111aed4d3319d64b.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-47e1d397c5fcef9e.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-47e1d397c5fcef9e.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-47e1d397c5fcef9e.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-47e1d397c5fcef9e.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-47e1d397c5fcef9e.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/agents/route-47e1d397c5fcef9e.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-47e1d397c5fcef9e.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-47e1d397c5fcef9e.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-47e1d397c5fcef9e.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-47e1d397c5fcef9e.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-47e1d397c5fcef9e.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-47e1d397c5fcef9e.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-47e1d397c5fcef9e.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-47e1d397c5fcef9e.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-47e1d397c5fcef9e.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/comments/route-47e1d397c5fcef9e.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-47e1d397c5fcef9e.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-47e1d397c5fcef9e.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-47e1d397c5fcef9e.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-47e1d397c5fcef9e.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-47e1d397c5fcef9e.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-47e1d397c5fcef9e.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-47e1d397c5fcef9e.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-47e1d397c5fcef9e.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-47e1d397c5fcef9e.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-47e1d397c5fcef9e.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-47e1d397c5fcef9e.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-47e1d397c5fcef9e.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-47e1d397c5fcef9e.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-47e1d397c5fcef9e.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-47e1d397c5fcef9e.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/events/route-47e1d397c5fcef9e.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/health/route-47e1d397c5fcef9e.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-47e1d397c5fcef9e.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-47e1d397c5fcef9e.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-47e1d397c5fcef9e.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-47e1d397c5fcef9e.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-47e1d397c5fcef9e.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-47e1d397c5fcef9e.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/mcp/route-47e1d397c5fcef9e.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-47e1d397c5fcef9e.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-47e1d397c5fcef9e.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-47e1d397c5fcef9e.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-47e1d397c5fcef9e.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-47e1d397c5fcef9e.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-47e1d397c5fcef9e.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/notifications/route-47e1d397c5fcef9e.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-47e1d397c5fcef9e.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-47e1d397c5fcef9e.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-47e1d397c5fcef9e.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-47e1d397c5fcef9e.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-47e1d397c5fcef9e.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-47e1d397c5fcef9e.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-47e1d397c5fcef9e.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-47e1d397c5fcef9e.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-47e1d397c5fcef9e.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-47e1d397c5fcef9e.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-47e1d397c5fcef9e.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-47e1d397c5fcef9e.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-47e1d397c5fcef9e.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-47e1d397c5fcef9e.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-47e1d397c5fcef9e.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-47e1d397c5fcef9e.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/projects/route-47e1d397c5fcef9e.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-47e1d397c5fcef9e.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-47e1d397c5fcef9e.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-47e1d397c5fcef9e.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-47e1d397c5fcef9e.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/search/route-47e1d397c5fcef9e.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/session/route-47e1d397c5fcef9e.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-47e1d397c5fcef9e.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-47e1d397c5fcef9e.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-47e1d397c5fcef9e.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-47e1d397c5fcef9e.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-47e1d397c5fcef9e.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/login/callback/page-39a43f6d0245f8ca.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/login/page-acda3a31dc6a8280.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-10683852baf17426.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/onboarding/{page-500aded75bf11ed6.js → page-8e20c8aa8ff90326.js} +1 -1
  473. package/.next/standalone/.next/static/chunks/app/page-000b1349c8d5b652.js +1 -0
  474. package/.next/standalone/.next/static/chunks/{webpack-7483083a976ed3d7.js → webpack-fe12dfe2e0d0e4f3.js} +1 -1
  475. package/.next/standalone/.next/static/css/3f3ae2bdc9e55259.css +1 -0
  476. package/.next/standalone/.next/static/eORNzMShbzkJbNfQT8MbW/_buildManifest.js +1 -0
  477. package/.next/standalone/package.json +1 -1
  478. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -0
  479. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +2 -0
  480. package/.next/standalone/public/skill/develop-chorus/SKILL.md +2 -0
  481. package/.next/standalone/public/skill/idea-chorus/SKILL.md +2 -0
  482. package/README.md +15 -2
  483. package/README.zh.md +15 -2
  484. package/cli/client-args.mjs +31 -9
  485. package/cli/control-handler.mjs +22 -5
  486. package/cli/daemon-lifecycle.mjs +192 -25
  487. package/cli/daemon-rest-client.mjs +6 -2
  488. package/cli/daemon-service.mjs +422 -0
  489. package/cli/daemon.mjs +181 -13
  490. package/cli/event-router.mjs +29 -10
  491. package/cli/prompts.mjs +61 -0
  492. package/cli/turn-reporter.mjs +26 -5
  493. package/cli/wake-queue.mjs +30 -0
  494. package/cli/waker.mjs +91 -22
  495. package/package.json +1 -1
  496. package/prisma/migrations/20260704023331_add_turn_interrupted_state/migration.sql +2 -0
  497. package/prisma/schema.prisma +9 -2
  498. package/.next/standalone/.next/server/app/api/auth/refresh/route.js +0 -1
  499. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +0 -1
  500. package/.next/standalone/.next/server/app/api/auth/session/route.js +0 -1
  501. package/.next/standalone/.next/server/app/api/auth/session/route.js.nft.json +0 -1
  502. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +0 -1
  503. package/.next/standalone/.next/server/app/api/keepalive/route.js +0 -1
  504. package/.next/standalone/.next/server/app/api/keepalive/route.js.nft.json +0 -1
  505. package/.next/standalone/.next/server/app/api/keepalive/route_client-reference-manifest.js +0 -1
  506. package/.next/standalone/.next/server/app/login/silent-refresh/page.js +0 -2
  507. package/.next/standalone/.next/server/app/login/silent-refresh/page.js.nft.json +0 -1
  508. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +0 -1
  509. package/.next/standalone/.next/server/app/login/silent-refresh.html +0 -1
  510. package/.next/standalone/.next/server/app/login/silent-refresh.meta +0 -7
  511. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +0 -24
  512. package/.next/standalone/.next/server/chunks/1463.js +0 -1
  513. package/.next/standalone/.next/server/chunks/298.js +0 -1
  514. package/.next/standalone/.next/server/chunks/5011.js +0 -1
  515. package/.next/standalone/.next/server/chunks/6813.js +0 -1
  516. package/.next/standalone/.next/server/chunks/7421.js +0 -1
  517. package/.next/standalone/.next/server/chunks/7515.js +0 -1
  518. package/.next/standalone/.next/server/chunks/7912.js +0 -1
  519. package/.next/standalone/.next/server/chunks/8821.js +0 -1
  520. package/.next/standalone/.next/server/chunks/9273.js +0 -1
  521. package/.next/standalone/.next/server/chunks/937.js +0 -153
  522. package/.next/standalone/.next/static/W3KEB0tOAICVtfAUfR_M9/_buildManifest.js +0 -1
  523. package/.next/standalone/.next/static/chunks/10919-7f63b2801a92b8c6.js +0 -1
  524. package/.next/standalone/.next/static/chunks/1891-d4a9e756fefba3a9.js +0 -1
  525. package/.next/standalone/.next/static/chunks/20081-a2bf5c9f24d5d589.js +0 -1
  526. package/.next/standalone/.next/static/chunks/26394-4af487a51dd62832.js +0 -1
  527. package/.next/standalone/.next/static/chunks/2987-c15f09093b821b24.js +0 -1
  528. package/.next/standalone/.next/static/chunks/37784-95dee37276b1067b.js +0 -1
  529. package/.next/standalone/.next/static/chunks/43741-aeea04ab873ac4e9.js +0 -1
  530. package/.next/standalone/.next/static/chunks/49852-5337f139a2f87c46.js +0 -1
  531. package/.next/standalone/.next/static/chunks/56812-a6fe5225adc0b2ff.js +0 -1
  532. package/.next/standalone/.next/static/chunks/64894-71b047ae8ef2f3d8.js +0 -1
  533. package/.next/standalone/.next/static/chunks/8796-69e708cb8603d8b4.js +0 -1
  534. package/.next/standalone/.next/static/chunks/91666-3fd4f3512a53ff20.js +0 -1
  535. package/.next/standalone/.next/static/chunks/97263-018d631416efa5cd.js +0 -1
  536. package/.next/standalone/.next/static/chunks/97868-55f18a05fe483d85.js +0 -1
  537. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-6061b60d52262d3c.js +0 -1
  538. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-78ab05c72bcd04fd.js +0 -1
  539. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-31ae6abada6e6a64.js +0 -1
  540. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-478cce81afbfc145.js +0 -1
  541. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-494b80e61b485870.js +0 -1
  542. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-bfbfc5005de2be13.js +0 -1
  543. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-fbb4dd4124525f97.js +0 -1
  544. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-164fe175720b24a1.js +0 -1
  545. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-2742c745a90f843f.js +0 -1
  546. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-f2313bf05387b39b.js +0 -1
  547. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-955e8fd8d7b0b7c8.js +0 -1
  548. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-960ab78b5055780c.js +0 -1
  549. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-31ae6abada6e6a64.js +0 -1
  550. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-31ae6abada6e6a64.js +0 -1
  551. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-31ae6abada6e6a64.js +0 -1
  552. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-31ae6abada6e6a64.js +0 -1
  553. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-31ae6abada6e6a64.js +0 -1
  554. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-31ae6abada6e6a64.js +0 -1
  555. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-31ae6abada6e6a64.js +0 -1
  556. package/.next/standalone/.next/static/chunks/app/api/agents/route-31ae6abada6e6a64.js +0 -1
  557. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-31ae6abada6e6a64.js +0 -1
  558. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-31ae6abada6e6a64.js +0 -1
  559. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-31ae6abada6e6a64.js +0 -1
  560. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-31ae6abada6e6a64.js +0 -1
  561. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-31ae6abada6e6a64.js +0 -1
  562. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-31ae6abada6e6a64.js +0 -1
  563. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-31ae6abada6e6a64.js +0 -1
  564. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-31ae6abada6e6a64.js +0 -1
  565. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-31ae6abada6e6a64.js +0 -1
  566. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-31ae6abada6e6a64.js +0 -1
  567. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-31ae6abada6e6a64.js +0 -1
  568. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-31ae6abada6e6a64.js +0 -1
  569. package/.next/standalone/.next/static/chunks/app/api/comments/route-31ae6abada6e6a64.js +0 -1
  570. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-31ae6abada6e6a64.js +0 -1
  571. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-31ae6abada6e6a64.js +0 -1
  572. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-31ae6abada6e6a64.js +0 -1
  573. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-31ae6abada6e6a64.js +0 -1
  574. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-31ae6abada6e6a64.js +0 -1
  575. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-31ae6abada6e6a64.js +0 -1
  576. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-31ae6abada6e6a64.js +0 -1
  577. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-31ae6abada6e6a64.js +0 -1
  578. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-31ae6abada6e6a64.js +0 -1
  579. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-31ae6abada6e6a64.js +0 -1
  580. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-31ae6abada6e6a64.js +0 -1
  581. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-31ae6abada6e6a64.js +0 -1
  582. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-31ae6abada6e6a64.js +0 -1
  583. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-31ae6abada6e6a64.js +0 -1
  584. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-31ae6abada6e6a64.js +0 -1
  585. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-31ae6abada6e6a64.js +0 -1
  586. package/.next/standalone/.next/static/chunks/app/api/events/route-31ae6abada6e6a64.js +0 -1
  587. package/.next/standalone/.next/static/chunks/app/api/health/route-31ae6abada6e6a64.js +0 -1
  588. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-31ae6abada6e6a64.js +0 -1
  589. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-31ae6abada6e6a64.js +0 -1
  590. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-31ae6abada6e6a64.js +0 -1
  591. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-31ae6abada6e6a64.js +0 -1
  592. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-31ae6abada6e6a64.js +0 -1
  593. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-31ae6abada6e6a64.js +0 -1
  594. package/.next/standalone/.next/static/chunks/app/api/keepalive/route-31ae6abada6e6a64.js +0 -1
  595. package/.next/standalone/.next/static/chunks/app/api/mcp/route-31ae6abada6e6a64.js +0 -1
  596. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-31ae6abada6e6a64.js +0 -1
  597. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-31ae6abada6e6a64.js +0 -1
  598. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-31ae6abada6e6a64.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-31ae6abada6e6a64.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-31ae6abada6e6a64.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-31ae6abada6e6a64.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/api/notifications/route-31ae6abada6e6a64.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-31ae6abada6e6a64.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-31ae6abada6e6a64.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-31ae6abada6e6a64.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-31ae6abada6e6a64.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-31ae6abada6e6a64.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-31ae6abada6e6a64.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-31ae6abada6e6a64.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-31ae6abada6e6a64.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-31ae6abada6e6a64.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-31ae6abada6e6a64.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-31ae6abada6e6a64.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-31ae6abada6e6a64.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-31ae6abada6e6a64.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-31ae6abada6e6a64.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-31ae6abada6e6a64.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-31ae6abada6e6a64.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-31ae6abada6e6a64.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-31ae6abada6e6a64.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/projects/route-31ae6abada6e6a64.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-31ae6abada6e6a64.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-31ae6abada6e6a64.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-31ae6abada6e6a64.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-31ae6abada6e6a64.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-31ae6abada6e6a64.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/search/route-31ae6abada6e6a64.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-31ae6abada6e6a64.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-31ae6abada6e6a64.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-31ae6abada6e6a64.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-31ae6abada6e6a64.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-31ae6abada6e6a64.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-31ae6abada6e6a64.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-31ae6abada6e6a64.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/login/callback/page-6cad93f5c610b047.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/login/page-d2513f477211dd6f.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-597e0f3377f18d29.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/login/silent-refresh/page-a26d1af61578c96e.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/page-075afd218994d377.js +0 -1
  640. package/.next/standalone/.next/static/css/ed6baccd62b81c4e.css +0 -1
  641. /package/.next/standalone/.next/static/{W3KEB0tOAICVtfAUfR_M9 → eORNzMShbzkJbNfQT8MbW}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[57362],{30423:(e,t,n)=>{n.d(t,{j:()=>l});let r=["#E06C75","#E5C07B","#98C379","#56B6C2","#61AFEF","#C678DD","#D19A66","#BE5046","#7EC8E3","#C3E88D","#F78C6C","#A9DC76"];function l(e){let t=function(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return Math.abs(t)}(e)%r.length;return r[t]}},38106:(e,t,n)=>{function r(e){let t="string"==typeof e?new Date(e):e;if(isNaN(t.getTime()))return"";let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),c=String(t.getMinutes()).padStart(2,"0");return"".concat(n,"-").concat(r,"-").concat(l," ").concat(a,":").concat(c)}function l(e,t){let n="string"==typeof e?new Date(e):e;return isNaN(n.getTime())?"":n.toLocaleDateString(t,{month:"short",day:"numeric"})}n.d(t,{r:()=>r,s:()=>l})},47754:(e,t,n)=>{n.d(t,{fv:()=>x,xQ:()=>h});var r=n(1856),l=n(63964);let a=new Map,c=new Map,o=new Map,i=new Set,s=0;function u(e,t,n,r){return n?r?"".concat(e,":").concat(t,":").concat(n,":").concat(r):"".concat(e,":").concat(t,":").concat(n):"".concat(e,":").concat(t)}function d(){s++,i.forEach(e=>e())}function m(e){var t;let n=e.subEntityType,r=e.subEntityUuid,l=u(e.entityType,e.entityUuid,n,r),i=function(e,t,n,r,l){let a=u(e,t,r,l);return"".concat(a,":").concat(n)}(e.entityType,e.entityUuid,e.agentUuid,n,r),s=c.get(i);if(s&&Date.now()-s<3e3)return;c.set(i,Date.now());let m={agentUuid:e.agentUuid,agentName:e.agentName,action:e.action,timestamp:Date.now()},p=(null!=(t=a.get(l))?t:[]).filter(t=>t.agentUuid!==e.agentUuid);p.push(m),a.set(l,p);let f=o.get(i);f&&clearTimeout(f);let x=setTimeout(()=>{let t=a.get(l);if(t){let n=t.filter(t=>t.agentUuid!==e.agentUuid);0===n.length?a.delete(l):a.set(l,n)}c.delete(i),o.delete(i),d()},3e3);o.set(i,x),d()}function p(){return s}function f(e){return i.add(e),()=>{i.delete(e)}}function x(e){m({type:"presence",companyUuid:"",projectUuid:"",...e,timestamp:Date.now()})}function h(){return(0,r.useSyncExternalStore)(f,p,p),(0,l.S2)(m),{getPresence:(e,t,n,r)=>{if(n){var l;return null!=(l=a.get(u(e,t,n,r)))?l:[]}let c="".concat(e,":").concat(t),o=new Map;for(let[e,t]of a)if(e===c||e.startsWith(c+":"))for(let e of t){let t=o.get(e.agentUuid);(!t||e.timestamp>t.timestamp)&&o.set(e.agentUuid,e)}return[...o.values()]}}}},57362:(e,t,n)=>{n.d(t,{$m:()=>W});var r=n(90508),l=n(1856),a=n(39268),c=n(94903),o=n(85226),i=n(95886),s=n(36755),u=n(5425),d=n(22922),m=n(73693),p=n(42242),f=n(85783),x=n(99783),h=n(24377),g=n(67712),w=n(42305);function v(e){var t;if(!e)return{pinnedHost:null,pinnedCwd:null};let n=new URLSearchParams(e),r=n.has("cwd"),l=n.has("host");if(!r&&!l)return{pinnedHost:null,pinnedCwd:null};let a=null!=(t=n.get("cwd"))?t:"",c=n.get("host");return{pinnedCwd:r&&""!==a?a:null,pinnedHost:l?null!=c?c:"":null}}var y=n(78307),b=n(97438);let C=x.A.extend({addAttributes(){var e;return{...null==(e=this.parent)?void 0:e.call(this),mentionType:{default:"user",parseHTML:e=>e.getAttribute("data-mention-type")||"user",renderHTML:e=>({"data-mention-type":e.mentionType||"user"})},pinnedHost:{default:null,parseHTML:e=>e.getAttribute("data-pinned-host"),renderHTML:e=>null==e.pinnedHost?{}:{"data-pinned-host":String(e.pinnedHost)}},pinnedCwd:{default:null,parseHTML:e=>e.getAttribute("data-pinned-cwd"),renderHTML:e=>null==e.pinnedCwd?{}:{"data-pinned-cwd":String(e.pinnedCwd)}}}}});function N(e){let t=e.getJSON();return t.content?t.content.map(e=>(function e(t){if("mention"===t.type){let e=t.attrs;if(e){var n,r,l,a,c,o,i;return l=e.label||e.id,a=e.mentionType||"user",c=e.id,o=null!=(n=e.pinnedHost)?n:null,i=null!=(r=e.pinnedCwd)?r:null,"@[".concat(l,"](").concat(a,":").concat(c).concat(function(e,t){if(null==e&&null==t)return"";let n=e=>encodeURIComponent(e).replace(/\(/g,"%28").replace(/\)/g,"%29"),r=[];return r.push("cwd=".concat(null==t?"":n(t))),null!=e&&r.push("host=".concat(n(e))),"?".concat(r.join("&"))}(o,i),")")}return""}if("text"===t.type)return t.text||"";if("hardBreak"===t.type)return"\n";let s=t.content;return s?s.map(e).join(""):""})(e)).join("\n"):""}function j(e){if(!e)return{type:"doc",content:[{type:"paragraph"}]};let t=/@\[([^\]]+)\]\((user|agent):([a-f0-9-]+)(?:\?([^)]*))?\)/g;return{type:"doc",content:e.split("\n").map(e=>{let n,r=[],l=0,a=RegExp(t.source,"g");for(;null!==(n=a.exec(e));){n.index>l&&r.push({type:"text",text:e.slice(l,n.index)});let{pinnedHost:t,pinnedCwd:a}=v(n[4]);r.push({type:"mention",attrs:{id:n[3],label:n[1],mentionType:n[2],pinnedHost:t,pinnedCwd:a}}),l=n.index+n[0].length}return l<e.length&&r.push({type:"text",text:e.slice(l)}),{type:"paragraph",content:r.length>0?r:void 0}})}}function E(e,t,n,r,l,a,c){if(l.innerHTML="",t){let e=document.createElement("div");e.className="flex items-center justify-center py-3 px-4",e.innerHTML='<div class="h-4 w-4 animate-spin rounded-full border-2 border-[#9A9A9A] border-t-transparent"></div>',l.appendChild(e);return}if(0===e.length){let e=document.createElement("div");e.className="py-2 px-3 text-xs text-[#9A9A9A]",e.textContent="No results",l.appendChild(e);return}let o=document.createElement("div");o.className="py-1";let i=0,s=e=>{if(c)return void c(e,n);n({id:e.uuid,label:e.name,mentionType:e.type})},u=()=>{o.innerHTML="",e.forEach((e,t)=>{let n=document.createElement("button");n.type="button",n.className="flex w-full items-center gap-2.5 px-3 py-1.5 text-left text-sm transition-colors ".concat(t===i?"bg-[#FAF8F4] text-[#2C2C2C]":"text-[#6B6B6B] hover:bg-[#FAF8F4]"),n.onclick=()=>s(e);let r=document.createElement("div");r.className="relative shrink-0";let l=document.createElement("div");if(l.className="flex h-6 w-6 items-center justify-center rounded-full ".concat("agent"===e.type?"bg-[#C67A52] text-white":"bg-[#E5E0D8] text-[#6B6B6B]"),l.innerHTML="agent"===e.type?'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>':'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',r.appendChild(l),"agent"===e.type&&e.online){let e=document.createElement("span");e.className="absolute -bottom-0.5 -right-0.5 h-2 w-2 rounded-full bg-[#22C55E] ring-2 ring-white",e.title=a.online,r.appendChild(e)}let c=document.createElement("div");c.className="min-w-0 flex-1";let u=document.createElement("div");if(u.className="truncate text-xs font-medium",u.textContent=e.name,c.appendChild(u),e.email){let t=document.createElement("div");t.className="truncate text-[10px] text-[#9A9A9A]",t.textContent=e.email,c.appendChild(t)}if("agent"===e.type&&e.online){var d;let t=null!=(d=e.activeCount)?d:0,n=document.createElement("div");t>0?(n.className="mt-0.5 truncate text-[10px] font-medium text-[#15803D]",n.textContent="▶ ".concat(a.activeCount(t))):(n.className="mt-0.5 truncate text-[10px] text-[#9A9A9A]",n.textContent=a.idle),c.appendChild(n)}n.appendChild(r),n.appendChild(c),o.appendChild(n)})};u(),l.appendChild(o),r.current={onKeyDown:t=>{let{event:n}=t;return!(0,w.P)(n)&&("ArrowUp"===n.key?(i=i<=0?e.length-1:i-1,u(),!0):"ArrowDown"===n.key?(i=i>=e.length-1?0:i+1,u(),!0):"Enter"===n.key?(e[i]&&s(e[i]),!0):"Escape"===n.key)}}}function A(e){var t;let{open:n,agentName:c,instances:o,onConfirm:i,onCancel:s}=e,u=(0,a.c)("mentionInstance"),[m,p]=(0,l.useState)(null);(0,l.useEffect)(()=>{var e;n&&p(null!=(e=o[0])?e:null)},[n,o]);let f=new Set(o.map(e=>e.host)).size;return(0,r.jsx)(b.lG,{open:n,onOpenChange:e=>{e||s()},children:(0,r.jsxs)(b.Cf,{className:"z-[110] flex max-h-[85svh] flex-col gap-0 sm:max-w-md",overlayClassName:"z-[110]",children:[(0,r.jsxs)(b.c7,{className:"shrink-0",children:[(0,r.jsx)(b.L3,{children:u("title")}),(0,r.jsx)(b.rr,{children:u("subtitle",{name:c,count:o.length,hosts:f})})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto py-3",onKeyDown:e=>{!("Enter"!==e.key||(0,w.P)(e))&&m&&(e.preventDefault(),i(m))},children:(0,r.jsx)(y.O,{instances:o,selectedConnectionUuid:null!=(t=null==m?void 0:m.connectionUuid)?t:null,onSelect:p,ariaLabel:u("title")})}),(0,r.jsxs)(b.Es,{className:"shrink-0",children:[(0,r.jsx)(d.$,{variant:"ghost",onClick:s,children:u("cancel")}),(0,r.jsx)(d.$,{disabled:!m,onClick:()=>{m&&i(m)},children:u("confirm")})]})]})})}let k=(0,l.forwardRef)((e,t)=>{var n,c;let{value:o,onChange:i,placeholder:s,className:u,disabled:d,onSubmit:m}=e,x=(0,l.useRef)([]),v=(0,l.useRef)(!1),y=(0,l.useRef)(null),b=(0,l.useRef)(null),k=(0,l.useRef)(null),S=(0,l.useRef)(null),[,M]=(0,l.useState)(0),R=(0,l.useRef)(!1),T=(0,a.c)("mention"),D=(0,l.useRef)({online:"",offline:"",idle:"",activeCount:()=>""});D.current={online:T("online"),offline:T("offline"),idle:T("idle"),activeCount:e=>T("activeCount",{count:e})};let H=function(e,t){let n=(0,l.useRef)(null),r=(0,l.useRef)(e);r.current=e;let a=(0,l.useCallback)(e=>{n.current&&clearTimeout(n.current),n.current=setTimeout(()=>r.current(e),250)},[250]);return(0,l.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]),a}((0,l.useCallback)(async e=>{v.current=!0,M(e=>e+1);try{let t=await fetch("/api/mentionables?q=".concat(encodeURIComponent(e),"&limit=10&withInstances=1"));if(t.ok){let e=await t.json();e.success&&(x.current=e.data)}}catch(e){x.current=[]}finally{v.current=!1,M(e=>e+1)}},[]),250),[B,U]=(0,l.useState)(null),F=(0,l.useCallback)((e,t,n)=>{t({id:e.uuid,label:e.name,mentionType:e.type,pinnedHost:n?n.host:null,pinnedCwd:n?n.cwd:null})},[]),_=(0,l.useRef)(()=>{});_.current=(e,t)=>{var n;let r="agent"===e.type?(null!=(n=e.instances)?n:[]).filter(e=>"online"===e.effectiveStatus):[];return r.length>=2?void U({item:e,onlineInstances:r,command:t}):1===r.length?void F(e,t,r[0]):void F(e,t)};let L=(0,l.useCallback)((e,t)=>_.current(e,t),[]);(0,l.useEffect)(()=>{k.current&&S.current&&E(x.current,v.current,S.current,y,k.current,D.current,L)});let z=(0,p.hG)({immediatelyRender:!1,extensions:[f.A.configure({heading:!1,blockquote:!1,codeBlock:!1,bulletList:!1,orderedList:!1,listItem:!1,horizontalRule:!1}),C.configure({HTMLAttributes:{class:"text-blue-600 font-medium"},renderText(e){var t;let{node:n}=e;return"@".concat(null!=(t=n.attrs.label)?t:n.attrs.id)},suggestion:{char:"@",allowSpaces:!0,items:e=>{let{query:t}=e;return H(t),x.current},render:()=>({onStart:e=>{var t;let n=document.createElement("div");if(n.className="z-[100] rounded-md border border-[#E5E0D8] bg-white shadow-md min-w-[200px] max-w-[300px] overflow-hidden",k.current=n,S.current=e.command,e.clientRect){let t="function"==typeof e.clientRect?e.clientRect():e.clientRect;t&&(n.style.position="fixed",n.style.left="".concat(t.left,"px"),window.innerHeight-t.bottom<220?n.style.bottom="".concat(window.innerHeight-t.top+4,"px"):n.style.top="".concat(t.bottom+4,"px"))}(null!=(t=b.current)?t:document.body).appendChild(n),E(x.current,v.current,e.command,y,n,D.current,L)},onUpdate:e=>{if(S.current=e.command,k.current&&e.clientRect){let t="function"==typeof e.clientRect?e.clientRect():e.clientRect;t&&(k.current.style.left="".concat(t.left,"px"),window.innerHeight-t.bottom<220?(k.current.style.top="",k.current.style.bottom="".concat(window.innerHeight-t.top+4,"px")):(k.current.style.bottom="",k.current.style.top="".concat(t.bottom+4,"px")))}k.current&&E(x.current,v.current,e.command,y,k.current,D.current,L)},onKeyDown:e=>!!y.current&&y.current.onKeyDown(e),onExit:()=>{var e;null==(e=k.current)||e.remove(),k.current=null,S.current=null,x.current=[],v.current=!1}})}})],content:j(o),editable:!d,editorProps:{attributes:{class:(0,h.cn)("min-h-[36px] max-h-[120px] overflow-y-auto px-3 py-2 text-sm outline-none","prose prose-sm max-w-none [&_p]:my-0"),"data-placeholder":s||""},handleKeyDown:(e,t)=>!(0,w.P)(t)&&"Enter"===t.key&&!t.shiftKey&&!k.current&&!!m&&(t.preventDefault(),m(),!0)},onUpdate:e=>{let{editor:t}=e;R.current=!0,i(N(t))}});return(0,l.useEffect)(()=>{if(!z||R.current){R.current=!1;return}N(z)!==o&&z.commands.setContent(j(o))},[o,z]),(0,l.useEffect)(()=>{z&&z.setEditable(!d)},[d,z]),(0,l.useImperativeHandle)(t,()=>({focus:()=>null==z?void 0:z.commands.focus(),clear:()=>{null==z||z.commands.clearContent(),i("")}})),(0,r.jsxs)("div",{ref:b,className:(0,h.cn)("relative rounded-md border border-input bg-transparent shadow-xs transition-[color,box-shadow]","focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]",d&&"cursor-not-allowed opacity-50",u),children:[(0,r.jsx)(p.$Z,{editor:z}),(0,r.jsx)(A,{open:null!==B,agentName:null!=(n=null==B?void 0:B.item.name)?n:"",instances:null!=(c=null==B?void 0:B.onlineInstances)?c:[],onConfirm:e=>{!function(e,t,n){n.close(),e&&n.defer(()=>{try{n.focusEditor(),n.insert(e,t)}catch(e){n.onError(e)}})}(B,e,{close:()=>U(null),insert:(e,t)=>F(e.item,e.command,t),defer:e=>requestAnimationFrame(e),focusEditor:()=>null==z?void 0:z.commands.focus(),onError:e=>g.q.error("MentionEditor: cwd-pinned mention insert failed",e)})},onCancel:()=>U(null)}),(0,r.jsx)("style",{children:"\n .tiptap p.is-editor-empty:first-child::before {\n content: attr(data-placeholder);\n color: #9A9A9A;\n float: left;\n height: 0;\n pointer-events: none;\n }\n .tiptap .mention {\n color: #2563eb;\n font-weight: 500;\n }\n "})]})});k.displayName="MentionEditor";var S=n(95434),M=n(52217);let R=(0,M.createServerReference)("70d59c3a50f38dff0368815ae7719a2db6f6dd8c24",M.callServer,void 0,M.findSourceMapURL,"createCommentAction");var T=n(97261);let D=/@\[([^\]]+)\]\((user|agent):([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:\?([^)]*))?\)/gi,H=/\u200B\u200BMENTION_(\d+)\u200B\u200B/g,B="chorus-mention";function U(e){let{children:t,renderMention:n}=e;if(!t||"string"!=typeof t)return null;if(!new RegExp(D.source,D.flags.replace("g","")).test(t))return(0,r.jsx)("div",{className:"overflow-hidden [&_pre]:overflow-x-auto",children:(0,r.jsx)(T.MarkdownContent,{children:t})});if(n)return(0,r.jsx)(F,{renderMention:n,children:t});let{processed:l,mentions:a}=function(e){let t=[],n=new RegExp(D.source,D.flags);return{processed:e.replace(n,(e,n,r,l,a)=>{let c=t.length,{pinnedHost:o,pinnedCwd:i}=v(a),s={displayName:n,type:r,uuid:l};return(null!==o||null!==i)&&(s.pinnedHost=o,s.pinnedCwd=i),t.push(s),"".concat("​​MENTION_").concat(c).concat("​​")}),mentions:t}}(t);return(0,r.jsx)(_,{mentions:a,children:(0,r.jsx)(T.MarkdownContent,{children:l})})}function F(e){let{children:t,renderMention:n}=e,{processed:a,mentions:c}=l.useMemo(()=>(function(e){let t=[],n=new RegExp(D.source,D.flags);return{processed:e.replace(n,(e,n,r,l,a)=>{let c=t.length,{pinnedHost:o,pinnedCwd:i}=v(a),s={type:r.toLowerCase(),uuid:l.toLowerCase(),displayName:n};(null!==o||null!==i)&&(s.pinnedHost=o,s.pinnedCwd=i),t.push(s);let u="@".concat(n).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return"<".concat(B," ").concat("idx",'="').concat(c,'">').concat(u,"</").concat(B,">")}),mentions:t}})(t),[t]),o=l.useMemo(()=>({[B]:e=>{let{idx:t}=e,l=void 0===t?NaN:parseInt(t,10),a=Number.isInteger(l)?c[l]:void 0;return a?(0,r.jsx)(r.Fragment,{children:n({...a,index:l})}):null}}),[c,n]);return(0,r.jsx)("div",{className:"overflow-hidden [&_pre]:overflow-x-auto",children:(0,r.jsx)(T.MarkdownContent,{components:o,allowedTags:{[B]:["idx"]},literalTagContent:[B],children:a})})}function _(e){let{children:t,mentions:n}=e,a=l.useRef(null);return l.useEffect(()=>{let e;if(!a.current||0===n.length)return;let t=document.createTreeWalker(a.current,NodeFilter.SHOW_TEXT,null),r=[];for(;e=t.nextNode();)H.test(e.textContent||"")&&r.push(e),H.lastIndex=0;for(let e of r){var l;let t,r=e.textContent||"",a=document.createDocumentFragment(),c=0,o=RegExp(H.source,"g");for(;null!==(t=o.exec(r));){t.index>c&&a.appendChild(document.createTextNode(r.slice(c,t.index)));let e=n[parseInt(t[1],10)];if(e){let t=document.createElement("span");t.className="text-blue-600 font-medium",t.title="".concat(e.type,": ").concat(e.uuid),t.textContent="@".concat(e.displayName),a.appendChild(t)}else a.appendChild(document.createTextNode(t[0]));c=t.index+t[0].length}c<r.length&&a.appendChild(document.createTextNode(r.slice(c))),null==(l=e.parentNode)||l.replaceChild(a,e)}},[n]),(0,r.jsx)("div",{ref:a,className:"overflow-hidden [&_pre]:overflow-x-auto",children:t})}var L=n(84169),z=n(63964),I=n(96213),O=n(30423),P=n(38106),$=n(67587);function q(e){return"agent"===e.type?(0,r.jsx)(L.Gm,{mention:e,displayName:e.displayName},e.index):(0,r.jsxs)("span",{className:"text-blue-600 font-medium",title:"".concat(e.type,": ").concat(e.uuid),children:["@",e.displayName]},e.index)}function K(e,t){let n=new Map;for(let t of e)n.set(t.uuid,t);for(let e of t)n.set(e.uuid,e);return[...n.values()].sort((e,t)=>e.createdAt!==t.createdAt?e.createdAt<t.createdAt?1:-1:e.uuid<t.uuid?1:-1)}async function G(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,r=new Set(e.map(e=>e.uuid)),l=[],a=null,c=!1,o=0,i=!1,s=null,u=!1;for(let e=0;e<n;e++){let e=await t(a);if(!e)break;if(u=!0,o=e.total,l.push(...e.comments),i=e.hasMore,s=e.nextCursor,e.comments.some(e=>r.has(e.uuid))||!e.hasMore){c=!0;break}a=e.nextCursor}return u?c?{comments:K(e,l),total:o,contiguous:!0,resetOldestCursor:null,resetHasMore:!1}:{comments:K([],l),total:o,contiguous:!1,resetOldestCursor:s,resetHasMore:i}:null}function W(e){let{targetType:t,targetUuid:n,currentUserUuid:u,onCountChange:p,compact:f=!1}=e,x=(0,a.c)(),[h,g]=(0,l.useState)(""),[w,v]=(0,l.useState)([]),[y,b]=(0,l.useState)(!0),[C,N]=(0,l.useState)(null),[j,E]=(0,l.useState)(!1),[A,M]=(0,l.useState)(!1),[T,D]=(0,l.useState)(null),[H,B]=(0,l.useState)(!1),[U,F]=(0,l.useState)(0),_=(0,l.useRef)(null),L=(0,l.useRef)(null),O=(0,l.useRef)(w);O.current=w;let P=(0,l.useRef)(T);P.current=T;let q=(0,l.useRef)(H);q.current=H;let W=(0,l.useRef)(j);W.current=j;let Q=(0,l.useRef)(y);Q.current=y;let V=f?"h-6 w-6":"h-[30px] w-[30px]",X=f?"gap-2":"gap-2.5",Y=f?"h-3 w-3":"h-[15px] w-[15px]";(0,l.useEffect)(()=>{null==p||p(U)},[U,p]);let Z=(0,l.useCallback)(async()=>{b(!0),N(null);let e=await (0,S.d)(t,n,{limit:10});e.success?(v(e.comments),D(e.nextCursor),B(e.hasMore),F(e.total)):N(e.error),b(!1)},[t,n]);(0,l.useEffect)(()=>{Z()},[Z]);let ee=(0,l.useCallback)(async()=>{if(W.current||Q.current||!q.current||!P.current)return;E(!0);let e=await (0,S.d)(t,n,{cursor:P.current,limit:10});e.success&&(v(t=>K(t,e.comments)),D(e.nextCursor),B(e.hasMore),F(e.total)),E(!1)},[t,n]);(0,l.useEffect)(()=>{let e=L.current;if(!e)return;let t=new IntersectionObserver(e=>{var t;(null==(t=e[0])?void 0:t.isIntersecting)&&ee()},{rootMargin:"120px"});return t.observe(e),()=>t.disconnect()},[ee,y]),(0,z.w0)(t,n,e=>{u&&e.actorUuid===u||G(O.current,async e=>{let r=await (0,S.d)(t,n,{cursor:e,limit:10});return r.success?r:null}).then(e=>{e&&(v(e.comments),F(e.total),e.contiguous||(D(e.resetOldestCursor),B(e.resetHasMore)))})});let et=async()=>{if(!h.trim()||A)return;M(!0);let e=await R(t,n,h);if(M(!1),e.success){var r;let t=!O.current.some(t=>t.uuid===e.comment.uuid);v(t=>K(t,[e.comment])),t&&F(e=>e+1),g(""),null==(r=_.current)||r.clear()}else $.oR.error(e.error)};return(0,r.jsx)(I.D,{entityType:t,entityUuid:n,subEntityType:"comment",children:(0,r.jsxs)("div",{className:"flex flex-col gap-0",children:[(0,r.jsxs)("div",{className:"flex items-center ".concat(X," pb-3 border-b border-[#F0EDE8]"),children:[(0,r.jsx)(m.eu,{className:"".concat(f?"h-6 w-6":"h-7 w-7"," shrink-0"),children:(0,r.jsx)(m.q5,{className:"bg-[#E5E0D8] text-[#6B6B6B]",children:(0,r.jsx)(c.A,{className:"".concat(f?"h-3 w-3":"h-3.5 w-3.5")})})}),(0,r.jsx)("div",{className:"flex-1 min-w-0",children:(0,r.jsx)(k,{ref:_,value:h,onChange:g,onSubmit:et,placeholder:x("comments.addComment"),className:"border border-[#E5E0D8] bg-white text-sm rounded-lg",disabled:A})}),(0,r.jsx)(d.$,{size:"sm",className:"shrink-0 gap-1 bg-[#E07A5F] text-white hover:bg-[#D06A4F]",disabled:!h.trim()||A,onClick:et,children:A?(0,r.jsx)(o.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(i.A,{className:"h-3.5 w-3.5"})})]}),y?(0,r.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,r.jsx)(o.A,{className:"h-4 w-4 animate-spin text-[#9A9A9A]"})}):C?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 py-8 text-sm text-[#9A9A9A]",children:[(0,r.jsx)(s.A,{className:"h-4 w-4"}),(0,r.jsx)("p",{children:x("comments.loadError")}),(0,r.jsx)(d.$,{variant:"outline",size:"sm",onClick:Z,children:x("comments.retry")})]}):0===w.length?(0,r.jsx)("p",{className:"py-8 text-center text-sm text-[#9A9A9A] italic",children:x("comments.noComments")}):(0,r.jsxs)("div",{children:[w.map(e=>(0,r.jsx)(J,{comment:e,compact:f,avatarSize:V,gap:X,iconSize:Y,t:x},e.uuid)),(0,r.jsx)("div",{ref:L,"aria-hidden":"true"}),j?(0,r.jsxs)("div",{className:"flex items-center justify-center py-4",children:[(0,r.jsx)(o.A,{className:"h-4 w-4 animate-spin text-[#9A9A9A]"}),(0,r.jsx)("span",{className:"ml-2 text-xs text-[#9A9A9A]",children:x("comments.loadingMore")})]}):!H&&(0,r.jsx)("p",{className:"py-4 text-center text-xs text-[#BFBFBF] italic",children:x("comments.noMoreComments")})]})]})})}function J(e){let{comment:t,compact:n,avatarSize:a,gap:c,iconSize:o,t:i}=e,[s,p]=(0,l.useState)(!1),f="agent"===t.author.type,x=f?(0,O.j)(t.author.name):null,h=t.content.length>200,g=x?"".concat(x,"18"):void 0;return(0,r.jsxs)("div",{className:"flex ".concat(c," py-3 border-b border-[#F0EDE8] last:border-b-0"),children:[(0,r.jsx)(m.eu,{className:"".concat(a," shrink-0"),children:(0,r.jsx)(m.q5,{style:f?{backgroundColor:g,color:null!=x?x:void 0}:void 0,className:f?"":"bg-[#E5E0D8] text-[#6B6B6B] text-[11px] font-medium",children:f?(0,r.jsx)(u.A,{className:o}):t.author.name.charAt(0).toUpperCase()})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[(0,r.jsx)("span",{className:"".concat(n?"text-xs":"text-[13px]"," font-semibold text-[#1A1A1A]"),children:t.author.name}),(0,r.jsx)("span",{style:f?{backgroundColor:g,color:null!=x?x:void 0}:void 0,className:"inline-flex items-center rounded px-1.5 py-px text-[9px] font-medium ".concat(f?"":"bg-[#F0EDE8] text-[#6B6B6B]"),children:i(f?"comments.roleAgent":"comments.roleHuman")}),(0,r.jsx)("span",{className:"text-[11px] text-[#BFBFBF]",children:function(e,t){let n=new Date(e),r=new Date().getTime()-n.getTime(),l=Math.floor(r/6e4),a=Math.floor(r/36e5),c=Math.floor(r/864e5);return l<1?t("time.justNow"):l<60?t("time.minutesAgo",{minutes:l}):a<24?t("time.hoursAgo",{hours:a}):c<7?t("time.daysAgo",{days:c}):(0,P.r)(n)}(t.createdAt,i)})]}),f&&t.author.owner&&(0,r.jsx)("div",{className:"flex items-center gap-1 mt-0.5",children:(0,r.jsx)("span",{className:"text-[11px] text-[#A3A3A3] italic",children:i("comments.onBehalfOf",{name:t.author.owner.name})})}),(0,r.jsx)("div",{className:"mt-1 ".concat(n?"text-xs":"text-[13px]"," leading-relaxed text-[#3D3D3D] max-w-none [&_h1]:text-sm [&_h1]:font-semibold [&_h1]:mt-2 [&_h1]:mb-1 [&_h2]:text-[13px] [&_h2]:font-semibold [&_h2]:mt-2 [&_h2]:mb-1 [&_h3]:text-[13px] [&_h3]:font-semibold [&_h3]:mt-1.5 [&_h3]:mb-0.5 [&_p]:my-1 [&_ul]:my-1 [&_ol]:my-1 [&_li]:my-0.5"),children:h&&!s?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(U,{renderMention:q,children:t.content.slice(0,200)+"..."}),(0,r.jsx)(d.$,{variant:"link",size:"sm",onClick:()=>p(!0),className:"h-auto p-0 text-[#E07A5F] text-xs font-medium mt-1",children:i("comments.showMore")})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(U,{renderMention:q,children:t.content}),h&&(0,r.jsx)(d.$,{variant:"link",size:"sm",onClick:()=>p(!1),className:"h-auto p-0 text-[#E07A5F] text-xs font-medium mt-1",children:i("comments.showLess")})]})})]})]})}},63964:(e,t,n)=>{n.d(t,{S2:()=>s,eV:()=>i,l9:()=>o,tS:()=>c,w0:()=>u});var r=n(90508),l=n(1856);n(23675);let a=(0,l.createContext)(null);function c(e){let{projectUuid:t,children:n}=e,c=(0,l.useRef)(new Set),o=(0,l.useRef)(new Set),i=(0,l.useRef)(new Set),s=(0,l.useRef)(new Set),u=(0,l.useCallback)(()=>{c.current.forEach(e=>e())},[]),d=(0,l.useCallback)(e=>{o.current.forEach(t=>t(e))},[]);(0,l.useEffect)(()=>{let e,n=null,r=0,l={};function a(){c(),(n=new EventSource(t?"/api/events?projectUuid=".concat(t):"/api/events")).onmessage=t=>{let n=null;try{n=JSON.parse(t.data)}catch(e){return}if(!n)return;if("presence"===n.type)return void i.current.forEach(e=>e(n));if("execution"===n.type)return void s.current.forEach(e=>e(n));let a=n;clearTimeout(e);let c=Date.now(),o=c-r;o>=3e3?(r=c,u()):e=setTimeout(()=>{r=Date.now(),u()},Math.max(1e3,3e3-o));let m=a.entityType;clearTimeout(l[m]),l[m]=setTimeout(()=>{d(a)},300)},n.onerror=()=>{}}function c(){n&&(n.close(),n=null)}function o(){if("visible"===document.visibilityState&&(!n||n.readyState===EventSource.CLOSED))for(let e of(a(),u(),["task","idea","proposal","document","project","project_group"]))d({companyUuid:"",projectUuid:"",entityType:e,entityUuid:"",action:"updated"})}return a(),document.addEventListener("visibilitychange",o),()=>{for(let t in c(),clearTimeout(e),l)clearTimeout(l[t]);document.removeEventListener("visibilitychange",o)}},[t,u,d]);let m=(0,l.useCallback)(e=>(c.current.add(e),()=>{c.current.delete(e)}),[]),p=(0,l.useCallback)(e=>(o.current.add(e),()=>{o.current.delete(e)}),[]),f=(0,l.useCallback)(e=>(i.current.add(e),()=>{i.current.delete(e)}),[]),x=(0,l.useCallback)(e=>(s.current.add(e),()=>{s.current.delete(e)}),[]),h=(0,l.useMemo)(()=>({subscribe:m,subscribeEntity:p,subscribePresence:f,subscribeExecution:x}),[m,p,f,x]);return(0,r.jsx)(a.Provider,{value:h,children:n})}function o(e){let t=(0,l.useContext)(a),n=(0,l.useRef)(e);n.current=e,(0,l.useEffect)(()=>{if(!t)return;let e=()=>n.current();return e(),t.subscribe(e)},[t])}function i(e,t){let n=(0,l.useContext)(a),r=(0,l.useRef)(t);r.current=t;let c=(0,l.useRef)(e);c.current=e,(0,l.useEffect)(()=>{if(n)return n.subscribeEntity(e=>{let t=c.current;(Array.isArray(t)?t.includes(e.entityType):e.entityType===t)&&r.current(e)})},[n])}function s(e){let t=(0,l.useContext)(a),n=(0,l.useRef)(e);n.current=e,(0,l.useEffect)(()=>{if(t)return t.subscribePresence(e=>n.current(e))},[t])}function u(e,t,n){let r=(0,l.useContext)(a),c=(0,l.useRef)(n);c.current=n,(0,l.useEffect)(()=>{if(r)return r.subscribeEntity(n=>{n.entityType===e&&n.entityUuid===t&&c.current(n)})},[r,e,t])}},73693:(e,t,n)=>{n.d(t,{eu:()=>c,q5:()=>o});var r=n(90508);n(1856);var l=n(65514),a=n(24377);function c(e){let{className:t,size:n="default",...c}=e;return(0,r.jsx)(l.Root,{"data-slot":"avatar","data-size":n,className:(0,a.cn)("group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",t),...c})}function o(e){let{className:t,...n}=e;return(0,r.jsx)(l.Fallback,{"data-slot":"avatar-fallback",className:(0,a.cn)("bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs",t),...n})}},95434:(e,t,n)=>{n.d(t,{d:()=>l});var r=n(52217);let l=(0,r.createServerReference)("70f79630de8f0585d1649d0c0b1e05094ccfa65d38",r.callServer,void 0,r.findSourceMapURL,"getCommentsAction")},96213:(e,t,n)=>{n.d(t,{D:()=>o});var r=n(90508),l=n(47754),a=n(30423),c=n(5425);function o(e){let{entityType:t,entityUuid:n,subEntityType:c,subEntityUuid:o,children:s,badgeInside:u}=e,{getPresence:d}=(0,l.xQ)(),m=d(t,n,c,o),p=m.length>0,f=p&&m.some(e=>"mutate"===e.action),x=p?f?m.find(e=>"mutate"===e.action):m[m.length-1]:null,h=x?(0,a.j)(x.agentName):"transparent";return(0,r.jsxs)("div",{className:"relative",style:p?{outline:"2px ".concat(f?"solid":"dashed"," ").concat(h),outlineOffset:"-2px",borderRadius:"var(--radius)"}:void 0,children:[p&&(0,r.jsxs)("div",{className:"absolute flex gap-1 z-10 justify-end ".concat(u?"top-0.5 right-1.5 max-w-[70%]":"-top-2.5 right-2 max-w-[80%]"),children:[m.slice(0,3).map(e=>(0,r.jsx)(i,{entry:e},e.agentUuid)),m.length>3&&(0,r.jsxs)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded-full text-[10px] font-medium text-white bg-gray-500 whitespace-nowrap",children:["+",m.length-3]})]}),s]})}function i(e){let{entry:t}=e,n=(0,a.j)(t.agentName);return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[10px] font-medium text-white whitespace-nowrap animate-in fade-in duration-300 ease-out sm:text-[11px] sm:px-2",style:{backgroundColor:n},children:[(0,r.jsx)(c.A,{className:"h-2.5 w-2.5"}),t.agentName]})}}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[14655],{14655:(e,t,s)=>{s.d(t,{$5:()=>es,O:()=>T});class i extends Error{}i.prototype.name="InvalidTokenError";var r,n,a={debug:()=>void 0,info:()=>void 0,warn:()=>void 0,error:()=>void 0},o=(e=>(e[e.NONE=0]="NONE",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.DEBUG=4]="DEBUG",e))(o||{});(e=>{e.reset=function(){r=3,n=a},e.setLevel=function(e){if(!(0<=e&&e<=4))throw Error("Invalid log level");r=e},e.setLogger=function(e){n=e}})(o||(o={}));var c=class e{constructor(e){this._name=e}debug(...t){r>=4&&n.debug(e._format(this._name,this._method),...t)}info(...t){r>=3&&n.info(e._format(this._name,this._method),...t)}warn(...t){r>=2&&n.warn(e._format(this._name,this._method),...t)}error(...t){r>=1&&n.error(e._format(this._name,this._method),...t)}throw(e){throw this.error(e),e}create(e){let t=Object.create(this);return t._method=e,t.debug("begin"),t}static createStatic(t,s){let i=new e(`${t}.${s}`);return i.debug("begin"),i}static _format(e,t){let s=`[${e}]`;return t?`${s} ${t}:`:s}static debug(t,...s){r>=4&&n.debug(e._format(t),...s)}static info(t,...s){r>=3&&n.info(e._format(t),...s)}static warn(t,...s){r>=2&&n.warn(e._format(t),...s)}static error(t,...s){r>=1&&n.error(e._format(t),...s)}};o.reset();var l=class{static decode(e){try{return function(e,t){let s;if("string"!=typeof e)throw new i("Invalid token specified: must be a string");t||(t={});let r=+(!0!==t.header),n=e.split(".")[r];if("string"!=typeof n)throw new i(`Invalid token specified: missing part #${r+1}`);try{s=function(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw Error("base64 string is not of the correct length")}try{var s;return s=t,decodeURIComponent(atob(s).replace(/(.)/g,(e,t)=>{let s=t.charCodeAt(0).toString(16).toUpperCase();return s.length<2&&(s="0"+s),"%"+s}))}catch(e){return atob(t)}}(n)}catch(e){throw new i(`Invalid token specified: invalid base64 for part #${r+1} (${e.message})`)}try{return JSON.parse(s)}catch(e){throw new i(`Invalid token specified: invalid json for part #${r+1} (${e.message})`)}}(e)}catch(e){throw c.error("JwtUtils.decode",e),e}}static async generateSignedJwt(e,t,s){let i=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(e))),r=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(t))),n=`${i}.${r}`,a=await window.crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},s,new TextEncoder().encode(n)),o=g.encodeBase64Url(new Uint8Array(a));return`${n}.${o}`}static async generateSignedJwtWithHmac(e,t,s){let i=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(e))),r=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(t))),n=`${i}.${r}`,a=await window.crypto.subtle.sign("HMAC",s,new TextEncoder().encode(n)),o=g.encodeBase64Url(new Uint8Array(a));return`${n}.${o}`}},h=e=>btoa([...new Uint8Array(e)].map(e=>String.fromCharCode(e)).join("")),d=class e{static _randomWord(){let e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]}static generateUUIDv4(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,t=>(t^e._randomWord()&15>>t/4).toString(16)).replace(/-/g,"")}static generateCodeVerifier(){return e.generateUUIDv4()+e.generateUUIDv4()+e.generateUUIDv4()}static async generateCodeChallenge(e){if(!crypto.subtle)throw Error("Crypto.subtle is available only in secure contexts (HTTPS).");try{let t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return h(s).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}catch(e){throw c.error("CryptoUtils.generateCodeChallenge",e),e}}static generateBasicAuth(e,t){return h(new TextEncoder().encode([e,t].join(":")))}static async hash(e,t){let s=new TextEncoder().encode(t);return new Uint8Array(await crypto.subtle.digest(e,s))}static async customCalculateJwkThumbprint(t){let s;switch(t.kty){case"RSA":s={e:t.e,kty:t.kty,n:t.n};break;case"EC":s={crv:t.crv,kty:t.kty,x:t.x,y:t.y};break;case"OKP":s={crv:t.crv,kty:t.kty,x:t.x};break;case"oct":s={crv:t.k,kty:t.kty};break;default:throw Error("Unknown jwk type")}let i=await e.hash("SHA-256",JSON.stringify(s));return e.encodeBase64Url(i)}static async generateDPoPProof({url:t,accessToken:s,httpMethod:i,keyPair:r,nonce:n}){let a,o={jti:window.crypto.randomUUID(),htm:null!=i?i:"GET",htu:t,iat:Math.floor(Date.now()/1e3)};s&&(a=await e.hash("SHA-256",s),o.ath=e.encodeBase64Url(a)),n&&(o.nonce=n);try{let e=await crypto.subtle.exportKey("jwk",r.publicKey),t={alg:"ES256",typ:"dpop+jwt",jwk:{crv:e.crv,kty:e.kty,x:e.x,y:e.y}};return await l.generateSignedJwt(t,o,r.privateKey)}catch(e){if(e instanceof TypeError)throw Error(`Error exporting dpop public key: ${e.message}`);throw e}}static async generateDPoPJkt(t){try{let s=await crypto.subtle.exportKey("jwk",t.publicKey);return await e.customCalculateJwkThumbprint(s)}catch(e){if(e instanceof TypeError)throw Error(`Could not retrieve dpop keys from storage: ${e.message}`);throw e}}static async generateDPoPKeys(){return await window.crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign","verify"])}static async generateClientAssertionJwt(t,s,i,r="HS256"){let n=Math.floor(Date.now()/1e3),a={iss:t,sub:t,aud:i,jti:e.generateUUIDv4(),exp:n+300,iat:n},o={HS256:"SHA-256",HS384:"SHA-384",HS512:"SHA-512"}[r];if(!o)throw Error(`Unsupported algorithm: ${r}. Supported algorithms are: HS256, HS384, HS512`);let c=new TextEncoder,h=await crypto.subtle.importKey("raw",c.encode(s),{name:"HMAC",hash:o},!1,["sign"]);return await l.generateSignedJwtWithHmac({alg:r,typ:"JWT"},a,h)}};d.encodeBase64Url=e=>h(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_");var g=d,u=class{constructor(e){this._name=e,this._callbacks=[],this._logger=new c(`Event('${this._name}')`)}addHandler(e){return this._callbacks.push(e),()=>this.removeHandler(e)}removeHandler(e){let t=this._callbacks.lastIndexOf(e);t>=0&&this._callbacks.splice(t,1)}async raise(...e){for(let t of(this._logger.debug("raise:",...e),this._callbacks))await t(...e)}},_=class{static center({...e}){var t;return null==e.width&&(e.width=null!=(t=[800,720,600,480].find(e=>e<=window.outerWidth/1.618))?t:360),null!=e.left||(e.left=Math.max(0,Math.round(window.screenX+(window.outerWidth-e.width)/2))),null!=e.height&&(null!=e.top||(e.top=Math.max(0,Math.round(window.screenY+(window.outerHeight-e.height)/2)))),e}static serialize(e){return Object.entries(e).filter(([,e])=>null!=e).map(([e,t])=>`${e}=${"boolean"!=typeof t?t:t?"yes":"no"}`).join(",")}},p=class e extends u{constructor(){super(...arguments),this._logger=new c(`Timer('${this._name}')`),this._timerHandle=null,this._expiration=0,this._callback=()=>{let t=this._expiration-e.getEpochTime();this._logger.debug("timer completes in",t),this._expiration<=e.getEpochTime()&&(this.cancel(),super.raise())}}static getEpochTime(){return Math.floor(Date.now()/1e3)}init(t){let s=this._logger.create("init");t=Math.max(Math.floor(t),1);let i=e.getEpochTime()+t;if(this.expiration===i&&this._timerHandle)return void s.debug("skipping since already initialized for expiration at",this.expiration);this.cancel(),s.debug("using duration",t),this._expiration=i;let r=Math.min(t,5);this._timerHandle=setInterval(this._callback,1e3*r)}get expiration(){return this._expiration}cancel(){this._logger.create("cancel"),this._timerHandle&&(clearInterval(this._timerHandle),this._timerHandle=null)}},w=class{static readParams(e,t="query"){if(!e)throw TypeError("Invalid URL");return new URLSearchParams(new URL(e,"http://127.0.0.1")["fragment"===t?"hash":"search"].slice(1))}},f=class extends Error{constructor(e,t){var s,i,r;if(super(e.error_description||e.error||""),this.form=t,this.name="ErrorResponse",!e.error)throw c.error("ErrorResponse","No error passed"),Error("No error passed");this.error=e.error,this.error_description=null!=(s=e.error_description)?s:null,this.error_uri=null!=(i=e.error_uri)?i:null,this.state=e.userState,this.session_state=null!=(r=e.session_state)?r:null,this.url_state=e.url_state}},m=class extends Error{constructor(e){super(e),this.name="ErrorTimeout"}},S=class{constructor(e){this._logger=new c("AccessTokenEvents"),this._expiringTimer=new p("Access token expiring"),this._expiredTimer=new p("Access token expired"),this._expiringNotificationTimeInSeconds=e.expiringNotificationTimeInSeconds}async load(e){let t=this._logger.create("load");if(e.access_token&&void 0!==e.expires_in){let s=e.expires_in;if(t.debug("access token present, remaining duration:",s),s>0){let e=s-this._expiringNotificationTimeInSeconds;e<=0&&(e=1),t.debug("registering expiring timer, raising in",e,"seconds"),this._expiringTimer.init(e)}else t.debug("canceling existing expiring timer because we're past expiration."),this._expiringTimer.cancel();let i=s+1;t.debug("registering expired timer, raising in",i,"seconds"),this._expiredTimer.init(i)}else this._expiringTimer.cancel(),this._expiredTimer.cancel()}async unload(){this._logger.debug("unload: canceling existing access token timers"),this._expiringTimer.cancel(),this._expiredTimer.cancel()}addAccessTokenExpiring(e){return this._expiringTimer.addHandler(e)}removeAccessTokenExpiring(e){this._expiringTimer.removeHandler(e)}addAccessTokenExpired(e){return this._expiredTimer.addHandler(e)}removeAccessTokenExpired(e){this._expiredTimer.removeHandler(e)}},y=class{constructor(e,t,s,i,r){this._callback=e,this._client_id=t,this._intervalInSeconds=i,this._stopOnError=r,this._logger=new c("CheckSessionIFrame"),this._timer=null,this._session_state=null,this._message=e=>{e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&("error"===e.data?(this._logger.error("error message from check session op iframe"),this._stopOnError&&this.stop()):"changed"===e.data?(this._logger.debug("changed message from check session op iframe"),this.stop(),this._callback()):this._logger.debug(e.data+" message from check session op iframe"))};let n=new URL(s);this._frame_origin=n.origin,this._frame=window.document.createElement("iframe"),this._frame.style.visibility="hidden",this._frame.style.position="fixed",this._frame.style.left="-1000px",this._frame.style.top="0",this._frame.width="0",this._frame.height="0",this._frame.src=n.href}load(){return new Promise(e=>{this._frame.onload=()=>{e()},window.document.body.appendChild(this._frame),window.addEventListener("message",this._message,!1)})}start(e){if(this._session_state===e)return;this._logger.create("start"),this.stop(),this._session_state=e;let t=()=>{this._frame.contentWindow&&this._session_state&&this._frame.contentWindow.postMessage(this._client_id+" "+this._session_state,this._frame_origin)};t(),this._timer=setInterval(t,1e3*this._intervalInSeconds)}stop(){this._logger.create("stop"),this._session_state=null,this._timer&&(clearInterval(this._timer),this._timer=null)}},v=class{constructor(){this._logger=new c("InMemoryWebStorage"),this._data={}}clear(){this._logger.create("clear"),this._data={}}getItem(e){return this._logger.create(`getItem('${e}')`),this._data[e]}setItem(e,t){this._logger.create(`setItem('${e}')`),this._data[e]=t}removeItem(e){this._logger.create(`removeItem('${e}')`),delete this._data[e]}get length(){return Object.getOwnPropertyNames(this._data).length}key(e){return Object.getOwnPropertyNames(this._data)[e]}},b=class extends Error{constructor(e,t){super(t),this.name="ErrorDPoPNonce",this.nonce=e}},k=class{constructor(e=[],t=null,s={}){this._jwtHandler=t,this._extraHeaders=s,this._logger=new c("JsonService"),this._contentTypes=[],this._contentTypes.push(...e,"application/json"),t&&this._contentTypes.push("application/jwt")}async fetchWithTimeout(e,t={}){let{timeoutInSeconds:s,...i}=t;if(!s)return await fetch(e,i);let r=new AbortController,n=setTimeout(()=>r.abort(),1e3*s);try{return await fetch(e,{...t,signal:r.signal})}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)throw new m("Network timed out");throw e}finally{clearTimeout(n)}}async getJson(e,{token:t,credentials:s,timeoutInSeconds:i}={}){let r,n,a=this._logger.create("getJson"),o={Accept:this._contentTypes.join(", ")};t&&(a.debug("token passed, setting Authorization header"),o.Authorization="Bearer "+t),this._appendExtraHeaders(o);try{a.debug("url:",e),r=await this.fetchWithTimeout(e,{method:"GET",headers:o,timeoutInSeconds:i,credentials:s})}catch(e){throw a.error("Network Error"),e}a.debug("HTTP response received, status",r.status);let c=r.headers.get("Content-Type");if(c&&!this._contentTypes.find(e=>c.startsWith(e))&&a.throw(Error(`Invalid response Content-Type: ${null!=c?c:"undefined"}, from URL: ${e}`)),r.ok&&this._jwtHandler&&(null==c?void 0:c.startsWith("application/jwt")))return await this._jwtHandler(await r.text());try{n=await r.json()}catch(e){if(a.error("Error parsing JSON response",e),r.ok)throw e;throw Error(`${r.statusText} (${r.status})`)}if(!r.ok){if(a.error("Error from server:",n),n.error)throw new f(n);throw Error(`${r.statusText} (${r.status}): ${JSON.stringify(n)}`)}return n}async postForm(e,{body:t,basicAuth:s,timeoutInSeconds:i,initCredentials:r,extraHeaders:n}){let a,o=this._logger.create("postForm"),c={Accept:this._contentTypes.join(", "),"Content-Type":"application/x-www-form-urlencoded",...n};void 0!==s&&(c.Authorization="Basic "+s),this._appendExtraHeaders(c);try{o.debug("url:",e),a=await this.fetchWithTimeout(e,{method:"POST",headers:c,body:t,timeoutInSeconds:i,credentials:r})}catch(e){throw o.error("Network error"),e}o.debug("HTTP response received, status",a.status);let l=a.headers.get("Content-Type");if(l&&!this._contentTypes.find(e=>l.startsWith(e)))throw Error(`Invalid response Content-Type: ${null!=l?l:"undefined"}, from URL: ${e}`);let h=await a.text(),d={};if(h)try{d=JSON.parse(h)}catch(e){if(o.error("Error parsing JSON response",e),a.ok)throw e;throw Error(`${a.statusText} (${a.status})`)}if(!a.ok){if(o.error("Error from server:",d),a.headers.has("dpop-nonce"))throw new b(a.headers.get("dpop-nonce"),`${JSON.stringify(d)}`);if(d.error)throw new f(d,t);throw Error(`${a.statusText} (${a.status}): ${JSON.stringify(d)}`)}return d}_appendExtraHeaders(e){let t=this._logger.create("appendExtraHeaders"),s=Object.keys(this._extraHeaders),i=["accept","content-type"],r=["authorization"];0!==s.length&&s.forEach(s=>{if(i.includes(s.toLocaleLowerCase()))return void t.warn("Protected header could not be set",s,i);if(r.includes(s.toLocaleLowerCase())&&Object.keys(e).includes(s))return void t.warn("Header could not be overridden",s,r);let n="function"==typeof this._extraHeaders[s]?this._extraHeaders[s]():this._extraHeaders[s];n&&""!==n&&(e[s]=n)})}},E=class{constructor(e){this._settings=e,this._logger=new c("MetadataService"),this._signingKeys=null,this._metadata=null,this._metadataUrl=this._settings.metadataUrl,this._jsonService=new k(["application/jwk-set+json"],null,this._settings.extraHeaders),this._settings.signingKeys&&(this._logger.debug("using signingKeys from settings"),this._signingKeys=this._settings.signingKeys),this._settings.metadata&&(this._logger.debug("using metadata from settings"),this._metadata=this._settings.metadata),this._settings.fetchRequestCredentials&&(this._logger.debug("using fetchRequestCredentials from settings"),this._fetchRequestCredentials=this._settings.fetchRequestCredentials)}resetSigningKeys(){this._signingKeys=null}async getMetadata(){let e=this._logger.create("getMetadata");if(this._metadata)return e.debug("using cached values"),this._metadata;if(!this._metadataUrl)throw e.throw(Error("No authority or metadataUrl configured on settings")),null;e.debug("getting metadata from",this._metadataUrl);let t=await this._jsonService.getJson(this._metadataUrl,{credentials:this._fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return e.debug("merging remote JSON with seed metadata"),this._metadata=Object.assign({},t,this._settings.metadataSeed),this._metadata}getIssuer(){return this._getMetadataProperty("issuer")}getAuthorizationEndpoint(){return this._getMetadataProperty("authorization_endpoint")}getUserInfoEndpoint(){return this._getMetadataProperty("userinfo_endpoint")}getTokenEndpoint(e=!0){return this._getMetadataProperty("token_endpoint",e)}getCheckSessionIframe(){return this._getMetadataProperty("check_session_iframe",!0)}getEndSessionEndpoint(){return this._getMetadataProperty("end_session_endpoint",!0)}getRevocationEndpoint(e=!0){return this._getMetadataProperty("revocation_endpoint",e)}getKeysEndpoint(e=!0){return this._getMetadataProperty("jwks_uri",e)}async _getMetadataProperty(e,t=!1){let s=this._logger.create(`_getMetadataProperty('${e}')`),i=await this.getMetadata();if(s.debug("resolved"),void 0===i[e]){if(!0===t)return void s.warn("Metadata does not contain optional property");s.throw(Error("Metadata does not contain property "+e))}return i[e]}async getSigningKeys(){let e=this._logger.create("getSigningKeys");if(this._signingKeys)return e.debug("returning signingKeys from cache"),this._signingKeys;let t=await this.getKeysEndpoint(!1);e.debug("got jwks_uri",t);let s=await this._jsonService.getJson(t,{timeoutInSeconds:this._settings.requestTimeoutInSeconds});if(e.debug("got key set",s),!Array.isArray(s.keys))throw e.throw(Error("Missing keys on keyset")),null;return this._signingKeys=s.keys,this._signingKeys}},T=class{constructor({prefix:e="oidc.",store:t=localStorage}={}){this._logger=new c("WebStorageStateStore"),this._store=t,this._prefix=e}async set(e,t){this._logger.create(`set('${e}')`),e=this._prefix+e,await this._store.setItem(e,t)}async get(e){return this._logger.create(`get('${e}')`),e=this._prefix+e,await this._store.getItem(e)}async remove(e){this._logger.create(`remove('${e}')`),e=this._prefix+e;let t=await this._store.getItem(e);return await this._store.removeItem(e),t}async getAllKeys(){this._logger.create("getAllKeys");let e=await this._store.length,t=[];for(let s=0;s<e;s++){let e=await this._store.key(s);e&&0===e.indexOf(this._prefix)&&t.push(e.substr(this._prefix.length))}return t}},x=class{constructor({authority:e,metadataUrl:t,metadata:s,signingKeys:i,metadataSeed:r,client_id:n,client_secret:a,response_type:o="code",scope:c="openid",redirect_uri:l,post_logout_redirect_uri:h,client_authentication:d="client_secret_post",token_endpoint_auth_signing_alg:g="HS256",prompt:u,display:_,max_age:p,ui_locales:w,acr_values:f,resource:m,response_mode:S,filterProtocolClaims:y=!0,loadUserInfo:b=!1,requestTimeoutInSeconds:k,staleStateAgeInSeconds:E=900,mergeClaimsStrategy:x={array:"replace"},disablePKCE:P=!1,stateStore:C,revokeTokenAdditionalContentTypes:I,fetchRequestCredentials:R,refreshTokenAllowedScope:U,extraQueryParams:A={},extraTokenParams:O={},extraHeaders:N={},dpop:j,omitScopeWhenRequesting:H=!1}){var q;if(this.authority=e,t?this.metadataUrl=t:(this.metadataUrl=e,e&&(this.metadataUrl.endsWith("/")||(this.metadataUrl+="/"),this.metadataUrl+=".well-known/openid-configuration")),this.metadata=s,this.metadataSeed=r,this.signingKeys=i,this.client_id=n,this.client_secret=a,this.response_type=o,this.scope=c,this.redirect_uri=l,this.post_logout_redirect_uri=h,this.client_authentication=d,this.token_endpoint_auth_signing_alg=g,this.prompt=u,this.display=_,this.max_age=p,this.ui_locales=w,this.acr_values=f,this.resource=m,this.response_mode=S,this.filterProtocolClaims=null==y||y,this.loadUserInfo=!!b,this.staleStateAgeInSeconds=E,this.mergeClaimsStrategy=x,this.omitScopeWhenRequesting=H,this.disablePKCE=!!P,this.revokeTokenAdditionalContentTypes=I,this.fetchRequestCredentials=R||"same-origin",this.requestTimeoutInSeconds=k,C)this.stateStore=C;else{let e="undefined"!=typeof window?window.localStorage:new v;this.stateStore=new T({store:e})}if(this.refreshTokenAllowedScope=U,this.extraQueryParams=A,this.extraTokenParams=O,this.extraHeaders=N,this.dpop=j,this.dpop&&!(null==(q=this.dpop)?void 0:q.store))throw Error("A DPoPStore is required when dpop is enabled")}},P=class{constructor(e,t){this._settings=e,this._metadataService=t,this._logger=new c("UserInfoService"),this._getClaimsFromJwt=async e=>{let t=this._logger.create("_getClaimsFromJwt");try{let s=l.decode(e);return t.debug("JWT decoding successful"),s}catch(e){throw t.error("Error parsing JWT response"),e}},this._jsonService=new k(void 0,this._getClaimsFromJwt,this._settings.extraHeaders)}async getClaims(e){let t=this._logger.create("getClaims");e||this._logger.throw(Error("No token passed"));let s=await this._metadataService.getUserInfoEndpoint();t.debug("got userinfo url",s);let i=await this._jsonService.getJson(s,{token:e,credentials:this._settings.fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return t.debug("got claims",i),i}},C=class{constructor(e,t){this._settings=e,this._metadataService=t,this._logger=new c("TokenClient"),this._jsonService=new k(this._settings.revokeTokenAdditionalContentTypes,null,this._settings.extraHeaders)}async exchangeCode({grant_type:e="authorization_code",redirect_uri:t=this._settings.redirect_uri,client_id:s=this._settings.client_id,client_secret:i=this._settings.client_secret,extraHeaders:r,...n}){let a,o=this._logger.create("exchangeCode");s||o.throw(Error("A client_id is required")),t||o.throw(Error("A redirect_uri is required")),n.code||o.throw(Error("A code is required"));let c=new URLSearchParams({grant_type:e,redirect_uri:t});for(let[e,t]of Object.entries(n))null!=t&&c.set(e,t);if(("client_secret_basic"===this._settings.client_authentication||"client_secret_jwt"===this._settings.client_authentication)&&null==i)throw o.throw(Error("A client_secret is required")),null;let l=await this._metadataService.getTokenEndpoint(!1);switch(this._settings.client_authentication){case"client_secret_basic":a=g.generateBasicAuth(s,i);break;case"client_secret_post":c.append("client_id",s),i&&c.append("client_secret",i);break;case"client_secret_jwt":{let e=await g.generateClientAssertionJwt(s,i,l,this._settings.token_endpoint_auth_signing_alg);c.append("client_id",s),c.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),c.append("client_assertion",e)}}o.debug("got token endpoint");let h=await this._jsonService.postForm(l,{body:c,basicAuth:a,timeoutInSeconds:this._settings.requestTimeoutInSeconds,initCredentials:this._settings.fetchRequestCredentials,extraHeaders:r});return o.debug("got response"),h}async exchangeCredentials({grant_type:e="password",client_id:t=this._settings.client_id,client_secret:s=this._settings.client_secret,scope:i=this._settings.scope,...r}){let n,a=this._logger.create("exchangeCredentials");t||a.throw(Error("A client_id is required"));let o=new URLSearchParams({grant_type:e});for(let[e,t]of(this._settings.omitScopeWhenRequesting||o.set("scope",i),Object.entries(r)))null!=t&&o.set(e,t);if(("client_secret_basic"===this._settings.client_authentication||"client_secret_jwt"===this._settings.client_authentication)&&null==s)throw a.throw(Error("A client_secret is required")),null;let c=await this._metadataService.getTokenEndpoint(!1);switch(this._settings.client_authentication){case"client_secret_basic":n=g.generateBasicAuth(t,s);break;case"client_secret_post":o.append("client_id",t),s&&o.append("client_secret",s);break;case"client_secret_jwt":{let e=await g.generateClientAssertionJwt(t,s,c,this._settings.token_endpoint_auth_signing_alg);o.append("client_id",t),o.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),o.append("client_assertion",e)}}a.debug("got token endpoint");let l=await this._jsonService.postForm(c,{body:o,basicAuth:n,timeoutInSeconds:this._settings.requestTimeoutInSeconds,initCredentials:this._settings.fetchRequestCredentials});return a.debug("got response"),l}async exchangeRefreshToken({grant_type:e="refresh_token",client_id:t=this._settings.client_id,client_secret:s=this._settings.client_secret,timeoutInSeconds:i,extraHeaders:r,...n}){let a,o=this._logger.create("exchangeRefreshToken");t||o.throw(Error("A client_id is required")),n.refresh_token||o.throw(Error("A refresh_token is required"));let c=new URLSearchParams({grant_type:e});for(let[e,t]of Object.entries(n))Array.isArray(t)?t.forEach(t=>c.append(e,t)):null!=t&&c.set(e,t);if(("client_secret_basic"===this._settings.client_authentication||"client_secret_jwt"===this._settings.client_authentication)&&null==s)throw o.throw(Error("A client_secret is required")),null;let l=await this._metadataService.getTokenEndpoint(!1);switch(this._settings.client_authentication){case"client_secret_basic":a=g.generateBasicAuth(t,s);break;case"client_secret_post":c.append("client_id",t),s&&c.append("client_secret",s);break;case"client_secret_jwt":{let e=await g.generateClientAssertionJwt(t,s,l,this._settings.token_endpoint_auth_signing_alg);c.append("client_id",t),c.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),c.append("client_assertion",e)}}o.debug("got token endpoint");let h=await this._jsonService.postForm(l,{body:c,basicAuth:a,timeoutInSeconds:i,initCredentials:this._settings.fetchRequestCredentials,extraHeaders:r});return o.debug("got response"),h}async revoke(e){var t;let s=this._logger.create("revoke");e.token||s.throw(Error("A token is required"));let i=await this._metadataService.getRevocationEndpoint(!1);s.debug(`got revocation endpoint, revoking ${null!=(t=e.token_type_hint)?t:"default token type"}`);let r=new URLSearchParams;for(let[t,s]of Object.entries(e))null!=s&&r.set(t,s);r.set("client_id",this._settings.client_id),this._settings.client_secret&&r.set("client_secret",this._settings.client_secret),await this._jsonService.postForm(i,{body:r,timeoutInSeconds:this._settings.requestTimeoutInSeconds}),s.debug("got response")}},I=class{constructor(e,t,s){this._settings=e,this._metadataService=t,this._claimsService=s,this._logger=new c("ResponseValidator"),this._userInfoService=new P(this._settings,this._metadataService),this._tokenClient=new C(this._settings,this._metadataService)}async validateSigninResponse(e,t,s){let i=this._logger.create("validateSigninResponse");this._processSigninState(e,t),i.debug("state processed"),await this._processCode(e,t,s),i.debug("code processed"),e.isOpenId&&this._validateIdTokenAttributes(e),i.debug("tokens validated"),await this._processClaims(e,null==t?void 0:t.skipUserInfo,e.isOpenId),i.debug("claims processed")}async validateCredentialsResponse(e,t){let s=this._logger.create("validateCredentialsResponse"),i=e.isOpenId&&!!e.id_token;i&&this._validateIdTokenAttributes(e),s.debug("tokens validated"),await this._processClaims(e,t,i),s.debug("claims processed")}async validateRefreshResponse(e,t){let s=this._logger.create("validateRefreshResponse");e.userState=t.data,null!=e.session_state||(e.session_state=t.session_state),null!=e.scope||(e.scope=t.scope),e.isOpenId&&e.id_token&&(this._validateIdTokenAttributes(e,t.id_token),s.debug("ID Token validated")),e.id_token||(e.id_token=t.id_token,e.profile=t.profile);let i=e.isOpenId&&!!e.id_token;await this._processClaims(e,!1,i),s.debug("claims processed")}validateSignoutResponse(e,t){let s=this._logger.create("validateSignoutResponse");if(t.id!==e.state&&s.throw(Error("State does not match")),s.debug("state validated"),e.userState=t.data,e.error)throw s.warn("Response was error",e.error),new f(e)}_processSigninState(e,t){let s=this._logger.create("_processSigninState");if(t.id!==e.state&&s.throw(Error("State does not match")),t.client_id||s.throw(Error("No client_id on state")),t.authority||s.throw(Error("No authority on state")),this._settings.authority!==t.authority&&s.throw(Error("authority mismatch on settings vs. signin state")),this._settings.client_id&&this._settings.client_id!==t.client_id&&s.throw(Error("client_id mismatch on settings vs. signin state")),s.debug("state validated"),e.userState=t.data,e.url_state=t.url_state,null!=e.scope||(e.scope=t.scope),e.error)throw s.warn("Response was error",e.error),new f(e);t.code_verifier&&!e.code&&s.throw(Error("Expected code in response"))}async _processClaims(e,t=!1,s=!0){let i=this._logger.create("_processClaims");if(e.profile=this._claimsService.filterProtocolClaims(e.profile),t||!this._settings.loadUserInfo||!e.access_token)return void i.debug("not loading user info");i.debug("loading user info");let r=await this._userInfoService.getClaims(e.access_token);i.debug("user info claims received from user info endpoint"),s&&r.sub!==e.profile.sub&&i.throw(Error("subject from UserInfo response does not match subject in ID Token")),e.profile=this._claimsService.mergeClaims(e.profile,this._claimsService.filterProtocolClaims(r)),i.debug("user info claims received, updated profile:",e.profile)}async _processCode(e,t,s){let i=this._logger.create("_processCode");if(e.code){i.debug("Validating code");let r=await this._tokenClient.exchangeCode({client_id:t.client_id,client_secret:t.client_secret,code:e.code,redirect_uri:t.redirect_uri,code_verifier:t.code_verifier,extraHeaders:s,...t.extraTokenParams});Object.assign(e,r)}else i.debug("No code to process")}_validateIdTokenAttributes(e,t){var s;let i=this._logger.create("_validateIdTokenAttributes");i.debug("decoding ID Token JWT");let r=l.decode(null!=(s=e.id_token)?s:"");if(r.sub||i.throw(Error("ID Token is missing a subject claim")),t){let e=l.decode(t);r.sub!==e.sub&&i.throw(Error("sub in id_token does not match current sub")),r.auth_time&&r.auth_time!==e.auth_time&&i.throw(Error("auth_time in id_token does not match original auth_time")),r.azp&&r.azp!==e.azp&&i.throw(Error("azp in id_token does not match original azp")),!r.azp&&e.azp&&i.throw(Error("azp not in id_token, but present in original id_token"))}e.profile=r}},R=class e{constructor(e){this.id=e.id||g.generateUUIDv4(),this.data=e.data,e.created&&e.created>0?this.created=e.created:this.created=p.getEpochTime(),this.request_type=e.request_type,this.url_state=e.url_state}toStorageString(){return new c("State").create("toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,url_state:this.url_state})}static fromStorageString(t){return c.createStatic("State","fromStorageString"),Promise.resolve(new e(JSON.parse(t)))}static async clearStaleState(t,s){let i=c.createStatic("State","clearStaleState"),r=p.getEpochTime()-s,n=await t.getAllKeys();i.debug("got keys",n);for(let s=0;s<n.length;s++){let a=n[s],o=await t.get(a),c=!1;if(o)try{let t=await e.fromStorageString(o);i.debug("got item from key:",a,t.created),t.created<=r&&(c=!0)}catch(e){i.error("Error parsing state for key:",a,e),c=!0}else i.debug("no item in storage for key:",a),c=!0;c&&(i.debug("removed item for key:",a),t.remove(a))}}},U=class e extends R{constructor(e){super(e),this.code_verifier=e.code_verifier,this.code_challenge=e.code_challenge,this.authority=e.authority,this.client_id=e.client_id,this.redirect_uri=e.redirect_uri,this.scope=e.scope,this.client_secret=e.client_secret,this.extraTokenParams=e.extraTokenParams,this.response_mode=e.response_mode,this.skipUserInfo=e.skipUserInfo}static async create(t){let s=!0===t.code_verifier?g.generateCodeVerifier():t.code_verifier||void 0,i=s?await g.generateCodeChallenge(s):void 0;return new e({...t,code_verifier:s,code_challenge:i})}toStorageString(){return new c("SigninState").create("toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,url_state:this.url_state,code_verifier:this.code_verifier,authority:this.authority,client_id:this.client_id,redirect_uri:this.redirect_uri,scope:this.scope,client_secret:this.client_secret,extraTokenParams:this.extraTokenParams,response_mode:this.response_mode,skipUserInfo:this.skipUserInfo})}static fromStorageString(t){c.createStatic("SigninState","fromStorageString");let s=JSON.parse(t);return e.create(s)}},A=class e{constructor(e){this.url=e.url,this.state=e.state}static async create({url:t,authority:s,client_id:i,redirect_uri:r,response_type:n,scope:a,state_data:o,response_mode:c,request_type:l,client_secret:h,nonce:d,url_state:g,resource:u,skipUserInfo:_,extraQueryParams:p,extraTokenParams:w,disablePKCE:f,dpopJkt:m,omitScopeWhenRequesting:S,...y}){if(!t)throw this._logger.error("create: No url passed"),Error("url");if(!i)throw this._logger.error("create: No client_id passed"),Error("client_id");if(!r)throw this._logger.error("create: No redirect_uri passed"),Error("redirect_uri");if(!n)throw this._logger.error("create: No response_type passed"),Error("response_type");if(!a)throw this._logger.error("create: No scope passed"),Error("scope");if(!s)throw this._logger.error("create: No authority passed"),Error("authority");let v=await U.create({data:o,request_type:l,url_state:g,code_verifier:!f,client_id:i,authority:s,redirect_uri:r,response_mode:c,client_secret:h,scope:a,extraTokenParams:w,skipUserInfo:_}),b=new URL(t);b.searchParams.append("client_id",i),b.searchParams.append("redirect_uri",r),b.searchParams.append("response_type",n),S||b.searchParams.append("scope",a),d&&b.searchParams.append("nonce",d),m&&b.searchParams.append("dpop_jkt",m);let k=v.id;for(let[e,t]of(g&&(k=`${k};${g}`),b.searchParams.append("state",k),v.code_challenge&&(b.searchParams.append("code_challenge",v.code_challenge),b.searchParams.append("code_challenge_method","S256")),u&&(Array.isArray(u)?u:[u]).forEach(e=>b.searchParams.append("resource",e)),Object.entries({response_mode:c,...y,...p})))null!=t&&b.searchParams.append(e,t.toString());return new e({url:b.href,state:v})}};A._logger=new c("SigninRequest");var O=class{constructor(e){if(this.access_token="",this.token_type="",this.profile={},this.state=e.get("state"),this.session_state=e.get("session_state"),this.state){let e=decodeURIComponent(this.state).split(";");this.state=e[0],e.length>1&&(this.url_state=e.slice(1).join(";"))}this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri"),this.code=e.get("code")}get expires_in(){if(void 0!==this.expires_at)return this.expires_at-p.getEpochTime()}set expires_in(e){"string"==typeof e&&(e=Number(e)),void 0!==e&&e>=0&&(this.expires_at=Math.floor(e)+p.getEpochTime())}get isOpenId(){var e;return(null==(e=this.scope)?void 0:e.split(" ").includes("openid"))||!!this.id_token}},N=class{constructor({url:e,state_data:t,id_token_hint:s,post_logout_redirect_uri:i,extraQueryParams:r,request_type:n,client_id:a,url_state:o}){if(this._logger=new c("SignoutRequest"),!e)throw this._logger.error("ctor: No url passed"),Error("url");let l=new URL(e);if(s&&l.searchParams.append("id_token_hint",s),a&&l.searchParams.append("client_id",a),i&&(l.searchParams.append("post_logout_redirect_uri",i),t||o)){this.state=new R({data:t,request_type:n,url_state:o});let e=this.state.id;o&&(e=`${e};${o}`),l.searchParams.append("state",e)}for(let[e,t]of Object.entries({...r}))null!=t&&l.searchParams.append(e,t.toString());this.url=l.href}},j=class{constructor(e){if(this.state=e.get("state"),this.state){let e=decodeURIComponent(this.state).split(";");this.state=e[0],e.length>1&&(this.url_state=e.slice(1).join(";"))}this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri")}},H=["nbf","jti","auth_time","nonce","acr","amr","azp","at_hash"],q=["sub","iss","aud","exp","iat"],M=class{constructor(e){this._settings=e,this._logger=new c("ClaimsService")}filterProtocolClaims(e){let t={...e};if(this._settings.filterProtocolClaims){for(let e of Array.isArray(this._settings.filterProtocolClaims)?this._settings.filterProtocolClaims:H)q.includes(e)||delete t[e]}return t}mergeClaims(e,t){let s={...e};for(let[e,i]of Object.entries(t))if(s[e]!==i)if(Array.isArray(s[e])||Array.isArray(i))if("replace"==this._settings.mergeClaimsStrategy.array)s[e]=i;else{let t=Array.isArray(s[e])?s[e]:[s[e]];for(let e of Array.isArray(i)?i:[i])t.includes(e)||t.push(e);s[e]=t}else"object"==typeof s[e]&&"object"==typeof i?s[e]=this.mergeClaims(s[e],i):s[e]=i;return s}},$=class{constructor(e,t){this.keys=e,this.nonce=t}},J=class{constructor(e,t){this._logger=new c("OidcClient"),this.settings=e instanceof x?e:new x(e),this.metadataService=null!=t?t:new E(this.settings),this._claimsService=new M(this.settings),this._validator=new I(this.settings,this.metadataService,this._claimsService),this._tokenClient=new C(this.settings,this.metadataService)}async createSigninRequest({state:e,request:t,request_uri:s,request_type:i,id_token_hint:r,login_hint:n,skipUserInfo:a,nonce:o,url_state:c,response_type:l=this.settings.response_type,scope:h=this.settings.scope,redirect_uri:d=this.settings.redirect_uri,prompt:g=this.settings.prompt,display:u=this.settings.display,max_age:_=this.settings.max_age,ui_locales:p=this.settings.ui_locales,acr_values:w=this.settings.acr_values,resource:f=this.settings.resource,response_mode:m=this.settings.response_mode,extraQueryParams:S=this.settings.extraQueryParams,extraTokenParams:y=this.settings.extraTokenParams,dpopJkt:v,omitScopeWhenRequesting:b=this.settings.omitScopeWhenRequesting}){let k=this._logger.create("createSigninRequest");if("code"!==l)throw Error("Only the Authorization Code flow (with PKCE) is supported");let E=await this.metadataService.getAuthorizationEndpoint();k.debug("Received authorization endpoint",E);let T=await A.create({url:E,authority:this.settings.authority,client_id:this.settings.client_id,redirect_uri:d,response_type:l,scope:h,state_data:e,url_state:c,prompt:g,display:u,max_age:_,ui_locales:p,id_token_hint:r,login_hint:n,acr_values:w,dpopJkt:v,resource:f,request:t,request_uri:s,extraQueryParams:S,extraTokenParams:y,request_type:i,response_mode:m,client_secret:this.settings.client_secret,skipUserInfo:a,nonce:o,disablePKCE:this.settings.disablePKCE,omitScopeWhenRequesting:b});await this.clearStaleState();let x=T.state;return await this.settings.stateStore.set(x.id,x.toStorageString()),T}async readSigninResponseState(e,t=!1){let s=this._logger.create("readSigninResponseState"),i=new O(w.readParams(e,this.settings.response_mode));if(!i.state)throw s.throw(Error("No state in response")),null;let r=await this.settings.stateStore[t?"remove":"get"](i.state);if(!r)throw s.throw(Error("No matching state found in storage")),null;return{state:await U.fromStorageString(r),response:i}}async processSigninResponse(e,t,s=!0){let i=this._logger.create("processSigninResponse"),{state:r,response:n}=await this.readSigninResponseState(e,s);if(i.debug("received state from storage; validating response"),this.settings.dpop&&this.settings.dpop.store){let e=await this.getDpopProof(this.settings.dpop.store);t={...t,DPoP:e}}try{await this._validator.validateSigninResponse(n,r,t)}catch(e){if(e instanceof b&&this.settings.dpop){let s=await this.getDpopProof(this.settings.dpop.store,e.nonce);t.DPoP=s,await this._validator.validateSigninResponse(n,r,t)}else throw e}return n}async getDpopProof(e,t){let s;return(await e.getAllKeys()).includes(this.settings.client_id)?(s=await e.get(this.settings.client_id)).nonce!==t&&t&&(s.nonce=t,await e.set(this.settings.client_id,s)):(s=new $(await g.generateDPoPKeys(),t),await e.set(this.settings.client_id,s)),await g.generateDPoPProof({url:await this.metadataService.getTokenEndpoint(!1),httpMethod:"POST",keyPair:s.keys,nonce:s.nonce})}async processResourceOwnerPasswordCredentials({username:e,password:t,skipUserInfo:s=!1,extraTokenParams:i={}}){let r=await this._tokenClient.exchangeCredentials({username:e,password:t,...i}),n=new O(new URLSearchParams);return Object.assign(n,r),await this._validator.validateCredentialsResponse(n,s),n}async useRefreshToken({state:e,redirect_uri:t,resource:s,timeoutInSeconds:i,extraHeaders:r,extraTokenParams:n}){var a;let o,c,l=this._logger.create("useRefreshToken");if(void 0===this.settings.refreshTokenAllowedScope)o=e.scope;else{let t=this.settings.refreshTokenAllowedScope.split(" ");o=((null==(a=e.scope)?void 0:a.split(" "))||[]).filter(e=>t.includes(e)).join(" ")}if(this.settings.dpop&&this.settings.dpop.store){let e=await this.getDpopProof(this.settings.dpop.store);r={...r,DPoP:e}}try{c=await this._tokenClient.exchangeRefreshToken({refresh_token:e.refresh_token,scope:o,redirect_uri:t,resource:s,timeoutInSeconds:i,extraHeaders:r,...n})}catch(a){if(a instanceof b&&this.settings.dpop)r.DPoP=await this.getDpopProof(this.settings.dpop.store,a.nonce),c=await this._tokenClient.exchangeRefreshToken({refresh_token:e.refresh_token,scope:o,redirect_uri:t,resource:s,timeoutInSeconds:i,extraHeaders:r,...n});else throw a}let h=new O(new URLSearchParams);return Object.assign(h,c),l.debug("validating response",h),await this._validator.validateRefreshResponse(h,{...e,scope:o}),h}async createSignoutRequest({state:e,id_token_hint:t,client_id:s,request_type:i,url_state:r,post_logout_redirect_uri:n=this.settings.post_logout_redirect_uri,extraQueryParams:a=this.settings.extraQueryParams}={}){let o=this._logger.create("createSignoutRequest"),c=await this.metadataService.getEndSessionEndpoint();if(!c)throw o.throw(Error("No end session endpoint")),null;o.debug("Received end session endpoint",c),s||!n||t||(s=this.settings.client_id);let l=new N({url:c,id_token_hint:t,client_id:s,post_logout_redirect_uri:n,state_data:e,extraQueryParams:a,request_type:i,url_state:r});await this.clearStaleState();let h=l.state;return h&&(o.debug("Signout request has state to persist"),await this.settings.stateStore.set(h.id,h.toStorageString())),l}async readSignoutResponseState(e,t=!1){let s=this._logger.create("readSignoutResponseState"),i=new j(w.readParams(e,this.settings.response_mode));if(!i.state){if(s.debug("No state in response"),i.error)throw s.warn("Response was error:",i.error),new f(i);return{state:void 0,response:i}}let r=await this.settings.stateStore[t?"remove":"get"](i.state);if(!r)throw s.throw(Error("No matching state found in storage")),null;return{state:await R.fromStorageString(r),response:i}}async processSignoutResponse(e){let t=this._logger.create("processSignoutResponse"),{state:s,response:i}=await this.readSignoutResponseState(e,!0);return s?(t.debug("Received state from storage; validating response"),this._validator.validateSignoutResponse(i,s)):t.debug("No state from storage; skipping response validation"),i}clearStaleState(){return this._logger.create("clearStaleState"),R.clearStaleState(this.settings.stateStore,this.settings.staleStateAgeInSeconds)}async revokeToken(e,t){return this._logger.create("revokeToken"),await this._tokenClient.revoke({token:e,token_type_hint:t})}},D=class{constructor(e){this._userManager=e,this._logger=new c("SessionMonitor"),this._start=async e=>{let t=e.session_state;if(!t)return;let s=this._logger.create("_start");if(e.profile?(this._sub=e.profile.sub,s.debug("session_state",t,", sub",this._sub)):(this._sub=void 0,s.debug("session_state",t,", anonymous user")),this._checkSessionIFrame)return void this._checkSessionIFrame.start(t);try{let e=await this._userManager.metadataService.getCheckSessionIframe();if(e){s.debug("initializing check session iframe");let i=this._userManager.settings.client_id,r=this._userManager.settings.checkSessionIntervalInSeconds,n=this._userManager.settings.stopCheckSessionOnError,a=new y(this._callback,i,e,r,n);await a.load(),this._checkSessionIFrame=a,a.start(t)}else s.warn("no check session iframe found in the metadata")}catch(e){s.error("Error from getCheckSessionIframe:",e instanceof Error?e.message:e)}},this._stop=()=>{let e=this._logger.create("_stop");if(this._sub=void 0,this._checkSessionIFrame&&this._checkSessionIFrame.stop(),this._userManager.settings.monitorAnonymousSession){let t=setInterval(async()=>{clearInterval(t);try{let e=await this._userManager.querySessionStatus();if(e){let t={session_state:e.session_state,profile:e.sub?{sub:e.sub}:null};this._start(t)}}catch(t){e.error("error from querySessionStatus",t instanceof Error?t.message:t)}},1e3)}},this._callback=async()=>{let e=this._logger.create("_callback");try{let t=await this._userManager.querySessionStatus(),s=!0;t&&this._checkSessionIFrame?t.sub===this._sub?(s=!1,this._checkSessionIFrame.start(t.session_state),e.debug("same sub still logged in at OP, session state has changed, restarting check session iframe; session_state",t.session_state),await this._userManager.events._raiseUserSessionChanged()):e.debug("different subject signed into OP",t.sub):e.debug("subject no longer signed into OP"),s?this._sub?await this._userManager.events._raiseUserSignedOut():await this._userManager.events._raiseUserSignedIn():e.debug("no change in session detected, no event to raise")}catch(t){this._sub&&(e.debug("Error calling queryCurrentSigninSession; raising signed out event",t),await this._userManager.events._raiseUserSignedOut())}},e||this._logger.throw(Error("No user manager passed")),this._userManager.events.addUserLoaded(this._start),this._userManager.events.addUserUnloaded(this._stop),this._init().catch(e=>{this._logger.error(e)})}async _init(){this._logger.create("_init");let e=await this._userManager.getUser();if(e)this._start(e);else if(this._userManager.settings.monitorAnonymousSession){let e=await this._userManager.querySessionStatus();if(e){let t={session_state:e.session_state,profile:e.sub?{sub:e.sub}:null};this._start(t)}}}},W=class e{constructor(e){var t;this.id_token=e.id_token,this.session_state=null!=(t=e.session_state)?t:null,this.access_token=e.access_token,this.refresh_token=e.refresh_token,this.token_type=e.token_type,this.scope=e.scope,this.profile=e.profile,this.expires_at=e.expires_at,this.state=e.userState,this.url_state=e.url_state}get expires_in(){if(void 0!==this.expires_at)return this.expires_at-p.getEpochTime()}set expires_in(e){void 0!==e&&(this.expires_at=Math.floor(e)+p.getEpochTime())}get expired(){let e=this.expires_in;if(void 0!==e)return e<=0}get scopes(){var e,t;return null!=(t=null==(e=this.scope)?void 0:e.split(" "))?t:[]}toStorageString(){return new c("User").create("toStorageString"),JSON.stringify({id_token:this.id_token,session_state:this.session_state,access_token:this.access_token,refresh_token:this.refresh_token,token_type:this.token_type,scope:this.scope,profile:this.profile,expires_at:this.expires_at})}static fromStorageString(t){return c.createStatic("User","fromStorageString"),new e(JSON.parse(t))}},K="oidc-client",L=class{constructor(){this._abort=new u("Window navigation aborted"),this._disposeHandlers=new Set,this._window=null}async navigate(e){let t=this._logger.create("navigate");if(!this._window)throw Error("Attempted to navigate on a disposed window");t.debug("setting URL in window"),this._window.location.replace(e.url);let{url:s,keepOpen:i}=await new Promise((s,i)=>{let r=r=>{var n;let a=r.data,o=null!=(n=e.scriptOrigin)?n:window.location.origin;if(r.origin===o&&(null==a?void 0:a.source)===K){try{let s=w.readParams(a.url,e.response_mode).get("state");if(s||t.warn("no state found in response url"),r.source!==this._window&&s!==e.state)return}catch{this._dispose(),i(Error("Invalid response from window"))}s(a)}};window.addEventListener("message",r,!1),this._disposeHandlers.add(()=>window.removeEventListener("message",r,!1));let n=new BroadcastChannel(`oidc-client-popup-${e.state}`);n.addEventListener("message",r,!1),this._disposeHandlers.add(()=>n.close()),this._disposeHandlers.add(this._abort.addHandler(e=>{this._dispose(),i(e)}))});return t.debug("got response from window"),this._dispose(),i||this.close(),{url:s}}_dispose(){for(let e of(this._logger.create("_dispose"),this._disposeHandlers))e();this._disposeHandlers.clear()}static _notifyParent(e,t,s=!1,i=window.location.origin){let r={source:K,url:t,keepOpen:s},n=new c("_notifyParent");if(e)n.debug("With parent. Using parent.postMessage."),e.postMessage(r,i);else{n.debug("No parent. Using BroadcastChannel.");let e=new URL(t).searchParams.get("state");if(!e)throw Error("No parent and no state in URL. Can't complete notification.");let s=new BroadcastChannel(`oidc-client-popup-${e}`);s.postMessage(r),s.close()}}},z={location:!1,toolbar:!1,height:640,closePopupWindowAfterInSeconds:-1},F="_blank",B=class extends x{constructor(e){let{popup_redirect_uri:t=e.redirect_uri,popup_post_logout_redirect_uri:s=e.post_logout_redirect_uri,popupWindowFeatures:i=z,popupWindowTarget:r=F,redirectMethod:n="assign",redirectTarget:a="self",iframeNotifyParentOrigin:o=e.iframeNotifyParentOrigin,iframeScriptOrigin:c=e.iframeScriptOrigin,requestTimeoutInSeconds:l,silent_redirect_uri:h=e.redirect_uri,silentRequestTimeoutInSeconds:d,automaticSilentRenew:g=!0,validateSubOnSilentRenew:u=!0,includeIdTokenInSilentRenew:_=!1,monitorSession:p=!1,monitorAnonymousSession:w=!1,checkSessionIntervalInSeconds:f=2,query_status_response_type:m="code",stopCheckSessionOnError:S=!0,revokeTokenTypes:y=["access_token","refresh_token"],revokeTokensOnSignout:b=!1,includeIdTokenInSilentSignout:k=!1,accessTokenExpiringNotificationTimeInSeconds:E=60,userStore:x}=e;if(super(e),this.popup_redirect_uri=t,this.popup_post_logout_redirect_uri=s,this.popupWindowFeatures=i,this.popupWindowTarget=r,this.redirectMethod=n,this.redirectTarget=a,this.iframeNotifyParentOrigin=o,this.iframeScriptOrigin=c,this.silent_redirect_uri=h,this.silentRequestTimeoutInSeconds=d||l||10,this.automaticSilentRenew=g,this.validateSubOnSilentRenew=u,this.includeIdTokenInSilentRenew=_,this.monitorSession=p,this.monitorAnonymousSession=w,this.checkSessionIntervalInSeconds=f,this.stopCheckSessionOnError=S,this.query_status_response_type=m,this.revokeTokenTypes=y,this.revokeTokensOnSignout=b,this.includeIdTokenInSilentSignout=k,this.accessTokenExpiringNotificationTimeInSeconds=E,x)this.userStore=x;else{let e="undefined"!=typeof window?window.sessionStorage:new v;this.userStore=new T({store:e})}}},V=class e extends L{constructor({silentRequestTimeoutInSeconds:t=10}){super(),this._logger=new c("IFrameWindow"),this._timeoutInSeconds=t,this._frame=e.createHiddenIframe(),this._window=this._frame.contentWindow}static createHiddenIframe(){let e=window.document.createElement("iframe");return e.style.visibility="hidden",e.style.position="fixed",e.style.left="-1000px",e.style.top="0",e.width="0",e.height="0",window.document.body.appendChild(e),e}async navigate(e){this._logger.debug("navigate: Using timeout of:",this._timeoutInSeconds);let t=setTimeout(()=>void this._abort.raise(new m("IFrame timed out without a response")),1e3*this._timeoutInSeconds);return this._disposeHandlers.add(()=>clearTimeout(t)),await super.navigate(e)}close(){var e;this._frame&&(this._frame.parentNode&&(this._frame.addEventListener("load",e=>{var t;let s=e.target;null==(t=s.parentNode)||t.removeChild(s),this._abort.raise(Error("IFrame removed from DOM"))},!0),null==(e=this._frame.contentWindow)||e.location.replace("about:blank")),this._frame=null),this._window=null}static notifyParent(e,t){return super._notifyParent(window.parent,e,!1,t)}},G=class{constructor(e){this._settings=e,this._logger=new c("IFrameNavigator")}async prepare({silentRequestTimeoutInSeconds:e=this._settings.silentRequestTimeoutInSeconds}){return new V({silentRequestTimeoutInSeconds:e})}async callback(e){this._logger.create("callback"),V.notifyParent(e,this._settings.iframeNotifyParentOrigin)}},Q=class extends L{constructor({popupWindowTarget:e=F,popupWindowFeatures:t={},popupSignal:s,popupAbortOnClose:i}){super(),this._logger=new c("PopupWindow");let r=_.center({...z,...t});this._window=window.open(void 0,e,_.serialize(r)),this.abortOnClose=!!i,s&&s.addEventListener("abort",()=>{var e;this._abort.raise(Error(null!=(e=s.reason)?e:"Popup aborted"))}),t.closePopupWindowAfterInSeconds&&t.closePopupWindowAfterInSeconds>0&&setTimeout(()=>{if(!this._window||"boolean"!=typeof this._window.closed||this._window.closed)return void this._abort.raise(Error("Popup blocked by user"));this.close()},1e3*t.closePopupWindowAfterInSeconds)}async navigate(e){var t;null==(t=this._window)||t.focus();let s=setInterval(()=>{(!this._window||this._window.closed)&&(this._logger.debug("Popup closed by user or isolated by redirect"),i(),this._disposeHandlers.delete(i),this.abortOnClose&&this._abort.raise(Error("Popup closed by user")))},500),i=()=>clearInterval(s);return this._disposeHandlers.add(i),await super.navigate(e)}close(){this._window&&!this._window.closed&&(this._window.close(),this._abort.raise(Error("Popup closed"))),this._window=null}static notifyOpener(e,t){super._notifyParent(window.opener,e,t),t||window.opener||window.close()}},X=class{constructor(e){this._settings=e,this._logger=new c("PopupNavigator")}async prepare({popupWindowFeatures:e=this._settings.popupWindowFeatures,popupWindowTarget:t=this._settings.popupWindowTarget,popupSignal:s,popupAbortOnClose:i}){return new Q({popupWindowFeatures:e,popupWindowTarget:t,popupSignal:s,popupAbortOnClose:i})}async callback(e,{keepOpen:t=!1}){this._logger.create("callback"),Q.notifyOpener(e,t)}},Y=class{constructor(e){this._settings=e,this._logger=new c("RedirectNavigator")}async prepare({redirectMethod:e=this._settings.redirectMethod,redirectTarget:t=this._settings.redirectTarget}){var s;let i;this._logger.create("prepare");let r=window.self;"top"===t&&(r=null!=(s=window.top)?s:window.self);let n=r.location[e].bind(r.location);return{navigate:async e=>{this._logger.create("navigate");let t=new Promise((t,s)=>{i=s,window.addEventListener("pageshow",()=>t(window.location.href)),n(e.url)});return await t},close:()=>{this._logger.create("close"),null==i||i(Error("Redirect aborted")),r.stop()}}}async callback(){}},Z=class extends S{constructor(e){super({expiringNotificationTimeInSeconds:e.accessTokenExpiringNotificationTimeInSeconds}),this._logger=new c("UserManagerEvents"),this._userLoaded=new u("User loaded"),this._userUnloaded=new u("User unloaded"),this._silentRenewError=new u("Silent renew error"),this._userSignedIn=new u("User signed in"),this._userSignedOut=new u("User signed out"),this._userSessionChanged=new u("User session changed")}async load(e,t=!0){await super.load(e),t&&await this._userLoaded.raise(e)}async unload(){await super.unload(),await this._userUnloaded.raise()}addUserLoaded(e){return this._userLoaded.addHandler(e)}removeUserLoaded(e){return this._userLoaded.removeHandler(e)}addUserUnloaded(e){return this._userUnloaded.addHandler(e)}removeUserUnloaded(e){return this._userUnloaded.removeHandler(e)}addSilentRenewError(e){return this._silentRenewError.addHandler(e)}removeSilentRenewError(e){return this._silentRenewError.removeHandler(e)}async _raiseSilentRenewError(e){await this._silentRenewError.raise(e)}addUserSignedIn(e){return this._userSignedIn.addHandler(e)}removeUserSignedIn(e){this._userSignedIn.removeHandler(e)}async _raiseUserSignedIn(){await this._userSignedIn.raise()}addUserSignedOut(e){return this._userSignedOut.addHandler(e)}removeUserSignedOut(e){this._userSignedOut.removeHandler(e)}async _raiseUserSignedOut(){await this._userSignedOut.raise()}addUserSessionChanged(e){return this._userSessionChanged.addHandler(e)}removeUserSessionChanged(e){this._userSessionChanged.removeHandler(e)}async _raiseUserSessionChanged(){await this._userSessionChanged.raise()}},ee=class{constructor(e){this._userManager=e,this._logger=new c("SilentRenewService"),this._isStarted=!1,this._retryTimer=new p("Retry Silent Renew"),this._tokenExpiring=async()=>{let e=this._logger.create("_tokenExpiring");try{await this._userManager.signinSilent(),e.debug("silent token renewal successful")}catch(t){if(t instanceof m){e.warn("ErrorTimeout from signinSilent:",t,"retry in 5s"),this._retryTimer.init(5);return}e.error("Error from signinSilent:",t),await this._userManager.events._raiseSilentRenewError(t)}}}async start(){let e=this._logger.create("start");if(!this._isStarted){this._isStarted=!0,this._userManager.events.addAccessTokenExpiring(this._tokenExpiring),this._retryTimer.addHandler(this._tokenExpiring);try{await this._userManager.getUser()}catch(t){e.error("getUser error",t)}}}stop(){this._isStarted&&(this._retryTimer.cancel(),this._retryTimer.removeHandler(this._tokenExpiring),this._userManager.events.removeAccessTokenExpiring(this._tokenExpiring),this._isStarted=!1)}},et=class{constructor(e){this.refresh_token=e.refresh_token,this.id_token=e.id_token,this.session_state=e.session_state,this.scope=e.scope,this.profile=e.profile,this.data=e.state}},es=class{constructor(e,t,s,i){this._logger=new c("UserManager"),this.settings=new B(e),this._client=new J(e),this._redirectNavigator=null!=t?t:new Y(this.settings),this._popupNavigator=null!=s?s:new X(this.settings),this._iframeNavigator=null!=i?i:new G(this.settings),this._events=new Z(this.settings),this._silentRenewService=new ee(this),this.settings.automaticSilentRenew&&this.startSilentRenew(),this._sessionMonitor=null,this.settings.monitorSession&&(this._sessionMonitor=new D(this))}get events(){return this._events}get metadataService(){return this._client.metadataService}async getUser(e=!1){let t=this._logger.create("getUser"),s=await this._loadUser();return s?(t.info("user loaded"),await this._events.load(s,e),s):(t.info("user not found in storage"),null)}async removeUser(){let e=this._logger.create("removeUser");await this.storeUser(null),e.info("user removed from storage"),await this._events.unload()}async signinRedirect(e={}){var t;let s;this._logger.create("signinRedirect");let{redirectMethod:i,...r}=e;(null==(t=this.settings.dpop)?void 0:t.bind_authorization_code)&&(s=await this.generateDPoPJkt(this.settings.dpop));let n=await this._redirectNavigator.prepare({redirectMethod:i});await this._signinStart({request_type:"si:r",dpopJkt:s,...r},n)}async signinRedirectCallback(e=window.location.href){let t=this._logger.create("signinRedirectCallback"),s=await this._signinEnd(e);return s.profile&&s.profile.sub?t.info("success, signed in subject",s.profile.sub):t.info("no subject"),s}async signinResourceOwnerCredentials({username:e,password:t,skipUserInfo:s=!1}){let i=this._logger.create("signinResourceOwnerCredential"),r=await this._client.processResourceOwnerPasswordCredentials({username:e,password:t,skipUserInfo:s,extraTokenParams:this.settings.extraTokenParams});i.debug("got signin response");let n=await this._buildUser(r);return n.profile&&n.profile.sub?i.info("success, signed in subject",n.profile.sub):i.info("no subject"),n}async signinPopup(e={}){var t;let s,i=this._logger.create("signinPopup");(null==(t=this.settings.dpop)?void 0:t.bind_authorization_code)&&(s=await this.generateDPoPJkt(this.settings.dpop));let{popupWindowFeatures:r,popupWindowTarget:n,popupSignal:a,popupAbortOnClose:o,...c}=e,l=this.settings.popup_redirect_uri;l||i.throw(Error("No popup_redirect_uri configured"));let h=await this._popupNavigator.prepare({popupWindowFeatures:r,popupWindowTarget:n,popupSignal:a,popupAbortOnClose:o}),d=await this._signin({request_type:"si:p",redirect_uri:l,display:"popup",dpopJkt:s,...c},h);return d&&(d.profile&&d.profile.sub?i.info("success, signed in subject",d.profile.sub):i.info("no subject")),d}async signinPopupCallback(e=window.location.href,t=!1){let s=this._logger.create("signinPopupCallback");await this._popupNavigator.callback(e,{keepOpen:t}),s.info("success")}async signinSilent(e={}){var t,s;let i,r,n=this._logger.create("signinSilent"),{silentRequestTimeoutInSeconds:a,...o}=e,c=await this._loadUser();if(!e.forceIframeAuth&&(null==c?void 0:c.refresh_token)){n.debug("using refresh token");let e=new et(c);return await this._useRefreshToken({state:e,redirect_uri:o.redirect_uri,resource:o.resource,extraTokenParams:o.extraTokenParams,timeoutInSeconds:a})}(null==(t=this.settings.dpop)?void 0:t.bind_authorization_code)&&(i=await this.generateDPoPJkt(this.settings.dpop));let l=this.settings.silent_redirect_uri;l||n.throw(Error("No silent_redirect_uri configured")),c&&this.settings.validateSubOnSilentRenew&&(n.debug("subject prior to silent renew:",c.profile.sub),r=c.profile.sub);let h=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:a});return(c=await this._signin({request_type:"si:s",redirect_uri:l,prompt:"none",id_token_hint:this.settings.includeIdTokenInSilentRenew?null==c?void 0:c.id_token:void 0,dpopJkt:i,...o},h,r))&&((null==(s=c.profile)?void 0:s.sub)?n.info("success, signed in subject",c.profile.sub):n.info("no subject")),c}async _useRefreshToken(e){let t=await this._client.useRefreshToken({timeoutInSeconds:this.settings.silentRequestTimeoutInSeconds,...e}),s=new W({...e.state,...t});return await this.storeUser(s),await this._events.load(s),s}async signinSilentCallback(e=window.location.href){let t=this._logger.create("signinSilentCallback");await this._iframeNavigator.callback(e),t.info("success")}async signinCallback(e=window.location.href){let{state:t}=await this._client.readSigninResponseState(e);switch(t.request_type){case"si:r":return await this.signinRedirectCallback(e);case"si:p":await this.signinPopupCallback(e);break;case"si:s":await this.signinSilentCallback(e);break;default:throw Error("invalid response_type in state")}}async signoutCallback(e=window.location.href,t=!1){let{state:s}=await this._client.readSignoutResponseState(e);if(s)switch(s.request_type){case"so:r":return await this.signoutRedirectCallback(e);case"so:p":await this.signoutPopupCallback(e,t);break;case"so:s":await this.signoutSilentCallback(e);break;default:throw Error("invalid response_type in state")}}async querySessionStatus(e={}){let t=this._logger.create("querySessionStatus"),{silentRequestTimeoutInSeconds:s,...i}=e,r=this.settings.silent_redirect_uri;r||t.throw(Error("No silent_redirect_uri configured"));let n=await this._loadUser(),a=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:s}),o=await this._signinStart({request_type:"si:s",redirect_uri:r,prompt:"none",id_token_hint:this.settings.includeIdTokenInSilentRenew?null==n?void 0:n.id_token:void 0,response_type:this.settings.query_status_response_type,scope:"openid",skipUserInfo:!0,...i},a);try{let e=await this._client.processSigninResponse(o.url,{});if(t.debug("got signin response"),e.session_state&&e.profile.sub)return t.info("success for subject",e.profile.sub),{session_state:e.session_state,sub:e.profile.sub};return t.info("success, user not authenticated"),null}catch(e){if(this.settings.monitorAnonymousSession&&e instanceof f)switch(e.error){case"login_required":case"consent_required":case"interaction_required":case"account_selection_required":return t.info("success for anonymous user"),{session_state:e.session_state}}throw e}}async _signin(e,t,s){let i=await this._signinStart(e,t);return await this._signinEnd(i.url,s)}async _signinStart(e,t){let s=this._logger.create("_signinStart");try{let i=await this._client.createSigninRequest(e);return s.debug("got signin request"),await t.navigate({url:i.url,state:i.state.id,response_mode:i.state.response_mode,scriptOrigin:this.settings.iframeScriptOrigin})}catch(e){throw s.debug("error after preparing navigator, closing navigator window"),t.close(),e}}async _signinEnd(e,t){let s=this._logger.create("_signinEnd"),i=await this._client.processSigninResponse(e,{});return s.debug("got signin response"),await this._buildUser(i,t)}async _buildUser(e,t){let s=this._logger.create("_buildUser"),i=new W(e);if(t){if(t!==i.profile.sub)throw s.debug("current user does not match user returned from signin. sub from signin:",i.profile.sub),new f({...e,error:"login_required"});s.debug("current user matches user returned from signin")}return await this.storeUser(i),s.debug("user stored"),await this._events.load(i),i}async signoutRedirect(e={}){let t=this._logger.create("signoutRedirect"),{redirectMethod:s,...i}=e,r=await this._redirectNavigator.prepare({redirectMethod:s});await this._signoutStart({request_type:"so:r",post_logout_redirect_uri:this.settings.post_logout_redirect_uri,...i},r),t.info("success")}async signoutRedirectCallback(e=window.location.href){let t=this._logger.create("signoutRedirectCallback"),s=await this._signoutEnd(e);return t.info("success"),s}async signoutPopup(e={}){let t=this._logger.create("signoutPopup"),{popupWindowFeatures:s,popupWindowTarget:i,popupSignal:r,...n}=e,a=this.settings.popup_post_logout_redirect_uri,o=await this._popupNavigator.prepare({popupWindowFeatures:s,popupWindowTarget:i,popupSignal:r});await this._signout({request_type:"so:p",post_logout_redirect_uri:a,state:null==a?void 0:{},...n},o),t.info("success")}async signoutPopupCallback(e=window.location.href,t=!1){let s=this._logger.create("signoutPopupCallback");await this._popupNavigator.callback(e,{keepOpen:t}),s.info("success")}async _signout(e,t){let s=await this._signoutStart(e,t);return await this._signoutEnd(s.url)}async _signoutStart(e={},t){var s;let i=this._logger.create("_signoutStart");try{let r=await this._loadUser();i.debug("loaded current user from storage"),this.settings.revokeTokensOnSignout&&await this._revokeInternal(r);let n=e.id_token_hint||r&&r.id_token;n&&(i.debug("setting id_token_hint in signout request"),e.id_token_hint=n),await this.removeUser(),i.debug("user removed, creating signout request");let a=await this._client.createSignoutRequest(e);return i.debug("got signout request"),await t.navigate({url:a.url,state:null==(s=a.state)?void 0:s.id,scriptOrigin:this.settings.iframeScriptOrigin})}catch(e){throw i.debug("error after preparing navigator, closing navigator window"),t.close(),e}}async _signoutEnd(e){let t=this._logger.create("_signoutEnd"),s=await this._client.processSignoutResponse(e);return t.debug("got signout response"),s}async signoutSilent(e={}){var t;let s=this._logger.create("signoutSilent"),{silentRequestTimeoutInSeconds:i,...r}=e,n=this.settings.includeIdTokenInSilentSignout?null==(t=await this._loadUser())?void 0:t.id_token:void 0,a=this.settings.popup_post_logout_redirect_uri,o=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:i});await this._signout({request_type:"so:s",post_logout_redirect_uri:a,id_token_hint:n,...r},o),s.info("success")}async signoutSilentCallback(e=window.location.href){let t=this._logger.create("signoutSilentCallback");await this._iframeNavigator.callback(e),t.info("success")}async revokeTokens(e){let t=await this._loadUser();await this._revokeInternal(t,e)}async _revokeInternal(e,t=this.settings.revokeTokenTypes){let s=this._logger.create("_revokeInternal");if(!e)return;let i=t.filter(t=>"string"==typeof e[t]);if(!i.length)return void s.debug("no need to revoke due to no token(s)");for(let t of i)await this._client.revokeToken(e[t],t),s.info(`${t} revoked successfully`),"access_token"!==t&&(e[t]=null);await this.storeUser(e),s.debug("user stored"),await this._events.load(e)}startSilentRenew(){this._logger.create("startSilentRenew"),this._silentRenewService.start()}stopSilentRenew(){this._silentRenewService.stop()}get _userStoreKey(){return`user:${this.settings.authority}:${this.settings.client_id}`}async _loadUser(){let e=this._logger.create("_loadUser"),t=await this.settings.userStore.get(this._userStoreKey);return t?(e.debug("user storageString loaded"),W.fromStorageString(t)):(e.debug("no user storageString"),null)}async storeUser(e){let t=this._logger.create("storeUser");if(e){t.debug("storing user");let s=e.toStorageString();await this.settings.userStore.set(this._userStoreKey,s)}else this._logger.debug("removing user"),await this.settings.userStore.remove(this._userStoreKey),this.settings.dpop&&await this.settings.dpop.store.remove(this.settings.client_id)}async clearStaleState(){await this._client.clearStaleState()}async dpopProof(e,t,s,i){var r,n;let a=await (null==(n=null==(r=this.settings.dpop)?void 0:r.store)?void 0:n.get(this.settings.client_id));if(a)return await g.generateDPoPProof({url:e,accessToken:null==t?void 0:t.access_token,httpMethod:s,keyPair:a.keys,nonce:i})}async generateDPoPJkt(e){let t=await e.store.get(this.settings.client_id);return t||(t=new $(await g.generateDPoPKeys()),await e.store.set(this.settings.client_id,t)),await g.generateDPoPJkt(t.keys)}}}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[58037],{14655:(e,t,s)=>{s.d(t,{$5:()=>es,O:()=>T});class i extends Error{}i.prototype.name="InvalidTokenError";var r,n,a={debug:()=>void 0,info:()=>void 0,warn:()=>void 0,error:()=>void 0},o=(e=>(e[e.NONE=0]="NONE",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.DEBUG=4]="DEBUG",e))(o||{});(e=>{e.reset=function(){r=3,n=a},e.setLevel=function(e){if(!(0<=e&&e<=4))throw Error("Invalid log level");r=e},e.setLogger=function(e){n=e}})(o||(o={}));var c=class e{constructor(e){this._name=e}debug(...t){r>=4&&n.debug(e._format(this._name,this._method),...t)}info(...t){r>=3&&n.info(e._format(this._name,this._method),...t)}warn(...t){r>=2&&n.warn(e._format(this._name,this._method),...t)}error(...t){r>=1&&n.error(e._format(this._name,this._method),...t)}throw(e){throw this.error(e),e}create(e){let t=Object.create(this);return t._method=e,t.debug("begin"),t}static createStatic(t,s){let i=new e(`${t}.${s}`);return i.debug("begin"),i}static _format(e,t){let s=`[${e}]`;return t?`${s} ${t}:`:s}static debug(t,...s){r>=4&&n.debug(e._format(t),...s)}static info(t,...s){r>=3&&n.info(e._format(t),...s)}static warn(t,...s){r>=2&&n.warn(e._format(t),...s)}static error(t,...s){r>=1&&n.error(e._format(t),...s)}};o.reset();var l=class{static decode(e){try{return function(e,t){let s;if("string"!=typeof e)throw new i("Invalid token specified: must be a string");t||(t={});let r=+(!0!==t.header),n=e.split(".")[r];if("string"!=typeof n)throw new i(`Invalid token specified: missing part #${r+1}`);try{s=function(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw Error("base64 string is not of the correct length")}try{var s;return s=t,decodeURIComponent(atob(s).replace(/(.)/g,(e,t)=>{let s=t.charCodeAt(0).toString(16).toUpperCase();return s.length<2&&(s="0"+s),"%"+s}))}catch(e){return atob(t)}}(n)}catch(e){throw new i(`Invalid token specified: invalid base64 for part #${r+1} (${e.message})`)}try{return JSON.parse(s)}catch(e){throw new i(`Invalid token specified: invalid json for part #${r+1} (${e.message})`)}}(e)}catch(e){throw c.error("JwtUtils.decode",e),e}}static async generateSignedJwt(e,t,s){let i=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(e))),r=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(t))),n=`${i}.${r}`,a=await window.crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},s,new TextEncoder().encode(n)),o=g.encodeBase64Url(new Uint8Array(a));return`${n}.${o}`}static async generateSignedJwtWithHmac(e,t,s){let i=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(e))),r=g.encodeBase64Url(new TextEncoder().encode(JSON.stringify(t))),n=`${i}.${r}`,a=await window.crypto.subtle.sign("HMAC",s,new TextEncoder().encode(n)),o=g.encodeBase64Url(new Uint8Array(a));return`${n}.${o}`}},h=e=>btoa([...new Uint8Array(e)].map(e=>String.fromCharCode(e)).join("")),d=class e{static _randomWord(){let e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]}static generateUUIDv4(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,t=>(t^e._randomWord()&15>>t/4).toString(16)).replace(/-/g,"")}static generateCodeVerifier(){return e.generateUUIDv4()+e.generateUUIDv4()+e.generateUUIDv4()}static async generateCodeChallenge(e){if(!crypto.subtle)throw Error("Crypto.subtle is available only in secure contexts (HTTPS).");try{let t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return h(s).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}catch(e){throw c.error("CryptoUtils.generateCodeChallenge",e),e}}static generateBasicAuth(e,t){return h(new TextEncoder().encode([e,t].join(":")))}static async hash(e,t){let s=new TextEncoder().encode(t);return new Uint8Array(await crypto.subtle.digest(e,s))}static async customCalculateJwkThumbprint(t){let s;switch(t.kty){case"RSA":s={e:t.e,kty:t.kty,n:t.n};break;case"EC":s={crv:t.crv,kty:t.kty,x:t.x,y:t.y};break;case"OKP":s={crv:t.crv,kty:t.kty,x:t.x};break;case"oct":s={crv:t.k,kty:t.kty};break;default:throw Error("Unknown jwk type")}let i=await e.hash("SHA-256",JSON.stringify(s));return e.encodeBase64Url(i)}static async generateDPoPProof({url:t,accessToken:s,httpMethod:i,keyPair:r,nonce:n}){let a,o={jti:window.crypto.randomUUID(),htm:null!=i?i:"GET",htu:t,iat:Math.floor(Date.now()/1e3)};s&&(a=await e.hash("SHA-256",s),o.ath=e.encodeBase64Url(a)),n&&(o.nonce=n);try{let e=await crypto.subtle.exportKey("jwk",r.publicKey),t={alg:"ES256",typ:"dpop+jwt",jwk:{crv:e.crv,kty:e.kty,x:e.x,y:e.y}};return await l.generateSignedJwt(t,o,r.privateKey)}catch(e){if(e instanceof TypeError)throw Error(`Error exporting dpop public key: ${e.message}`);throw e}}static async generateDPoPJkt(t){try{let s=await crypto.subtle.exportKey("jwk",t.publicKey);return await e.customCalculateJwkThumbprint(s)}catch(e){if(e instanceof TypeError)throw Error(`Could not retrieve dpop keys from storage: ${e.message}`);throw e}}static async generateDPoPKeys(){return await window.crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign","verify"])}static async generateClientAssertionJwt(t,s,i,r="HS256"){let n=Math.floor(Date.now()/1e3),a={iss:t,sub:t,aud:i,jti:e.generateUUIDv4(),exp:n+300,iat:n},o={HS256:"SHA-256",HS384:"SHA-384",HS512:"SHA-512"}[r];if(!o)throw Error(`Unsupported algorithm: ${r}. Supported algorithms are: HS256, HS384, HS512`);let c=new TextEncoder,h=await crypto.subtle.importKey("raw",c.encode(s),{name:"HMAC",hash:o},!1,["sign"]);return await l.generateSignedJwtWithHmac({alg:r,typ:"JWT"},a,h)}};d.encodeBase64Url=e=>h(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_");var g=d,u=class{constructor(e){this._name=e,this._callbacks=[],this._logger=new c(`Event('${this._name}')`)}addHandler(e){return this._callbacks.push(e),()=>this.removeHandler(e)}removeHandler(e){let t=this._callbacks.lastIndexOf(e);t>=0&&this._callbacks.splice(t,1)}async raise(...e){for(let t of(this._logger.debug("raise:",...e),this._callbacks))await t(...e)}},_=class{static center({...e}){var t;return null==e.width&&(e.width=null!=(t=[800,720,600,480].find(e=>e<=window.outerWidth/1.618))?t:360),null!=e.left||(e.left=Math.max(0,Math.round(window.screenX+(window.outerWidth-e.width)/2))),null!=e.height&&(null!=e.top||(e.top=Math.max(0,Math.round(window.screenY+(window.outerHeight-e.height)/2)))),e}static serialize(e){return Object.entries(e).filter(([,e])=>null!=e).map(([e,t])=>`${e}=${"boolean"!=typeof t?t:t?"yes":"no"}`).join(",")}},p=class e extends u{constructor(){super(...arguments),this._logger=new c(`Timer('${this._name}')`),this._timerHandle=null,this._expiration=0,this._callback=()=>{let t=this._expiration-e.getEpochTime();this._logger.debug("timer completes in",t),this._expiration<=e.getEpochTime()&&(this.cancel(),super.raise())}}static getEpochTime(){return Math.floor(Date.now()/1e3)}init(t){let s=this._logger.create("init");t=Math.max(Math.floor(t),1);let i=e.getEpochTime()+t;if(this.expiration===i&&this._timerHandle)return void s.debug("skipping since already initialized for expiration at",this.expiration);this.cancel(),s.debug("using duration",t),this._expiration=i;let r=Math.min(t,5);this._timerHandle=setInterval(this._callback,1e3*r)}get expiration(){return this._expiration}cancel(){this._logger.create("cancel"),this._timerHandle&&(clearInterval(this._timerHandle),this._timerHandle=null)}},w=class{static readParams(e,t="query"){if(!e)throw TypeError("Invalid URL");return new URLSearchParams(new URL(e,"http://127.0.0.1")["fragment"===t?"hash":"search"].slice(1))}},f=class extends Error{constructor(e,t){var s,i,r;if(super(e.error_description||e.error||""),this.form=t,this.name="ErrorResponse",!e.error)throw c.error("ErrorResponse","No error passed"),Error("No error passed");this.error=e.error,this.error_description=null!=(s=e.error_description)?s:null,this.error_uri=null!=(i=e.error_uri)?i:null,this.state=e.userState,this.session_state=null!=(r=e.session_state)?r:null,this.url_state=e.url_state}},m=class extends Error{constructor(e){super(e),this.name="ErrorTimeout"}},S=class{constructor(e){this._logger=new c("AccessTokenEvents"),this._expiringTimer=new p("Access token expiring"),this._expiredTimer=new p("Access token expired"),this._expiringNotificationTimeInSeconds=e.expiringNotificationTimeInSeconds}async load(e){let t=this._logger.create("load");if(e.access_token&&void 0!==e.expires_in){let s=e.expires_in;if(t.debug("access token present, remaining duration:",s),s>0){let e=s-this._expiringNotificationTimeInSeconds;e<=0&&(e=1),t.debug("registering expiring timer, raising in",e,"seconds"),this._expiringTimer.init(e)}else t.debug("canceling existing expiring timer because we're past expiration."),this._expiringTimer.cancel();let i=s+1;t.debug("registering expired timer, raising in",i,"seconds"),this._expiredTimer.init(i)}else this._expiringTimer.cancel(),this._expiredTimer.cancel()}async unload(){this._logger.debug("unload: canceling existing access token timers"),this._expiringTimer.cancel(),this._expiredTimer.cancel()}addAccessTokenExpiring(e){return this._expiringTimer.addHandler(e)}removeAccessTokenExpiring(e){this._expiringTimer.removeHandler(e)}addAccessTokenExpired(e){return this._expiredTimer.addHandler(e)}removeAccessTokenExpired(e){this._expiredTimer.removeHandler(e)}},y=class{constructor(e,t,s,i,r){this._callback=e,this._client_id=t,this._intervalInSeconds=i,this._stopOnError=r,this._logger=new c("CheckSessionIFrame"),this._timer=null,this._session_state=null,this._message=e=>{e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&("error"===e.data?(this._logger.error("error message from check session op iframe"),this._stopOnError&&this.stop()):"changed"===e.data?(this._logger.debug("changed message from check session op iframe"),this.stop(),this._callback()):this._logger.debug(e.data+" message from check session op iframe"))};let n=new URL(s);this._frame_origin=n.origin,this._frame=window.document.createElement("iframe"),this._frame.style.visibility="hidden",this._frame.style.position="fixed",this._frame.style.left="-1000px",this._frame.style.top="0",this._frame.width="0",this._frame.height="0",this._frame.src=n.href}load(){return new Promise(e=>{this._frame.onload=()=>{e()},window.document.body.appendChild(this._frame),window.addEventListener("message",this._message,!1)})}start(e){if(this._session_state===e)return;this._logger.create("start"),this.stop(),this._session_state=e;let t=()=>{this._frame.contentWindow&&this._session_state&&this._frame.contentWindow.postMessage(this._client_id+" "+this._session_state,this._frame_origin)};t(),this._timer=setInterval(t,1e3*this._intervalInSeconds)}stop(){this._logger.create("stop"),this._session_state=null,this._timer&&(clearInterval(this._timer),this._timer=null)}},v=class{constructor(){this._logger=new c("InMemoryWebStorage"),this._data={}}clear(){this._logger.create("clear"),this._data={}}getItem(e){return this._logger.create(`getItem('${e}')`),this._data[e]}setItem(e,t){this._logger.create(`setItem('${e}')`),this._data[e]=t}removeItem(e){this._logger.create(`removeItem('${e}')`),delete this._data[e]}get length(){return Object.getOwnPropertyNames(this._data).length}key(e){return Object.getOwnPropertyNames(this._data)[e]}},b=class extends Error{constructor(e,t){super(t),this.name="ErrorDPoPNonce",this.nonce=e}},k=class{constructor(e=[],t=null,s={}){this._jwtHandler=t,this._extraHeaders=s,this._logger=new c("JsonService"),this._contentTypes=[],this._contentTypes.push(...e,"application/json"),t&&this._contentTypes.push("application/jwt")}async fetchWithTimeout(e,t={}){let{timeoutInSeconds:s,...i}=t;if(!s)return await fetch(e,i);let r=new AbortController,n=setTimeout(()=>r.abort(),1e3*s);try{return await fetch(e,{...t,signal:r.signal})}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)throw new m("Network timed out");throw e}finally{clearTimeout(n)}}async getJson(e,{token:t,credentials:s,timeoutInSeconds:i}={}){let r,n,a=this._logger.create("getJson"),o={Accept:this._contentTypes.join(", ")};t&&(a.debug("token passed, setting Authorization header"),o.Authorization="Bearer "+t),this._appendExtraHeaders(o);try{a.debug("url:",e),r=await this.fetchWithTimeout(e,{method:"GET",headers:o,timeoutInSeconds:i,credentials:s})}catch(e){throw a.error("Network Error"),e}a.debug("HTTP response received, status",r.status);let c=r.headers.get("Content-Type");if(c&&!this._contentTypes.find(e=>c.startsWith(e))&&a.throw(Error(`Invalid response Content-Type: ${null!=c?c:"undefined"}, from URL: ${e}`)),r.ok&&this._jwtHandler&&(null==c?void 0:c.startsWith("application/jwt")))return await this._jwtHandler(await r.text());try{n=await r.json()}catch(e){if(a.error("Error parsing JSON response",e),r.ok)throw e;throw Error(`${r.statusText} (${r.status})`)}if(!r.ok){if(a.error("Error from server:",n),n.error)throw new f(n);throw Error(`${r.statusText} (${r.status}): ${JSON.stringify(n)}`)}return n}async postForm(e,{body:t,basicAuth:s,timeoutInSeconds:i,initCredentials:r,extraHeaders:n}){let a,o=this._logger.create("postForm"),c={Accept:this._contentTypes.join(", "),"Content-Type":"application/x-www-form-urlencoded",...n};void 0!==s&&(c.Authorization="Basic "+s),this._appendExtraHeaders(c);try{o.debug("url:",e),a=await this.fetchWithTimeout(e,{method:"POST",headers:c,body:t,timeoutInSeconds:i,credentials:r})}catch(e){throw o.error("Network error"),e}o.debug("HTTP response received, status",a.status);let l=a.headers.get("Content-Type");if(l&&!this._contentTypes.find(e=>l.startsWith(e)))throw Error(`Invalid response Content-Type: ${null!=l?l:"undefined"}, from URL: ${e}`);let h=await a.text(),d={};if(h)try{d=JSON.parse(h)}catch(e){if(o.error("Error parsing JSON response",e),a.ok)throw e;throw Error(`${a.statusText} (${a.status})`)}if(!a.ok){if(o.error("Error from server:",d),a.headers.has("dpop-nonce"))throw new b(a.headers.get("dpop-nonce"),`${JSON.stringify(d)}`);if(d.error)throw new f(d,t);throw Error(`${a.statusText} (${a.status}): ${JSON.stringify(d)}`)}return d}_appendExtraHeaders(e){let t=this._logger.create("appendExtraHeaders"),s=Object.keys(this._extraHeaders),i=["accept","content-type"],r=["authorization"];0!==s.length&&s.forEach(s=>{if(i.includes(s.toLocaleLowerCase()))return void t.warn("Protected header could not be set",s,i);if(r.includes(s.toLocaleLowerCase())&&Object.keys(e).includes(s))return void t.warn("Header could not be overridden",s,r);let n="function"==typeof this._extraHeaders[s]?this._extraHeaders[s]():this._extraHeaders[s];n&&""!==n&&(e[s]=n)})}},E=class{constructor(e){this._settings=e,this._logger=new c("MetadataService"),this._signingKeys=null,this._metadata=null,this._metadataUrl=this._settings.metadataUrl,this._jsonService=new k(["application/jwk-set+json"],null,this._settings.extraHeaders),this._settings.signingKeys&&(this._logger.debug("using signingKeys from settings"),this._signingKeys=this._settings.signingKeys),this._settings.metadata&&(this._logger.debug("using metadata from settings"),this._metadata=this._settings.metadata),this._settings.fetchRequestCredentials&&(this._logger.debug("using fetchRequestCredentials from settings"),this._fetchRequestCredentials=this._settings.fetchRequestCredentials)}resetSigningKeys(){this._signingKeys=null}async getMetadata(){let e=this._logger.create("getMetadata");if(this._metadata)return e.debug("using cached values"),this._metadata;if(!this._metadataUrl)throw e.throw(Error("No authority or metadataUrl configured on settings")),null;e.debug("getting metadata from",this._metadataUrl);let t=await this._jsonService.getJson(this._metadataUrl,{credentials:this._fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return e.debug("merging remote JSON with seed metadata"),this._metadata=Object.assign({},t,this._settings.metadataSeed),this._metadata}getIssuer(){return this._getMetadataProperty("issuer")}getAuthorizationEndpoint(){return this._getMetadataProperty("authorization_endpoint")}getUserInfoEndpoint(){return this._getMetadataProperty("userinfo_endpoint")}getTokenEndpoint(e=!0){return this._getMetadataProperty("token_endpoint",e)}getCheckSessionIframe(){return this._getMetadataProperty("check_session_iframe",!0)}getEndSessionEndpoint(){return this._getMetadataProperty("end_session_endpoint",!0)}getRevocationEndpoint(e=!0){return this._getMetadataProperty("revocation_endpoint",e)}getKeysEndpoint(e=!0){return this._getMetadataProperty("jwks_uri",e)}async _getMetadataProperty(e,t=!1){let s=this._logger.create(`_getMetadataProperty('${e}')`),i=await this.getMetadata();if(s.debug("resolved"),void 0===i[e]){if(!0===t)return void s.warn("Metadata does not contain optional property");s.throw(Error("Metadata does not contain property "+e))}return i[e]}async getSigningKeys(){let e=this._logger.create("getSigningKeys");if(this._signingKeys)return e.debug("returning signingKeys from cache"),this._signingKeys;let t=await this.getKeysEndpoint(!1);e.debug("got jwks_uri",t);let s=await this._jsonService.getJson(t,{timeoutInSeconds:this._settings.requestTimeoutInSeconds});if(e.debug("got key set",s),!Array.isArray(s.keys))throw e.throw(Error("Missing keys on keyset")),null;return this._signingKeys=s.keys,this._signingKeys}},T=class{constructor({prefix:e="oidc.",store:t=localStorage}={}){this._logger=new c("WebStorageStateStore"),this._store=t,this._prefix=e}async set(e,t){this._logger.create(`set('${e}')`),e=this._prefix+e,await this._store.setItem(e,t)}async get(e){return this._logger.create(`get('${e}')`),e=this._prefix+e,await this._store.getItem(e)}async remove(e){this._logger.create(`remove('${e}')`),e=this._prefix+e;let t=await this._store.getItem(e);return await this._store.removeItem(e),t}async getAllKeys(){this._logger.create("getAllKeys");let e=await this._store.length,t=[];for(let s=0;s<e;s++){let e=await this._store.key(s);e&&0===e.indexOf(this._prefix)&&t.push(e.substr(this._prefix.length))}return t}},P=class{constructor({authority:e,metadataUrl:t,metadata:s,signingKeys:i,metadataSeed:r,client_id:n,client_secret:a,response_type:o="code",scope:c="openid",redirect_uri:l,post_logout_redirect_uri:h,client_authentication:d="client_secret_post",token_endpoint_auth_signing_alg:g="HS256",prompt:u,display:_,max_age:p,ui_locales:w,acr_values:f,resource:m,response_mode:S,filterProtocolClaims:y=!0,loadUserInfo:b=!1,requestTimeoutInSeconds:k,staleStateAgeInSeconds:E=900,mergeClaimsStrategy:P={array:"replace"},disablePKCE:x=!1,stateStore:C,revokeTokenAdditionalContentTypes:I,fetchRequestCredentials:R,refreshTokenAllowedScope:U,extraQueryParams:A={},extraTokenParams:O={},extraHeaders:N={},dpop:j,omitScopeWhenRequesting:H=!1}){var q;if(this.authority=e,t?this.metadataUrl=t:(this.metadataUrl=e,e&&(this.metadataUrl.endsWith("/")||(this.metadataUrl+="/"),this.metadataUrl+=".well-known/openid-configuration")),this.metadata=s,this.metadataSeed=r,this.signingKeys=i,this.client_id=n,this.client_secret=a,this.response_type=o,this.scope=c,this.redirect_uri=l,this.post_logout_redirect_uri=h,this.client_authentication=d,this.token_endpoint_auth_signing_alg=g,this.prompt=u,this.display=_,this.max_age=p,this.ui_locales=w,this.acr_values=f,this.resource=m,this.response_mode=S,this.filterProtocolClaims=null==y||y,this.loadUserInfo=!!b,this.staleStateAgeInSeconds=E,this.mergeClaimsStrategy=P,this.omitScopeWhenRequesting=H,this.disablePKCE=!!x,this.revokeTokenAdditionalContentTypes=I,this.fetchRequestCredentials=R||"same-origin",this.requestTimeoutInSeconds=k,C)this.stateStore=C;else{let e="undefined"!=typeof window?window.localStorage:new v;this.stateStore=new T({store:e})}if(this.refreshTokenAllowedScope=U,this.extraQueryParams=A,this.extraTokenParams=O,this.extraHeaders=N,this.dpop=j,this.dpop&&!(null==(q=this.dpop)?void 0:q.store))throw Error("A DPoPStore is required when dpop is enabled")}},x=class{constructor(e,t){this._settings=e,this._metadataService=t,this._logger=new c("UserInfoService"),this._getClaimsFromJwt=async e=>{let t=this._logger.create("_getClaimsFromJwt");try{let s=l.decode(e);return t.debug("JWT decoding successful"),s}catch(e){throw t.error("Error parsing JWT response"),e}},this._jsonService=new k(void 0,this._getClaimsFromJwt,this._settings.extraHeaders)}async getClaims(e){let t=this._logger.create("getClaims");e||this._logger.throw(Error("No token passed"));let s=await this._metadataService.getUserInfoEndpoint();t.debug("got userinfo url",s);let i=await this._jsonService.getJson(s,{token:e,credentials:this._settings.fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return t.debug("got claims",i),i}},C=class{constructor(e,t){this._settings=e,this._metadataService=t,this._logger=new c("TokenClient"),this._jsonService=new k(this._settings.revokeTokenAdditionalContentTypes,null,this._settings.extraHeaders)}async exchangeCode({grant_type:e="authorization_code",redirect_uri:t=this._settings.redirect_uri,client_id:s=this._settings.client_id,client_secret:i=this._settings.client_secret,extraHeaders:r,...n}){let a,o=this._logger.create("exchangeCode");s||o.throw(Error("A client_id is required")),t||o.throw(Error("A redirect_uri is required")),n.code||o.throw(Error("A code is required"));let c=new URLSearchParams({grant_type:e,redirect_uri:t});for(let[e,t]of Object.entries(n))null!=t&&c.set(e,t);if(("client_secret_basic"===this._settings.client_authentication||"client_secret_jwt"===this._settings.client_authentication)&&null==i)throw o.throw(Error("A client_secret is required")),null;let l=await this._metadataService.getTokenEndpoint(!1);switch(this._settings.client_authentication){case"client_secret_basic":a=g.generateBasicAuth(s,i);break;case"client_secret_post":c.append("client_id",s),i&&c.append("client_secret",i);break;case"client_secret_jwt":{let e=await g.generateClientAssertionJwt(s,i,l,this._settings.token_endpoint_auth_signing_alg);c.append("client_id",s),c.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),c.append("client_assertion",e)}}o.debug("got token endpoint");let h=await this._jsonService.postForm(l,{body:c,basicAuth:a,timeoutInSeconds:this._settings.requestTimeoutInSeconds,initCredentials:this._settings.fetchRequestCredentials,extraHeaders:r});return o.debug("got response"),h}async exchangeCredentials({grant_type:e="password",client_id:t=this._settings.client_id,client_secret:s=this._settings.client_secret,scope:i=this._settings.scope,...r}){let n,a=this._logger.create("exchangeCredentials");t||a.throw(Error("A client_id is required"));let o=new URLSearchParams({grant_type:e});for(let[e,t]of(this._settings.omitScopeWhenRequesting||o.set("scope",i),Object.entries(r)))null!=t&&o.set(e,t);if(("client_secret_basic"===this._settings.client_authentication||"client_secret_jwt"===this._settings.client_authentication)&&null==s)throw a.throw(Error("A client_secret is required")),null;let c=await this._metadataService.getTokenEndpoint(!1);switch(this._settings.client_authentication){case"client_secret_basic":n=g.generateBasicAuth(t,s);break;case"client_secret_post":o.append("client_id",t),s&&o.append("client_secret",s);break;case"client_secret_jwt":{let e=await g.generateClientAssertionJwt(t,s,c,this._settings.token_endpoint_auth_signing_alg);o.append("client_id",t),o.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),o.append("client_assertion",e)}}a.debug("got token endpoint");let l=await this._jsonService.postForm(c,{body:o,basicAuth:n,timeoutInSeconds:this._settings.requestTimeoutInSeconds,initCredentials:this._settings.fetchRequestCredentials});return a.debug("got response"),l}async exchangeRefreshToken({grant_type:e="refresh_token",client_id:t=this._settings.client_id,client_secret:s=this._settings.client_secret,timeoutInSeconds:i,extraHeaders:r,...n}){let a,o=this._logger.create("exchangeRefreshToken");t||o.throw(Error("A client_id is required")),n.refresh_token||o.throw(Error("A refresh_token is required"));let c=new URLSearchParams({grant_type:e});for(let[e,t]of Object.entries(n))Array.isArray(t)?t.forEach(t=>c.append(e,t)):null!=t&&c.set(e,t);if(("client_secret_basic"===this._settings.client_authentication||"client_secret_jwt"===this._settings.client_authentication)&&null==s)throw o.throw(Error("A client_secret is required")),null;let l=await this._metadataService.getTokenEndpoint(!1);switch(this._settings.client_authentication){case"client_secret_basic":a=g.generateBasicAuth(t,s);break;case"client_secret_post":c.append("client_id",t),s&&c.append("client_secret",s);break;case"client_secret_jwt":{let e=await g.generateClientAssertionJwt(t,s,l,this._settings.token_endpoint_auth_signing_alg);c.append("client_id",t),c.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),c.append("client_assertion",e)}}o.debug("got token endpoint");let h=await this._jsonService.postForm(l,{body:c,basicAuth:a,timeoutInSeconds:i,initCredentials:this._settings.fetchRequestCredentials,extraHeaders:r});return o.debug("got response"),h}async revoke(e){var t;let s=this._logger.create("revoke");e.token||s.throw(Error("A token is required"));let i=await this._metadataService.getRevocationEndpoint(!1);s.debug(`got revocation endpoint, revoking ${null!=(t=e.token_type_hint)?t:"default token type"}`);let r=new URLSearchParams;for(let[t,s]of Object.entries(e))null!=s&&r.set(t,s);r.set("client_id",this._settings.client_id),this._settings.client_secret&&r.set("client_secret",this._settings.client_secret),await this._jsonService.postForm(i,{body:r,timeoutInSeconds:this._settings.requestTimeoutInSeconds}),s.debug("got response")}},I=class{constructor(e,t,s){this._settings=e,this._metadataService=t,this._claimsService=s,this._logger=new c("ResponseValidator"),this._userInfoService=new x(this._settings,this._metadataService),this._tokenClient=new C(this._settings,this._metadataService)}async validateSigninResponse(e,t,s){let i=this._logger.create("validateSigninResponse");this._processSigninState(e,t),i.debug("state processed"),await this._processCode(e,t,s),i.debug("code processed"),e.isOpenId&&this._validateIdTokenAttributes(e),i.debug("tokens validated"),await this._processClaims(e,null==t?void 0:t.skipUserInfo,e.isOpenId),i.debug("claims processed")}async validateCredentialsResponse(e,t){let s=this._logger.create("validateCredentialsResponse"),i=e.isOpenId&&!!e.id_token;i&&this._validateIdTokenAttributes(e),s.debug("tokens validated"),await this._processClaims(e,t,i),s.debug("claims processed")}async validateRefreshResponse(e,t){let s=this._logger.create("validateRefreshResponse");e.userState=t.data,null!=e.session_state||(e.session_state=t.session_state),null!=e.scope||(e.scope=t.scope),e.isOpenId&&e.id_token&&(this._validateIdTokenAttributes(e,t.id_token),s.debug("ID Token validated")),e.id_token||(e.id_token=t.id_token,e.profile=t.profile);let i=e.isOpenId&&!!e.id_token;await this._processClaims(e,!1,i),s.debug("claims processed")}validateSignoutResponse(e,t){let s=this._logger.create("validateSignoutResponse");if(t.id!==e.state&&s.throw(Error("State does not match")),s.debug("state validated"),e.userState=t.data,e.error)throw s.warn("Response was error",e.error),new f(e)}_processSigninState(e,t){let s=this._logger.create("_processSigninState");if(t.id!==e.state&&s.throw(Error("State does not match")),t.client_id||s.throw(Error("No client_id on state")),t.authority||s.throw(Error("No authority on state")),this._settings.authority!==t.authority&&s.throw(Error("authority mismatch on settings vs. signin state")),this._settings.client_id&&this._settings.client_id!==t.client_id&&s.throw(Error("client_id mismatch on settings vs. signin state")),s.debug("state validated"),e.userState=t.data,e.url_state=t.url_state,null!=e.scope||(e.scope=t.scope),e.error)throw s.warn("Response was error",e.error),new f(e);t.code_verifier&&!e.code&&s.throw(Error("Expected code in response"))}async _processClaims(e,t=!1,s=!0){let i=this._logger.create("_processClaims");if(e.profile=this._claimsService.filterProtocolClaims(e.profile),t||!this._settings.loadUserInfo||!e.access_token)return void i.debug("not loading user info");i.debug("loading user info");let r=await this._userInfoService.getClaims(e.access_token);i.debug("user info claims received from user info endpoint"),s&&r.sub!==e.profile.sub&&i.throw(Error("subject from UserInfo response does not match subject in ID Token")),e.profile=this._claimsService.mergeClaims(e.profile,this._claimsService.filterProtocolClaims(r)),i.debug("user info claims received, updated profile:",e.profile)}async _processCode(e,t,s){let i=this._logger.create("_processCode");if(e.code){i.debug("Validating code");let r=await this._tokenClient.exchangeCode({client_id:t.client_id,client_secret:t.client_secret,code:e.code,redirect_uri:t.redirect_uri,code_verifier:t.code_verifier,extraHeaders:s,...t.extraTokenParams});Object.assign(e,r)}else i.debug("No code to process")}_validateIdTokenAttributes(e,t){var s;let i=this._logger.create("_validateIdTokenAttributes");i.debug("decoding ID Token JWT");let r=l.decode(null!=(s=e.id_token)?s:"");if(r.sub||i.throw(Error("ID Token is missing a subject claim")),t){let e=l.decode(t);r.sub!==e.sub&&i.throw(Error("sub in id_token does not match current sub")),r.auth_time&&r.auth_time!==e.auth_time&&i.throw(Error("auth_time in id_token does not match original auth_time")),r.azp&&r.azp!==e.azp&&i.throw(Error("azp in id_token does not match original azp")),!r.azp&&e.azp&&i.throw(Error("azp not in id_token, but present in original id_token"))}e.profile=r}},R=class e{constructor(e){this.id=e.id||g.generateUUIDv4(),this.data=e.data,e.created&&e.created>0?this.created=e.created:this.created=p.getEpochTime(),this.request_type=e.request_type,this.url_state=e.url_state}toStorageString(){return new c("State").create("toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,url_state:this.url_state})}static fromStorageString(t){return c.createStatic("State","fromStorageString"),Promise.resolve(new e(JSON.parse(t)))}static async clearStaleState(t,s){let i=c.createStatic("State","clearStaleState"),r=p.getEpochTime()-s,n=await t.getAllKeys();i.debug("got keys",n);for(let s=0;s<n.length;s++){let a=n[s],o=await t.get(a),c=!1;if(o)try{let t=await e.fromStorageString(o);i.debug("got item from key:",a,t.created),t.created<=r&&(c=!0)}catch(e){i.error("Error parsing state for key:",a,e),c=!0}else i.debug("no item in storage for key:",a),c=!0;c&&(i.debug("removed item for key:",a),t.remove(a))}}},U=class e extends R{constructor(e){super(e),this.code_verifier=e.code_verifier,this.code_challenge=e.code_challenge,this.authority=e.authority,this.client_id=e.client_id,this.redirect_uri=e.redirect_uri,this.scope=e.scope,this.client_secret=e.client_secret,this.extraTokenParams=e.extraTokenParams,this.response_mode=e.response_mode,this.skipUserInfo=e.skipUserInfo}static async create(t){let s=!0===t.code_verifier?g.generateCodeVerifier():t.code_verifier||void 0,i=s?await g.generateCodeChallenge(s):void 0;return new e({...t,code_verifier:s,code_challenge:i})}toStorageString(){return new c("SigninState").create("toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,url_state:this.url_state,code_verifier:this.code_verifier,authority:this.authority,client_id:this.client_id,redirect_uri:this.redirect_uri,scope:this.scope,client_secret:this.client_secret,extraTokenParams:this.extraTokenParams,response_mode:this.response_mode,skipUserInfo:this.skipUserInfo})}static fromStorageString(t){c.createStatic("SigninState","fromStorageString");let s=JSON.parse(t);return e.create(s)}},A=class e{constructor(e){this.url=e.url,this.state=e.state}static async create({url:t,authority:s,client_id:i,redirect_uri:r,response_type:n,scope:a,state_data:o,response_mode:c,request_type:l,client_secret:h,nonce:d,url_state:g,resource:u,skipUserInfo:_,extraQueryParams:p,extraTokenParams:w,disablePKCE:f,dpopJkt:m,omitScopeWhenRequesting:S,...y}){if(!t)throw this._logger.error("create: No url passed"),Error("url");if(!i)throw this._logger.error("create: No client_id passed"),Error("client_id");if(!r)throw this._logger.error("create: No redirect_uri passed"),Error("redirect_uri");if(!n)throw this._logger.error("create: No response_type passed"),Error("response_type");if(!a)throw this._logger.error("create: No scope passed"),Error("scope");if(!s)throw this._logger.error("create: No authority passed"),Error("authority");let v=await U.create({data:o,request_type:l,url_state:g,code_verifier:!f,client_id:i,authority:s,redirect_uri:r,response_mode:c,client_secret:h,scope:a,extraTokenParams:w,skipUserInfo:_}),b=new URL(t);b.searchParams.append("client_id",i),b.searchParams.append("redirect_uri",r),b.searchParams.append("response_type",n),S||b.searchParams.append("scope",a),d&&b.searchParams.append("nonce",d),m&&b.searchParams.append("dpop_jkt",m);let k=v.id;for(let[e,t]of(g&&(k=`${k};${g}`),b.searchParams.append("state",k),v.code_challenge&&(b.searchParams.append("code_challenge",v.code_challenge),b.searchParams.append("code_challenge_method","S256")),u&&(Array.isArray(u)?u:[u]).forEach(e=>b.searchParams.append("resource",e)),Object.entries({response_mode:c,...y,...p})))null!=t&&b.searchParams.append(e,t.toString());return new e({url:b.href,state:v})}};A._logger=new c("SigninRequest");var O=class{constructor(e){if(this.access_token="",this.token_type="",this.profile={},this.state=e.get("state"),this.session_state=e.get("session_state"),this.state){let e=decodeURIComponent(this.state).split(";");this.state=e[0],e.length>1&&(this.url_state=e.slice(1).join(";"))}this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri"),this.code=e.get("code")}get expires_in(){if(void 0!==this.expires_at)return this.expires_at-p.getEpochTime()}set expires_in(e){"string"==typeof e&&(e=Number(e)),void 0!==e&&e>=0&&(this.expires_at=Math.floor(e)+p.getEpochTime())}get isOpenId(){var e;return(null==(e=this.scope)?void 0:e.split(" ").includes("openid"))||!!this.id_token}},N=class{constructor({url:e,state_data:t,id_token_hint:s,post_logout_redirect_uri:i,extraQueryParams:r,request_type:n,client_id:a,url_state:o}){if(this._logger=new c("SignoutRequest"),!e)throw this._logger.error("ctor: No url passed"),Error("url");let l=new URL(e);if(s&&l.searchParams.append("id_token_hint",s),a&&l.searchParams.append("client_id",a),i&&(l.searchParams.append("post_logout_redirect_uri",i),t||o)){this.state=new R({data:t,request_type:n,url_state:o});let e=this.state.id;o&&(e=`${e};${o}`),l.searchParams.append("state",e)}for(let[e,t]of Object.entries({...r}))null!=t&&l.searchParams.append(e,t.toString());this.url=l.href}},j=class{constructor(e){if(this.state=e.get("state"),this.state){let e=decodeURIComponent(this.state).split(";");this.state=e[0],e.length>1&&(this.url_state=e.slice(1).join(";"))}this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri")}},H=["nbf","jti","auth_time","nonce","acr","amr","azp","at_hash"],q=["sub","iss","aud","exp","iat"],M=class{constructor(e){this._settings=e,this._logger=new c("ClaimsService")}filterProtocolClaims(e){let t={...e};if(this._settings.filterProtocolClaims){for(let e of Array.isArray(this._settings.filterProtocolClaims)?this._settings.filterProtocolClaims:H)q.includes(e)||delete t[e]}return t}mergeClaims(e,t){let s={...e};for(let[e,i]of Object.entries(t))if(s[e]!==i)if(Array.isArray(s[e])||Array.isArray(i))if("replace"==this._settings.mergeClaimsStrategy.array)s[e]=i;else{let t=Array.isArray(s[e])?s[e]:[s[e]];for(let e of Array.isArray(i)?i:[i])t.includes(e)||t.push(e);s[e]=t}else"object"==typeof s[e]&&"object"==typeof i?s[e]=this.mergeClaims(s[e],i):s[e]=i;return s}},$=class{constructor(e,t){this.keys=e,this.nonce=t}},J=class{constructor(e,t){this._logger=new c("OidcClient"),this.settings=e instanceof P?e:new P(e),this.metadataService=null!=t?t:new E(this.settings),this._claimsService=new M(this.settings),this._validator=new I(this.settings,this.metadataService,this._claimsService),this._tokenClient=new C(this.settings,this.metadataService)}async createSigninRequest({state:e,request:t,request_uri:s,request_type:i,id_token_hint:r,login_hint:n,skipUserInfo:a,nonce:o,url_state:c,response_type:l=this.settings.response_type,scope:h=this.settings.scope,redirect_uri:d=this.settings.redirect_uri,prompt:g=this.settings.prompt,display:u=this.settings.display,max_age:_=this.settings.max_age,ui_locales:p=this.settings.ui_locales,acr_values:w=this.settings.acr_values,resource:f=this.settings.resource,response_mode:m=this.settings.response_mode,extraQueryParams:S=this.settings.extraQueryParams,extraTokenParams:y=this.settings.extraTokenParams,dpopJkt:v,omitScopeWhenRequesting:b=this.settings.omitScopeWhenRequesting}){let k=this._logger.create("createSigninRequest");if("code"!==l)throw Error("Only the Authorization Code flow (with PKCE) is supported");let E=await this.metadataService.getAuthorizationEndpoint();k.debug("Received authorization endpoint",E);let T=await A.create({url:E,authority:this.settings.authority,client_id:this.settings.client_id,redirect_uri:d,response_type:l,scope:h,state_data:e,url_state:c,prompt:g,display:u,max_age:_,ui_locales:p,id_token_hint:r,login_hint:n,acr_values:w,dpopJkt:v,resource:f,request:t,request_uri:s,extraQueryParams:S,extraTokenParams:y,request_type:i,response_mode:m,client_secret:this.settings.client_secret,skipUserInfo:a,nonce:o,disablePKCE:this.settings.disablePKCE,omitScopeWhenRequesting:b});await this.clearStaleState();let P=T.state;return await this.settings.stateStore.set(P.id,P.toStorageString()),T}async readSigninResponseState(e,t=!1){let s=this._logger.create("readSigninResponseState"),i=new O(w.readParams(e,this.settings.response_mode));if(!i.state)throw s.throw(Error("No state in response")),null;let r=await this.settings.stateStore[t?"remove":"get"](i.state);if(!r)throw s.throw(Error("No matching state found in storage")),null;return{state:await U.fromStorageString(r),response:i}}async processSigninResponse(e,t,s=!0){let i=this._logger.create("processSigninResponse"),{state:r,response:n}=await this.readSigninResponseState(e,s);if(i.debug("received state from storage; validating response"),this.settings.dpop&&this.settings.dpop.store){let e=await this.getDpopProof(this.settings.dpop.store);t={...t,DPoP:e}}try{await this._validator.validateSigninResponse(n,r,t)}catch(e){if(e instanceof b&&this.settings.dpop){let s=await this.getDpopProof(this.settings.dpop.store,e.nonce);t.DPoP=s,await this._validator.validateSigninResponse(n,r,t)}else throw e}return n}async getDpopProof(e,t){let s;return(await e.getAllKeys()).includes(this.settings.client_id)?(s=await e.get(this.settings.client_id)).nonce!==t&&t&&(s.nonce=t,await e.set(this.settings.client_id,s)):(s=new $(await g.generateDPoPKeys(),t),await e.set(this.settings.client_id,s)),await g.generateDPoPProof({url:await this.metadataService.getTokenEndpoint(!1),httpMethod:"POST",keyPair:s.keys,nonce:s.nonce})}async processResourceOwnerPasswordCredentials({username:e,password:t,skipUserInfo:s=!1,extraTokenParams:i={}}){let r=await this._tokenClient.exchangeCredentials({username:e,password:t,...i}),n=new O(new URLSearchParams);return Object.assign(n,r),await this._validator.validateCredentialsResponse(n,s),n}async useRefreshToken({state:e,redirect_uri:t,resource:s,timeoutInSeconds:i,extraHeaders:r,extraTokenParams:n}){var a;let o,c,l=this._logger.create("useRefreshToken");if(void 0===this.settings.refreshTokenAllowedScope)o=e.scope;else{let t=this.settings.refreshTokenAllowedScope.split(" ");o=((null==(a=e.scope)?void 0:a.split(" "))||[]).filter(e=>t.includes(e)).join(" ")}if(this.settings.dpop&&this.settings.dpop.store){let e=await this.getDpopProof(this.settings.dpop.store);r={...r,DPoP:e}}try{c=await this._tokenClient.exchangeRefreshToken({refresh_token:e.refresh_token,scope:o,redirect_uri:t,resource:s,timeoutInSeconds:i,extraHeaders:r,...n})}catch(a){if(a instanceof b&&this.settings.dpop)r.DPoP=await this.getDpopProof(this.settings.dpop.store,a.nonce),c=await this._tokenClient.exchangeRefreshToken({refresh_token:e.refresh_token,scope:o,redirect_uri:t,resource:s,timeoutInSeconds:i,extraHeaders:r,...n});else throw a}let h=new O(new URLSearchParams);return Object.assign(h,c),l.debug("validating response",h),await this._validator.validateRefreshResponse(h,{...e,scope:o}),h}async createSignoutRequest({state:e,id_token_hint:t,client_id:s,request_type:i,url_state:r,post_logout_redirect_uri:n=this.settings.post_logout_redirect_uri,extraQueryParams:a=this.settings.extraQueryParams}={}){let o=this._logger.create("createSignoutRequest"),c=await this.metadataService.getEndSessionEndpoint();if(!c)throw o.throw(Error("No end session endpoint")),null;o.debug("Received end session endpoint",c),s||!n||t||(s=this.settings.client_id);let l=new N({url:c,id_token_hint:t,client_id:s,post_logout_redirect_uri:n,state_data:e,extraQueryParams:a,request_type:i,url_state:r});await this.clearStaleState();let h=l.state;return h&&(o.debug("Signout request has state to persist"),await this.settings.stateStore.set(h.id,h.toStorageString())),l}async readSignoutResponseState(e,t=!1){let s=this._logger.create("readSignoutResponseState"),i=new j(w.readParams(e,this.settings.response_mode));if(!i.state){if(s.debug("No state in response"),i.error)throw s.warn("Response was error:",i.error),new f(i);return{state:void 0,response:i}}let r=await this.settings.stateStore[t?"remove":"get"](i.state);if(!r)throw s.throw(Error("No matching state found in storage")),null;return{state:await R.fromStorageString(r),response:i}}async processSignoutResponse(e){let t=this._logger.create("processSignoutResponse"),{state:s,response:i}=await this.readSignoutResponseState(e,!0);return s?(t.debug("Received state from storage; validating response"),this._validator.validateSignoutResponse(i,s)):t.debug("No state from storage; skipping response validation"),i}clearStaleState(){return this._logger.create("clearStaleState"),R.clearStaleState(this.settings.stateStore,this.settings.staleStateAgeInSeconds)}async revokeToken(e,t){return this._logger.create("revokeToken"),await this._tokenClient.revoke({token:e,token_type_hint:t})}},D=class{constructor(e){this._userManager=e,this._logger=new c("SessionMonitor"),this._start=async e=>{let t=e.session_state;if(!t)return;let s=this._logger.create("_start");if(e.profile?(this._sub=e.profile.sub,s.debug("session_state",t,", sub",this._sub)):(this._sub=void 0,s.debug("session_state",t,", anonymous user")),this._checkSessionIFrame)return void this._checkSessionIFrame.start(t);try{let e=await this._userManager.metadataService.getCheckSessionIframe();if(e){s.debug("initializing check session iframe");let i=this._userManager.settings.client_id,r=this._userManager.settings.checkSessionIntervalInSeconds,n=this._userManager.settings.stopCheckSessionOnError,a=new y(this._callback,i,e,r,n);await a.load(),this._checkSessionIFrame=a,a.start(t)}else s.warn("no check session iframe found in the metadata")}catch(e){s.error("Error from getCheckSessionIframe:",e instanceof Error?e.message:e)}},this._stop=()=>{let e=this._logger.create("_stop");if(this._sub=void 0,this._checkSessionIFrame&&this._checkSessionIFrame.stop(),this._userManager.settings.monitorAnonymousSession){let t=setInterval(async()=>{clearInterval(t);try{let e=await this._userManager.querySessionStatus();if(e){let t={session_state:e.session_state,profile:e.sub?{sub:e.sub}:null};this._start(t)}}catch(t){e.error("error from querySessionStatus",t instanceof Error?t.message:t)}},1e3)}},this._callback=async()=>{let e=this._logger.create("_callback");try{let t=await this._userManager.querySessionStatus(),s=!0;t&&this._checkSessionIFrame?t.sub===this._sub?(s=!1,this._checkSessionIFrame.start(t.session_state),e.debug("same sub still logged in at OP, session state has changed, restarting check session iframe; session_state",t.session_state),await this._userManager.events._raiseUserSessionChanged()):e.debug("different subject signed into OP",t.sub):e.debug("subject no longer signed into OP"),s?this._sub?await this._userManager.events._raiseUserSignedOut():await this._userManager.events._raiseUserSignedIn():e.debug("no change in session detected, no event to raise")}catch(t){this._sub&&(e.debug("Error calling queryCurrentSigninSession; raising signed out event",t),await this._userManager.events._raiseUserSignedOut())}},e||this._logger.throw(Error("No user manager passed")),this._userManager.events.addUserLoaded(this._start),this._userManager.events.addUserUnloaded(this._stop),this._init().catch(e=>{this._logger.error(e)})}async _init(){this._logger.create("_init");let e=await this._userManager.getUser();if(e)this._start(e);else if(this._userManager.settings.monitorAnonymousSession){let e=await this._userManager.querySessionStatus();if(e){let t={session_state:e.session_state,profile:e.sub?{sub:e.sub}:null};this._start(t)}}}},W=class e{constructor(e){var t;this.id_token=e.id_token,this.session_state=null!=(t=e.session_state)?t:null,this.access_token=e.access_token,this.refresh_token=e.refresh_token,this.token_type=e.token_type,this.scope=e.scope,this.profile=e.profile,this.expires_at=e.expires_at,this.state=e.userState,this.url_state=e.url_state}get expires_in(){if(void 0!==this.expires_at)return this.expires_at-p.getEpochTime()}set expires_in(e){void 0!==e&&(this.expires_at=Math.floor(e)+p.getEpochTime())}get expired(){let e=this.expires_in;if(void 0!==e)return e<=0}get scopes(){var e,t;return null!=(t=null==(e=this.scope)?void 0:e.split(" "))?t:[]}toStorageString(){return new c("User").create("toStorageString"),JSON.stringify({id_token:this.id_token,session_state:this.session_state,access_token:this.access_token,refresh_token:this.refresh_token,token_type:this.token_type,scope:this.scope,profile:this.profile,expires_at:this.expires_at})}static fromStorageString(t){return c.createStatic("User","fromStorageString"),new e(JSON.parse(t))}},K="oidc-client",L=class{constructor(){this._abort=new u("Window navigation aborted"),this._disposeHandlers=new Set,this._window=null}async navigate(e){let t=this._logger.create("navigate");if(!this._window)throw Error("Attempted to navigate on a disposed window");t.debug("setting URL in window"),this._window.location.replace(e.url);let{url:s,keepOpen:i}=await new Promise((s,i)=>{let r=r=>{var n;let a=r.data,o=null!=(n=e.scriptOrigin)?n:window.location.origin;if(r.origin===o&&(null==a?void 0:a.source)===K){try{let s=w.readParams(a.url,e.response_mode).get("state");if(s||t.warn("no state found in response url"),r.source!==this._window&&s!==e.state)return}catch{this._dispose(),i(Error("Invalid response from window"))}s(a)}};window.addEventListener("message",r,!1),this._disposeHandlers.add(()=>window.removeEventListener("message",r,!1));let n=new BroadcastChannel(`oidc-client-popup-${e.state}`);n.addEventListener("message",r,!1),this._disposeHandlers.add(()=>n.close()),this._disposeHandlers.add(this._abort.addHandler(e=>{this._dispose(),i(e)}))});return t.debug("got response from window"),this._dispose(),i||this.close(),{url:s}}_dispose(){for(let e of(this._logger.create("_dispose"),this._disposeHandlers))e();this._disposeHandlers.clear()}static _notifyParent(e,t,s=!1,i=window.location.origin){let r={source:K,url:t,keepOpen:s},n=new c("_notifyParent");if(e)n.debug("With parent. Using parent.postMessage."),e.postMessage(r,i);else{n.debug("No parent. Using BroadcastChannel.");let e=new URL(t).searchParams.get("state");if(!e)throw Error("No parent and no state in URL. Can't complete notification.");let s=new BroadcastChannel(`oidc-client-popup-${e}`);s.postMessage(r),s.close()}}},z={location:!1,toolbar:!1,height:640,closePopupWindowAfterInSeconds:-1},F="_blank",B=class extends P{constructor(e){let{popup_redirect_uri:t=e.redirect_uri,popup_post_logout_redirect_uri:s=e.post_logout_redirect_uri,popupWindowFeatures:i=z,popupWindowTarget:r=F,redirectMethod:n="assign",redirectTarget:a="self",iframeNotifyParentOrigin:o=e.iframeNotifyParentOrigin,iframeScriptOrigin:c=e.iframeScriptOrigin,requestTimeoutInSeconds:l,silent_redirect_uri:h=e.redirect_uri,silentRequestTimeoutInSeconds:d,automaticSilentRenew:g=!0,validateSubOnSilentRenew:u=!0,includeIdTokenInSilentRenew:_=!1,monitorSession:p=!1,monitorAnonymousSession:w=!1,checkSessionIntervalInSeconds:f=2,query_status_response_type:m="code",stopCheckSessionOnError:S=!0,revokeTokenTypes:y=["access_token","refresh_token"],revokeTokensOnSignout:b=!1,includeIdTokenInSilentSignout:k=!1,accessTokenExpiringNotificationTimeInSeconds:E=60,userStore:P}=e;if(super(e),this.popup_redirect_uri=t,this.popup_post_logout_redirect_uri=s,this.popupWindowFeatures=i,this.popupWindowTarget=r,this.redirectMethod=n,this.redirectTarget=a,this.iframeNotifyParentOrigin=o,this.iframeScriptOrigin=c,this.silent_redirect_uri=h,this.silentRequestTimeoutInSeconds=d||l||10,this.automaticSilentRenew=g,this.validateSubOnSilentRenew=u,this.includeIdTokenInSilentRenew=_,this.monitorSession=p,this.monitorAnonymousSession=w,this.checkSessionIntervalInSeconds=f,this.stopCheckSessionOnError=S,this.query_status_response_type=m,this.revokeTokenTypes=y,this.revokeTokensOnSignout=b,this.includeIdTokenInSilentSignout=k,this.accessTokenExpiringNotificationTimeInSeconds=E,P)this.userStore=P;else{let e="undefined"!=typeof window?window.sessionStorage:new v;this.userStore=new T({store:e})}}},V=class e extends L{constructor({silentRequestTimeoutInSeconds:t=10}){super(),this._logger=new c("IFrameWindow"),this._timeoutInSeconds=t,this._frame=e.createHiddenIframe(),this._window=this._frame.contentWindow}static createHiddenIframe(){let e=window.document.createElement("iframe");return e.style.visibility="hidden",e.style.position="fixed",e.style.left="-1000px",e.style.top="0",e.width="0",e.height="0",window.document.body.appendChild(e),e}async navigate(e){this._logger.debug("navigate: Using timeout of:",this._timeoutInSeconds);let t=setTimeout(()=>void this._abort.raise(new m("IFrame timed out without a response")),1e3*this._timeoutInSeconds);return this._disposeHandlers.add(()=>clearTimeout(t)),await super.navigate(e)}close(){var e;this._frame&&(this._frame.parentNode&&(this._frame.addEventListener("load",e=>{var t;let s=e.target;null==(t=s.parentNode)||t.removeChild(s),this._abort.raise(Error("IFrame removed from DOM"))},!0),null==(e=this._frame.contentWindow)||e.location.replace("about:blank")),this._frame=null),this._window=null}static notifyParent(e,t){return super._notifyParent(window.parent,e,!1,t)}},G=class{constructor(e){this._settings=e,this._logger=new c("IFrameNavigator")}async prepare({silentRequestTimeoutInSeconds:e=this._settings.silentRequestTimeoutInSeconds}){return new V({silentRequestTimeoutInSeconds:e})}async callback(e){this._logger.create("callback"),V.notifyParent(e,this._settings.iframeNotifyParentOrigin)}},Q=class extends L{constructor({popupWindowTarget:e=F,popupWindowFeatures:t={},popupSignal:s,popupAbortOnClose:i}){super(),this._logger=new c("PopupWindow");let r=_.center({...z,...t});this._window=window.open(void 0,e,_.serialize(r)),this.abortOnClose=!!i,s&&s.addEventListener("abort",()=>{var e;this._abort.raise(Error(null!=(e=s.reason)?e:"Popup aborted"))}),t.closePopupWindowAfterInSeconds&&t.closePopupWindowAfterInSeconds>0&&setTimeout(()=>{if(!this._window||"boolean"!=typeof this._window.closed||this._window.closed)return void this._abort.raise(Error("Popup blocked by user"));this.close()},1e3*t.closePopupWindowAfterInSeconds)}async navigate(e){var t;null==(t=this._window)||t.focus();let s=setInterval(()=>{(!this._window||this._window.closed)&&(this._logger.debug("Popup closed by user or isolated by redirect"),i(),this._disposeHandlers.delete(i),this.abortOnClose&&this._abort.raise(Error("Popup closed by user")))},500),i=()=>clearInterval(s);return this._disposeHandlers.add(i),await super.navigate(e)}close(){this._window&&!this._window.closed&&(this._window.close(),this._abort.raise(Error("Popup closed"))),this._window=null}static notifyOpener(e,t){super._notifyParent(window.opener,e,t),t||window.opener||window.close()}},X=class{constructor(e){this._settings=e,this._logger=new c("PopupNavigator")}async prepare({popupWindowFeatures:e=this._settings.popupWindowFeatures,popupWindowTarget:t=this._settings.popupWindowTarget,popupSignal:s,popupAbortOnClose:i}){return new Q({popupWindowFeatures:e,popupWindowTarget:t,popupSignal:s,popupAbortOnClose:i})}async callback(e,{keepOpen:t=!1}){this._logger.create("callback"),Q.notifyOpener(e,t)}},Y=class{constructor(e){this._settings=e,this._logger=new c("RedirectNavigator")}async prepare({redirectMethod:e=this._settings.redirectMethod,redirectTarget:t=this._settings.redirectTarget}){var s;let i;this._logger.create("prepare");let r=window.self;"top"===t&&(r=null!=(s=window.top)?s:window.self);let n=r.location[e].bind(r.location);return{navigate:async e=>{this._logger.create("navigate");let t=new Promise((t,s)=>{i=s,window.addEventListener("pageshow",()=>t(window.location.href)),n(e.url)});return await t},close:()=>{this._logger.create("close"),null==i||i(Error("Redirect aborted")),r.stop()}}}async callback(){}},Z=class extends S{constructor(e){super({expiringNotificationTimeInSeconds:e.accessTokenExpiringNotificationTimeInSeconds}),this._logger=new c("UserManagerEvents"),this._userLoaded=new u("User loaded"),this._userUnloaded=new u("User unloaded"),this._silentRenewError=new u("Silent renew error"),this._userSignedIn=new u("User signed in"),this._userSignedOut=new u("User signed out"),this._userSessionChanged=new u("User session changed")}async load(e,t=!0){await super.load(e),t&&await this._userLoaded.raise(e)}async unload(){await super.unload(),await this._userUnloaded.raise()}addUserLoaded(e){return this._userLoaded.addHandler(e)}removeUserLoaded(e){return this._userLoaded.removeHandler(e)}addUserUnloaded(e){return this._userUnloaded.addHandler(e)}removeUserUnloaded(e){return this._userUnloaded.removeHandler(e)}addSilentRenewError(e){return this._silentRenewError.addHandler(e)}removeSilentRenewError(e){return this._silentRenewError.removeHandler(e)}async _raiseSilentRenewError(e){await this._silentRenewError.raise(e)}addUserSignedIn(e){return this._userSignedIn.addHandler(e)}removeUserSignedIn(e){this._userSignedIn.removeHandler(e)}async _raiseUserSignedIn(){await this._userSignedIn.raise()}addUserSignedOut(e){return this._userSignedOut.addHandler(e)}removeUserSignedOut(e){this._userSignedOut.removeHandler(e)}async _raiseUserSignedOut(){await this._userSignedOut.raise()}addUserSessionChanged(e){return this._userSessionChanged.addHandler(e)}removeUserSessionChanged(e){this._userSessionChanged.removeHandler(e)}async _raiseUserSessionChanged(){await this._userSessionChanged.raise()}},ee=class{constructor(e){this._userManager=e,this._logger=new c("SilentRenewService"),this._isStarted=!1,this._retryTimer=new p("Retry Silent Renew"),this._tokenExpiring=async()=>{let e=this._logger.create("_tokenExpiring");try{await this._userManager.signinSilent(),e.debug("silent token renewal successful")}catch(t){if(t instanceof m){e.warn("ErrorTimeout from signinSilent:",t,"retry in 5s"),this._retryTimer.init(5);return}e.error("Error from signinSilent:",t),await this._userManager.events._raiseSilentRenewError(t)}}}async start(){let e=this._logger.create("start");if(!this._isStarted){this._isStarted=!0,this._userManager.events.addAccessTokenExpiring(this._tokenExpiring),this._retryTimer.addHandler(this._tokenExpiring);try{await this._userManager.getUser()}catch(t){e.error("getUser error",t)}}}stop(){this._isStarted&&(this._retryTimer.cancel(),this._retryTimer.removeHandler(this._tokenExpiring),this._userManager.events.removeAccessTokenExpiring(this._tokenExpiring),this._isStarted=!1)}},et=class{constructor(e){this.refresh_token=e.refresh_token,this.id_token=e.id_token,this.session_state=e.session_state,this.scope=e.scope,this.profile=e.profile,this.data=e.state}},es=class{constructor(e,t,s,i){this._logger=new c("UserManager"),this.settings=new B(e),this._client=new J(e),this._redirectNavigator=null!=t?t:new Y(this.settings),this._popupNavigator=null!=s?s:new X(this.settings),this._iframeNavigator=null!=i?i:new G(this.settings),this._events=new Z(this.settings),this._silentRenewService=new ee(this),this.settings.automaticSilentRenew&&this.startSilentRenew(),this._sessionMonitor=null,this.settings.monitorSession&&(this._sessionMonitor=new D(this))}get events(){return this._events}get metadataService(){return this._client.metadataService}async getUser(e=!1){let t=this._logger.create("getUser"),s=await this._loadUser();return s?(t.info("user loaded"),await this._events.load(s,e),s):(t.info("user not found in storage"),null)}async removeUser(){let e=this._logger.create("removeUser");await this.storeUser(null),e.info("user removed from storage"),await this._events.unload()}async signinRedirect(e={}){var t;let s;this._logger.create("signinRedirect");let{redirectMethod:i,...r}=e;(null==(t=this.settings.dpop)?void 0:t.bind_authorization_code)&&(s=await this.generateDPoPJkt(this.settings.dpop));let n=await this._redirectNavigator.prepare({redirectMethod:i});await this._signinStart({request_type:"si:r",dpopJkt:s,...r},n)}async signinRedirectCallback(e=window.location.href){let t=this._logger.create("signinRedirectCallback"),s=await this._signinEnd(e);return s.profile&&s.profile.sub?t.info("success, signed in subject",s.profile.sub):t.info("no subject"),s}async signinResourceOwnerCredentials({username:e,password:t,skipUserInfo:s=!1}){let i=this._logger.create("signinResourceOwnerCredential"),r=await this._client.processResourceOwnerPasswordCredentials({username:e,password:t,skipUserInfo:s,extraTokenParams:this.settings.extraTokenParams});i.debug("got signin response");let n=await this._buildUser(r);return n.profile&&n.profile.sub?i.info("success, signed in subject",n.profile.sub):i.info("no subject"),n}async signinPopup(e={}){var t;let s,i=this._logger.create("signinPopup");(null==(t=this.settings.dpop)?void 0:t.bind_authorization_code)&&(s=await this.generateDPoPJkt(this.settings.dpop));let{popupWindowFeatures:r,popupWindowTarget:n,popupSignal:a,popupAbortOnClose:o,...c}=e,l=this.settings.popup_redirect_uri;l||i.throw(Error("No popup_redirect_uri configured"));let h=await this._popupNavigator.prepare({popupWindowFeatures:r,popupWindowTarget:n,popupSignal:a,popupAbortOnClose:o}),d=await this._signin({request_type:"si:p",redirect_uri:l,display:"popup",dpopJkt:s,...c},h);return d&&(d.profile&&d.profile.sub?i.info("success, signed in subject",d.profile.sub):i.info("no subject")),d}async signinPopupCallback(e=window.location.href,t=!1){let s=this._logger.create("signinPopupCallback");await this._popupNavigator.callback(e,{keepOpen:t}),s.info("success")}async signinSilent(e={}){var t,s;let i,r,n=this._logger.create("signinSilent"),{silentRequestTimeoutInSeconds:a,...o}=e,c=await this._loadUser();if(!e.forceIframeAuth&&(null==c?void 0:c.refresh_token)){n.debug("using refresh token");let e=new et(c);return await this._useRefreshToken({state:e,redirect_uri:o.redirect_uri,resource:o.resource,extraTokenParams:o.extraTokenParams,timeoutInSeconds:a})}(null==(t=this.settings.dpop)?void 0:t.bind_authorization_code)&&(i=await this.generateDPoPJkt(this.settings.dpop));let l=this.settings.silent_redirect_uri;l||n.throw(Error("No silent_redirect_uri configured")),c&&this.settings.validateSubOnSilentRenew&&(n.debug("subject prior to silent renew:",c.profile.sub),r=c.profile.sub);let h=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:a});return(c=await this._signin({request_type:"si:s",redirect_uri:l,prompt:"none",id_token_hint:this.settings.includeIdTokenInSilentRenew?null==c?void 0:c.id_token:void 0,dpopJkt:i,...o},h,r))&&((null==(s=c.profile)?void 0:s.sub)?n.info("success, signed in subject",c.profile.sub):n.info("no subject")),c}async _useRefreshToken(e){let t=await this._client.useRefreshToken({timeoutInSeconds:this.settings.silentRequestTimeoutInSeconds,...e}),s=new W({...e.state,...t});return await this.storeUser(s),await this._events.load(s),s}async signinSilentCallback(e=window.location.href){let t=this._logger.create("signinSilentCallback");await this._iframeNavigator.callback(e),t.info("success")}async signinCallback(e=window.location.href){let{state:t}=await this._client.readSigninResponseState(e);switch(t.request_type){case"si:r":return await this.signinRedirectCallback(e);case"si:p":await this.signinPopupCallback(e);break;case"si:s":await this.signinSilentCallback(e);break;default:throw Error("invalid response_type in state")}}async signoutCallback(e=window.location.href,t=!1){let{state:s}=await this._client.readSignoutResponseState(e);if(s)switch(s.request_type){case"so:r":return await this.signoutRedirectCallback(e);case"so:p":await this.signoutPopupCallback(e,t);break;case"so:s":await this.signoutSilentCallback(e);break;default:throw Error("invalid response_type in state")}}async querySessionStatus(e={}){let t=this._logger.create("querySessionStatus"),{silentRequestTimeoutInSeconds:s,...i}=e,r=this.settings.silent_redirect_uri;r||t.throw(Error("No silent_redirect_uri configured"));let n=await this._loadUser(),a=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:s}),o=await this._signinStart({request_type:"si:s",redirect_uri:r,prompt:"none",id_token_hint:this.settings.includeIdTokenInSilentRenew?null==n?void 0:n.id_token:void 0,response_type:this.settings.query_status_response_type,scope:"openid",skipUserInfo:!0,...i},a);try{let e=await this._client.processSigninResponse(o.url,{});if(t.debug("got signin response"),e.session_state&&e.profile.sub)return t.info("success for subject",e.profile.sub),{session_state:e.session_state,sub:e.profile.sub};return t.info("success, user not authenticated"),null}catch(e){if(this.settings.monitorAnonymousSession&&e instanceof f)switch(e.error){case"login_required":case"consent_required":case"interaction_required":case"account_selection_required":return t.info("success for anonymous user"),{session_state:e.session_state}}throw e}}async _signin(e,t,s){let i=await this._signinStart(e,t);return await this._signinEnd(i.url,s)}async _signinStart(e,t){let s=this._logger.create("_signinStart");try{let i=await this._client.createSigninRequest(e);return s.debug("got signin request"),await t.navigate({url:i.url,state:i.state.id,response_mode:i.state.response_mode,scriptOrigin:this.settings.iframeScriptOrigin})}catch(e){throw s.debug("error after preparing navigator, closing navigator window"),t.close(),e}}async _signinEnd(e,t){let s=this._logger.create("_signinEnd"),i=await this._client.processSigninResponse(e,{});return s.debug("got signin response"),await this._buildUser(i,t)}async _buildUser(e,t){let s=this._logger.create("_buildUser"),i=new W(e);if(t){if(t!==i.profile.sub)throw s.debug("current user does not match user returned from signin. sub from signin:",i.profile.sub),new f({...e,error:"login_required"});s.debug("current user matches user returned from signin")}return await this.storeUser(i),s.debug("user stored"),await this._events.load(i),i}async signoutRedirect(e={}){let t=this._logger.create("signoutRedirect"),{redirectMethod:s,...i}=e,r=await this._redirectNavigator.prepare({redirectMethod:s});await this._signoutStart({request_type:"so:r",post_logout_redirect_uri:this.settings.post_logout_redirect_uri,...i},r),t.info("success")}async signoutRedirectCallback(e=window.location.href){let t=this._logger.create("signoutRedirectCallback"),s=await this._signoutEnd(e);return t.info("success"),s}async signoutPopup(e={}){let t=this._logger.create("signoutPopup"),{popupWindowFeatures:s,popupWindowTarget:i,popupSignal:r,...n}=e,a=this.settings.popup_post_logout_redirect_uri,o=await this._popupNavigator.prepare({popupWindowFeatures:s,popupWindowTarget:i,popupSignal:r});await this._signout({request_type:"so:p",post_logout_redirect_uri:a,state:null==a?void 0:{},...n},o),t.info("success")}async signoutPopupCallback(e=window.location.href,t=!1){let s=this._logger.create("signoutPopupCallback");await this._popupNavigator.callback(e,{keepOpen:t}),s.info("success")}async _signout(e,t){let s=await this._signoutStart(e,t);return await this._signoutEnd(s.url)}async _signoutStart(e={},t){var s;let i=this._logger.create("_signoutStart");try{let r=await this._loadUser();i.debug("loaded current user from storage"),this.settings.revokeTokensOnSignout&&await this._revokeInternal(r);let n=e.id_token_hint||r&&r.id_token;n&&(i.debug("setting id_token_hint in signout request"),e.id_token_hint=n),await this.removeUser(),i.debug("user removed, creating signout request");let a=await this._client.createSignoutRequest(e);return i.debug("got signout request"),await t.navigate({url:a.url,state:null==(s=a.state)?void 0:s.id,scriptOrigin:this.settings.iframeScriptOrigin})}catch(e){throw i.debug("error after preparing navigator, closing navigator window"),t.close(),e}}async _signoutEnd(e){let t=this._logger.create("_signoutEnd"),s=await this._client.processSignoutResponse(e);return t.debug("got signout response"),s}async signoutSilent(e={}){var t;let s=this._logger.create("signoutSilent"),{silentRequestTimeoutInSeconds:i,...r}=e,n=this.settings.includeIdTokenInSilentSignout?null==(t=await this._loadUser())?void 0:t.id_token:void 0,a=this.settings.popup_post_logout_redirect_uri,o=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:i});await this._signout({request_type:"so:s",post_logout_redirect_uri:a,id_token_hint:n,...r},o),s.info("success")}async signoutSilentCallback(e=window.location.href){let t=this._logger.create("signoutSilentCallback");await this._iframeNavigator.callback(e),t.info("success")}async revokeTokens(e){let t=await this._loadUser();await this._revokeInternal(t,e)}async _revokeInternal(e,t=this.settings.revokeTokenTypes){let s=this._logger.create("_revokeInternal");if(!e)return;let i=t.filter(t=>"string"==typeof e[t]);if(!i.length)return void s.debug("no need to revoke due to no token(s)");for(let t of i)await this._client.revokeToken(e[t],t),s.info(`${t} revoked successfully`),"access_token"!==t&&(e[t]=null);await this.storeUser(e),s.debug("user stored"),await this._events.load(e)}startSilentRenew(){this._logger.create("startSilentRenew"),this._silentRenewService.start()}stopSilentRenew(){this._silentRenewService.stop()}get _userStoreKey(){return`user:${this.settings.authority}:${this.settings.client_id}`}async _loadUser(){let e=this._logger.create("_loadUser"),t=await this.settings.userStore.get(this._userStoreKey);return t?(e.debug("user storageString loaded"),W.fromStorageString(t)):(e.debug("no user storageString"),null)}async storeUser(e){let t=this._logger.create("storeUser");if(e){t.debug("storing user");let s=e.toStorageString();await this.settings.userStore.set(this._userStoreKey,s)}else this._logger.debug("removing user"),await this.settings.userStore.remove(this._userStoreKey),this.settings.dpop&&await this.settings.dpop.store.remove(this.settings.client_id)}async clearStaleState(){await this._client.clearStaleState()}async dpopProof(e,t,s,i){var r,n;let a=await (null==(n=null==(r=this.settings.dpop)?void 0:r.store)?void 0:n.get(this.settings.client_id));if(a)return await g.generateDPoPProof({url:e,accessToken:null==t?void 0:t.access_token,httpMethod:s,keyPair:a.keys,nonce:i})}async generateDPoPJkt(e){let t=await e.store.get(this.settings.client_id);return t||(t=new $(await g.generateDPoPKeys()),await e.store.set(this.settings.client_id,t)),await g.generateDPoPJkt(t.keys)}}},23675:(e,t,s)=>{var i=s(84675);s.o(i,"useParams")&&s.d(t,{useParams:function(){return i.useParams}}),s.o(i,"usePathname")&&s.d(t,{usePathname:function(){return i.usePathname}}),s.o(i,"useRouter")&&s.d(t,{useRouter:function(){return i.useRouter}}),s.o(i,"useSearchParams")&&s.d(t,{useSearchParams:function(){return i.useSearchParams}})}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[58262],{5725:(e,t,r)=>{r.d(t,{b:()=>u});var n=r(1856),a=r(93367),o=r(90508),l="horizontal",i=["horizontal","vertical"],c=n.forwardRef((e,t)=>{var r;let{decorative:n,orientation:c=l,...u}=e,d=(r=c,i.includes(r))?c:l;return(0,o.jsx)(a.sG.div,{"data-orientation":d,...n?{role:"none"}:{"aria-orientation":"vertical"===d?d:void 0,role:"separator"},...u,ref:t})});c.displayName="Separator";var u=c},6985:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},7977:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("sliders-horizontal",[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]])},14741:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("ban",[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]])},19327:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("minimize-2",[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]])},22081:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return c}});let n=r(90508),a=r(1856),o=r(38878);function l(e){return{default:e&&"default"in e?e.default:e}}r(23667);let i={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},c=function(e){let t={...i,...e},r=(0,a.lazy)(()=>t.loader().then(l)),c=t.loading;function u(e){let l=c?(0,n.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,i=!t.ssr||!!t.loading,u=i?a.Suspense:a.Fragment,d=t.ssr?(0,n.jsxs)(n.Fragment,{children:[null,(0,n.jsx)(r,{...e})]}):(0,n.jsx)(o.BailoutToCSR,{reason:"next/dynamic",children:(0,n.jsx)(r,{...e})});return(0,n.jsx)(u,{...i?{fallback:l}:{},children:d})}return u.displayName="LoadableComponent",u}},23217:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("square-check-big",[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},23667:(e,t,r)=>{function n(e){let{moduleIds:t}=e;return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return n}}),r(90508),r(38129),r(66516),r(83745)},26076:(e,t,r)=>{function n(e,t){return e.parent===t.parent?1:2}function a(e){var t=e.children;return t?t[0]:e.t}function o(e){var t=e.children;return t?t[t.length-1]:e.t}function l(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function i(){var e=n,t=1,r=1,i=null;function c(n){var a=function(e){for(var t,r,n,a,o,i=new l(e,0),c=[i];t=c.pop();)if(n=t._.children)for(t.children=Array(o=n.length),a=o-1;a>=0;--a)c.push(r=t.children[a]=new l(n[a],a)),r.parent=t;return(i.parent=new l(null,0)).children=[i],i}(n);if(a.eachAfter(u),a.parent.m=-a.z,a.eachBefore(d),i)n.eachBefore(s);else{var o=n,c=n,p=n;n.eachBefore(function(e){e.x<o.x&&(o=e),e.x>c.x&&(c=e),e.depth>p.depth&&(p=e)});var h=o===c?1:e(o,c)/2,f=h-o.x,y=t/(c.x+h+f),v=r/(p.depth||1);n.eachBefore(function(e){e.x=(e.x+f)*y,e.y=e.depth*v})}return n}function u(t){var r=t.children,n=t.parent.children,l=t.i?n[t.i-1]:null;if(r){!function(e){for(var t,r=0,n=0,a=e.children,o=a.length;--o>=0;)t=a[o],t.z+=r,t.m+=r,r+=t.s+(n+=t.c)}(t);var i=(r[0].z+r[r.length-1].z)/2;l?(t.z=l.z+e(t._,l._),t.m=t.z-i):t.z=i}else l&&(t.z=l.z+e(t._,l._));t.parent.A=function(t,r,n){if(r){for(var l,i,c,u=t,d=t,s=r,p=u.parent.children[0],h=u.m,f=d.m,y=s.m,v=p.m;s=o(s),u=a(u),s&&u;)p=a(p),(d=o(d)).a=t,(c=s.z+y-u.z-h+e(s._,u._))>0&&(!function(e,t,r){var n=r/(t.i-e.i);t.c-=n,t.s+=r,e.c+=n,t.z+=r,t.m+=r}((l=s,i=n,l.a.parent===t.parent?l.a:i),t,c),h+=c,f+=c),y+=s.m,h+=u.m,v+=p.m,f+=d.m;s&&!o(d)&&(d.t=s,d.m+=y-f),u&&!a(p)&&(p.t=u,p.m+=h-v,n=t)}return n}(t,l,t.parent.A||n[0])}function d(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function s(e){e.x*=t,e.y=e.depth*r}return c.separation=function(t){return arguments.length?(e=t,c):e},c.size=function(e){return arguments.length?(i=!1,t=+e[0],r=+e[1],c):i?null:[t,r]},c.nodeSize=function(e){return arguments.length?(i=!0,t=+e[0],r=+e[1],c):i?[t,r]:null},c}r.d(t,{A:()=>i}),l.prototype=Object.create(r(89929).bP.prototype)},29767:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]])},38878:(e,t,r)=>{function n(e){let{reason:t,children:r}=e;return r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return n}}),r(52330)},45841:(e,t,r)=>{r.r(t),r.d(t,{Arrow:()=>U,Content:()=>Y,Portal:()=>W,Provider:()=>V,Root:()=>F,Tooltip:()=>_,TooltipArrow:()=>G,TooltipContent:()=>S,TooltipPortal:()=>O,TooltipProvider:()=>C,TooltipTrigger:()=>P,Trigger:()=>X,createTooltipScope:()=>m});var n=r(1856),a=r(33328),o=r(34124),l=r(21032),i=r(63569),c=r(40577),u=r(67221),d=r(17533),s=r(19900),p=r(93367),h=r(54154),f=r(66249),y=r(78134),v=r(90508),[b,m]=(0,l.A)("Tooltip",[u.Bk]),x=(0,u.Bk)(),g="TooltipProvider",k="tooltip.open",[w,j]=b(g),C=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:a=300,disableHoverableContent:o=!1,children:l}=e,i=n.useRef(!0),c=n.useRef(!1),u=n.useRef(0);return n.useEffect(()=>{let e=u.current;return()=>window.clearTimeout(e)},[]),(0,v.jsx)(w,{scope:t,isOpenDelayedRef:i,delayDuration:r,onOpen:n.useCallback(()=>{window.clearTimeout(u.current),i.current=!1},[]),onClose:n.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>i.current=!0,a)},[a]),isPointerInTransitRef:c,onPointerInTransitChange:n.useCallback(e=>{c.current=e},[]),disableHoverableContent:o,children:l})};C.displayName=g;var M="Tooltip",[T,A]=b(M),_=e=>{let{__scopeTooltip:t,children:r,open:a,defaultOpen:o,onOpenChange:l,disableHoverableContent:i,delayDuration:d}=e,s=j(M,e.__scopeTooltip),p=x(t),[h,y]=n.useState(null),b=(0,c.B)(),m=n.useRef(0),g=null!=i?i:s.disableHoverableContent,w=null!=d?d:s.delayDuration,C=n.useRef(!1),[A,_]=(0,f.i)({prop:a,defaultProp:null!=o&&o,onChange:e=>{e?(s.onOpen(),document.dispatchEvent(new CustomEvent(k))):s.onClose(),null==l||l(e)},caller:M}),E=n.useMemo(()=>A?C.current?"delayed-open":"instant-open":"closed",[A]),P=n.useCallback(()=>{window.clearTimeout(m.current),m.current=0,C.current=!1,_(!0)},[_]),z=n.useCallback(()=>{window.clearTimeout(m.current),m.current=0,_(!1)},[_]),R=n.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>{C.current=!0,_(!0),m.current=0},w)},[w,_]);return n.useEffect(()=>()=>{m.current&&(window.clearTimeout(m.current),m.current=0)},[]),(0,v.jsx)(u.bL,{...p,children:(0,v.jsx)(T,{scope:t,contentId:b,open:A,stateAttribute:E,trigger:h,onTriggerChange:y,onTriggerEnter:n.useCallback(()=>{s.isOpenDelayedRef.current?R():P()},[s.isOpenDelayedRef,R,P]),onTriggerLeave:n.useCallback(()=>{g?z():(window.clearTimeout(m.current),m.current=0)},[z,g]),onOpen:P,onClose:z,disableHoverableContent:g,children:r})})};_.displayName=M;var E="TooltipTrigger",P=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...l}=e,i=A(E,r),c=j(E,r),d=x(r),s=n.useRef(null),h=(0,o.s)(t,s,i.onTriggerChange),f=n.useRef(!1),y=n.useRef(!1),b=n.useCallback(()=>f.current=!1,[]);return n.useEffect(()=>()=>document.removeEventListener("pointerup",b),[b]),(0,v.jsx)(u.Mz,{asChild:!0,...d,children:(0,v.jsx)(p.sG.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...l,ref:h,onPointerMove:(0,a.mK)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(y.current||c.isPointerInTransitRef.current||(i.onTriggerEnter(),y.current=!0))}),onPointerLeave:(0,a.mK)(e.onPointerLeave,()=>{i.onTriggerLeave(),y.current=!1}),onPointerDown:(0,a.mK)(e.onPointerDown,()=>{i.open&&i.onClose(),f.current=!0,document.addEventListener("pointerup",b,{once:!0})}),onFocus:(0,a.mK)(e.onFocus,()=>{f.current||i.onOpen()}),onBlur:(0,a.mK)(e.onBlur,i.onClose),onClick:(0,a.mK)(e.onClick,i.onClose)})})});P.displayName=E;var z="TooltipPortal",[R,L]=b(z,{forceMount:void 0}),O=e=>{let{__scopeTooltip:t,forceMount:r,children:n,container:a}=e,o=A(z,t);return(0,v.jsx)(R,{scope:t,forceMount:r,children:(0,v.jsx)(s.C,{present:r||o.open,children:(0,v.jsx)(d.Portal,{asChild:!0,container:a,children:n})})})};O.displayName=z;var I="TooltipContent",S=n.forwardRef((e,t)=>{let r=L(I,e.__scopeTooltip),{forceMount:n=r.forceMount,side:a="top",...o}=e,l=A(I,e.__scopeTooltip);return(0,v.jsx)(s.C,{present:n||l.open,children:l.disableHoverableContent?(0,v.jsx)(H,{side:a,...o,ref:t}):(0,v.jsx)(D,{side:a,...o,ref:t})})}),D=n.forwardRef((e,t)=>{let r=A(I,e.__scopeTooltip),a=j(I,e.__scopeTooltip),l=n.useRef(null),i=(0,o.s)(t,l),[c,u]=n.useState(null),{trigger:d,onClose:s}=r,p=l.current,{onPointerInTransitChange:h}=a,f=n.useCallback(()=>{u(null),h(!1)},[h]),y=n.useCallback((e,t)=>{let r=e.currentTarget,n={x:e.clientX,y:e.clientY},a=function(e,t){let r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),a=Math.abs(t.right-e.x),o=Math.abs(t.left-e.x);switch(Math.min(r,n,a,o)){case o:return"left";case a:return"right";case r:return"top";case n:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());u(function(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let r=0;r<e.length;r++){let n=e[r];for(;t.length>=2;){let e=t[t.length-1],r=t[t.length-2];if((e.x-r.x)*(n.y-r.y)>=(e.y-r.y)*(n.x-r.x))t.pop();else break}t.push(n)}t.pop();let r=[];for(let t=e.length-1;t>=0;t--){let n=e[t];for(;r.length>=2;){let e=r[r.length-1],t=r[r.length-2];if((e.x-t.x)*(n.y-t.y)>=(e.y-t.y)*(n.x-t.x))r.pop();else break}r.push(n)}return(r.pop(),1===t.length&&1===r.length&&t[0].x===r[0].x&&t[0].y===r[0].y)?t:t.concat(r)}(t)}([...function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r})}return n}(n,a),...function(e){let{top:t,right:r,bottom:n,left:a}=e;return[{x:a,y:t},{x:r,y:t},{x:r,y:n},{x:a,y:n}]}(t.getBoundingClientRect())])),h(!0)},[h]);return n.useEffect(()=>()=>f(),[f]),n.useEffect(()=>{if(d&&p){let e=e=>y(e,p),t=e=>y(e,d);return d.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{d.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[d,p,y,f]),n.useEffect(()=>{if(c){let e=e=>{let t=e.target,r={x:e.clientX,y:e.clientY},n=(null==d?void 0:d.contains(t))||(null==p?void 0:p.contains(t)),a=!function(e,t){let{x:r,y:n}=e,a=!1;for(let e=0,o=t.length-1;e<t.length;o=e++){let l=t[e],i=t[o],c=l.x,u=l.y,d=i.x,s=i.y;u>n!=s>n&&r<(d-c)*(n-u)/(s-u)+c&&(a=!a)}return a}(r,c);n?f():a&&(f(),s())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[d,p,c,s,f]),(0,v.jsx)(H,{...e,ref:i})}),[N,q]=b(M,{isInside:!1}),B=(0,h.Dc)("TooltipContent"),H=n.forwardRef((e,t)=>{let{__scopeTooltip:r,children:a,"aria-label":o,onEscapeKeyDown:l,onPointerDownOutside:c,...d}=e,s=A(I,r),p=x(r),{onClose:h}=s;return n.useEffect(()=>(document.addEventListener(k,h),()=>document.removeEventListener(k,h)),[h]),n.useEffect(()=>{if(s.trigger){let e=e=>{let t=e.target;(null==t?void 0:t.contains(s.trigger))&&h()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[s.trigger,h]),(0,v.jsx)(i.qW,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:h,children:(0,v.jsxs)(u.UC,{"data-state":s.stateAttribute,...p,...d,ref:t,style:{...d.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,v.jsx)(B,{children:a}),(0,v.jsx)(N,{scope:r,isInside:!0,children:(0,v.jsx)(y.bL,{id:s.contentId,role:"tooltip",children:o||a})})]})})});S.displayName=I;var K="TooltipArrow",G=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...n}=e,a=x(r);return q(K,r).isInside?null:(0,v.jsx)(u.i3,{...a,...n,ref:t})});G.displayName=K;var V=C,F=_,X=P,W=O,Y=S,U=G},48127:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("corner-down-right",[["path",{d:"m15 10 5 5-5 5",key:"qqa56n"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12",key:"z08zvw"}]])},49889:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(32728)._(r(22081));function a(e,t){var r;let a={};"function"==typeof e&&(a.loader=e);let o={...a,...t};return(0,n.default)({...o,modules:null==(r=o.loadableGenerated)?void 0:r.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},53881:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("corner-left-up",[["path",{d:"M14 9 9 4 4 9",key:"1af5af"}],["path",{d:"M20 20h-7a4 4 0 0 1-4-4V4",key:"1blwi3"}]])},59224:(e,t,r)=>{r.d(t,{default:()=>a.a});var n=r(49889),a=r.n(n)},63117:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bindSnapshot:function(){return l},createAsyncLocalStorage:function(){return o},createSnapshot:function(){return i}});let r=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class n{disable(){throw r}getStore(){}run(){throw r}exit(){throw r}enterWith(){throw r}static bind(e){return e}}let a="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function o(){return a?new a:new n}function l(e){return a?a.bind(e):n.bind(e)}function i(){return a?a.snapshot():function(e,...t){return e(...t)}}},63273:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]])},64131:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("git-fork",[["circle",{cx:"12",cy:"18",r:"3",key:"1mpf1b"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["path",{d:"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9",key:"1uq4wg"}],["path",{d:"M12 12v3",key:"158kv8"}]])},66516:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=r(92919)},69443:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("message-square-text",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M7 11h10",key:"1twpyw"}],["path",{d:"M7 15h6",key:"d9of3u"}],["path",{d:"M7 7h8",key:"af5zfr"}]])},70633:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},71921:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]])},78948:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},79834:(e,t,r)=>{r.r(t),r.d(t,{Content:()=>z,List:()=>E,Root:()=>_,Tabs:()=>x,TabsContent:()=>M,TabsList:()=>k,TabsTrigger:()=>j,Trigger:()=>P,createTabsScope:()=>y});var n=r(1856),a=r(33328),o=r(21032),l=r(94782),i=r(19900),c=r(93367),u=r(72599),d=r(66249),s=r(40577),p=r(90508),h="Tabs",[f,y]=(0,o.A)(h,[l.RG]),v=(0,l.RG)(),[b,m]=f(h),x=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:a,defaultValue:o,orientation:l="horizontal",dir:i,activationMode:f="automatic",...y}=e,v=(0,u.jH)(i),[m,x]=(0,d.i)({prop:n,onChange:a,defaultProp:null!=o?o:"",caller:h});return(0,p.jsx)(b,{scope:r,baseId:(0,s.B)(),value:m,onValueChange:x,orientation:l,dir:v,activationMode:f,children:(0,p.jsx)(c.sG.div,{dir:v,"data-orientation":l,...y,ref:t})})});x.displayName=h;var g="TabsList",k=n.forwardRef((e,t)=>{let{__scopeTabs:r,loop:n=!0,...a}=e,o=m(g,r),i=v(r);return(0,p.jsx)(l.bL,{asChild:!0,...i,orientation:o.orientation,dir:o.dir,loop:n,children:(0,p.jsx)(c.sG.div,{role:"tablist","aria-orientation":o.orientation,...a,ref:t})})});k.displayName=g;var w="TabsTrigger",j=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,disabled:o=!1,...i}=e,u=m(w,r),d=v(r),s=T(u.baseId,n),h=A(u.baseId,n),f=n===u.value;return(0,p.jsx)(l.q7,{asChild:!0,...d,focusable:!o,active:f,children:(0,p.jsx)(c.sG.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":h,"data-state":f?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s,...i,ref:t,onMouseDown:(0,a.mK)(e.onMouseDown,e=>{o||0!==e.button||!1!==e.ctrlKey?e.preventDefault():u.onValueChange(n)}),onKeyDown:(0,a.mK)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&u.onValueChange(n)}),onFocus:(0,a.mK)(e.onFocus,()=>{let e="manual"!==u.activationMode;f||o||!e||u.onValueChange(n)})})})});j.displayName=w;var C="TabsContent",M=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:a,forceMount:o,children:l,...u}=e,d=m(C,r),s=T(d.baseId,a),h=A(d.baseId,a),f=a===d.value,y=n.useRef(f);return n.useEffect(()=>{let e=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,p.jsx)(i.C,{present:o||f,children:r=>{let{present:n}=r;return(0,p.jsx)(c.sG.div,{"data-state":f?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":s,hidden:!n,id:h,tabIndex:0,...u,ref:t,style:{...e.style,animationDuration:y.current?"0s":void 0},children:n&&l})}})});function T(e,t){return"".concat(e,"-trigger-").concat(t)}function A(e,t){return"".concat(e,"-content-").concat(t)}M.displayName=C;var _=x,E=k,P=j,z=M},84052:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]])},90382:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},92919:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,r(63117).createAsyncLocalStorage)()},93333:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]])},95900:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("arrow-right-left",[["path",{d:"m16 3 4 4-4 4",key:"1x1c3m"}],["path",{d:"M20 7H4",key:"zbl0bi"}],["path",{d:"m8 21-4-4 4-4",key:"h9nckh"}],["path",{d:"M4 17h16",key:"g4d7ey"}]])},98861:(e,t,r)=>{r.r(t),r.d(t,{Checkbox:()=>k,CheckboxIndicator:()=>j,Indicator:()=>j,Root:()=>k,createCheckboxScope:()=>y,unstable_BubbleInput:()=>M,unstable_CheckboxBubbleInput:()=>M,unstable_CheckboxProvider:()=>m,unstable_CheckboxTrigger:()=>g,unstable_Provider:()=>m,unstable_Trigger:()=>g});var n=r(1856),a=r(34124),o=r(21032),l=r(33328),i=r(66249),c=r(72009),u=r(3705),d=r(19900),s=r(93367),p=r(90508),h="Checkbox",[f,y]=(0,o.A)(h),[v,b]=f(h);function m(e){let{__scopeCheckbox:t,checked:r,children:a,defaultChecked:o,disabled:l,form:c,name:u,onCheckedChange:d,required:s,value:f="on",internal_do_not_use_render:y}=e,[b,m]=(0,i.i)({prop:r,defaultProp:null!=o&&o,onChange:d,caller:h}),[x,g]=n.useState(null),[k,w]=n.useState(null),j=n.useRef(!1),C=!x||!!c||!!x.closest("form"),M={checked:b,disabled:l,setChecked:m,control:x,setControl:g,name:u,form:c,value:f,hasConsumerStoppedPropagationRef:j,required:s,defaultChecked:!T(o)&&o,isFormControl:C,bubbleInput:k,setBubbleInput:w};return(0,p.jsx)(v,{scope:t,...M,children:"function"==typeof y?y(M):a})}var x="CheckboxTrigger",g=n.forwardRef((e,t)=>{let{__scopeCheckbox:r,onKeyDown:o,onClick:i,...c}=e,{control:u,value:d,disabled:h,checked:f,required:y,setControl:v,setChecked:m,hasConsumerStoppedPropagationRef:g,isFormControl:k,bubbleInput:w}=b(x,r),j=(0,a.s)(t,v),C=n.useRef(f);return n.useEffect(()=>{let e=null==u?void 0:u.form;if(e){let t=()=>m(C.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[u,m]),(0,p.jsx)(s.sG.button,{type:"button",role:"checkbox","aria-checked":T(f)?"mixed":f,"aria-required":y,"data-state":A(f),"data-disabled":h?"":void 0,disabled:h,value:d,...c,ref:j,onKeyDown:(0,l.mK)(o,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,l.mK)(i,e=>{m(e=>!!T(e)||!e),w&&k&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())})})});g.displayName=x;var k=n.forwardRef((e,t)=>{let{__scopeCheckbox:r,name:n,checked:a,defaultChecked:o,required:l,disabled:i,value:c,onCheckedChange:u,form:d,...s}=e;return(0,p.jsx)(m,{__scopeCheckbox:r,checked:a,defaultChecked:o,disabled:i,required:l,onCheckedChange:u,name:n,form:d,value:c,internal_do_not_use_render:e=>{let{isFormControl:n}=e;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(g,{...s,ref:t,__scopeCheckbox:r}),n&&(0,p.jsx)(M,{__scopeCheckbox:r})]})}})});k.displayName=h;var w="CheckboxIndicator",j=n.forwardRef((e,t)=>{let{__scopeCheckbox:r,forceMount:n,...a}=e,o=b(w,r);return(0,p.jsx)(d.C,{present:n||T(o.checked)||!0===o.checked,children:(0,p.jsx)(s.sG.span,{"data-state":A(o.checked),"data-disabled":o.disabled?"":void 0,...a,ref:t,style:{pointerEvents:"none",...e.style}})})});j.displayName=w;var C="CheckboxBubbleInput",M=n.forwardRef((e,t)=>{let{__scopeCheckbox:r,...o}=e,{control:l,hasConsumerStoppedPropagationRef:i,checked:d,defaultChecked:h,required:f,disabled:y,name:v,value:m,form:x,bubbleInput:g,setBubbleInput:k}=b(C,r),w=(0,a.s)(t,k),j=(0,c.Z)(d),M=(0,u.X)(l);n.useEffect(()=>{if(!g)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!i.current;if(j!==d&&e){let r=new Event("click",{bubbles:t});g.indeterminate=T(d),e.call(g,!T(d)&&d),g.dispatchEvent(r)}},[g,j,d,i]);let A=n.useRef(!T(d)&&d);return(0,p.jsx)(s.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:null!=h?h:A.current,required:f,disabled:y,name:v,value:m,form:x,...o,tabIndex:-1,ref:w,style:{...o.style,...M,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function T(e){return"indeterminate"===e}function A(e){return T(e)?"indeterminate":e?"checked":"unchecked"}M.displayName=C}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[68255],{5425:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]])},10263:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]])},17730:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},23217:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("square-check-big",[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},23675:(e,t,a)=>{var r=a(84675);a.o(r,"useParams")&&a.d(t,{useParams:function(){return r.useParams}}),a.o(r,"usePathname")&&a.d(t,{usePathname:function(){return r.usePathname}}),a.o(r,"useRouter")&&a.d(t,{useRouter:function(){return r.useRouter}}),a.o(r,"useSearchParams")&&a.d(t,{useSearchParams:function(){return r.useSearchParams}})},25373:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},29767:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]])},38476:(e,t,a)=>{a.r(t),a.d(t,{Collapsible:()=>x,CollapsibleContent:()=>w,CollapsibleTrigger:()=>b,Content:()=>j,Root:()=>M,Trigger:()=>N,createCollapsibleScope:()=>y});var r=a(1856),n=a(33328),l=a(21032),o=a(66249),i=a(99457),d=a(34124),s=a(93367),u=a(19900),c=a(40577),p=a(90508),h="Collapsible",[f,y]=(0,l.A)(h),[m,v]=f(h),x=r.forwardRef((e,t)=>{let{__scopeCollapsible:a,open:n,defaultOpen:l,disabled:i,onOpenChange:d,...u}=e,[f,y]=(0,o.i)({prop:n,defaultProp:null!=l&&l,onChange:d,caller:h});return(0,p.jsx)(m,{scope:a,disabled:i,contentId:(0,c.B)(),open:f,onOpenToggle:r.useCallback(()=>y(e=>!e),[y]),children:(0,p.jsx)(s.sG.div,{"data-state":C(f),"data-disabled":i?"":void 0,...u,ref:t})})});x.displayName=h;var g="CollapsibleTrigger",b=r.forwardRef((e,t)=>{let{__scopeCollapsible:a,...r}=e,l=v(g,a);return(0,p.jsx)(s.sG.button,{type:"button","aria-controls":l.contentId,"aria-expanded":l.open||!1,"data-state":C(l.open),"data-disabled":l.disabled?"":void 0,disabled:l.disabled,...r,ref:t,onClick:(0,n.mK)(e.onClick,l.onOpenToggle)})});b.displayName=g;var k="CollapsibleContent",w=r.forwardRef((e,t)=>{let{forceMount:a,...r}=e,n=v(k,e.__scopeCollapsible);return(0,p.jsx)(u.C,{present:a||n.open,children:e=>{let{present:a}=e;return(0,p.jsx)(A,{...r,ref:t,present:a})}})});w.displayName=k;var A=r.forwardRef((e,t)=>{let{__scopeCollapsible:a,present:n,children:l,...o}=e,u=v(k,a),[c,h]=r.useState(n),f=r.useRef(null),y=(0,d.s)(t,f),m=r.useRef(0),x=m.current,g=r.useRef(0),b=g.current,w=u.open||c,A=r.useRef(w),M=r.useRef(void 0);return r.useEffect(()=>{let e=requestAnimationFrame(()=>A.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,i.N)(()=>{let e=f.current;if(e){M.current=M.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();m.current=t.height,g.current=t.width,A.current||(e.style.transitionDuration=M.current.transitionDuration,e.style.animationName=M.current.animationName),h(n)}},[u.open,n]),(0,p.jsx)(s.sG.div,{"data-state":C(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!w,...o,ref:y,style:{"--radix-collapsible-content-height":x?"".concat(x,"px"):void 0,"--radix-collapsible-content-width":b?"".concat(b,"px"):void 0,...e.style},children:w&&l})});function C(e){return e?"open":"closed"}var M=x,N=b,j=w},38931:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]])},51581:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("grid-2x2",[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 12h18",key:"1i2n21"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]])},55764:(e,t,a)=>{a.d(t,{C1:()=>b,bL:()=>g});var r=a(1856),n=a(90508),l=a(81597),o="Progress",[i,d]=function(e,t=[]){let a=[],l=()=>{let t=a.map(e=>r.createContext(e));return function(a){let n=a?.[e]||t;return r.useMemo(()=>({[`__scope${e}`]:{...a,[e]:n}}),[a,n])}};return l.scopeName=e,[function(t,l){let o=r.createContext(l);o.displayName=t+"Context";let i=a.length;a=[...a,l];let d=t=>{let{scope:a,children:l,...d}=t,s=a?.[e]?.[i]||o,u=r.useMemo(()=>d,Object.values(d));return(0,n.jsx)(s.Provider,{value:u,children:l})};return d.displayName=t+"Provider",[d,function(a,n){let d=n?.[e]?.[i]||o,s=r.useContext(d);if(s)return s;if(void 0!==l)return l;throw Error(`\`${a}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let a=()=>{let a=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=a.reduce((t,{useScope:a,scopeName:r})=>{let n=a(e)[`__scope${r}`];return{...t,...n}},{});return r.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return a.scopeName=t.scopeName,a}(l,...t)]}(o),[s,u]=i(o),c=r.forwardRef((e,t)=>{var a,r,o,i;let{__scopeProgress:d,value:u=null,max:c,getValueLabel:p=f,...h}=e;(c||0===c)&&!v(c)&&console.error((a="".concat(c),r="Progress","Invalid prop `max` of value `".concat(a,"` supplied to `").concat(r,"`. Only numbers greater than 0 are valid max values. Defaulting to `").concat(100,"`.")));let g=v(c)?c:100;null===u||x(u,g)||console.error((o="".concat(u),i="Progress","Invalid prop `value` of value `".concat(o,"` supplied to `").concat(i,"`. The `value` prop must be:\n - a positive number\n - less than the value passed to `max` (or ").concat(100," if no `max` prop is set)\n - `null` or `undefined` if the progress is indeterminate.\n\nDefaulting to `null`.")));let b=x(u,g)?u:null,k=m(b)?p(b,g):void 0;return(0,n.jsx)(s,{scope:d,value:b,max:g,children:(0,n.jsx)(l.sG.div,{"aria-valuemax":g,"aria-valuemin":0,"aria-valuenow":m(b)?b:void 0,"aria-valuetext":k,role:"progressbar","data-state":y(b,g),"data-value":null!=b?b:void 0,"data-max":g,...h,ref:t})})});c.displayName=o;var p="ProgressIndicator",h=r.forwardRef((e,t)=>{var a;let{__scopeProgress:r,...o}=e,i=u(p,r);return(0,n.jsx)(l.sG.div,{"data-state":y(i.value,i.max),"data-value":null!=(a=i.value)?a:void 0,"data-max":i.max,...o,ref:t})});function f(e,t){return"".concat(Math.round(e/t*100),"%")}function y(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function m(e){return"number"==typeof e}function v(e){return m(e)&&!isNaN(e)&&e>0}function x(e,t){return m(e)&&!isNaN(e)&&e<=t&&e>=0}h.displayName=p;var g=c,b=h},56770:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},62898:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])},81597:(e,t,a)=>{a.d(t,{sG:()=>p});var r=a(1856),n=a.t(r,2);a(38129);var l=a(34124),o=a(90508),i=Symbol.for("react.lazy"),d=n[" use ".trim().toString()];function s(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===i&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}var u=Symbol("radix.slottable");function c(e){return r.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===u}var p=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let a=function(e){let t=function(e){let t=r.forwardRef((e,t)=>{let{children:a,...n}=e;if(s(a)&&"function"==typeof d&&(a=d(a._payload)),r.isValidElement(a)){var o;let e,i,d=(o=a,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),s=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(n,a.props);return a.type!==r.Fragment&&(s.ref=t?(0,l.t)(t,d):d),r.cloneElement(a,s)}return r.Children.count(a)>1?r.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}(e),a=r.forwardRef((e,a)=>{let{children:n,...l}=e;s(n)&&"function"==typeof d&&(n=d(n._payload));let i=r.Children.toArray(n),u=i.find(c);if(u){let e=u.props.children,n=i.map(t=>t!==u?t:r.Children.count(e)>1?r.Children.only(null):r.isValidElement(e)?e.props.children:null);return(0,o.jsx)(t,{...l,ref:a,children:r.isValidElement(e)?r.cloneElement(e,void 0,n):null})}return(0,o.jsx)(t,{...l,ref:a,children:n})});return a.displayName=`${e}.Slot`,a}(`Primitive.${t}`),n=r.forwardRef((e,r)=>{let{asChild:n,...l}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,o.jsx)(n?a:t,{...l,ref:r})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{})},88634:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]])},95900:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(66206).A)("arrow-right-left",[["path",{d:"m16 3 4 4-4 4",key:"1x1c3m"}],["path",{d:"M20 7H4",key:"zbl0bi"}],["path",{d:"m8 21-4-4 4-4",key:"h9nckh"}],["path",{d:"M4 17h16",key:"g4d7ey"}]])}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[75752],{14554:(e,s,t)=>{t.d(s,{p:()=>r});var a=t(90508);t(1856);var n=t(24377);function r(e){let{className:s,type:t,...r}=e;return(0,a.jsx)("input",{type:t,"data-slot":"input",className:(0,n.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",s),...r})}},37750:(e,s,t)=>{t.d(s,{Y:()=>u});var a=t(90508),n=t(1856),r=t(39268),i=t(22922),l=t(60532),o=t(9160),d=t(67712),c=t(75427),m=t(83792);function u(e){let{onAgentCreated:s,createAgentAndKey:t,onClose:u,embedded:x=!1,submitLabel:p,submittingLabel:h}=e,g=(0,r.c)(),[f,b]=(0,n.useState)(""),[j,v]=(0,n.useState)("admin_agent"),[N,y]=(0,n.useState)(["admin_agent"]),[w,k]=(0,n.useState)([]),[C,_]=(0,n.useState)(""),[S,T]=(0,n.useState)(!1),[A,R]=(0,n.useState)(null),[I,L]=(0,n.useState)(!1),U=async e=>{if((e.preventDefault(),f)&&("custom"!==j||0!==w.length)){T(!0);try{let e=await t({name:f,roles:N,permissions:"custom"===j?w:[],persona:C||null});e.success&&e.key?(x||R(e.key),s({uuid:e.agentUuid||"",name:f,roles:N,permissions:"custom"===j?w:[]},e.key)):d.q.error("Failed to create API key:",e.error)}catch(e){d.q.error("Failed to create API key:",e)}finally{T(!1)}}},K=async e=>{try{await navigator.clipboard.writeText(e),L(!0),setTimeout(()=>L(!1),2e3)}catch(e){d.q.error("Failed to copy to clipboard:",e)}},P=()=>{b(""),v("admin_agent"),y(["admin_agent"]),k([]),_(""),R(null),null==u||u()};return A&&!x?(0,a.jsxs)("div",{className:"p-6",children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center gap-2 text-green-600",children:[(0,a.jsx)(l.A,{className:"h-5 w-5"}),(0,a.jsx)("span",{className:"font-medium",children:g("settings.apiKeyCreated")})]}),(0,a.jsx)("p",{className:"mb-4 text-sm text-muted-foreground",children:g("settings.apiKeyCreatedDesc")}),(0,a.jsxs)("div",{className:"mb-4 flex items-center gap-2",children:[(0,a.jsx)("code",{className:"flex-1 rounded bg-foreground px-3 py-2 font-mono text-sm text-background",children:A}),(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>K(A),children:g(I?"common.copied":"common.copy")})]}),(0,a.jsx)("p",{className:"mb-3 text-sm text-muted-foreground",children:g("settings.installGuideIntro")}),(0,a.jsx)("div",{className:"mb-4",children:(0,a.jsx)(m.Z,{apiKey:A})}),(0,a.jsx)(i.$,{onClick:P,className:"w-full",children:g("common.done")})]}):(0,a.jsxs)("form",{onSubmit:U,children:[!x&&(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-6 py-5",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-foreground",children:g("settings.createApiKey")}),u&&(0,a.jsx)(i.$,{type:"button",variant:"ghost",size:"icon",onClick:P,className:"h-8 w-8",children:(0,a.jsx)(o.A,{className:"h-4 w-4"})})]}),(0,a.jsx)("div",{className:x?void 0:"p-6",children:(0,a.jsx)(c.L,{name:f,onNameChange:b,preset:j,permissions:w,onPermissionsChange:function(e){v(e.preset),y(e.roles),k(e.permissions)},persona:C,onPersonaChange:_,nameInputId:"keyName",personaInputId:"create-agent-persona"})}),(0,a.jsxs)("div",{className:x?"flex justify-end gap-3 pt-2":"flex justify-end gap-3 border-t border-border px-6 py-4",children:[!x&&u&&(0,a.jsx)(i.$,{type:"button",variant:"outline",onClick:P,children:g("common.cancel")}),(0,a.jsx)(i.$,{type:"submit",disabled:!f||"custom"===j&&0===w.length||S,className:x?"w-full":void 0,size:x?"lg":"default",children:S?null!=h?h:g("settings.creating"):null!=p?p:g("settings.createApiKey")})]})]})}},39077:(e,s,t)=>{t.d(s,{S:()=>l});var a=t(90508);t(1856);var n=t(60532),r=t(98861),i=t(24377);function l(e){let{className:s,...t}=e;return(0,a.jsx)(r.Root,{"data-slot":"checkbox",className:(0,i.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...t,children:(0,a.jsx)(r.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:(0,a.jsx)(n.A,{className:"size-3.5"})})})}},39674:(e,s,t)=>{t.d(s,{Xi:()=>o,av:()=>d,j7:()=>l,tU:()=>i});var a=t(90508);t(1856);var n=t(79834),r=t(24377);function i(e){let{className:s,...t}=e;return(0,a.jsx)(n.Root,{"data-slot":"tabs",className:(0,r.cn)("flex flex-col gap-2",s),...t})}function l(e){let{className:s,...t}=e;return(0,a.jsx)(n.List,{"data-slot":"tabs-list",className:(0,r.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",s),...t})}function o(e){let{className:s,...t}=e;return(0,a.jsx)(n.Trigger,{"data-slot":"tabs-trigger",className:(0,r.cn)("data-[state=active]:bg-background data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...t})}function d(e){let{className:s,...t}=e;return(0,a.jsx)(n.Content,{"data-slot":"tabs-content",className:(0,r.cn)("flex-1 outline-none",s),...t})}},44775:(e,s,t)=>{t.d(s,{o:()=>a});let a={developer_agent:["idea:read","proposal:read","document:read","project:read","task:read","task:write"],pm_agent:["idea:read","idea:write","proposal:read","proposal:write","document:read","document:write","task:read","task:write","project:read","project:write"],admin_agent:["idea:read","idea:write","idea:admin","proposal:read","proposal:write","proposal:admin","document:read","document:write","document:admin","task:read","task:write","task:admin","project:read","project:write","project:admin"]}},45785:(e,s,t)=>{t.d(s,{I:()=>n});var a=t(52217);let n=(0,a.createServerReference)("404a31534d2c94b7dafe46209eda476999b435cbe0",a.callServer,void 0,a.findSourceMapURL,"createAgentAndKeyAction")},50006:(e,s,t)=>{t.d(s,{N:()=>r});var a=t(90508),n=t(97261);function r(e){let{code:s,language:t}=e,r="```".concat(t||"","\n").concat(s,"\n```");return(0,a.jsx)(n.MarkdownContent,{children:r})}},75427:(e,s,t)=>{t.d(s,{L:()=>f});var a=t(90508),n=t(1856),r=t(39268),i=t(14554),l=t(88064),o=t(15972),d=t(39077),c=t(91846),m=t(44775),u=t(93810);let x={admin_agent:"agent.permissions.presetAdmin",pm_agent:"agent.permissions.presetPm",developer_agent:"agent.permissions.presetDev",custom:"agent.permissions.presetCustom"},p={admin_agent:"agent.permissions.help.admin",pm_agent:"agent.permissions.help.pm",developer_agent:"agent.permissions.help.dev",custom:"agent.permissions.help.custom"},h=["admin_agent","pm_agent","developer_agent","custom"];function g(e){let{preset:s,permissions:t,onChange:n,readOnly:i=!1}=e,o=(0,r.c)(),g=null!=s?s:"custom",f=new Set("custom"===g?t:m.o[g]);return(0,a.jsxs)("div",{"data-testid":"agent-permission-picker",className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(l.J,{className:"text-[13px] font-medium",children:o("agent.permissions.title")}),(0,a.jsx)("p",{className:"text-muted-foreground text-xs",children:o("agent.permissions.description")})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(l.J,{htmlFor:"agent-permission-preset",children:o("agent.permissions.presetLabel")}),(0,a.jsxs)(c.l6,{value:g,onValueChange:function(e){if("custom"===e)return void n({preset:"custom",roles:[],permissions:Array.from(f)});e in m.o&&n({preset:e,roles:[e],permissions:[]})},disabled:i,children:[(0,a.jsx)(c.bq,{id:"agent-permission-preset",className:"w-full","aria-label":o("agent.permissions.presetLabel"),children:(0,a.jsx)(c.yv,{placeholder:o(x[g]),children:o(x[g])})}),(0,a.jsx)(c.gC,{children:h.map(e=>(0,a.jsx)(c.eb,{value:e,textValue:o(x[e]),children:(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 py-0.5",children:[(0,a.jsx)("span",{className:"text-sm font-semibold",children:o(x[e])}),(0,a.jsx)("span",{className:"text-muted-foreground text-xs",children:o(p[e])})]})},e))})]})]}),(0,a.jsxs)("div",{role:"grid","aria-label":o("agent.permissions.title"),className:"overflow-hidden rounded-md border",children:[(0,a.jsxs)("div",{role:"row",className:"bg-muted/50 text-muted-foreground grid grid-cols-[1.5fr_repeat(3,1fr)] items-center gap-2 px-4 py-2 text-xs font-medium",children:[(0,a.jsx)("div",{role:"columnheader",children:o("agent.permissions.resourceHeader")}),u.kl.map(e=>(0,a.jsx)("div",{role:"columnheader",className:"text-center",children:o("agent.permissions.actions.".concat(e))},e))]}),u.eZ.map(e=>(0,a.jsxs)("div",{role:"row",className:"border-t grid grid-cols-[1.5fr_repeat(3,1fr)] items-center gap-2 px-4 py-2 text-sm",children:[(0,a.jsx)("div",{role:"rowheader",className:"font-medium",children:o("agent.permissions.resources.".concat(e))}),u.kl.map(s=>{let t="".concat(e,":").concat(s),r="perm-".concat(e,"-").concat(s);return(0,a.jsx)("div",{role:"gridcell",className:"flex items-center justify-center",children:(0,a.jsx)(d.S,{id:r,checked:f.has(t),disabled:i,"aria-label":"".concat(o("agent.permissions.resources.".concat(e))," ").concat(o("agent.permissions.actions.".concat(s))),onCheckedChange:e=>{if(!i){let s=new Set(f);!0===e?s.add(t):s.delete(t),n({preset:"custom",roles:[],permissions:Array.from(s)})}}})},s)})]},e))]})]})]})}function f(e){let{name:s,onNameChange:t,preset:d,permissions:c,onPermissionsChange:u,persona:x,onPersonaChange:p,nameInputId:h="agent-form-name",personaInputId:f="agent-form-persona",readOnly:b=!1}=e,j=(0,r.c)(),v=(0,n.useMemo)(()=>"custom"===d?c:[...m.o[d]],[d,c]);return(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(l.J,{htmlFor:h,className:"text-[13px]",children:j("settings.name")}),(0,a.jsx)(i.p,{id:h,value:s,onChange:e=>t(e.target.value),placeholder:j("settings.namePlaceholder"),className:"border-[#E5E0D8]",required:!0,disabled:b})]}),(0,a.jsx)(g,{preset:d,permissions:v,onChange:u,readOnly:b}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(l.J,{htmlFor:f,className:"text-[13px]",children:j("settings.agentPersona")}),(0,a.jsx)(o.T,{id:f,value:x,onChange:e=>p(e.target.value),placeholder:j("settings.personaPlaceholder"),rows:4,disabled:b}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:j("settings.personaHint")})]})]})}},83792:(e,s,t)=>{t.d(s,{Z:()=>c});var a=t(90508),n=t(39268),r=t(48416),i=t(39674),l=t(81750),o=t(17730),d=t(50006);function c(e){let{apiKey:s}=e,t=(0,n.c)("onboarding"),c=window.location.origin,m=s||"<YOUR_API_KEY>";return(0,a.jsx)(r.Zp,{className:"w-full",children:(0,a.jsx)(r.Wu,{className:"p-6",children:(0,a.jsxs)(i.tU,{defaultValue:"claude-code",className:"w-full",children:[(0,a.jsxs)(i.j7,{className:"w-full",children:[(0,a.jsx)(i.Xi,{value:"claude-code",className:"flex-1",children:t("install.tabs.claudeCode")}),(0,a.jsx)(i.Xi,{value:"codex",className:"flex-1",children:t("install.tabs.codex")}),(0,a.jsx)(i.Xi,{value:"opencode",className:"flex-1",children:t("install.tabs.opencode")}),(0,a.jsx)(i.Xi,{value:"openclaw",className:"flex-1",children:t("install.tabs.openClaw")}),(0,a.jsx)(i.Xi,{value:"other",className:"flex-1",children:t("install.tabs.other")})]}),(0,a.jsxs)(i.av,{value:"claude-code",className:"mt-4 space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.claudeCode.step1Title")}),(0,a.jsx)(d.N,{language:"bash",code:'export CHORUS_URL="'.concat(c,'"\nexport CHORUS_API_KEY="').concat(m,'"')}),(0,a.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:t("install.claudeCode.step1Tip")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.claudeCode.step2Title")}),(0,a.jsx)(d.N,{language:"bash",code:"/plugin marketplace add Chorus-AIDLC/chorus\n/plugin install chorus@chorus-plugins"})]})]}),(0,a.jsxs)(i.av,{value:"codex",className:"mt-4 space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.codex.step1Title")}),(0,a.jsx)(d.N,{language:"bash",code:'export CHORUS_URL="'.concat(c,'"\nexport CHORUS_API_KEY="').concat(m,'"')}),(0,a.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:t("install.codex.step1Tip")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.codex.step2Title")}),(0,a.jsx)(d.N,{language:"bash",code:"curl -fsSL ".concat(c,"/install-codex.sh | bash")}),(0,a.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:t("install.codex.step2Tip")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.codex.step3Title")}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t("install.codex.step3Desc")})]})]}),(0,a.jsxs)(i.av,{value:"opencode",className:"mt-4 space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.opencode.step1Title")}),(0,a.jsx)(d.N,{language:"bash",code:'export CHORUS_URL="'.concat(c,'"\nexport CHORUS_API_KEY="').concat(m,'"')}),(0,a.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:t("install.opencode.step1Tip")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.opencode.step2Title")}),(0,a.jsx)(d.N,{language:"bash",code:"curl -fsSL ".concat(c,"/install-opencode.sh | bash")}),(0,a.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:t("install.opencode.step2Tip")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.opencode.step3Title")}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t("install.opencode.step3Desc")})]}),(0,a.jsxs)(l.Nt,{children:[(0,a.jsxs)(l.R6,{className:"flex w-full items-center gap-2 rounded-md border px-3 py-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors",children:[(0,a.jsx)(o.A,{className:"size-4 transition-transform duration-200 [[data-state=open]>&]:rotate-180"}),t("install.opencode.troubleshootingTitle")]}),(0,a.jsx)(l.Ke,{children:(0,a.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,a.jsxs)("div",{className:"rounded-md border border-amber-500/20 bg-amber-500/5 p-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:t("install.opencode.issueCache.title")}),(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:t("install.opencode.issueCache.fix")})]}),(0,a.jsxs)("div",{className:"rounded-md border border-amber-500/20 bg-amber-500/5 p-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:t("install.opencode.issueEnv.title")}),(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:t("install.opencode.issueEnv.fix")})]}),(0,a.jsxs)("div",{className:"rounded-md border border-amber-500/20 bg-amber-500/5 p-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:t("install.opencode.issueCheckin.title")}),(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:t("install.opencode.issueCheckin.fix")})]})]})})]})]}),(0,a.jsxs)(i.av,{value:"openclaw",className:"mt-4 space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.openClaw.step1Title")}),(0,a.jsx)(d.N,{language:"bash",code:"openclaw plugins install @chorus-aidlc/chorus-openclaw-plugin"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.openClaw.step2Title")}),(0,a.jsx)(d.N,{language:"json",code:'{\n "hooks": { "enabled": true, "token": "<your-token>" },\n "plugins": {\n "enabled": true,\n "entries": {\n "chorus-openclaw-plugin": {\n "enabled": true,\n "config": {\n "chorusUrl": "'.concat(c,'",\n "apiKey": "').concat(m,'",\n "autoStart": true\n }\n }\n }\n }\n}')})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.openClaw.step3Title")}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t("install.openClaw.step3Desc")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-foreground",children:t("install.openClaw.step4Title")}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t("install.openClaw.step4Desc")}),(0,a.jsx)(d.N,{code:"/chorus status"})]}),(0,a.jsxs)(l.Nt,{children:[(0,a.jsxs)(l.R6,{className:"flex w-full items-center gap-2 rounded-md border px-3 py-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors",children:[(0,a.jsx)(o.A,{className:"size-4 transition-transform duration-200 [[data-state=open]>&]:rotate-180"}),t("install.openClaw.troubleshootingTitle")]}),(0,a.jsx)(l.Ke,{children:(0,a.jsxs)("div",{className:"mt-2 rounded-md border border-amber-500/20 bg-amber-500/5 p-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:t("install.openClaw.troubleshootingError")}),(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:t("install.openClaw.troubleshootingFix")})]})})]})]}),(0,a.jsxs)(i.av,{value:"other",className:"mt-4 space-y-4",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t("install.other.description")}),(0,a.jsx)(d.N,{code:"Please install and configure the Chorus AI-DLC collaboration platform.\n\nChorus URL: ".concat(c,"\nAPI Key: ").concat(m,"\n\nRead the setup instructions from:\n").concat(c,'/skill/chorus/SKILL.md\n\nFollow the "Setup" section to configure the MCP server,\nthen call chorus_checkin() to verify the connection.')})]})]})})})}},88064:(e,s,t)=>{t.d(s,{J:()=>i});var a=t(90508);t(1856);var n=t(58057),r=t(24377);function i(e){let{className:s,...t}=e;return(0,a.jsx)(n.Root,{"data-slot":"label",className:(0,r.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",s),...t})}},93810:(e,s,t)=>{t.d(s,{eZ:()=>a,kl:()=>n,lp:()=>r});let a=["idea","proposal","document","task","project"],n=["read","write","admin"],r=a.flatMap(e=>n.map(s=>"".concat(e,":").concat(s)))}}]);