@aeolus-fleet/gateway 0.36.1 → 0.36.2

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 (876) hide show
  1. package/dist/adapters/fleet/active-ships.d.ts +8 -0
  2. package/dist/adapters/fleet/active-ships.js +22 -0
  3. package/dist/adapters/fleet/active-ships.js.map +1 -0
  4. package/dist/adapters/fleet/every-listed-ship.d.ts +21 -0
  5. package/dist/adapters/fleet/every-listed-ship.js +28 -0
  6. package/dist/adapters/fleet/every-listed-ship.js.map +1 -0
  7. package/dist/adapters/fleet/fleet-ships.d.ts +1 -3
  8. package/dist/adapters/fleet/fleet-ships.js +5 -22
  9. package/dist/adapters/fleet/fleet-ships.js.map +1 -1
  10. package/dist/adapters/fleet/rest-fleet-door.js +40 -6
  11. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  12. package/dist/adapters/http/party-sign-in-routes.d.ts +7 -0
  13. package/dist/adapters/http/party-sign-in-routes.js +18 -0
  14. package/dist/adapters/http/party-sign-in-routes.js.map +1 -1
  15. package/dist/adapters/http/person-tools.js +3 -2
  16. package/dist/adapters/http/person-tools.js.map +1 -1
  17. package/dist/adapters/http/slack-routes.d.ts +2 -0
  18. package/dist/adapters/http/slack-routes.js +12 -4
  19. package/dist/adapters/http/slack-routes.js.map +1 -1
  20. package/dist/adapters/mcp/mcp-servers.d.ts +8 -2
  21. package/dist/adapters/mcp/mcp-servers.js +8 -4
  22. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  23. package/dist/adapters/prisma/basket-entries.js +4 -2
  24. package/dist/adapters/prisma/basket-entries.js.map +1 -1
  25. package/dist/adapters/prisma/connected-chats.d.ts +4 -0
  26. package/dist/adapters/prisma/connected-chats.js +21 -0
  27. package/dist/adapters/prisma/connected-chats.js.map +1 -0
  28. package/dist/adapters/prisma/fleet-forgetter.js +1 -1
  29. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  30. package/dist/adapters/prisma/generated/browser.d.ts +6 -1
  31. package/dist/adapters/prisma/generated/client.d.ts +6 -1
  32. package/dist/adapters/prisma/generated/internal/class.d.ts +11 -0
  33. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  34. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  35. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +95 -1
  36. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +19 -1
  37. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  38. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +19 -0
  39. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +19 -1
  40. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  41. package/dist/adapters/prisma/generated/models/BasketEntry.d.ts +114 -18
  42. package/dist/adapters/prisma/generated/models/ItemOutcome.d.ts +91 -1
  43. package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +95 -2
  44. package/dist/adapters/prisma/generated/models/Party.d.ts +32 -1
  45. package/dist/adapters/prisma/generated/models/SlackLinkStep.d.ts +1005 -0
  46. package/dist/adapters/prisma/generated/models/SlackLinkStep.js +2 -0
  47. package/dist/adapters/prisma/generated/models/SlackLinkStep.js.map +1 -0
  48. package/dist/adapters/prisma/generated/models.d.ts +1 -0
  49. package/dist/adapters/prisma/item-outcomes.d.ts +6 -1
  50. package/dist/adapters/prisma/item-outcomes.js +19 -3
  51. package/dist/adapters/prisma/item-outcomes.js.map +1 -1
  52. package/dist/adapters/prisma/opened-deliveries.js +5 -0
  53. package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
  54. package/dist/adapters/prisma/party-store.js +4 -1
  55. package/dist/adapters/prisma/party-store.js.map +1 -1
  56. package/dist/adapters/prisma/slack-link-steps.d.ts +8 -0
  57. package/dist/adapters/prisma/slack-link-steps.js +28 -0
  58. package/dist/adapters/prisma/slack-link-steps.js.map +1 -0
  59. package/dist/adapters/prisma/slack-posts.js +4 -3
  60. package/dist/adapters/prisma/slack-posts.js.map +1 -1
  61. package/dist/adapters/slack/slack-messages.d.ts +2 -0
  62. package/dist/adapters/slack/slack-messages.js +124 -18
  63. package/dist/adapters/slack/slack-messages.js.map +1 -1
  64. package/dist/adapters/trpc/router.d.ts +54 -2
  65. package/dist/adapters/trpc/router.js +25 -1
  66. package/dist/adapters/trpc/router.js.map +1 -1
  67. package/dist/app.js +39 -13
  68. package/dist/app.js.map +1 -1
  69. package/dist/core/mcp-out/grant-calls.js +1 -1
  70. package/dist/core/mcp-out/grant-calls.js.map +1 -1
  71. package/dist/core/mcp-out/hand-call.js +1 -1
  72. package/dist/core/mcp-out/hand-call.js.map +1 -1
  73. package/dist/core/mcp-out/keep-server-title.d.ts +13 -0
  74. package/dist/core/mcp-out/keep-server-title.js +14 -0
  75. package/dist/core/mcp-out/keep-server-title.js.map +1 -0
  76. package/dist/core/mcp-out/ports.d.ts +10 -0
  77. package/dist/core/parties/approve-party.js +1 -1
  78. package/dist/core/parties/approve-party.js.map +1 -1
  79. package/dist/core/parties/party.d.ts +2 -0
  80. package/dist/core/parties/party.js.map +1 -1
  81. package/dist/core/parties/ports.d.ts +5 -0
  82. package/dist/core/party-grants/listing-connection.js +2 -2
  83. package/dist/core/party-grants/listing-connection.js.map +1 -1
  84. package/dist/core/party-grants/tell-sign-in-needed.d.ts +2 -0
  85. package/dist/core/party-grants/tell-sign-in-needed.js +16 -4
  86. package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -1
  87. package/dist/core/people/act-in-place.d.ts +42 -0
  88. package/dist/core/people/act-in-place.js +26 -0
  89. package/dist/core/people/act-in-place.js.map +1 -0
  90. package/dist/core/people/answer-delivery.js +13 -1
  91. package/dist/core/people/answer-delivery.js.map +1 -1
  92. package/dist/core/people/basket.d.ts +32 -10
  93. package/dist/core/people/basket.js +24 -6
  94. package/dist/core/people/basket.js.map +1 -1
  95. package/dist/core/people/count-basket.d.ts +4 -3
  96. package/dist/core/people/count-basket.js +9 -3
  97. package/dist/core/people/count-basket.js.map +1 -1
  98. package/dist/core/people/done-delivery.js +1 -1
  99. package/dist/core/people/done-delivery.js.map +1 -1
  100. package/dist/core/people/finish-own-step.js +2 -2
  101. package/dist/core/people/finish-own-step.js.map +1 -1
  102. package/dist/core/people/inbox-entry.d.ts +17 -1
  103. package/dist/core/people/inbox-entry.js +28 -1
  104. package/dist/core/people/inbox-entry.js.map +1 -1
  105. package/dist/core/people/item-job.d.ts +3 -1
  106. package/dist/core/people/item-job.js +5 -1
  107. package/dist/core/people/item-job.js.map +1 -1
  108. package/dist/core/people/item-outcome.d.ts +21 -2
  109. package/dist/core/people/item-outcome.js.map +1 -1
  110. package/dist/core/people/item-places.d.ts +26 -0
  111. package/dist/core/people/item-places.js +12 -0
  112. package/dist/core/people/item-places.js.map +1 -0
  113. package/dist/core/people/open-delivery.d.ts +6 -6
  114. package/dist/core/people/open-delivery.js +13 -10
  115. package/dist/core/people/open-delivery.js.map +1 -1
  116. package/dist/core/people/opened-of.d.ts +5 -1
  117. package/dist/core/people/opened-of.js +5 -1
  118. package/dist/core/people/opened-of.js.map +1 -1
  119. package/dist/core/people/ports.d.ts +40 -3
  120. package/dist/core/people/put-in-basket.d.ts +8 -6
  121. package/dist/core/people/put-in-basket.js +16 -5
  122. package/dist/core/people/put-in-basket.js.map +1 -1
  123. package/dist/core/people/read-basket.d.ts +8 -3
  124. package/dist/core/people/read-basket.js +8 -10
  125. package/dist/core/people/read-basket.js.map +1 -1
  126. package/dist/core/people/read-bridge-home.d.ts +39 -11
  127. package/dist/core/people/read-bridge-home.js +74 -12
  128. package/dist/core/people/read-bridge-home.js.map +1 -1
  129. package/dist/core/people/read-chats.d.ts +21 -0
  130. package/dist/core/people/read-chats.js +20 -0
  131. package/dist/core/people/read-chats.js.map +1 -0
  132. package/dist/core/people/read-inbox.d.ts +19 -9
  133. package/dist/core/people/read-inbox.js +57 -15
  134. package/dist/core/people/read-inbox.js.map +1 -1
  135. package/dist/core/people/read-record.d.ts +37 -11
  136. package/dist/core/people/read-record.js +44 -12
  137. package/dist/core/people/read-record.js.map +1 -1
  138. package/dist/core/people/read-send-to.d.ts +23 -0
  139. package/dist/core/people/read-send-to.js +37 -0
  140. package/dist/core/people/read-send-to.js.map +1 -0
  141. package/dist/core/people/read-your-fleet.d.ts +19 -0
  142. package/dist/core/people/read-your-fleet.js +22 -0
  143. package/dist/core/people/read-your-fleet.js.map +1 -0
  144. package/dist/core/people/remove-from-basket.d.ts +2 -1
  145. package/dist/core/people/remove-from-basket.js +4 -1
  146. package/dist/core/people/remove-from-basket.js.map +1 -1
  147. package/dist/core/people/routing.d.ts +13 -4
  148. package/dist/core/people/routing.js +14 -0
  149. package/dist/core/people/routing.js.map +1 -1
  150. package/dist/core/people/send-basket.d.ts +11 -7
  151. package/dist/core/people/send-basket.js +68 -11
  152. package/dist/core/people/send-basket.js.map +1 -1
  153. package/dist/core/people/send-message.d.ts +3 -1
  154. package/dist/core/people/send-message.js +9 -2
  155. package/dist/core/people/send-message.js.map +1 -1
  156. package/dist/core/people/send-stored-answers.d.ts +4 -3
  157. package/dist/core/people/send-stored-answers.js +62 -12
  158. package/dist/core/people/send-stored-answers.js.map +1 -1
  159. package/dist/core/people/stale-item.d.ts +40 -0
  160. package/dist/core/people/stale-item.js +36 -0
  161. package/dist/core/people/stale-item.js.map +1 -0
  162. package/dist/core/people/wake-person.d.ts +3 -1
  163. package/dist/core/people/wake-person.js +4 -2
  164. package/dist/core/people/wake-person.js.map +1 -1
  165. package/dist/core/people/your-fleet.d.ts +44 -0
  166. package/dist/core/people/your-fleet.js +64 -0
  167. package/dist/core/people/your-fleet.js.map +1 -0
  168. package/dist/core/slack/answer-in-slack.d.ts +15 -9
  169. package/dist/core/slack/answer-in-slack.js +43 -18
  170. package/dist/core/slack/answer-in-slack.js.map +1 -1
  171. package/dist/core/slack/ask-to-link-slack.d.ts +28 -0
  172. package/dist/core/slack/ask-to-link-slack.js +31 -0
  173. package/dist/core/slack/ask-to-link-slack.js.map +1 -0
  174. package/dist/core/slack/complete-link.d.ts +6 -1
  175. package/dist/core/slack/complete-link.js +6 -0
  176. package/dist/core/slack/complete-link.js.map +1 -1
  177. package/dist/core/slack/done-in-slack.d.ts +36 -0
  178. package/dist/core/slack/done-in-slack.js +63 -0
  179. package/dist/core/slack/done-in-slack.js.map +1 -0
  180. package/dist/core/slack/edit-slack-posts.d.ts +7 -5
  181. package/dist/core/slack/edit-slack-posts.js +13 -10
  182. package/dist/core/slack/edit-slack-posts.js.map +1 -1
  183. package/dist/core/slack/edited-post-of.d.ts +19 -0
  184. package/dist/core/slack/edited-post-of.js +77 -0
  185. package/dist/core/slack/edited-post-of.js.map +1 -0
  186. package/dist/core/slack/ports.d.ts +68 -10
  187. package/dist/core/slack/pressed-post-of.d.ts +9 -0
  188. package/dist/core/slack/pressed-post-of.js +18 -0
  189. package/dist/core/slack/pressed-post-of.js.map +1 -0
  190. package/dist/core/slack/read-slack-dropped-out.d.ts +23 -0
  191. package/dist/core/slack/read-slack-dropped-out.js +24 -0
  192. package/dist/core/slack/read-slack-dropped-out.js.map +1 -0
  193. package/dist/core/slack/read-slack-link.d.ts +4 -0
  194. package/dist/core/slack/read-slack-link.js +5 -0
  195. package/dist/core/slack/read-slack-link.js.map +1 -1
  196. package/dist/core/slack/show-in-slack.js +8 -7
  197. package/dist/core/slack/show-in-slack.js.map +1 -1
  198. package/dist/core/slack/slack-post-of.d.ts +24 -12
  199. package/dist/core/slack/slack-post-of.js +118 -37
  200. package/dist/core/slack/slack-post-of.js.map +1 -1
  201. package/dist/core/slack/slack-post.d.ts +13 -1
  202. package/dist/core/slack/slack-post.js +16 -1
  203. package/dist/core/slack/slack-post.js.map +1 -1
  204. package/dist/core/slack/slack-press.d.ts +1 -1
  205. package/dist/core/slack/slack-press.js +2 -1
  206. package/dist/core/slack/slack-press.js.map +1 -1
  207. package/package.json +2 -1
  208. package/src/adapters/prisma/migrations/20261104090000_basket_entries_note_alone/migration.sql +2 -0
  209. package/src/adapters/prisma/migrations/20261105090000_slack_link_steps/migration.sql +10 -0
  210. package/src/adapters/prisma/migrations/20261106090000_opened_deliveries_withdrawn_steps/migration.sql +2 -0
  211. package/src/adapters/prisma/migrations/20261107090000_opened_deliveries_step_link/migration.sql +2 -0
  212. package/src/adapters/prisma/migrations/20261107100000_opened_deliveries_opened_in/migration.sql +2 -0
  213. package/src/adapters/prisma/migrations/20261108090000_item_outcomes_note_and_seen/migration.sql +4 -0
  214. package/src/adapters/prisma/migrations/20261108090000_parties_display_name/migration.sql +2 -0
  215. package/src/adapters/prisma/migrations/20261109090000_basket_entries_option_label/migration.sql +2 -0
  216. package/src/adapters/prisma/migrations/20261109100000_basket_entries_sent/migration.sql +3 -0
  217. package/src/adapters/prisma/migrations/20261110090000_connected_chats_indexes/migration.sql +5 -0
  218. package/src/adapters/prisma/schema.prisma +41 -6
  219. package/web/.next/BUILD_ID +1 -1
  220. package/web/.next/app-path-routes-manifest.json +10 -8
  221. package/web/.next/build-manifest.json +114 -90
  222. package/web/.next/diagnostics/route-bundle-stats.json +264 -206
  223. package/web/.next/fallback-build-manifest.json +3 -3
  224. package/web/.next/prerender-manifest.json +3 -3
  225. package/web/.next/routes-manifest.json +12 -0
  226. package/web/.next/server/app/(bridge)/bridge/basket/page/app-paths-manifest.json +3 -0
  227. package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/build-manifest.json +4 -4
  228. package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/next-font-manifest.json +1 -1
  229. package/web/.next/server/app/(bridge)/bridge/basket/page/server-reference-manifest.json +105 -0
  230. package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/basket}/page.js +14 -13
  231. package/web/.next/server/app/(bridge)/bridge/basket/page.js.nft.json +1 -0
  232. package/web/.next/server/app/(bridge)/bridge/basket/page_client-reference-manifest.js +3 -0
  233. package/web/.next/server/app/(bridge)/bridge/changes/route/app-paths-manifest.json +3 -0
  234. package/web/.next/server/app/(bridge)/bridge/changes/route.js +8 -0
  235. package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.nft.json +1 -1
  236. package/web/.next/server/app/(bridge)/bridge/changes/route_client-reference-manifest.js +3 -0
  237. package/web/.next/server/app/(bridge)/bridge/done/page/app-paths-manifest.json +3 -0
  238. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/build-manifest.json +4 -4
  239. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/next-font-manifest.json +1 -1
  240. package/web/.next/server/app/(bridge)/bridge/done/page/server-reference-manifest.json +25 -0
  241. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js +15 -14
  242. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js.nft.json +1 -1
  243. package/web/.next/server/app/(bridge)/bridge/done/page_client-reference-manifest.js +3 -0
  244. package/web/.next/server/app/(bridge)/bridge/fleet/page/app-paths-manifest.json +3 -0
  245. package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/build-manifest.json +4 -4
  246. package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/next-font-manifest.json +1 -1
  247. package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/server-reference-manifest.json +3 -3
  248. package/web/.next/server/app/(bridge)/bridge/fleet/page.js +24 -0
  249. package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/fleet}/page.js.nft.json +1 -1
  250. package/web/.next/server/app/(bridge)/bridge/fleet/page_client-reference-manifest.js +3 -0
  251. package/web/.next/server/app/(bridge)/bridge/focus/route/app-paths-manifest.json +3 -0
  252. package/web/.next/server/app/(bridge)/bridge/focus/route.js +8 -0
  253. package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.nft.json +1 -1
  254. package/web/.next/server/app/(bridge)/bridge/focus/route_client-reference-manifest.js +3 -0
  255. package/web/.next/server/app/(bridge)/bridge/page/app-paths-manifest.json +3 -0
  256. package/web/.next/server/app/{(console) → (bridge)}/bridge/page/build-manifest.json +4 -4
  257. package/web/.next/server/app/{(console) → (bridge)}/bridge/page/next-font-manifest.json +1 -1
  258. package/web/.next/server/app/(bridge)/bridge/page/server-reference-manifest.json +95 -0
  259. package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js +16 -14
  260. package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js.nft.json +1 -1
  261. package/web/.next/server/app/(bridge)/bridge/page_client-reference-manifest.js +3 -0
  262. package/web/.next/server/app/(bridge)/bridge/settings/page/app-paths-manifest.json +3 -0
  263. package/web/.next/server/app/(bridge)/bridge/settings/page/build-manifest.json +23 -0
  264. package/web/.next/server/app/(bridge)/bridge/settings/page/next-font-manifest.json +11 -0
  265. package/web/.next/server/app/(bridge)/bridge/settings/page/server-reference-manifest.json +15 -0
  266. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/page.js +13 -12
  267. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/page.js.nft.json +1 -1
  268. package/web/.next/server/app/(bridge)/bridge/settings/page_client-reference-manifest.js +3 -0
  269. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +3 -0
  270. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/build-manifest.json +23 -0
  271. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +11 -0
  272. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +6 -6
  273. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page.js +26 -0
  274. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page.js.nft.json +1 -1
  275. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +3 -0
  276. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/app-paths-manifest.json +3 -0
  277. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/build-manifest.json +23 -0
  278. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/next-font-manifest.json +11 -0
  279. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/react-loadable-manifest.json +1 -0
  280. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page/server-reference-manifest.json +15 -15
  281. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js +15 -14
  282. package/web/.next/server/app/(bridge)/bridge/settings/routing/page.js.map +5 -0
  283. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js.nft.json +1 -1
  284. package/web/.next/server/app/(bridge)/bridge/settings/routing/page_client-reference-manifest.js +3 -0
  285. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/app-paths-manifest.json +3 -0
  286. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/build-manifest.json +23 -0
  287. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/next-font-manifest.json +11 -0
  288. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/react-loadable-manifest.json +1 -0
  289. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/server-reference-manifest.json +95 -0
  290. package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/stay-aware}/page.js +15 -14
  291. package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.map +5 -0
  292. package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.nft.json +1 -0
  293. package/web/.next/server/app/(bridge)/bridge/stay-aware/page_client-reference-manifest.js +3 -0
  294. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +4 -4
  295. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  296. package/web/.next/server/app/(console)/gateway-off/page.js +2 -2
  297. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  298. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  299. package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +4 -4
  300. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  301. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +2 -2
  302. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  303. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  304. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +4 -4
  305. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +16 -16
  306. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +2 -2
  307. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  308. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  309. package/web/.next/server/app/(console)/outside-parties/[name]/page/build-manifest.json +4 -4
  310. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +8 -8
  311. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +2 -2
  312. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  313. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  314. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +4 -4
  315. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +16 -16
  316. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +2 -2
  317. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  318. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  319. package/web/.next/server/app/(console)/outside-parties/add/page/build-manifest.json +4 -4
  320. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +10 -10
  321. package/web/.next/server/app/(console)/outside-parties/add/page.js +2 -2
  322. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  323. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  324. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +4 -4
  325. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  326. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +2 -2
  327. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  328. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  329. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +4 -4
  330. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  331. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +2 -2
  332. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  333. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  334. package/web/.next/server/app/(console)/outside-parties/page/build-manifest.json +4 -4
  335. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  336. package/web/.next/server/app/(console)/outside-parties/page.js +2 -2
  337. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  338. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  339. package/web/.next/server/app/(console)/parties/page/build-manifest.json +4 -4
  340. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +7 -7
  341. package/web/.next/server/app/(console)/parties/page.js +2 -2
  342. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  343. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  344. package/web/.next/server/app/(console)/sign-in/failed/page/build-manifest.json +4 -4
  345. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  346. package/web/.next/server/app/(console)/sign-in/failed/page.js +2 -2
  347. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  348. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  349. package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +4 -4
  350. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +10 -10
  351. package/web/.next/server/app/(console)/slack/disconnect/page.js +2 -2
  352. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
  353. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
  354. package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +4 -4
  355. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +10 -10
  356. package/web/.next/server/app/(console)/slack/expose/page.js +2 -2
  357. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
  358. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  359. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
  360. package/web/.next/server/app/(console)/slack/page/build-manifest.json +4 -4
  361. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +10 -10
  362. package/web/.next/server/app/(console)/slack/page.js +2 -2
  363. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  364. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  365. package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +4 -4
  366. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +10 -10
  367. package/web/.next/server/app/(console)/slack/remove/page.js +4 -4
  368. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  369. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  370. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  371. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  372. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  373. package/web/.next/server/app/_global-error.html +1 -1
  374. package/web/.next/server/app/_global-error.rsc +1 -1
  375. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  376. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  377. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  378. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  379. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  380. package/web/.next/server/app/_not-found/page.js +2 -2
  381. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  382. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  383. package/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  384. package/web/.next/server/app/authorize/failed/page/build-manifest.json +4 -4
  385. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  386. package/web/.next/server/app/authorize/failed/page.js +3 -2
  387. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  388. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  389. package/web/.next/server/app/authorize/pick/page/build-manifest.json +4 -4
  390. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  391. package/web/.next/server/app/authorize/pick/page.js +7 -5
  392. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  393. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  394. package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +4 -4
  395. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  396. package/web/.next/server/app/authorize/waiting/approval/page.js +3 -2
  397. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  398. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  399. package/web/.next/server/app/icon.svg/route.js.nft.json +1 -1
  400. package/web/.next/server/app-paths-manifest.json +10 -8
  401. package/web/.next/server/chunks/0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js +3 -0
  402. package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js +2 -2
  403. package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js +2 -2
  404. package/web/.next/server/chunks/_0up_7s_05-7vm._.js +3 -0
  405. package/web/.next/server/chunks/_0up_7s_05-7vm._.js.map +1 -0
  406. package/web/.next/server/chunks/_0xw0b7avhvg75._.js +1 -1
  407. package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js +1 -1
  408. package/web/.next/server/chunks/_1xaed_q500ez6._.js +3 -0
  409. package/web/.next/server/chunks/_1xaed_q500ez6._.js.map +1 -0
  410. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +1 -1
  411. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -1
  412. package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js +3 -0
  413. package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js.map +1 -0
  414. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js +3 -0
  415. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js.map +1 -0
  416. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js +3 -0
  417. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js.map +1 -0
  418. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  419. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  420. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  421. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  422. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  423. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  424. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  425. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  426. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  427. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  428. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
  429. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
  430. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js → [root-of-the-server]__04_bc8g0oe4jt._.js} +1 -1
  431. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +1 -1
  432. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
  433. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
  434. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js +3 -0
  435. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js.map +1 -0
  436. package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js +57 -0
  437. package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js.map +1 -0
  438. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  439. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  440. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js +57 -0
  441. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js.map +1 -0
  442. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js +3 -0
  443. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js.map +1 -0
  444. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
  445. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
  446. package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js +3 -0
  447. package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js.map +1 -0
  448. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
  449. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
  450. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js → [root-of-the-server]__179upda-y7uap._.js} +1 -1
  451. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  452. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  453. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js +57 -0
  454. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js.map +1 -0
  455. package/web/.next/server/chunks/ssr/[root-of-the-server]__1j6n8jj7-5t6v._.js +3 -0
  456. package/web/.next/server/chunks/ssr/[root-of-the-server]__1j6n8jj7-5t6v._.js.map +1 -0
  457. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
  458. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
  459. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qtzvez4cn5be._.js +3 -0
  460. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qtzvez4cn5be._.js.map +1 -0
  461. package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js +4 -0
  462. package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js.map +1 -0
  463. package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js +57 -0
  464. package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js.map +1 -0
  465. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  466. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  467. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
  468. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  469. package/web/.next/server/chunks/ssr/_0cnpz5jm2_9xf._.js +3 -0
  470. package/web/.next/server/chunks/ssr/_0cnpz5jm2_9xf._.js.map +1 -0
  471. package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js +3 -0
  472. package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js.map +1 -0
  473. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  474. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  475. package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js +3 -0
  476. package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js.map +1 -0
  477. package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js +3 -0
  478. package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js.map +1 -0
  479. package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js +3 -0
  480. package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js.map +1 -0
  481. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  482. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  483. package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js +3 -0
  484. package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js.map +1 -0
  485. package/web/.next/server/chunks/ssr/_0vid8-myyy-_4._.js +3 -0
  486. package/web/.next/server/chunks/ssr/_0vid8-myyy-_4._.js.map +1 -0
  487. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  488. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  489. package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js +3 -0
  490. package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js.map +1 -0
  491. package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js +3 -0
  492. package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js.map +1 -0
  493. package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js +3 -0
  494. package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js.map +1 -0
  495. package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js +3 -0
  496. package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js.map +1 -0
  497. package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js +3 -0
  498. package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js.map +1 -0
  499. package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js +3 -0
  500. package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js.map +1 -0
  501. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  502. package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js +3 -0
  503. package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js.map +1 -0
  504. package/web/.next/server/chunks/ssr/_1a9wrl8uw7x-y._.js +3 -0
  505. package/web/.next/server/chunks/ssr/_1a9wrl8uw7x-y._.js.map +1 -0
  506. package/web/.next/server/chunks/ssr/{_1hmjvjuxx92vo._.js → _1airu8wwf7z1b._.js} +2 -2
  507. package/web/.next/server/chunks/ssr/_1airu8wwf7z1b._.js.map +1 -0
  508. package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
  509. package/web/.next/server/chunks/ssr/{_0a_nsm-ye2r6v._.js → _1gbkqq8ra1nei._.js} +2 -2
  510. package/web/.next/server/chunks/ssr/_1gbkqq8ra1nei._.js.map +1 -0
  511. package/web/.next/server/chunks/ssr/_1i5zdy3tp2ykh._.js +3 -0
  512. package/web/.next/server/chunks/ssr/_1i5zdy3tp2ykh._.js.map +1 -0
  513. package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js +3 -0
  514. package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js.map +1 -0
  515. package/web/.next/server/chunks/ssr/_1iorutn_o9hja._.js +3 -0
  516. package/web/.next/server/chunks/ssr/_1iorutn_o9hja._.js.map +1 -0
  517. package/web/.next/server/chunks/ssr/_1kdx8a0j5cxyl._.js +3 -0
  518. package/web/.next/server/chunks/ssr/_1kdx8a0j5cxyl._.js.map +1 -0
  519. package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js +3 -0
  520. package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js.map +1 -0
  521. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  522. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  523. package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js +3 -0
  524. package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js.map +1 -0
  525. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  526. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  527. package/web/.next/server/chunks/ssr/_1rfpx4ze-3l8z._.js +3 -0
  528. package/web/.next/server/chunks/ssr/{web_features_0mi9a9pdzkdji._.js.map → _1rfpx4ze-3l8z._.js.map} +1 -1
  529. package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js +3 -0
  530. package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js.map +1 -0
  531. package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js +3 -0
  532. package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js.map +1 -0
  533. package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js +3 -0
  534. package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js.map +1 -0
  535. package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js +4 -0
  536. package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js.map +1 -0
  537. package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js +3 -0
  538. package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js.map +1 -0
  539. package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js +3 -0
  540. package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js.map +1 -0
  541. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +3 -0
  542. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +1 -0
  543. package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js +3 -0
  544. package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js.map +1 -0
  545. package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js +3 -0
  546. package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js.map +1 -0
  547. package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js +3 -0
  548. package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js.map +1 -0
  549. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js +1 -1
  550. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +1 -1
  551. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js +3 -0
  552. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js.map +1 -0
  553. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js +3 -0
  554. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js.map +1 -0
  555. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js +1 -1
  556. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js.map +1 -1
  557. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js +1 -1
  558. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js.map +1 -1
  559. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1cvjxnw-b3pnv._.js +3 -0
  560. package/web/.next/server/chunks/ssr/{node_modules_@base-ui_react_1lbvjrzg8s2ox._.js.map → node_modules_@base-ui_react_1cvjxnw-b3pnv._.js.map} +1 -1
  561. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js +3 -0
  562. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js.map +1 -0
  563. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js +3 -0
  564. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js.map +1 -0
  565. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js +3 -0
  566. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js.map +1 -0
  567. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +2 -2
  568. package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +2 -2
  569. package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js.map +1 -1
  570. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js +3 -0
  571. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js.map +1 -0
  572. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js +3 -0
  573. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js.map +1 -0
  574. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js +3 -0
  575. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js.map +1 -0
  576. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js +3 -0
  577. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js.map +1 -0
  578. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js +1 -1
  579. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js +3 -0
  580. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js.map +1 -0
  581. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js +1 -1
  582. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js.map +1 -1
  583. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js +3 -0
  584. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js.map +1 -0
  585. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js +3 -0
  586. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js.map +1 -0
  587. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js +3 -0
  588. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js.map +1 -0
  589. package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js +3 -0
  590. package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js.map +1 -0
  591. package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js +3 -0
  592. package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js.map +1 -0
  593. package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js +3 -0
  594. package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js.map +1 -0
  595. package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js +3 -0
  596. package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js.map +1 -0
  597. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  598. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  599. package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js +3 -0
  600. package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js.map +1 -0
  601. package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js +3 -0
  602. package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js.map +1 -0
  603. package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js +3 -0
  604. package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js.map +1 -0
  605. package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js +3 -0
  606. package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js.map +1 -0
  607. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js +3 -0
  608. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js.map +1 -0
  609. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js +3 -0
  610. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js.map +1 -0
  611. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js +3 -0
  612. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js.map +1 -0
  613. package/web/.next/server/chunks/ssr/{web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js → web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js} +2 -2
  614. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js.map +1 -0
  615. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js +3 -0
  616. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js.map +1 -0
  617. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js +3 -0
  618. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js.map +1 -0
  619. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js +3 -0
  620. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js.map +1 -0
  621. package/web/.next/server/chunks/ssr/{web_features_0f6r-m-dq36vf._.js → web_features_025l9l6m2zkya._.js} +2 -2
  622. package/web/.next/server/chunks/ssr/{web_features_0f6r-m-dq36vf._.js.map → web_features_025l9l6m2zkya._.js.map} +1 -1
  623. package/web/.next/server/chunks/ssr/web_features_05aos-xwnl3m_._.js +3 -0
  624. package/web/.next/server/chunks/ssr/web_features_05aos-xwnl3m_._.js.map +1 -0
  625. package/web/.next/server/chunks/ssr/web_features_0bwqcs9wjf4y8._.js +3 -0
  626. package/web/.next/server/chunks/ssr/web_features_0bwqcs9wjf4y8._.js.map +1 -0
  627. package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js → web_features_0f2pobf_t4wjt._.js} +2 -2
  628. package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js.map → web_features_0f2pobf_t4wjt._.js.map} +1 -1
  629. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  630. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  631. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  632. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  633. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  634. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  635. package/web/.next/server/chunks/ssr/web_features_bridge_0w95y19yk5w14._.js +3 -0
  636. package/web/.next/server/chunks/ssr/web_features_bridge_0w95y19yk5w14._.js.map +1 -0
  637. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js +1 -1
  638. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js.map +1 -1
  639. package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js +3 -0
  640. package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js.map +1 -0
  641. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +1 -1
  642. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map +1 -1
  643. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +1 -1
  644. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -1
  645. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +1 -1
  646. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -1
  647. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +1 -1
  648. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -1
  649. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js +1 -1
  650. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js.map +1 -1
  651. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js +1 -1
  652. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js.map +1 -1
  653. package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js +3 -0
  654. package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js.map +1 -0
  655. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  656. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -1
  657. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  658. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  659. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  660. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  661. package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js +3 -0
  662. package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js.map +1 -0
  663. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  664. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  665. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  666. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  667. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  668. package/web/.next/server/chunks/web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js +3 -0
  669. package/web/.next/server/middleware-build-manifest.js +114 -90
  670. package/web/.next/server/next-font-manifest.js +1 -1
  671. package/web/.next/server/next-font-manifest.json +14 -6
  672. package/web/.next/server/pages/500.html +1 -1
  673. package/web/.next/server/preview-props.json +3 -3
  674. package/web/.next/server/server-reference-manifest.js +1 -1
  675. package/web/.next/server/server-reference-manifest.json +165 -103
  676. package/web/.next/static/chunks/{2z2auwx1s2mgl.js → 0k33n07zesv12.js} +1 -1
  677. package/web/.next/static/chunks/0ozz8jadgfdrx.js +1 -0
  678. package/web/.next/static/chunks/{1166rxt6h6ilq.js → 1c8q9h-van9r6.js} +1 -1
  679. package/web/.next/static/chunks/1nzfw6ajt5nf9.js +55 -0
  680. package/web/.next/static/chunks/1uhmdmkn5gsk2.js +1 -0
  681. package/web/.next/static/chunks/1v36iovy1f5cj.js +1 -0
  682. package/web/.next/static/chunks/1vhvy8bx4fxur.js +1 -0
  683. package/web/.next/static/chunks/1vhx_nu9nxo1v.js +1 -0
  684. package/web/.next/static/chunks/{3db90zxmny2y-.js → 23vvtbj-zoa_f.js} +1 -1
  685. package/web/.next/static/chunks/24vn5i6ojvl8l.js +1 -0
  686. package/web/.next/static/chunks/2dgbb29jkr_tu.js +1 -0
  687. package/web/.next/static/chunks/2ewacyhp73due.js +1 -0
  688. package/web/.next/static/chunks/2fimf0wcjnmpj.js +1 -0
  689. package/web/.next/static/chunks/2fk9ydkphmyna.js +1 -0
  690. package/web/.next/static/chunks/2l6hafvocw-rd.js +1 -0
  691. package/web/.next/static/chunks/2ld8_nap7g_uy.js +1 -0
  692. package/web/.next/static/chunks/2mpwg-t6pat39.js +1 -0
  693. package/web/.next/static/chunks/2pvcbql986wln.js +1 -0
  694. package/web/.next/static/chunks/2s1efgj6gxjgl.js +1 -0
  695. package/web/.next/static/chunks/2zlx-c_0x38uo.css +3 -0
  696. package/web/.next/static/chunks/34u_331hqync_.js +1 -0
  697. package/web/.next/static/chunks/39tst46ewpx_k.js +1 -0
  698. package/web/.next/static/chunks/{3x0p-z3zdrk_b.js → 3_bb0g4jkqn8q.js} +1 -1
  699. package/web/.next/static/chunks/3d5z1i-6yksxd.js +1 -0
  700. package/web/.next/static/chunks/3jq9vu8tr29j2.js +1 -0
  701. package/web/.next/static/chunks/3kenmp9pjwgf2.js +1 -0
  702. package/web/.next/static/chunks/3knqujtrdi225.js +1 -0
  703. package/web/.next/static/chunks/{0lzisjsmhlhjf.js → 3zhaqdsq15d1e.js} +1 -1
  704. package/web/.next/trace +1 -1
  705. package/web/.next/trace-build +1 -1
  706. package/web/.next/types/routes.d.ts +3 -1
  707. package/web/.next/types/validator.ts +50 -16
  708. package/dist/core/people/stale-question.d.ts +0 -28
  709. package/dist/core/people/stale-question.js +0 -26
  710. package/dist/core/people/stale-question.js.map +0 -1
  711. package/web/.next/server/app/(console)/bridge/basket/page/app-paths-manifest.json +0 -3
  712. package/web/.next/server/app/(console)/bridge/basket/page/server-reference-manifest.json +0 -75
  713. package/web/.next/server/app/(console)/bridge/basket/page_client-reference-manifest.js +0 -3
  714. package/web/.next/server/app/(console)/bridge/changes/route/app-paths-manifest.json +0 -3
  715. package/web/.next/server/app/(console)/bridge/changes/route.js +0 -8
  716. package/web/.next/server/app/(console)/bridge/changes/route_client-reference-manifest.js +0 -3
  717. package/web/.next/server/app/(console)/bridge/done/page/app-paths-manifest.json +0 -3
  718. package/web/.next/server/app/(console)/bridge/done/page/server-reference-manifest.json +0 -75
  719. package/web/.next/server/app/(console)/bridge/done/page_client-reference-manifest.js +0 -3
  720. package/web/.next/server/app/(console)/bridge/focus/route/app-paths-manifest.json +0 -3
  721. package/web/.next/server/app/(console)/bridge/focus/route.js +0 -8
  722. package/web/.next/server/app/(console)/bridge/focus/route_client-reference-manifest.js +0 -3
  723. package/web/.next/server/app/(console)/bridge/page/app-paths-manifest.json +0 -3
  724. package/web/.next/server/app/(console)/bridge/page/server-reference-manifest.json +0 -65
  725. package/web/.next/server/app/(console)/bridge/page_client-reference-manifest.js +0 -3
  726. package/web/.next/server/app/(console)/bridge/settings/page/app-paths-manifest.json +0 -3
  727. package/web/.next/server/app/(console)/bridge/settings/page_client-reference-manifest.js +0 -3
  728. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +0 -3
  729. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/build-manifest.json +0 -23
  730. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +0 -11
  731. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +0 -3
  732. package/web/.next/server/app/(console)/bridge/settings/routing/page/app-paths-manifest.json +0 -3
  733. package/web/.next/server/app/(console)/bridge/settings/routing/page/build-manifest.json +0 -23
  734. package/web/.next/server/app/(console)/bridge/settings/routing/page/next-font-manifest.json +0 -11
  735. package/web/.next/server/app/(console)/bridge/settings/routing/page_client-reference-manifest.js +0 -3
  736. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js +0 -3
  737. package/web/.next/server/chunks/_05qgg3__4kdbm._.js +0 -3
  738. package/web/.next/server/chunks/_05qgg3__4kdbm._.js.map +0 -1
  739. package/web/.next/server/chunks/_1uap5tql2vvsb._.js +0 -3
  740. package/web/.next/server/chunks/_1uap5tql2vvsb._.js.map +0 -1
  741. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js +0 -3
  742. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js.map +0 -1
  743. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js +0 -3
  744. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js.map +0 -1
  745. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js +0 -3
  746. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js.map +0 -1
  747. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js +0 -3
  748. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js.map +0 -1
  749. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js +0 -4
  750. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js.map +0 -1
  751. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js +0 -3
  752. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js.map +0 -1
  753. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js +0 -3
  754. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js.map +0 -1
  755. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js.map +0 -1
  756. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js +0 -3
  757. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js.map +0 -1
  758. package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js +0 -3
  759. package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js.map +0 -1
  760. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +0 -3
  761. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js.map +0 -1
  762. package/web/.next/server/chunks/ssr/_177fdczus39s7._.js +0 -3
  763. package/web/.next/server/chunks/ssr/_177fdczus39s7._.js.map +0 -1
  764. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +0 -1
  765. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js +0 -3
  766. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js.map +0 -1
  767. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js +0 -3
  768. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js.map +0 -1
  769. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js +0 -3
  770. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js.map +0 -1
  771. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js +0 -3
  772. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js.map +0 -1
  773. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js +0 -3
  774. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js.map +0 -1
  775. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js +0 -3
  776. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js +0 -3
  777. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js.map +0 -1
  778. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js +0 -3
  779. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js.map +0 -1
  780. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js +0 -3
  781. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js.map +0 -1
  782. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js +0 -3
  783. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js.map +0 -1
  784. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js +0 -3
  785. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js.map +0 -1
  786. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js +0 -3
  787. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js.map +0 -1
  788. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js +0 -3
  789. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js.map +0 -1
  790. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js +0 -3
  791. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js.map +0 -1
  792. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js +0 -3
  793. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js.map +0 -1
  794. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js +0 -3
  795. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js.map +0 -1
  796. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js +0 -3
  797. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js.map +0 -1
  798. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js +0 -3
  799. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js.map +0 -1
  800. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js +0 -3
  801. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js.map +0 -1
  802. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js +0 -3
  803. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js.map +0 -1
  804. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js +0 -3
  805. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js.map +0 -1
  806. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js +0 -3
  807. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js.map +0 -1
  808. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js.map +0 -1
  809. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js +0 -3
  810. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js.map +0 -1
  811. package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js +0 -3
  812. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js +0 -3
  813. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js.map +0 -1
  814. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js +0 -3
  815. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js.map +0 -1
  816. package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js +0 -3
  817. package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js.map +0 -1
  818. package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js +0 -3
  819. package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js.map +0 -1
  820. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js +0 -3
  821. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js.map +0 -1
  822. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js +0 -3
  823. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js.map +0 -1
  824. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js +0 -3
  825. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js.map +0 -1
  826. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js +0 -3
  827. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js.map +0 -1
  828. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js +0 -3
  829. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js.map +0 -1
  830. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js +0 -3
  831. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map +0 -1
  832. package/web/.next/server/chunks/web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js +0 -3
  833. package/web/.next/static/chunks/0az9upwm-8_q9.js +0 -1
  834. package/web/.next/static/chunks/0c1tqlbsvq1dj.js +0 -1
  835. package/web/.next/static/chunks/0fh11dkddwf_2.js +0 -1
  836. package/web/.next/static/chunks/0gbozvd_yh421.js +0 -1
  837. package/web/.next/static/chunks/0l9_oie6xi0kd.js +0 -1
  838. package/web/.next/static/chunks/0m512dxdcrv-b.js +0 -1
  839. package/web/.next/static/chunks/0zbcy0_3jemrv.js +0 -1
  840. package/web/.next/static/chunks/1485slb5zus5p.js +0 -1
  841. package/web/.next/static/chunks/180aowme095ds.js +0 -1
  842. package/web/.next/static/chunks/24olc0btcvn7q.js +0 -1
  843. package/web/.next/static/chunks/296w-74ry5lzk.js +0 -1
  844. package/web/.next/static/chunks/2gghdkr64z9f9.js +0 -1
  845. package/web/.next/static/chunks/2hoi73vy1wqpo.js +0 -1
  846. package/web/.next/static/chunks/2mtfca4qk_s34.js +0 -1
  847. package/web/.next/static/chunks/397zvdr6xr5pq.js +0 -1
  848. package/web/.next/static/chunks/3ow9h8hreko-p.css +0 -3
  849. package/web/.next/static/chunks/3pd8pele5x1o9.js +0 -1
  850. package/web/.next/static/chunks/3srfjz42u14tx.js +0 -1
  851. package/web/.next/static/chunks/3yq9jt4p_0uid.js +0 -1
  852. /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/react-loadable-manifest.json +0 -0
  853. /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page.js.map +0 -0
  854. /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/build-manifest.json +0 -0
  855. /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/server-reference-manifest.json +0 -0
  856. /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.map +0 -0
  857. /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/react-loadable-manifest.json +0 -0
  858. /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js.map +0 -0
  859. /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page/react-loadable-manifest.json +0 -0
  860. /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page.js.map +0 -0
  861. /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/build-manifest.json +0 -0
  862. /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/server-reference-manifest.json +0 -0
  863. /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.map +0 -0
  864. /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page/react-loadable-manifest.json +0 -0
  865. /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page.js.map +0 -0
  866. /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page/react-loadable-manifest.json +0 -0
  867. /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page.js.map +0 -0
  868. /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page/react-loadable-manifest.json +0 -0
  869. /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page.js.map +0 -0
  870. /package/web/.next/server/chunks/{0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js.map → 0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js.map} +0 -0
  871. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js.map → [root-of-the-server]__04_bc8g0oe4jt._.js.map} +0 -0
  872. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js.map → [root-of-the-server]__179upda-y7uap._.js.map} +0 -0
  873. /package/web/.next/server/chunks/{web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js.map → web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js.map} +0 -0
  874. /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_buildManifest.js +0 -0
  875. /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_clientMiddlewareManifest.js +0 -0
  876. /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/bridge/paths.ts","../../../../../web/features/bridge/hooks/use-focus-report.ts","../../../../../web/features/bridge/hooks/use-live-refresh.ts","../../../../../web/features/bridge/state/live-refresh.tsx","../../../../../web/features/bridge/ui/action-button.tsx","../../../../../web/features/bridge/services/items.ts","../../../../../web/features/bridge/ui/item-row.tsx","../../../../../web/features/bridge/ui/notice.tsx"],"sourcesContent":["/** Bridge's pages (docs/design/bridge): home, the basket, Done, Bridge's settings and where things show; a module of their own, so a page in the browser names them too. */\nexport const BRIDGE_PATH = '/bridge';\nexport const BRIDGE_BASKET_PATH = '/bridge/basket';\nexport const BRIDGE_DONE_PATH = '/bridge/done';\nexport const BRIDGE_SETTINGS_PATH = '/bridge/settings';\nexport const BRIDGE_ROUTING_PATH = '/bridge/settings/routing';\n","'use client';\n\nimport { useEffect } from 'react';\n\n/** The stream the page holds while in focus, which the web app's server follows on the gateway's API for the browser. */\nexport const FOCUS_PATH = '/bridge/focus';\n\n/**\n * Tells the gateway while the page is in focus (wake a person, W6): it holds\n * the focus stream open while the window has focus and the page shows, and\n * closes it when either ends. While a page of the person is in focus, what\n * arrives is shown there and no wake goes out; an open page not in focus\n * changes nothing. A lost connection no longer counts as in focus.\n */\nexport function useFocusReport(fleetId: string): void {\n useEffect(() => {\n let focus: EventSource | undefined;\n const report = () => {\n const isInFocus = document.visibilityState === 'visible' && document.hasFocus();\n if (isInFocus && focus === undefined) {\n focus = new EventSource(`${FOCUS_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n } else if (!isInFocus && focus !== undefined) {\n focus.close();\n focus = undefined;\n }\n };\n report();\n window.addEventListener('focus', report);\n window.addEventListener('blur', report);\n document.addEventListener('visibilitychange', report);\n return () => {\n window.removeEventListener('focus', report);\n window.removeEventListener('blur', report);\n document.removeEventListener('visibilitychange', report);\n focus?.close();\n };\n }, [fleetId]);\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** The page's live updates, which the web app's server follows on the gateway's API for the browser. */\nexport const CHANGES_PATH = '/bridge/changes';\n\n/**\n * Keeps the page in step with its fleet's requests: whenever one changes,\n * the page reads itself again on the server, as its own caller. The browser\n * opens the stream again by itself when it drops.\n */\nexport function useLiveRefresh(fleetId: string): void {\n const router = useRouter();\n useEffect(() => {\n const changes = new EventSource(`${CHANGES_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n changes.onmessage = () => {\n router.refresh();\n };\n return () => {\n changes.close();\n };\n }, [fleetId, router]);\n}\n","'use client';\n\nimport { useFocusReport } from '../hooks/use-focus-report';\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\n\n/** Keeps the page it sits in live, and tells the gateway while it is in focus (wake a person, W6): it shows nothing itself. */\nexport function LiveRefresh({ fleetId }: { fleetId: string }) {\n useLiveRefresh(fleetId);\n useFocusReport(fleetId);\n return null;\n}\n","import type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nconst VARIANTS = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'border border-border bg-card text-card-foreground hover:bg-accent',\n} as const;\n\n/**\n * A button for an action: the moment it is pressed and until the answer\n * comes, it shows a spinner and its working label, and cannot run twice.\n */\nexport function ActionButton({\n isPending,\n pendingLabel,\n variant = 'secondary',\n children,\n className = '',\n disabled,\n ...button\n}: ButtonHTMLAttributes<HTMLButtonElement> & { isPending: boolean; pendingLabel: string; variant?: keyof typeof VARIANTS; children: ReactNode }) {\n return (\n <button\n {...button}\n disabled={disabled === true || isPending}\n aria-busy={isPending}\n className={`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${VARIANTS[variant]} ${className}`}\n >\n {isPending ? (\n <>\n <span aria-hidden=\"true\" className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {pendingLabel}\n </>\n ) : (\n children\n )}\n </button>\n );\n}\n","/**\n * Bridge's items as its pages show them (docs/design/bridge, section 6):\n * each job's label, and what came of an item and where, in words. Pure view\n * logic, no React and no API client.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\n\n/** Bridge home as the API answers it: what waits with its count, and the stay-aware feed. */\nexport type BridgeHome = inferRouterOutputs<GatewayRouter>['people']['home'];\n\n/** An item on Bridge home: by its title, with its job, new or seen. */\nexport type HomeItem = BridgeHome['waiting']['items'][number];\n\n/** A page of the person ship's record, as the API answers it. */\nexport type RecordPage = inferRouterOutputs<GatewayRouter>['people']['record'];\n\n/** An item of the record, with its state and its outcome once kept. */\nexport type RecordItem = RecordPage['items'][number];\n\ntype Job = RecordItem['job'];\ntype Outcome = NonNullable<RecordItem['outcome']>;\n\nconst JOB_LABELS: Record<Job, string> = {\n decide: 'Decide',\n do: 'Do',\n 'stay-aware': 'Stay aware',\n 'everything-else': 'Message',\n};\n\nconst PLACES: Record<Outcome['place'], string> = {\n bridge: 'in Bridge',\n chat: 'in a chat',\n slack: 'in Slack',\n gateway: 'by the gateway',\n};\n\nconst KINDS: Record<Outcome['kind'], string> = {\n seen: 'Seen',\n answered: 'Answered',\n done: 'Done',\n cannot: 'Marked cannot',\n withdrawn: 'Withdrawn by its asker, seen',\n replaced: 'Replaced by its asker, seen',\n notSent: 'Not sent, removed',\n};\n\nexport function jobLabelOf(job: Job): string {\n return JOB_LABELS[job];\n}\n\n/** What came of an item and where, such as Answered in Slack: option 2; Done alone when no outcome was kept. */\nexport function outcomeTextOf(item: Pick<RecordItem, 'state' | 'outcome'>): string {\n switch (item.state) {\n case 'new':\n return 'New';\n case 'seen':\n return 'Seen, not done yet';\n case 'done': {\n const { outcome } = item;\n if (outcome === null) {\n return 'Done';\n }\n const said = `${KINDS[outcome.kind]} ${PLACES[outcome.place]}`;\n return outcome.option === null ? said : `${said}: option ${String(outcome.option)}`;\n }\n }\n}\n","import type { ReactNode } from 'react';\n\nimport { jobLabelOf, type HomeItem } from '../services/items';\nimport { Notice } from './notice';\n\n/** When an item was sent, in UTC, to the minute. */\nfunction sentAtOf(sentAt: string): string {\n return `${new Date(sentAt).toISOString().slice(0, 16).replace('T', ' ')} UTC`;\n}\n\n/**\n * One item in a Bridge list: a dot while new, its title, its job and who\n * sent it, when, what came of it once said, and its action; faded when stale. The row and its\n * title shrink to a phone's width (aeolus-fleet#1238).\n */\nexport function ItemRow({\n item,\n isNew,\n isStale = false,\n outcome,\n failure,\n children,\n}: {\n item: Pick<HomeItem, 'deliveryId' | 'from' | 'title' | 'sentAt' | 'job'>;\n isNew: boolean;\n /** Whether it is a question its asker withdrew or replaced: shown faded, outside the count. */\n isStale?: boolean;\n outcome: string | undefined;\n failure: string | undefined;\n children: ReactNode;\n}) {\n return (\n <li data-testid=\"bridge-item\" data-stale={isStale} className={`grid min-w-0 gap-2 rounded-md border border-border bg-card p-3 ${isStale ? 'opacity-60' : ''}`}>\n <div className=\"flex min-w-0 items-center gap-3\">\n <span className=\"flex min-w-0 flex-1 flex-col text-left\">\n <span className=\"flex min-w-0 items-center gap-2\">\n {isNew ? <span aria-label=\"New\" className=\"size-2 shrink-0 rounded-full bg-primary\" /> : null}\n <span className=\"truncate font-medium\">{item.title}</span>\n </span>\n <span className=\"text-caption text-muted-foreground\">\n {jobLabelOf(item.job)} · {item.from} · <time dateTime={item.sentAt}>{sentAtOf(item.sentAt)}</time>\n </span>\n {outcome === undefined ? null : <span data-testid=\"bridge-outcome\" className=\"text-caption\">{outcome}</span>}\n </span>\n {children}\n </div>\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </li>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <p role=\"alert\" data-testid=\"bridge-failure\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {message}\n </p>\n ) : (\n <p role=\"status\" data-testid=\"bridge-success\" className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {message}\n </p>\n );\n}\n"],"names":["BRIDGE_PATH","BRIDGE_BASKET_PATH","BRIDGE_DONE_PATH","BRIDGE_SETTINGS_PATH","BRIDGE_ROUTING_PATH","FOCUS_PATH","useFocusReport","fleetId","focus","report","isInFocus","document","visibilityState","hasFocus","undefined","EventSource","encodeURIComponent","close","window","addEventListener","removeEventListener","VARIANTS","primary","secondary","ActionButton","isPending","pendingLabel","variant","children","className","disabled","button","JOB_LABELS","decide","do","PLACES","bridge","chat","slack","gateway","KINDS","seen","answered","done","cannot","withdrawn","replaced","notSent","jobLabelOf","job","outcomeTextOf","item","state","outcome","said","kind","place","option","String","Notice","message","isFailure","role"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[3656,a=>{var b=a.i(72131),c=a.i(50944);a.s(["LiveRefresh",0,function({fleetId:a}){let d;return d=(0,c.useRouter)(),(0,b.useEffect)(()=>{let b=new EventSource(`/bridge/changes?fleet=${encodeURIComponent(a)}`);return b.onmessage=()=>{d.refresh()},()=>{b.close()}},[a,d]),(0,b.useEffect)(()=>{let b,c=()=>{let c="visible"===document.visibilityState&&document.hasFocus();c&&void 0===b?b=new EventSource(`/bridge/focus?fleet=${encodeURIComponent(a)}`):c||void 0===b||(b.close(),b=void 0)};return c(),window.addEventListener("focus",c),window.addEventListener("blur",c),document.addEventListener("visibilitychange",c),()=>{window.removeEventListener("focus",c),window.removeEventListener("blur",c),document.removeEventListener("visibilitychange",c),b?.close()}},[a]),null}],3656)},32043,a=>{var b=a.i(87924);let c={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};a.s(["f",0,function({isPending:a,pendingLabel:d,variant:e="secondary",children:f,className:g="",disabled:h,...i}){return(0,b.jsx)("button",{...i,disabled:!0===h||a,"aria-busy":a,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${c[e]} ${g}`,children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),d]}):f})}])},10039,a=>{var b=a.i(87924);a.s(["f",0,function({message:a,isFailure:c}){return c?(0,b.jsx)("p",{role:"alert","data-testid":"bridge-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a}):(0,b.jsx)("p",{role:"status","data-testid":"bridge-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a})}])}]})();
2
-
3
- //# sourceMappingURL=web_features_bridge_11jndonu4o8fq._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/bridge/hooks/use-focus-report.ts","../../../../../web/features/bridge/hooks/use-live-refresh.ts","../../../../../web/features/bridge/state/live-refresh.tsx","../../../../../web/features/bridge/ui/action-button.tsx","../../../../../web/features/bridge/ui/notice.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\n/** The stream the page holds while in focus, which the web app's server follows on the gateway's API for the browser. */\nexport const FOCUS_PATH = '/bridge/focus';\n\n/**\n * Tells the gateway while the page is in focus (wake a person, W6): it holds\n * the focus stream open while the window has focus and the page shows, and\n * closes it when either ends. While a page of the person is in focus, what\n * arrives is shown there and no wake goes out; an open page not in focus\n * changes nothing. A lost connection no longer counts as in focus.\n */\nexport function useFocusReport(fleetId: string): void {\n useEffect(() => {\n let focus: EventSource | undefined;\n const report = () => {\n const isInFocus = document.visibilityState === 'visible' && document.hasFocus();\n if (isInFocus && focus === undefined) {\n focus = new EventSource(`${FOCUS_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n } else if (!isInFocus && focus !== undefined) {\n focus.close();\n focus = undefined;\n }\n };\n report();\n window.addEventListener('focus', report);\n window.addEventListener('blur', report);\n document.addEventListener('visibilitychange', report);\n return () => {\n window.removeEventListener('focus', report);\n window.removeEventListener('blur', report);\n document.removeEventListener('visibilitychange', report);\n focus?.close();\n };\n }, [fleetId]);\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** The page's live updates, which the web app's server follows on the gateway's API for the browser. */\nexport const CHANGES_PATH = '/bridge/changes';\n\n/**\n * Keeps the page in step with its fleet's requests: whenever one changes,\n * the page reads itself again on the server, as its own caller. The browser\n * opens the stream again by itself when it drops.\n */\nexport function useLiveRefresh(fleetId: string): void {\n const router = useRouter();\n useEffect(() => {\n const changes = new EventSource(`${CHANGES_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n changes.onmessage = () => {\n router.refresh();\n };\n return () => {\n changes.close();\n };\n }, [fleetId, router]);\n}\n","'use client';\n\nimport { useFocusReport } from '../hooks/use-focus-report';\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\n\n/** Keeps the page it sits in live, and tells the gateway while it is in focus (wake a person, W6): it shows nothing itself. */\nexport function LiveRefresh({ fleetId }: { fleetId: string }) {\n useLiveRefresh(fleetId);\n useFocusReport(fleetId);\n return null;\n}\n","import type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nconst VARIANTS = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'border border-border bg-card text-card-foreground hover:bg-accent',\n} as const;\n\n/**\n * A button for an action: the moment it is pressed and until the answer\n * comes, it shows a spinner and its working label, and cannot run twice.\n */\nexport function ActionButton({\n isPending,\n pendingLabel,\n variant = 'secondary',\n children,\n className = '',\n disabled,\n ...button\n}: ButtonHTMLAttributes<HTMLButtonElement> & { isPending: boolean; pendingLabel: string; variant?: keyof typeof VARIANTS; children: ReactNode }) {\n return (\n <button\n {...button}\n disabled={disabled === true || isPending}\n aria-busy={isPending}\n className={`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${VARIANTS[variant]} ${className}`}\n >\n {isPending ? (\n <>\n <span aria-hidden=\"true\" className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {pendingLabel}\n </>\n ) : (\n children\n )}\n </button>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <p role=\"alert\" data-testid=\"bridge-failure\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {message}\n </p>\n ) : (\n <p role=\"status\" data-testid=\"bridge-success\" className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {message}\n </p>\n );\n}\n"],"names":["FOCUS_PATH","useFocusReport","fleetId","focus","report","isInFocus","document","visibilityState","hasFocus","undefined","EventSource","encodeURIComponent","close","window","addEventListener","removeEventListener","VARIANTS","primary","secondary","ActionButton","isPending","pendingLabel","variant","children","className","disabled","button","Notice","message","isFailure","role"],"mappings":"4CAEA,IAAA,EAAA,EAAA,CAAA,CAAA,OCAA,EAAA,EAAA,CAAA,CAAA,4BCIO,SAAS,AAAY,SAAE,CAAO,CAAuB,QAG1D,ODKM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IACxB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAM,EAAU,IAAI,YAAY,GAAG,aAAa,OAAO,EAAE,mBAAmB,ACT/D,IDSyE,EAItF,OAHA,EAAQ,SAAS,CAAG,KAClB,EAAO,OAAO,EAChB,EACO,KACL,EAAQ,KAAK,EACf,CACFO,EAAG,GAAU,EAAO,EDRpB,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KAER,IADIJ,EACEC,EAAS,KACb,IAAMC,EAAyC,YAA7BC,SAASC,eAAe,EAAkBD,SAASE,QAAQ,EACzEH,SAAuBI,IAAVN,EACfA,EAAQ,GAD4B,CACxBO,YAAY,GAAGV,WAAW,OAAO,EAAEW,mBAAmBT,IAAU,EAClEG,QAAuBI,IAAVN,IACvBA,EAAMS,CADsC,IACjC,GACXT,OAAQM,EAEZ,EAKA,OAJAL,IACAS,OAAOC,gBAAgB,CAAC,QAASV,GACjCS,OAAOC,gBAAgB,CAAC,OAAQV,GAChCE,SAASQ,gBAAgB,CAAC,mBAAoBV,GACvC,KACLS,OAAOE,mBAAmB,CAAC,QAASX,GACpCS,OAAOE,mBAAmB,CAAC,OAAQX,GACnCE,SAASS,mBAAmB,CAAC,mBAAoBX,GACjDD,GAAOS,OACT,CACF,EAAG,CE5BY,EF4BH,EE3BL,IACT,qCCRA,IAAMI,EAAW,CACfC,QAAS,4DACTC,UAAW,mEACb,aAMO,SAASC,AAAa,CAC3BC,WAAS,cACTC,CAAY,SACZC,EAAU,WAAW,UACrBC,CAAQ,WACRC,EAAY,EAAE,UACdC,CAAQ,CACR,GAAGC,EAC0I,EAC7I,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACE,GAAGA,CAAM,CACVD,UAAuB,IAAbA,GAAqBL,EAC/B,YAAWA,EACXI,UAAW,CAAC,mGAAmG,EAAER,CAAQ,CAACM,EAAQ,CAAC,CAAC,EAAEE,EAAAA,CAAW,UAEhJJ,EACC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,cAAY,OAAOI,UAAU,oFAClCH,KAGHE,GAIR,eCrCwG,IAAA,EAAA,EAAA,CAAA,CAAA,kBACjG,SAASI,AAAO,SAAEC,CAAO,WAAEC,CAAS,CAA2C,EACpF,OAAOA,EACL,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEC,KAAK,QAAQ,cAAY,iBAAiBN,UAAU,gHACpDI,IAGH,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEE,KAAK,SAAS,cAAY,iBAAiBN,UAAU,2FACrDI,GAGP"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[87952,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("40d55047d0fa263dfb22afcf17c36e422f88773b7f",d.callServer,void 0,d.findSourceMapURL,"turnRoute"),f=["slack","chat","web-push","email"],g={decide:{name:"Decide",holds:"Questions from your ships",item:"question",items:"questions"},do:{name:"Do what only you can",holds:"Steps: sign in, create, approve",item:"step",items:"steps"},"stay-aware":{name:"Stay aware",holds:"Alerts and notices",item:"alert or notice",items:"alerts and notices"},"everything-else":{name:"Everything else",holds:"Replies and other messages",item:"message",items:"messages"}},h={slack:"Slack",chat:"A chat","web-push":"Web push",email:"Email"},i="Bridge keeps every item.";var j=a.i(10039);a.s(["RoutingPanel",0,function({fleetId:a,routing:d,isSlackLinked:k}){let[l,m]=(0,c.useTransition)(),[n,o]=(0,c.useState)(),[p,q]=(0,c.useState)();return(0,b.jsxs)("section",{className:"grid gap-2","aria-labelledby":"bridge-routing-heading",children:[(0,b.jsx)("h2",{id:"bridge-routing-heading",className:"text-section font-semibold",children:"Per job"}),(0,b.jsx)("div",{className:"overflow-x-auto rounded-md border border-border bg-card",children:(0,b.jsxs)("table",{className:"w-full text-left",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border text-caption text-muted-foreground",children:[(0,b.jsx)("th",{scope:"col",className:"p-3 font-medium",children:"Job"}),(0,b.jsx)("th",{scope:"col",className:"p-3 font-medium",children:"Bridge"}),f.map(a=>(0,b.jsx)("th",{scope:"col",className:"p-3 font-medium",children:h[a]},a))]})}),(0,b.jsx)("tbody",{children:d.jobs.map(({job:c,places:j})=>(0,b.jsxs)("tr",{"data-testid":"bridge-routing-job",className:"border-b border-border last:border-b-0",children:[(0,b.jsx)("th",{scope:"row",className:"p-3 font-normal",children:(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{children:g[c].name}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:g[c].holds})]})}),(0,b.jsx)("td",{className:"p-3 text-caption text-muted-foreground",children:"Always"}),f.map(f=>{let p=j[f],r=`${c}-${f}`;return(0,b.jsx)("td",{className:"p-3",children:(0,b.jsx)("button",{type:"button","data-testid":`bridge-routing-${r}`,"aria-pressed":p,"aria-label":`${h[f]} for ${g[c].name}`,"aria-busy":l&&n===r,disabled:l||!p&&(!d.offered[f]||"slack"===f&&!k),onClick:()=>{var b;b={job:c,place:f,isOn:!p},q(void 0),o(`${b.job}-${b.place}`),m(async()=>{let c=await e({fleet:a,...b});q(c.isOk?{message:function({job:a,place:b,isOn:c}){let{name:d,item:e,items:f}=g[a],j=`${h[b]} is ${c?"on":"off"} for ${d}`;return c?"chat"===b?`${j}: it lists every ${e} not done when you ask it.`:`${j}: it shows ${f} that arrive from now on. Those already waiting stay in Bridge.`:"everything-else"===a&&"slack"===b?`${j}: only a bot ship's messages and replies to Slack show there. ${i}`:`${j}. ${i}`}(b),isFailure:!1}:{message:c.message,isFailure:!0})})},className:`inline-flex h-7 min-w-12 items-center justify-center rounded-full px-3 text-caption disabled:cursor-not-allowed disabled:opacity-50 ${p?"bg-primary text-primary-foreground":"border border-border bg-card text-muted-foreground hover:bg-accent"}`,children:p?"On":"Off"})},f)})]},c))})]})}),void 0===p?null:(0,b.jsx)(j.f,{message:p.message,isFailure:p.isFailure}),(0,b.jsx)("p",{className:"text-caption text-muted-foreground",children:"While a Bridge page is open in focus, web push and email do not wake you. Slack still posts: you turned it on, and Bridge keeps every item."})]})}],87952)},15970,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("4068e0a012962959eed53cdc1898b8acfd21d81a71",d.callServer,void 0,d.findSourceMapURL,"unlinkSlack");var f=a.i(32043),g=a.i(10039);a.s(["SlackLinkPanel",0,function({fleetId:a,slackLink:d}){let[h,i]=(0,c.useTransition)(),[j,k]=(0,c.useState)(),{workspaceName:l,link:m}=d;return(0,b.jsxs)("section",{className:"grid gap-2","aria-labelledby":"bridge-slack-heading",children:[(0,b.jsx)("h2",{id:"bridge-slack-heading",className:"text-section font-semibold",children:"Slack"}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,b.jsx)("span",{"data-testid":"bridge-slack-state",className:"min-w-0 flex-1",children:null===m?`Not linked in ${l}`:`Slack linked as @${m.slackName} in ${l}`}),null===m?(0,b.jsx)("a",{href:`/slack/link?${new URLSearchParams({fleet:a}).toString()}`,"data-testid":"bridge-slack-link",className:"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Link Slack"}):(0,b.jsx)(f.f,{"data-testid":"bridge-slack-unlink",isPending:h,pendingLabel:"Unlinking...",onClick:()=>{k(void 0),i(async()=>{let b=await e(a);b.isOk||k(b.message)})},children:"Unlink"})]}),void 0===j?null:(0,b.jsx)(g.f,{message:j,isFailure:!0})]})}],15970)},62887,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("601545266cbcd00188699907a363d2d01cacdd7590",d.callServer,void 0,d.findSourceMapURL,"turnOffWebPush"),f=(0,d.createServerReference)("606869fb42c6cf9c02d918ac32cc0df0df992ce8e8",d.callServer,void 0,d.findSourceMapURL,"turnOnWebPush"),g=[[/Edg\//,"Edge"],[/Firefox\//,"Firefox"],[/Chrome\//,"Chrome"],[/Safari\//,"Safari"]],h=[[/iPhone|iPad/,"iOS"],[/Android/,"Android"],[/Mac OS X/,"macOS"],[/Windows/,"Windows"],[/Linux/,"Linux"]],i=(a,b)=>b.find(([b])=>b.test(a))?.[1];var j=a.i(32043),k=a.i(10039);let l="/wake-worker.js";async function m(){let a=await navigator.serviceWorker.getRegistration(l);return await a?.pushManager.getSubscription()??null}async function n(a){let b;if(await Notification.requestPermission()!=="granted")return{isOk:!1,message:"Your browser did not allow notifications from this site: allow them, then turn web push on again"};let c=await navigator.serviceWorker.register(l);return await navigator.serviceWorker.ready,{isOk:!0,value:await c.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:(b=atob(a.replaceAll("-","+").replaceAll("_","/")),Uint8Array.from(b,a=>a.charCodeAt(0)))})}}a.s(["WebPushPanel",0,function({fleetId:a,webPushKey:d,browsers:l}){let[o,p]=(0,c.useState)(!0),[q,r]=(0,c.useState)(),[s,t]=(0,c.useState)(),[u,v]=(0,c.useState)(),[,w]=(0,c.useTransition)();(0,c.useEffect)(()=>{"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window?m().then(a=>{r(a?.endpoint)}):p(!1)},[]);let x=void 0!==q&&l.some(({endpoint:a,isGone:b})=>a===q&&!b);return(0,b.jsxs)("div",{className:"grid gap-2","data-testid":"bridge-wake-web-push",children:[l.map(({endpoint:c,browser:d,addedAt:f,isGone:g})=>(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsxs)("span",{className:"truncate",children:["Web push in ",d,c===q?" · this browser":""]}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:g?"No longer takes wakes: its push service ended them. Turn web push on again in that browser, or remove it.":`On since ${new Date(f).toLocaleDateString()}: it tells you when something waits in this fleet, with a link here. Never what waits.`})]}),(0,b.jsx)(j.f,{"data-testid":"bridge-web-push-remove",isPending:s===c,pendingLabel:"Removing...",disabled:void 0!==s,onClick:()=>{t(c),v(void 0),w(async()=>{c===q&&(await (await m())?.unsubscribe(),r(void 0));let b=await e(a,c);t(void 0),b.isOk||v(b.message)})},children:"Remove"})]},c)),o?x?null:(0,b.jsx)("div",{children:(0,b.jsx)(j.f,{"data-testid":"bridge-web-push-on",variant:"primary",isPending:"on"===s,pendingLabel:"Turning on...",disabled:void 0!==s,onClick:()=>{t("on"),v(void 0),w(async()=>{try{var b;let c,e,j=await n(d);if(!j.isOk)return void v(j.message);let k=function(a,b){let{endpoint:c,keys:d}=a,e=d?.p256dh,f=d?.auth;return void 0===c||void 0===e||void 0===f?void 0:{endpoint:c,keys:{p256dh:e,auth:f},browser:b}}(j.value.toJSON(),(b=navigator.userAgent,c=i(b,g),e=i(b,h),void 0===c?"A browser":void 0===e?c:`${c} on ${e}`));if(void 0===k)return void v("Your browser gave no push subscription: try again");let l=await f(a,k);l.isOk?r(k.endpoint):v(l.message)}catch{v("Your browser could not turn web push on: try again")}finally{t(void 0)}})},children:"Turn on web push in this browser"})}):(0,b.jsx)("p",{className:"text-caption text-muted-foreground",children:"This browser takes no web push."}),void 0===u?null:(0,b.jsx)(k.f,{message:u,isFailure:!0})]})}],62887)}]})();
2
-
3
- //# sourceMappingURL=web_features_bridge_state_0354e3wb0dzx1._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/bridge/state/routing-panel.tsx","../../../../../web/features/bridge/hooks/data%3A50db25%20%3Ctext/javascript%3E","../../../../../web/features/bridge/services/routing.ts","../../../../../web/features/bridge/state/slack-link-panel.tsx","../../../../../web/features/bridge/hooks/data%3Ab85c88%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/slack-link-path.ts","../../../../../web/features/bridge/state/web-push-panel.tsx","../../../../../web/features/bridge/hooks/data%3A2e8654%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A60870e%20%3Ctext/javascript%3E","../../../../../web/features/bridge/services/web-push.ts"],"sourcesContent":["'use client';\n\nimport { useState, useTransition } from 'react';\n\nimport { turnRoute } from '../hooks/bridge-actions';\nimport { JOB_NAMES, PLACE_NAMES, ROUTED_PLACES, turnedMessageOf, type RoutedJob, type RoutedPlace, type RoutingView } from '../services/routing';\nimport { Notice } from '../ui/notice';\n\n/** What a change came to, said by the grid. */\ninterface Said {\n readonly message: string;\n readonly isFailure: boolean;\n}\n\n/**\n * Routing per job (Bridge, section 8; the routing mockup): per job, the\n * places that show it besides Bridge, which always does. A switch turns a\n * place on or off at once; what it then shows is said beside the grid\n * (CC20). A place the gateway does not offer, or Slack before it is linked,\n * cannot be turned on; one on can always be turned off.\n */\nexport function RoutingPanel({ fleetId, routing, isSlackLinked }: { fleetId: string; routing: RoutingView; isSlackLinked: boolean }) {\n const [isTurning, startTransition] = useTransition();\n const [turning, setTurning] = useState<string | undefined>();\n const [said, setSaid] = useState<Said | undefined>();\n const isUsable = (place: RoutedPlace): boolean => routing.offered[place] && (place !== 'slack' || isSlackLinked);\n\n const turn = (change: { job: RoutedJob; place: RoutedPlace; isOn: boolean }) => {\n setSaid(undefined);\n setTurning(`${change.job}-${change.place}`);\n startTransition(async () => {\n const outcome = await turnRoute({ fleet: fleetId, ...change });\n setSaid(outcome.isOk ? { message: turnedMessageOf(change), isFailure: false } : { message: outcome.message, isFailure: true });\n });\n };\n\n return (\n <section className=\"grid gap-2\" aria-labelledby=\"bridge-routing-heading\">\n <h2 id=\"bridge-routing-heading\" className=\"text-section font-semibold\">\n Per job\n </h2>\n <div className=\"overflow-x-auto rounded-md border border-border bg-card\">\n <table className=\"w-full text-left\">\n <thead>\n <tr className=\"border-b border-border text-caption text-muted-foreground\">\n <th scope=\"col\" className=\"p-3 font-medium\">\n Job\n </th>\n <th scope=\"col\" className=\"p-3 font-medium\">\n Bridge\n </th>\n {ROUTED_PLACES.map((place) => (\n <th key={place} scope=\"col\" className=\"p-3 font-medium\">\n {PLACE_NAMES[place]}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {routing.jobs.map(({ job, places }) => (\n <tr key={job} data-testid=\"bridge-routing-job\" className=\"border-b border-border last:border-b-0\">\n <th scope=\"row\" className=\"p-3 font-normal\">\n <span className=\"flex flex-col\">\n <span>{JOB_NAMES[job].name}</span>\n <span className=\"text-caption text-muted-foreground\">{JOB_NAMES[job].holds}</span>\n </span>\n </th>\n <td className=\"p-3 text-caption text-muted-foreground\">Always</td>\n {ROUTED_PLACES.map((place) => {\n const isOn = places[place];\n const key = `${job}-${place}`;\n return (\n <td key={place} className=\"p-3\">\n <button\n type=\"button\"\n data-testid={`bridge-routing-${key}`}\n aria-pressed={isOn}\n aria-label={`${PLACE_NAMES[place]} for ${JOB_NAMES[job].name}`}\n aria-busy={isTurning && turning === key}\n disabled={isTurning || (!isOn && !isUsable(place))}\n onClick={() => {\n turn({ job, place, isOn: !isOn });\n }}\n className={`inline-flex h-7 min-w-12 items-center justify-center rounded-full px-3 text-caption disabled:cursor-not-allowed disabled:opacity-50 ${isOn ? 'bg-primary text-primary-foreground' : 'border border-border bg-card text-muted-foreground hover:bg-accent'}`}\n >\n {isOn ? 'On' : 'Off'}\n </button>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n {said === undefined ? null : <Notice message={said.message} isFailure={said.isFailure} />}\n <p className=\"text-caption text-muted-foreground\">While a Bridge page is open in focus, web push and email do not wake you. Slack still posts: you turned it on, and Bridge keeps every item.</p>\n </section>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40d55047d0fa263dfb22afcf17c36e422f88773b7f\":{\"name\":\"turnRoute\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_7=/*#__PURE__*/createServerReference(\"40d55047d0fa263dfb22afcf17c36e422f88773b7f\",callServer,void 0,findSourceMapURL,\"turnRoute\");export{$$RSC_SERVER_ACTION_7 as turnRoute};","/**\n * Routing per job as Bridge's routing page shows it (Bridge, section 8):\n * the jobs and places by the names the person reads, and what a change\n * says it does (CC20).\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\n\n/** Where each job shows besides Bridge, per place, as the API answers it. */\nexport type RoutingView = inferRouterOutputs<GatewayRouter>['people']['routing'];\nexport type RoutedJob = RoutingView['jobs'][number]['job'];\nexport type RoutedPlace = keyof RoutingView['offered'];\n\nexport const ROUTED_PLACES: readonly RoutedPlace[] = ['slack', 'chat', 'web-push', 'email'];\n\nexport const JOB_NAMES: Readonly<Record<RoutedJob, { readonly name: string; readonly holds: string; readonly item: string; readonly items: string }>> = {\n decide: { name: 'Decide', holds: 'Questions from your ships', item: 'question', items: 'questions' },\n do: { name: 'Do what only you can', holds: 'Steps: sign in, create, approve', item: 'step', items: 'steps' },\n 'stay-aware': { name: 'Stay aware', holds: 'Alerts and notices', item: 'alert or notice', items: 'alerts and notices' },\n 'everything-else': { name: 'Everything else', holds: 'Replies and other messages', item: 'message', items: 'messages' },\n};\n\nexport const PLACE_NAMES: Readonly<Record<RoutedPlace, string>> = { slack: 'Slack', chat: 'A chat', 'web-push': 'Web push', email: 'Email' };\n\nconst KEEPS_EVERY_ITEM = 'Bridge keeps every item.';\n\n/** What turning a place on or off for a job does: a chat lists what is not done, a place that pushes only what arrives after. */\nexport function turnedMessageOf({ job, place, isOn }: { job: RoutedJob; place: RoutedPlace; isOn: boolean }): string {\n const { name, item, items } = JOB_NAMES[job];\n const turned = `${PLACE_NAMES[place]} is ${isOn ? 'on' : 'off'} for ${name}`;\n if (!isOn) {\n return job === 'everything-else' && place === 'slack' ? `${turned}: only a bot ship's messages and replies to Slack show there. ${KEEPS_EVERY_ITEM}` : `${turned}. ${KEEPS_EVERY_ITEM}`;\n }\n if (place === 'chat') {\n return `${turned}: it lists every ${item} not done when you ask it.`;\n }\n return `${turned}: it shows ${items} that arrive from now on. Those already waiting stay in Bridge.`;\n}\n","'use client';\n\nimport { useState, useTransition } from 'react';\n\nimport { unlinkSlack } from '../hooks/bridge-actions';\nimport type { SlackLink } from '../hooks/read-bridge';\nimport { SLACK_LINK_PATH } from '../hooks/slack-link-path';\nimport { ActionButton } from '../ui/action-button';\nimport { Notice } from '../ui/notice';\n\n/**\n * The person's Slack link (gateway scopes 9.3, 9.6): \"Slack linked as\n * @mathilde in Acme\" with Unlink, or Link Slack, which signs in with Slack.\n * Linked, the person talks to the fleet's bots in Slack; what else shows\n * there is routed per job, beside it (Bridge, section 8).\n */\nexport function SlackLinkPanel({ fleetId, slackLink }: { fleetId: string; slackLink: SlackLink }) {\n const [isUnlinking, startTransition] = useTransition();\n const [failure, setFailure] = useState<string | undefined>();\n const { workspaceName, link } = slackLink;\n\n const unlink = () => {\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await unlinkSlack(fleetId);\n if (!outcome.isOk) {\n setFailure(outcome.message);\n }\n });\n };\n\n return (\n <section className=\"grid gap-2\" aria-labelledby=\"bridge-slack-heading\">\n <h2 id=\"bridge-slack-heading\" className=\"text-section font-semibold\">\n Slack\n </h2>\n <div className=\"flex flex-wrap items-center gap-3 rounded-md border border-border bg-card p-3\">\n <span data-testid=\"bridge-slack-state\" className=\"min-w-0 flex-1\">\n {link === null ? `Not linked in ${workspaceName}` : `Slack linked as @${link.slackName} in ${workspaceName}`}\n </span>\n {link === null ? (\n <a\n href={`${SLACK_LINK_PATH}?${new URLSearchParams({ fleet: fleetId }).toString()}`}\n data-testid=\"bridge-slack-link\"\n className=\"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover\"\n >\n Link Slack\n </a>\n ) : (\n <ActionButton data-testid=\"bridge-slack-unlink\" isPending={isUnlinking} pendingLabel=\"Unlinking...\" onClick={unlink}>\n Unlink\n </ActionButton>\n )}\n </div>\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </section>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4068e0a012962959eed53cdc1898b8acfd21d81a71\":{\"name\":\"unlinkSlack\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_10=/*#__PURE__*/createServerReference(\"4068e0a012962959eed53cdc1898b8acfd21d81a71\",callServer,void 0,findSourceMapURL,\"unlinkSlack\");export{$$RSC_SERVER_ACTION_10 as unlinkSlack};","/** Where Link Slack starts (gateway scopes 9.3): the button in Bridge's settings and the button in a bot's answer in Slack (src/core/slack/take-slack-event.ts). */\nexport const SLACK_LINK_PATH = '/slack/link';\n","'use client';\n\nimport { useEffect, useState, useTransition } from 'react';\n\nimport { turnOffWebPush, turnOnWebPush } from '../hooks/bridge-actions';\nimport type { WakeChannels } from '../services/deliveries';\nimport { applicationServerKeyOf, browserNameOf, subscriptionInputOf } from '../services/web-push';\nimport { ActionButton } from '../ui/action-button';\nimport { Notice } from '../ui/notice';\n\n/** The service worker that shows a wake and opens Bridge when it is pressed. */\nconst WORKER_PATH = '/wake-worker.js';\n\n/** Whether this browser takes web push at all. */\nfunction isPushTaken(): boolean {\n return 'serviceWorker' in navigator && 'PushManager' in window && 'Notification' in window;\n}\n\n/** This browser's own push subscription with the gateway's worker, if it has one. */\nasync function ownSubscription(): Promise<PushSubscription | null> {\n const registration = await navigator.serviceWorker.getRegistration(WORKER_PATH);\n return (await registration?.pushManager.getSubscription()) ?? null;\n}\n\n/** Asks the browser's permission, then subscribes it with the gateway's key: the subscription to send, or why there is none. */\nasync function subscribed(webPushKey: string): Promise<{ readonly isOk: true; readonly value: PushSubscription } | { readonly isOk: false; readonly message: string }> {\n if ((await Notification.requestPermission()) !== 'granted') {\n return { isOk: false, message: 'Your browser did not allow notifications from this site: allow them, then turn web push on again' };\n }\n const registration = await navigator.serviceWorker.register(WORKER_PATH);\n await navigator.serviceWorker.ready;\n return { isOk: true, value: await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: applicationServerKeyOf(webPushKey) }) };\n}\n\n/**\n * Web push in the section of wakes of Bridge's settings (wake a person, W8): the\n * person turns it on for this browser, which asks the browser's permission\n * first, sees the browsers they turned it on in, and removes one. Nothing is\n * on until they turn it on. A browser whose push service ended its\n * subscription is said to be gone.\n */\nexport function WebPushPanel({ fleetId, webPushKey, browsers }: { fleetId: string; webPushKey: string; browsers: WakeChannels['webPush']['browsers'] }) {\n const [isTaken, setIsTaken] = useState(true);\n const [ownEndpoint, setOwnEndpoint] = useState<string | undefined>();\n const [working, setWorking] = useState<string | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n\n useEffect(() => {\n if (!isPushTaken()) {\n setIsTaken(false);\n return;\n }\n void ownSubscription().then((own) => {\n setOwnEndpoint(own?.endpoint);\n });\n }, []);\n\n const turnOn = () => {\n setWorking('on');\n setFailure(undefined);\n startTransition(async () => {\n try {\n const subscription = await subscribed(webPushKey);\n if (!subscription.isOk) {\n setFailure(subscription.message);\n return;\n }\n const input = subscriptionInputOf(subscription.value.toJSON(), browserNameOf(navigator.userAgent));\n if (input === undefined) {\n setFailure('Your browser gave no push subscription: try again');\n return;\n }\n const outcome = await turnOnWebPush(fleetId, input);\n if (outcome.isOk) {\n setOwnEndpoint(input.endpoint);\n } else {\n setFailure(outcome.message);\n }\n } catch {\n setFailure('Your browser could not turn web push on: try again');\n } finally {\n setWorking(undefined);\n }\n });\n };\n\n const remove = (endpoint: string) => {\n setWorking(endpoint);\n setFailure(undefined);\n startTransition(async () => {\n if (endpoint === ownEndpoint) {\n await (await ownSubscription())?.unsubscribe();\n setOwnEndpoint(undefined);\n }\n const outcome = await turnOffWebPush(fleetId, endpoint);\n setWorking(undefined);\n if (!outcome.isOk) {\n setFailure(outcome.message);\n }\n });\n };\n\n const isOwnOn = ownEndpoint !== undefined && browsers.some(({ endpoint, isGone }) => endpoint === ownEndpoint && !isGone);\n return (\n <div className=\"grid gap-2\" data-testid=\"bridge-wake-web-push\">\n {browsers.map(({ endpoint, browser, addedAt, isGone }) => (\n <div key={endpoint} className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3\">\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate\">\n Web push in {browser}\n {endpoint === ownEndpoint ? ' · this browser' : ''}\n </span>\n <span className=\"text-caption text-muted-foreground\">\n {isGone ? 'No longer takes wakes: its push service ended them. Turn web push on again in that browser, or remove it.' : `On since ${new Date(addedAt).toLocaleDateString()}: it tells you when something waits in this fleet, with a link here. Never what waits.`}\n </span>\n </span>\n <ActionButton data-testid=\"bridge-web-push-remove\" isPending={working === endpoint} pendingLabel=\"Removing...\" disabled={working !== undefined} onClick={() => { remove(endpoint); }}>\n Remove\n </ActionButton>\n </div>\n ))}\n {!isTaken ? (\n <p className=\"text-caption text-muted-foreground\">This browser takes no web push.</p>\n ) : isOwnOn ? null : (\n <div>\n <ActionButton data-testid=\"bridge-web-push-on\" variant=\"primary\" isPending={working === 'on'} pendingLabel=\"Turning on...\" disabled={working !== undefined} onClick={turnOn}>\n Turn on web push in this browser\n </ActionButton>\n </div>\n )}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"601545266cbcd00188699907a363d2d01cacdd7590\":{\"name\":\"turnOffWebPush\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_9=/*#__PURE__*/createServerReference(\"601545266cbcd00188699907a363d2d01cacdd7590\",callServer,void 0,findSourceMapURL,\"turnOffWebPush\");export{$$RSC_SERVER_ACTION_9 as turnOffWebPush};","/* __next_internal_action_entry_do_not_use__ [{\"606869fb42c6cf9c02d918ac32cc0df0df992ce8e8\":{\"name\":\"turnOnWebPush\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_8=/*#__PURE__*/createServerReference(\"606869fb42c6cf9c02d918ac32cc0df0df992ce8e8\",callServer,void 0,findSourceMapURL,\"turnOnWebPush\");export{$$RSC_SERVER_ACTION_8 as turnOnWebPush};","/**\n * What the section of wakes of Bridge's settings works out in the browser (wake a\n * person, W8): the name a browser it turns web push on in is listed by, the\n * gateway's push key as the browser's push manager takes it, and the\n * subscription the browser sends the gateway.\n */\n\n/** A browser's push subscription as the gateway takes it, with the browser's name. */\nexport interface SubscriptionInput {\n readonly endpoint: string;\n readonly keys: { readonly p256dh: string; readonly auth: string };\n readonly browser: string;\n}\n\n/** The browsers and systems a name is made of, the first that matches counting: Edge and Chrome also say Safari, and Chrome says Chrome. */\nconst BROWSERS: readonly (readonly [RegExp, string])[] = [\n [/Edg\\//, 'Edge'],\n [/Firefox\\//, 'Firefox'],\n [/Chrome\\//, 'Chrome'],\n [/Safari\\//, 'Safari'],\n];\nconst SYSTEMS: readonly (readonly [RegExp, string])[] = [\n [/iPhone|iPad/, 'iOS'],\n [/Android/, 'Android'],\n [/Mac OS X/, 'macOS'],\n [/Windows/, 'Windows'],\n [/Linux/, 'Linux'],\n];\n\nconst firstOf = (userAgent: string, names: readonly (readonly [RegExp, string])[]): string | undefined => names.find(([pattern]) => pattern.test(userAgent))?.[1];\n\n/** The name a browser is listed by, such as Firefox on Linux, from its user agent. */\nexport function browserNameOf(userAgent: string): string {\n const browser = firstOf(userAgent, BROWSERS);\n const system = firstOf(userAgent, SYSTEMS);\n if (browser === undefined) {\n return 'A browser';\n }\n return system === undefined ? browser : `${browser} on ${system}`;\n}\n\n/** The bytes a base64url key stands for, as the browser's push manager takes the gateway's key. */\nexport function applicationServerKeyOf(key: string): Uint8Array<ArrayBuffer> {\n const binary = atob(key.replaceAll('-', '+').replaceAll('_', '/'));\n return Uint8Array.from(binary, (character) => character.charCodeAt(0));\n}\n\n/** The subscription to send, from the push manager's own, or none when it gave no endpoint or keys. */\nexport function subscriptionInputOf(subscription: { endpoint?: string; keys?: Record<string, string> }, browser: string): SubscriptionInput | undefined {\n const { endpoint, keys } = subscription;\n const p256dh = keys?.p256dh;\n const auth = keys?.auth;\n return endpoint === undefined || p256dh === undefined || auth === undefined ? undefined : { endpoint, keys: { p256dh, auth }, browser };\n}\n"],"names":["$$RSC_SERVER_ACTION_7","$$RSC_SERVER_ACTION_10","$$RSC_SERVER_ACTION_9"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- module.exports=[3656,a=>{"use strict";var b=a.i(72131),c=a.i(50944);a.s(["LiveRefresh",0,function({fleetId:a}){let d;return d=(0,c.useRouter)(),(0,b.useEffect)(()=>{let b=new EventSource(`/bridge/changes?fleet=${encodeURIComponent(a)}`);return b.onmessage=()=>{d.refresh()},()=>{b.close()}},[a,d]),(0,b.useEffect)(()=>{let b,c=()=>{let c="visible"===document.visibilityState&&document.hasFocus();c&&void 0===b?b=new EventSource(`/bridge/focus?fleet=${encodeURIComponent(a)}`):c||void 0===b||(b.close(),b=void 0)};return c(),window.addEventListener("focus",c),window.addEventListener("blur",c),document.addEventListener("visibilitychange",c),()=>{window.removeEventListener("focus",c),window.removeEventListener("blur",c),document.removeEventListener("visibilitychange",c),b?.close()}},[a]),null}],3656)}];
2
-
3
- //# sourceMappingURL=web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/bridge/hooks/use-focus-report.ts","../../../../../web/features/bridge/hooks/use-live-refresh.ts","../../../../../web/features/bridge/state/live-refresh.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\n/** The stream the page holds while in focus, which the web app's server follows on the gateway's API for the browser. */\nexport const FOCUS_PATH = '/bridge/focus';\n\n/**\n * Tells the gateway while the page is in focus (wake a person, W6): it holds\n * the focus stream open while the window has focus and the page shows, and\n * closes it when either ends. While a page of the person is in focus, what\n * arrives is shown there and no wake goes out; an open page not in focus\n * changes nothing. A lost connection no longer counts as in focus.\n */\nexport function useFocusReport(fleetId: string): void {\n useEffect(() => {\n let focus: EventSource | undefined;\n const report = () => {\n const isInFocus = document.visibilityState === 'visible' && document.hasFocus();\n if (isInFocus && focus === undefined) {\n focus = new EventSource(`${FOCUS_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n } else if (!isInFocus && focus !== undefined) {\n focus.close();\n focus = undefined;\n }\n };\n report();\n window.addEventListener('focus', report);\n window.addEventListener('blur', report);\n document.addEventListener('visibilitychange', report);\n return () => {\n window.removeEventListener('focus', report);\n window.removeEventListener('blur', report);\n document.removeEventListener('visibilitychange', report);\n focus?.close();\n };\n }, [fleetId]);\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** The page's live updates, which the web app's server follows on the gateway's API for the browser. */\nexport const CHANGES_PATH = '/bridge/changes';\n\n/**\n * Keeps the page in step with its fleet's requests: whenever one changes,\n * the page reads itself again on the server, as its own caller. The browser\n * opens the stream again by itself when it drops.\n */\nexport function useLiveRefresh(fleetId: string): void {\n const router = useRouter();\n useEffect(() => {\n const changes = new EventSource(`${CHANGES_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n changes.onmessage = () => {\n router.refresh();\n };\n return () => {\n changes.close();\n };\n }, [fleetId, router]);\n}\n","'use client';\n\nimport { useFocusReport } from '../hooks/use-focus-report';\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\n\n/** Keeps the page it sits in live, and tells the gateway while it is in focus (wake a person, W6): it shows nothing itself. */\nexport function LiveRefresh({ fleetId }: { fleetId: string }) {\n useLiveRefresh(fleetId);\n useFocusReport(fleetId);\n return null;\n}\n"],"names":["FOCUS_PATH","useFocusReport","fleetId","focus","report","isInFocus","document","visibilityState","hasFocus","undefined","EventSource","encodeURIComponent","close","window","addEventListener","removeEventListener"],"mappings":"sCAEA,IAAA,EAAA,EAAA,CAAA,CAAA,OCAA,EAAA,EAAA,CAAA,CAAA,4BCIO,SAAS,AAAY,SAAE,CAAO,CAAuB,QAG1D,ODKM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IACxB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAM,EAAU,IAAI,YAAY,GAAG,aAAa,OAAO,EAAE,mBAAmB,ACT/D,IDSyE,EAItF,OAHA,EAAQ,SAAS,CAAG,KAClB,EAAO,OAAO,EAChB,EACO,KACL,EAAQ,KAAK,EACf,CACFO,EAAG,GAAU,EAAO,EDRpB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KAER,IADIJ,EACEC,EAAS,KACb,IAAMC,EAAyC,YAA7BC,SAASC,eAAe,EAAkBD,SAASE,QAAQ,GACzEH,QAAuBI,IAAVN,EACfA,EAAQ,GAD4B,CACxBO,YAAY,GAAGV,WAAW,OAAO,EAAEW,mBAAmBT,IAAU,EAClEG,QAAuBI,IAAVN,IACvBA,EAAMS,CADsC,IACjC,GACXT,OAAQM,EAEZ,EAKA,OAJAL,IACAS,OAAOC,gBAAgB,CAAC,QAASV,GACjCS,OAAOC,gBAAgB,CAAC,OAAQV,GAChCE,SAASQ,gBAAgB,CAAC,mBAAoBV,GACvC,KACLS,OAAOE,mBAAmB,CAAC,QAASX,GACpCS,OAAOE,mBAAmB,CAAC,OAAQX,GACnCE,SAASS,mBAAmB,CAAC,mBAAoBX,GACjDD,GAAOS,OACT,CACF,EAAG,CE5BY,EF4BH,EE3BL,IACT"}
@@ -1,3 +0,0 @@
1
- module.exports=[48913,s=>{"use strict";s.s([])}];
2
-
3
- //# sourceMappingURL=web__next-internal_server_app_%28console%29_bridge_focus_route_actions_0syd_u8mgzdmi.js.map
@@ -1 +0,0 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,58487,24429,2410,8760,24166,5654,54940,19407,17779,35671,44047,90218,e=>{var t=e.i(71645),n=e.i(26300),r=e.i(88940),s=e.i(46376),i=e.i(33332);let a=t.createContext(void 0);function o(){let e=t.useContext(a);if(!e)throw Error((0,i.f)(73));return e}var l=e.i(1252);let u=0;var c=e.i(8868),d=e.i(39957);function f(e,t){if("string"==typeof e)return{description:e};if("function"==typeof e){let n=e(t);return"string"==typeof n?{description:n}:n}return e}var p=e.i(84446),h=e.i(96296),h=h;function m(e){let t=new Map,n=0,r=0;return e.forEach((e,s)=>{let i="ending"===e.transitionStatus;t.set(e.id,{value:e,domIndex:s,visibleIndex:i?-1:n,offsetY:r}),r+=e.height||0,i||(n+=1)}),t}function g(e,t){let n=0;return e.map(e=>{if("ending"===e.transitionStatus)return e;let r=n>=t;return n+=1,e.limited===r?e:{...e,limited:r}})}let x={toasts:e=>e.toasts,isEmpty:e=>0===e.toasts.length,toast:(e,t)=>e.toastMetadata.get(t)?.value,toastIndex:(e,t)=>e.toastMetadata.get(t)?.domIndex??-1,toastOffsetY:(e,t)=>e.toastMetadata.get(t)?.offsetY??0,toastVisibleIndex:(e,t)=>e.toastMetadata.get(t)?.visibleIndex??-1,focused:e=>e.focused,expanded:e=>e.hovering||e.focused,expandedOrOutOfFocus:e=>e.hovering||e.focused||!e.isWindowFocused,prevFocusElement:e=>e.prevFocusElement};class v extends l.f{timers=new Map;areTimersPaused=!1;constructor(e){super({...e,toastMetadata:m(e.toasts)},{},x)}setViewport=e=>{this.set("viewport",e)};syncProviderProps(e,t){let n=this.state.limit!==t;if(this.state.timeout===e&&!n)return;let r={timeout:e,limit:t};if(n){let e=g(this.state.toasts,t);r.toasts=e,r.toastMetadata=m(e)}this.update(r)}disposeEffect=()=>()=>{this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear()};removeToast(e,t=!1){let n=x.toastIndex(this.state,e);if(-1===n)return;let r=this.state.toasts[n];t||r?.onRemove?.();let s=[...this.state.toasts];s.splice(n,1),this.setToasts(s)}addToast=e=>{let{timeout:t,limit:n}=this.state,r=e.id||(u+=1,`toast-${Math.random().toString(36).slice(2,6)}-${u}`);if(e.id){let t=x.toast(this.state,e.id);if(t)if("ending"===t.transitionStatus)this.removeToast(e.id,!0);else{let{id:t,transitionStatus:n,...r}=e;return this.updateToastInternal(e.id,r,!0,!0),e.id}}let s={...e,id:r,updateKey:0,transitionStatus:"starting"},i=[s,...this.state.toasts];this.setToasts(g(i,n));let a=s.timeout??t;return"loading"!==s.type&&a>0&&this.scheduleTimer(r,a,()=>this.closeToast(r)),x.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),r};updateToast=(e,t)=>{let n=x.toast(this.state,e);n&&"ending"!==n.transitionStatus&&this.updateToastInternal(e,"function"==typeof t?t(n):t,!1,!0)};updateToastInternal=(e,t,n=!1,r=!1)=>{let{timeout:s,toasts:i}=this.state,a=x.toast(this.state,e);if(!a||"ending"===a.transitionStatus)return;let o={...a,...t,...r&&{updateKey:a.updateKey+1}};this.setToasts(i.map(t=>t.id===e?o:t));let l=o.timeout??s,u=a.timeout??s,c=Object.hasOwn(t,"timeout"),d="ending"!==o.transitionStatus&&"loading"!==o.type&&l>0,f=this.timers.has(e),p=u!==l,h="loading"===a.type;!d&&f?this.clearTimer(e):d&&(!f||p||c||h||n)&&(this.clearTimer(e),this.scheduleTimer(e,l,()=>this.closeToast(e)),x.expandedOrOutOfFocus(this.state)&&this.pauseTimers())};closeToast=e=>{let t,n=void 0===e,{limit:r,toasts:s}=this.state;if(n)t=s,this.clearTimers();else{let n=x.toast(this.state,e);if(!n)return;t=[n],this.clearTimer(e)}let i=g(s.map(t=>n||t.id===e?{...t,transitionStatus:"ending",height:0}:t),r);this.setToasts(i,!i.some(e=>"ending"!==e.transitionStatus)),t.forEach(e=>{"ending"!==e.transitionStatus&&e.onClose?.()}),this.handleFocusManagement(e)};promiseToast=(e,t)=>{let n=f(t.loading),r=this.addToast({...n,type:"loading"}),s=e.then(e=>{let n=f(t.success,e);return this.updateToast(r,{...n,type:"success",timeout:n.timeout}),e}).catch(e=>{let n=f(t.error,e);return this.updateToast(r,{...n,type:"error",timeout:n.timeout}),Promise.reject(e)});return({}).hasOwnProperty.call(t,"setPromise")&&t.setPromise(s),s};pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(e=>{e.timeout&&(e.timeout.clear(),e.remaining=Math.max(e.remaining-(Date.now()-e.start),0))}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((e,t)=>{e.remaining=e.remaining>0?e.remaining:e.delay,e.timeout??=d.U.create(),e.timeout.start(e.remaining,()=>{this.handleTimerFired(t),e.callback()}),e.start=Date.now()}))}restoreFocusToPrevElement(){this.state.prevFocusElement?.focus({preventScroll:!0})}handleDocumentPointerDown=e=>{if("touch"!==e.pointerType)return;let t=(0,p.Z)(e);(0,p.I)(this.state.viewport,t)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))};scheduleTimer(e,t,n){let r=Date.now(),s=x.expandedOrOutOfFocus(this.state)?void 0:d.U.create();s?.start(t,()=>{this.handleTimerFired(e),n()}),this.timers.set(e,{timeout:s,start:r,delay:t,remaining:t,callback:n})}clearTimers(){this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear(),this.areTimersPaused=!1}clearTimer(e){let t=this.timers.get(e);t?.timeout?.clear(),this.timers.delete(e),this.resetPausedStateIfNoTimersRemain()}handleTimerFired(e){this.timers.delete(e),this.resetPausedStateIfNoTimersRemain()}resetPausedStateIfNoTimersRemain(){0===this.timers.size&&(this.areTimersPaused=!1)}setToasts(e,t=0===e.length){let n={toasts:e,toastMetadata:m(e)};t&&(n.hovering=!1,n.focused=!1),this.update(n)}handleFocusManagement(e){let t=(0,p.T)((0,c.f)(this.state.viewport));if(!this.state.viewport||!(0,p.I)(this.state.viewport,t)||!(0,h.F)(t))return;if(void 0===e)return void this.restoreFocusToPrevElement();let n=x.toasts(this.state),r=x.toastIndex(this.state,e),s=(e,t)=>{for(let r=e;r>=0&&r<n.length;r+=t)if("ending"!==n[r].transitionStatus)return n[r];return null},i=s(r+1,1)??s(r-1,-1);i?i.ref?.current?.focus():this.restoreFocusToPrevElement()}}var b=e.i(43476);function y(e){let{store:t,timeout:n,limit:r}=e;return(0,s.f)(()=>{t.syncProviderProps(n,r)},[t,n,r]),null}var w=e.i(74735),S=e.i(65420),j=e.i(33848),N=e.i(2077),T=e.i(52535),R=e.i(52245),h=h;let P=t.forwardRef(function(e,n){let{render:r,className:s,style:i,children:a,...l}=e,u=o(),f=(0,d.e)(),m=t.useRef(!1),g=t.useRef(!1),x=t.useRef(!1),v=u.useState("isEmpty"),y=u.useState("toasts"),P=u.useState("focused"),C=u.useState("expanded"),M=u.useState("prevFocusElement"),I=y[0]?.height,$=y.some(e=>"ending"===e.transitionStatus),O=y.filter(e=>"high"===e.priority);function E(){u.state.toasts.some(e=>"ending"===e.transitionStatus)||x.current||!g.current||(u.set("hovering",!1),u.select("expandedOrOutOfFocus")||u.resumeTimers(),g.current=!1)}function k(){u.pauseTimers(),u.set("hovering",!0),g.current=!1}function F(e){"touch"===e.pointerType&&(x.current=!1,E())}function D(){if(m.current){m.current=!1;return}!P&&(0,h.F)((0,p.T)((0,c.f)(u.state.viewport)))&&(u.set("focused",!0),u.pauseTimers())}t.useEffect(()=>{let e=u.state.viewport;if(!e||v)return;let t=(0,j.f)(e),n=(0,c.f)(e);return(0,S.f)((0,w.f)(t,"keydown",function(t){"F6"===t.key&&(0,p.Z)(t)!==e&&(t.preventDefault(),u.set("prevFocusElement",(0,p.T)(n)),e?.focus({preventScroll:!0}),u.pauseTimers(),u.set("focused",!0))}),(0,w.f)(t,"blur",function(e){(0,p.Z)(e)===t&&(u.set("isWindowFocused",!1),u.pauseTimers())},!0),(0,w.f)(t,"focus",function(n){if(n.relatedTarget)return;let r=(0,p.Z)(n),s=(0,p.T)((0,c.f)(e));r!==t&&(0,p.I)(e,r)&&(0,h.F)(s)||u.resumeTimers(),f.start(0,()=>u.set("isWindowFocused",!0))},!0),(0,w.f)(n,"pointerdown",u.handleDocumentPointerDown,!0))},[u,f,v]),t.useEffect(E,[$,u]);let A={tabIndex:-1,role:"region","aria-live":"polite","aria-atomic":!1,"aria-relevant":"additions text","aria-label":"Notifications",onMouseEnter:k,onMouseMove:k,onMouseLeave:function(){g.current=!0,E()},onFocus:D,onBlur:function(e){!(!P||(0,p.I)(u.state.viewport,e.relatedTarget))&&(u.set("focused",!1),u.select("expandedOrOutOfFocus")||u.resumeTimers())},onKeyDown:function(e){"Tab"===e.key&&e.shiftKey&&(0,p.Z)(e.nativeEvent)===u.state.viewport&&(e.preventDefault(),u.restoreFocusToPrevElement())},onClick:D,onPointerDown:function(e){"touch"===e.pointerType&&(x.current=!0)},onPointerUp:F,onPointerCancel:F,style:{"--toast-frontmost-height":I?`${I}px`:void 0}},Y=!v&&M&&(0,b.jsx)(T.f,{onFocus:function(e){m.current=!0;let t=e.relatedTarget===u.state.viewport?y.find(e=>"ending"!==e.transitionStatus&&!e.limited):void 0;t?t.ref?.current?.focus():u.restoreFocusToPrevElement()}}),X=(0,R.a)("div",e,{ref:[n,u.setViewport],state:{expanded:C},props:[A,l,{children:(0,b.jsxs)(t.Fragment,{children:[Y,a,Y]})}]});return(0,b.jsxs)(t.Fragment,{children:[Y,X,!P&&O.length>0&&(0,b.jsx)("div",{style:N.p,children:O.map(e=>(0,b.jsxs)("div",{role:"alert","aria-atomic":!0,children:[(0,b.jsx)("div",{children:e.title}),(0,b.jsx)("div",{children:e.description})]},e.id))})]})});var C=e.i(74080),M=e.i(44394),I=e.i(67865);let $=t.createContext(void 0);function O(){let e=t.useContext($);if(!e)throw Error((0,i.f)(66));return e}var E=e.i(74354),k=e.i(37584),F=e.i(38396);function D(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}e.s(["f",0,D],24429);var A=e.i(96545);function Y(e,t,n){return"function"==typeof e?.elementFromPoint?e.elementFromPoint(t,n):null}function X(e,t){let n=(t??(0,j.f)(e).getComputedStyle(e)).transform,r=0,s=0,i=1;if(n&&"none"!==n){let e=n.match(/matrix(?:3d)?\(([^)]+)\)/);if(e){let t=e[1].split(", ").map(parseFloat);6===t.length?(r=t[4],s=t[5],i=Math.sqrt(t[0]*t[0]+t[1]*t[1])):16===t.length&&(r=t[12],s=t[13],i=t[0])}}return{x:r,y:s,scale:i}}function z(e,t,n){switch(e){case"up":return-n;case"down":return n;case"left":return-t;case"right":return t;default:return 0}}function U(e){return Number.isFinite(e)&&e>0?e:null}function L(e,t){return`translate3d(${e.x}px,${e.y}px,0) scale(${t})`}function H(e,t,n){let r=e[n];if("function"==typeof r)try{r.call(e,t)}catch(e){if(e&&"object"==typeof e&&"name"in e&&"NotFoundError"===e.name)return;throw e}}e.s(["f",0,Y],2410),e.s(["R",0,z,"w",0,function(e){let{enabled:n,directions:r,elementRef:s,movementCssVars:i,canStart:a,ignoreSelectorWhenTouch:o=!0,ignoreScrollableAncestors:l=!1,swipeThreshold:u,onDismiss:d,onProgress:f,onCancel:h,onSwipeStart:m,onRelease:g,onSwipingChange:x,trackDrag:v=!0}=e,b=1===r.length?r[0]:void 0,y=Math.max(0,"number"==typeof u?u:40),w=r.includes("left"),S=r.includes("right"),j=r.includes("up"),N=r.includes("down"),T=w||S,R=j||N,P=T?"horizontal":"vertical",[C,M]=t.useState(void 0),[$,O]=t.useState(!1),[E,k]=t.useState(!1),F=t.useRef({x:0,y:0}),V=t.useRef({x:0,y:0}),W=t.useRef(null),K=t.useRef({x:0,y:0,scale:1}),G=t.useRef(void 0),Z=t.useRef(0),B=t.useRef(!1),q=t.useRef({x:0,y:0}),_=t.useRef(!1),J=t.useRef(!1),Q=t.useRef(null),ee=t.useRef(!1),et=t.useRef(!1),en=t.useRef({width:0,height:0}),er=t.useRef(0),es=t.useRef(y),ei=t.useRef(null),ea=t.useRef(null),eo=t.useRef(null),el=t.useRef(!1),eu=t.useRef({x:0,y:0}),ec=t.useRef(null),ed=t.useRef(!1),ef=t.useRef(null),ep=(0,I.f)(e=>{ed.current!==e&&(ed.current=e,O(e),x?.(e))});function eh(e){if(!e)return;let t=s.current,n=ei.current;t&&n&&(es.current=Math.max(0,n({element:t,direction:e})))}let em=(0,I.f)((e,t)=>{let n=Number.isFinite(e)?D(e,0,1):0,r=n!==er.current,s=!1;if(t){let e=ec.current;s=!e||e.deltaX!==t.deltaX||e.deltaY!==t.deltaY||e.direction!==t.direction}(r||s)&&(er.current=n,t?ec.current=t:r&&(ec.current=null),f?.(n,t))}),eg=(0,I.f)(e=>{let t=s.current;if(!v||!t){e||(ef.current=null);return}let n=t.style,r=ef.current;e?(r||(ef.current=[n.transition,n.transform]),n.transition="none"):r&&([n.transition,n.transform]=r,ef.current=null);let a=V.current,o=K.current,l=a.x-o.x,u=a.y-o.y;e&&(n.transform=L(a,o.scale)),n.setProperty(i.x,`${l}px`),n.setProperty(i.y,`${u}px`)});function ex(e,t){if(null===t)return;let n=eo.current;if(n&&t>n.time){let r=1>Math.abs(e.x-n.x)&&1>Math.abs(e.y-n.y),s=r&&!el.current;if(el.current=r,s)return;let i=Math.max(t-n.time,4);eu.current={x:(e.x-n.x)/i,y:(e.y-n.y)/i}}eo.current={x:e.x,y:e.y,time:t}}let ev=t.useCallback(()=>{M(void 0),ep(!1),k(!1),em(0),es.current=y,ei.current=null,F.current={x:0,y:0},V.current={x:0,y:0},K.current={x:0,y:0,scale:1},G.current=void 0,Z.current=0,B.current=!1,q.current={x:0,y:0},_.current=!1,W.current=null,J.current=!1,Q.current=null,ee.current=!1,et.current=!1,en.current={width:0,height:0},ea.current=null,eo.current=null,el.current=!1,eu.current={x:0,y:0},ec.current=null,eg(!1)},[ep,y,eg,em]);function eb(e){if("touches"in e){let t=e.touches[0];return t?{x:t.clientX,y:t.clientY}:null}return{x:e.clientX,y:e.clientY}}function ey(e){return"touches"in e||"touch"===e.pointerType}function ew(e,t){return Y(s.current?.getRootNode(),e.x,e.y)??(0,p.Z)(t)}function eS(e,t){let n,r;return n=(0,A.U)(e,t,P),r=(0,c.f)(n),n===r.body||n===r.documentElement?null:n}function ej(e,t,n){ee.current=!1;let r=ey(e),i=ew(t,e.nativeEvent),a=(0,c.f)(s.current).body,d=r&&a?eS(i,a):null,f=n?.ignoreScrollableTarget??!1;if(d&&!f||(ee.current=!!(d&&f),(0,p.h)(i,'button,a,input,select,textarea,label,[role="button"]')&&(!r||o)))return!1;let h=s.current;if(l&&h&&i&&!n?.ignoreScrollableAncestors&&null!=(0,A.i)(i,h,P))return!1;if(B.current=!1,G.current=void 0,Z.current=0,F.current=t,ea.current=U(e.timeStamp),eo.current=null,el.current=!1,eu.current={x:0,y:0},q.current=t,W.current=t,es.current=y,ei.current="function"==typeof u?u:null,h){en.current={width:h.offsetWidth,height:h.offsetHeight},eh(b);let t=X(h);K.current=t,V.current={x:t.x,y:t.y},ex({x:t.x,y:t.y},ea.current),"touches"in e||H(h,e.pointerId,"setPointerCapture")}return m?.(e.nativeEvent),ep(!0),_.current=!0,em(0),eg(!0),!0}function eN(){eT(),ee.current=!1,W.current=null}function eT(){J.current=!1,Q.current=null}let eR=(0,I.f)(e=>{if(!n||e.defaultPrevented||e.nativeEvent.defaultPrevented||!("touches"in e)&&0!==e.button)return;let t=eb(e);!t||(J.current=!0,Q.current=t,ee.current=!1,et.current=!("touches"in e),(!a||a(t,{nativeEvent:e.nativeEvent,direction:b}))&&ej(e,t)&&eT())}),eP=(0,I.f)(e=>{let t;if(!n)return;let i=V.current,a=K.current,o=i.x-a.x,l=i.y-a.y,u={deltaX:o,deltaY:l,direction:G.current};if(!ed.current){eN(),em(0,u);return}ep(!1),eN(),et.current=!1;let c=s.current;!c||"touches"in e||H(c,e.pointerId,"releasePointerCapture");let f=ea.current,p=U(e.timeStamp),h=null!==f&&null!==p&&p>f?p-f:0,m=h>0?Math.max(h,50):0,x=m>0?o/m:0,v=m>0?l/m:0,y=eu.current.x,w=eu.current.y,S=eo.current;if(S&&null!==p&&p>=S.time){let e=p-S.time;if(e<=80){let t=Math.max(e,4),n=i.x-S.x,r=i.y-S.y;Math.abs(n)>=1&&(y=n/t),Math.abs(r)>=1&&(w=r/t)}else y=0,w=0}let j=g?.({event:e.nativeEvent,direction:G.current,deltaX:o,deltaY:l,velocityX:x,velocityY:v,releaseVelocityX:y,releaseVelocityY:w}),N="boolean"==typeof j;if(B.current&&!N){V.current={x:a.x,y:a.y},M(void 0),eg(!1),em(0,u);return}let T=!1;if(N)T=j,t=G.current??b;else for(let e of r)if(z(e,o,l)>es.current){T=!0,t=e;break}T&&t?(M(t),k(!0),eg(!1),d?.(e.nativeEvent,{direction:t})):(V.current={x:a.x,y:a.y},M(void 0),eg(!1),em(0,u))}),eC=(0,I.f)(e=>{let t=eb(e);if(!t)return;let r=!1;if(!("touches"in e)){let t=e.buttons%2==1;if(t&&(et.current=!0),0!==e.buttons&&!t)return void function(e){if(eN(),!ed.current)return;ep(!1);let t=K.current;V.current={x:t.x,y:t.y},M(void 0),et.current=!1,eg(!1);let n=s.current;n&&H(n,e.pointerId,"releasePointerCapture"),em(0,{deltaX:0,deltaY:0,direction:void 0}),h?.(e.nativeEvent)}(e);if(0===e.buttons&&et.current){if(!ed.current)return void eP(e);r=!0}}if(!$&&J.current){if(!ey(e)&&(e.defaultPrevented||e.nativeEvent.defaultPrevented))return void eN();if(!a||a(t,{nativeEvent:e.nativeEvent,direction:b})){let n=Q.current,r=!1;if(ey(e)){let i=s.current;if(n&&i){let s=ew(t,e.nativeEvent),a=(0,c.f)(i).body,o=a?eS(s,a):null;if(o&&((0,p.I)(i,o)||(0,p.I)(o,i))){let e,s=t.x-n.x,i=t.y-n.y,a=(e=(e,t,n,r,s)=>e>0&&t<=0&&r||e<0&&t>=Math.max(0,n)&&s,R&&0!==i?e(i,o.scrollTop,o.scrollHeight-o.clientHeight,N,j):T&&0!==s?e(s,o.scrollLeft,o.scrollWidth-o.clientWidth,S,w):null);if(!1===a)return;!0===a&&(r=!0)}}}ej(e,t,{ignoreScrollableTarget:r,ignoreScrollableAncestors:r})&&(n&&r?(eT(),F.current=n,q.current=n,W.current=n,_.current=!1):(eT(),ee.current=!1))}}let i=W.current,o=null===i?{x:0,y:0}:{x:t.x-i.x,y:t.y-i.y};W.current=t,function(e,t,r){let s,i,a;if(!n||!ed.current)return;let o=(0,p.Z)(e.nativeEvent);if(ey(e)&&!ee.current&&eS(o,e.currentTarget))return;if("touches"in e||e.preventDefault(),_.current&&(_.current=!1,v)){F.current=t;let n=U(e.timeStamp);null!==n&&(ea.current=n),eo.current=null,el.current=!1}let l=t.x,u=t.y,c=r.x,d=r.y;(d<0&&u>q.current.y||d>0&&u<q.current.y)&&(q.current={x:q.current.x,y:u}),(c<0&&l>q.current.x||c>0&&l<q.current.x)&&(q.current={x:l,y:q.current.y});let f=l-F.current.x,h=u-F.current.y,m=u-q.current.y,g=l-q.current.x;if(G.current){let e=G.current,t=z(e,g,m);t>es.current?(B.current=!1,M(e)):w&&S||j&&N||!(Z.current-t>=10)||(B.current=!0)}else(s=Math.abs(f)>=Math.abs(h)?f>0?"right":"left":h>0?"down":"up")&&("left"===s&&w||"right"===s&&S||"up"===s&&j||"down"===s&&N)&&(G.current=s,Z.current=z(s,f,h),M(s),eh(s));let x=(i=e=>Math.sign(e)*Math.abs(e)**.5,a=(e,t,n)=>!t&&e<0||!n&&e>0?i(e):e,{x:T?a(f,w,S):i(f),y:R?a(h,j,N):i(h)}),y=K.current.x,P=K.current.y;T&&(y+=x.x),R&&(P+=x.y);let C=V.current,I=y!==C.x||P!==C.y;V.current={x:y,y:P},I&&eg(!0),ex({x:y,y:P},U(e.timeStamp));let $=y-K.current.x,O=P-K.current.y,E={deltaX:$,deltaY:O,direction:G.current},k=0,D=b??G.current;if(D){let e="left"===D||"right"===D?en.current.width:en.current.height,t=K.current.scale||1,n=z(D,$,O);e>0&&t>0&&n>0&&(k=n/(e*t))}em(k,E)}(e,t,o),!r||"touches"in e||eP(e)}),eM=(0,I.f)((e,t)=>{eC({touches:e.touches,currentTarget:t,nativeEvent:e,defaultPrevented:e.defaultPrevented,timeStamp:e.timeStamp})}),eI=t.useCallback(()=>{let e=ed.current,t=V.current,n=K.current,r=t.x-n.x,s=t.y-n.y;return e||0!==r||0!==s||E?{transition:e?"none":void 0,transform:e?L(t,n.scale):void 0,[i.x]:`${r}px`,[i.y]:`${s}px`}:{[i.x]:"0px",[i.y]:"0px"}},[E,i]);return{swiping:$,swipeDirection:C,dragDismissed:E,getPointerProps:t.useCallback(()=>n?{onPointerDown:eR,onPointerMove:eC,onPointerUp:eP,onPointerCancel:eP}:{},[n,eP,eC,eR]),getTouchProps:t.useCallback(()=>n?{onTouchStart:eR,onTouchMove:eC,onTouchEnd:eP,onTouchCancel:eP}:{},[n,eP,eC,eR]),moveNative:eM,getDragStyles:eI,reset:ev}}],8760);var V=e.i(80862),V=V,W=V;e.s(["f",0,W],24166);var W=V;V.startingStyle,W.endingStyle;let K={...E.f,swipeDirection:e=>e?{"data-swipe-direction":e}:null},G=`${F.u},${F.N}`,Z=t.forwardRef(function(e,n){let r,i,{toast:a,render:l,className:u,swipeDirection:d=["down","right"],style:f,...h}=e,m=a.positionerProps?.anchor!==void 0,g=[];m||(g=Array.isArray(d)?d:[d]);let x=g.length>0,v=o(),[y,S]=t.useState(void 0),[j,N]=t.useState(!1),[T,P]=t.useState(!1),[O,E]=t.useState({x:0,y:0}),[F,D]=t.useState({x:0,y:0,scale:1}),[A,Y]=t.useState(),[U,L]=t.useState(),[H,V]=t.useState(null),W=t.useRef(null),Z=t.useRef(void 0),B=t.useRef({x:0,y:0}),q=t.useRef({x:0,y:0,scale:1}),_=t.useRef(void 0),J=t.useRef(0),Q=t.useRef(!1),ee=t.useRef({x:0,y:0}),et=t.useRef(!1),en=t.useRef({x:0,y:0}),er=t.useRef(null),es=t.useRef(null),ei=v.useState("toastIndex",a.id),ea=v.useState("toastVisibleIndex",a.id),eo=v.useState("toastOffsetY",a.id),el=v.useState("focused"),eu=v.useState("expanded");(0,k.f)({open:"ending"!==a.transitionStatus,ref:W,onComplete(){"ending"===a.transitionStatus&&v.removeToast(a.id)}});let ec=(0,I.f)((e=!1)=>{let t=W.current;if(!t)return;let n=t.style.height;t.style.height="auto";let r=t.offsetHeight;function s(){v.updateToastInternal(a.id,{ref:W,height:r,transitionStatus:void 0})}t.style.height=n,e?C.flushSync(s):s()});function ed(e){en.current=e,E(e)}(0,s.f)(()=>{let e=Z.current;("starting"===a.transitionStatus||e!==a.id)&&(void 0!==e&&(S(void 0),D({x:0,y:0,scale:1}),ed({x:0,y:0})),Z.current=a.id,ec())},[ec,a.id,a.transitionStatus]),(0,s.f)(()=>()=>{es.current?.abort()},[]);let ef=(0,I.f)(e=>{let t;if(e.pointerId!==er.current)return;er.current=null,es.current?.abort(),es.current=null,N(!1),P(!1),V(null);let n=q.current;if("pointercancel"===e.type||Q.current){ed({x:n.x,y:n.y}),S(void 0);return}let r=en.current,s=r.x-n.x,i=r.y-n.y;for(let e of g)if(z(e,s,i)>40){t=e;break}t?(S(t),v.closeToast(a.id)):(ed({x:n.x,y:n.y}),S(void 0))});t.useEffect(()=>{let e=W.current;if(x&&e)return(0,w.f)(e,"touchmove",function(t){null!==er.current&&(0,p.I)(e,(0,p.Z)(t))&&t.preventDefault()},{passive:!1})},[x]);let ep="high"===a.priority,eh={role:ep?"alertdialog":"dialog",tabIndex:0,"aria-modal":!1,"aria-labelledby":A,"aria-describedby":U,"aria-hidden":!!ep&&!el||void 0,onPointerDown:x?function(e){if(0!==e.button)return;"touch"===e.pointerType&&v.pauseTimers();let t=(0,p.Z)(e.nativeEvent);if((0,p.h)(t,`button,a,input,textarea,[role="button"],${G}`))return;Q.current=!1,_.current=void 0,J.current=0,er.current=e.pointerId,B.current={x:e.clientX,y:e.clientY},ee.current=B.current;let n=e.currentTarget,r=X(n);q.current=r,D(r),ed({x:r.x,y:r.y}),v.set("hovering",!0),N(!0),P(!1),V(null),et.current=!0,es.current?.abort();let s=new AbortController;es.current=s;let i=(0,c.f)(n);i.addEventListener("pointerup",ef,{signal:s.signal}),i.addEventListener("pointercancel",ef,{signal:s.signal}),n.setPointerCapture?.(e.pointerId)}:void 0,onPointerMove:x?function(e){let t,n,r,s;if(e.pointerId!==er.current)return;e.preventDefault(),et.current&&(B.current={x:e.clientX,y:e.clientY},et.current=!1);let{clientY:i,clientX:a,movementX:o,movementY:l}=e;(l<0&&i>ee.current.y||l>0&&i<ee.current.y)&&(ee.current={x:ee.current.x,y:i}),(o<0&&a>ee.current.x||o>0&&a<ee.current.x)&&(ee.current={x:a,y:ee.current.y});let u=a-B.current.x,c=i-B.current.y,d=i-ee.current.y,f=a-ee.current.x,p=H;if(!T&&Math.sqrt(u*u+c*c)>=1){P(!0);let e=g.includes("left")||g.includes("right"),t=g.includes("up")||g.includes("down");e&&t&&V(p=Math.abs(u)>Math.abs(c)?"horizontal":"vertical")}if(_.current){let e=_.current,t=z(e,f,d);t>40?(Q.current=!1,S(e)):g.includes("left")&&g.includes("right")||g.includes("up")&&g.includes("down")||!(J.current-t>=10)||(Q.current=!0)}else"vertical"===p?c>0?t="down":c<0&&(t="up"):"horizontal"===p?u>0?t="right":u<0&&(t="left"):t=Math.abs(u)>=Math.abs(c)?u>0?"right":"left":c>0?"down":"up",t&&g.includes(t)&&(_.current=t,J.current=z(t,u,c),S(t));let h=(n=e=>e>0?e**.5:-(Math.abs(e)**.5),r=u>0&&!g.includes("right")||u<0&&!g.includes("left"),s=c>0&&!g.includes("down")||c<0&&!g.includes("up"),{x:r?n(u):u,y:s?n(c):c}),m=q.current.x,x=q.current.y,v=g.includes("left")||g.includes("right"),b=g.includes("up")||g.includes("down");"vertical"!==p&&v&&(m+=h.x),"horizontal"!==p&&b&&(x+=h.y),ed({x:m,y:x})}:void 0,onPointerUp:x?ef:void 0,onPointerCancel:x?ef:void 0,onKeyDown:function(e){"Escape"===e.key&&W.current&&(0,p.I)(W.current,(0,p.T)((0,c.f)(W.current)))&&v.closeToast(a.id)},inert:(0,M.f)(a.limited),style:{...(r=O.x-F.x,i=O.y-F.y,{transition:j?"none":void 0,transform:j?`translateX(${O.x}px) translateY(${O.y}px) scale(${F.scale})`:void 0,"--toast-swipe-movement-x":`${r}px`,"--toast-swipe-movement-y":`${i}px`}),"--toast-index":"ending"===a.transitionStatus?ei:ea,"--toast-offset-y":`${eo}px`,"--toast-height":a.height?`${a.height}px`:void 0}},em=t.useMemo(()=>({toast:a,setTitleId:Y,setDescriptionId:L,recalculateHeight:ec,visibleIndex:ea,expanded:eu}),[a,Y,L,ec,ea,eu]),eg={transitionStatus:a.transitionStatus,expanded:eu,limited:a.limited||!1,type:a.type,swiping:j,swipeDirection:y},ex=(0,R.a)("div",e,{ref:[n,W],state:eg,stateAttributesMapping:K,props:[eh,h]});return(0,b.jsx)($.Provider,{value:em,children:ex})}),B=t.forwardRef(function(e,n){let{render:r,className:i,style:a,...o}=e,{visibleIndex:l,expanded:u,recalculateHeight:c}=O(),d=t.useRef(null);return(0,s.f)(()=>{c();let e=d.current;if(!e||"function"!=typeof ResizeObserver||"function"!=typeof MutationObserver)return;let t=new ResizeObserver(()=>c(!0)),n=new MutationObserver(()=>c(!0));return t.observe(e),n.observe(e,{childList:!0,subtree:!0,characterData:!0}),()=>{t.disconnect(),n.disconnect()}},[c]),(0,R.a)("div",e,{ref:[n,d],state:{expanded:u,behind:l>0},props:o})});var q=e.i(83977);let _=t.forwardRef(function(e,n){var r;let i,{render:a,className:o,style:l,id:u,children:c,...d}=e,{id:f,children:p,type:h,setId:m}=function(e,t,n){let{toast:r,setTitleId:s,setDescriptionId:i}=O(),a=t??("title"===n?r.title:r.description);return{id:(0,q.f)(e),children:a,type:r.type,setId:"title"===n?s:i}}(u,c,"title");return r=(0,R.a)("h2",e,{ref:n,state:{type:h},props:{...d,id:f,children:p}}),i=t.isValidElement(r)&&function e(t){return null!=t&&"boolean"!=typeof t&&""!==t&&(!Array.isArray(t)||t.some(e))}(r.props.children),(0,s.f)(()=>{if(i)return m(f),()=>{m(e=>e===f?void 0:e)}},[i,f,m]),i?r:null});var J=e.i(40886);let Q=t.forwardRef(function(e,n){let{render:r,className:s,style:i,disabled:a,nativeButton:l=!0,...u}=e,c=o(),{toast:d,expanded:f}=O(),[p,h]=t.useState(!1),{getButtonProps:m,buttonRef:g}=(0,J.f)({disabled:a,native:l}),x={type:d.type};return(0,R.a)("button",e,{ref:[n,g],state:x,props:[{"aria-hidden":!f&&!p,onClick(){c.closeToast(d.id)},onFocus(){h(!0)},onBlur(){h(!1)}},u,m]})});var ee=e.i(78680);let et=t.forwardRef(function(e,t){return(0,b.jsx)(ee.f,{ref:t,...e})});e.s(["Close",0,Q,"Content",0,B,"Portal",0,et,"Provider",0,function(e){let{children:s,timeout:i=5e3,limit:o=3,toastManager:l}=e,u=(0,r.f)(()=>new v({timeout:i,limit:o,viewport:null,toasts:[],hovering:!1,focused:!1,isWindowFocused:!0,prevFocusElement:null})).current;return(0,n.f)(u.disposeEffect),t.useEffect(function(){if(l)return l[" subscribe"](({action:e,options:t})=>{let n=t.id;"promise"===e&&t.promise?u.promiseToast(t.promise,t):"update"===e&&n?u.updateToast(n,t.updates):"close"===e?u.closeToast(n):u.addToast(t)})},[u,l]),(0,b.jsxs)(a.Provider,{value:u,children:[(0,b.jsx)(y,{store:u,timeout:i,limit:o}),s]})},"Root",0,Z,"Title",0,_,"Viewport",0,P,"useToastManager",0,function(){let e=o(),n=e.useState("toasts");return t.useMemo(()=>({toasts:n,add:e.addToast,close:e.closeToast,update:e.updateToast,promise:e.promiseToast}),[n,e])}],2860);var en=e.i(2860);e.s(["f",0,en],58487);var er=en;e.s(["f",0,er],5654);var es=e.i(95187);let ei=(0,es.createServerReference)("40116412e1ee14b4277bdce3fc91fbf9f3a827e6ee",es.callServer,void 0,es.findSourceMapURL,"setPartyScopes");function ea(e){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} and ${e.at(-1)??""}`}function eo(e){return`${String(e)} ${1===e?"tool":"tools"}`}function el(e,t){return null===t?e:`${e}; the fleet sees it at the proxy ship's next statement: ${t}`}e.s(["f",0,ei],54940),e.s(["B",0,function({party:e,scopes:t}){return 0===t.length?`Every message to ${e} needs nothing beyond reaching it`:`Every message to ${e} needs ${ea(t)}`},"G",0,function({party:e,scopes:t}){return 0===t.length?`Every tool of ${e} needs nothing beyond reaching it`:`Every tool of ${e} needs ${ea(t)}`},"y",0,function({scopes:e,how:t,count:n}){return"remove"===t?`${ea(e)} removed from ${eo(n)}`:0===e.length?`${eo(n)} need${1===n?"s":""} nothing of ${1===n?"its":"their"} own`:`${ea(e)} set on ${eo(n)}`},"I",0,el,"q",0,function(e){return e.map(({scopes:e,count:t})=>`${ea(e)} set on ${eo(t)}`).join("; ")},"g",0,function({count:e,isOn:t,statementRefusal:n}){return el(`${eo(e)} switched ${t?"on":"off"}`,n)}],19407),e.s(["f",0,function({party:e=[],own:t,listed:n}){if(0===e.length&&0===t.length)return(0,b.jsx)("span",{className:"text-muted-foreground",children:"Nothing"});let r=(e,t)=>{let r=null!==n&&!n.has(e);return(0,b.jsxs)("span",{className:`inline-flex items-center rounded-md border px-2 font-mono text-caption ${r?"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg":t?"border-transparent bg-muted text-muted-foreground":"border-border"}`,"data-testid":t?"tools-table-party-scope":"tools-table-scope",title:r?"No longer defined in the fleet":t?"Every tool needs it":void 0,children:[e,r?(0,b.jsx)("span",{className:"ml-1 font-sans",children:"(no longer defined)"}):null]},`${t?"party":"own"}-${e}`)};return(0,b.jsxs)("span",{className:"flex flex-wrap gap-1",children:[e.map(e=>r(e,!0)),t.filter(t=>!e.includes(t)).map(e=>r(e,!1))]})}],17779);var eu=e.i(24189),eu=eu,ec=e.i(93976),ed=e.i(37134),ef=eu,ep=eu,eh=eu,em=eu,eg=e.i(62050),ex=e.i(45017),ev=e.i(47125),eb=e.i(10030),ey=e.i(58998),ew=e.i(94313),eS=e.i(53535),ej=eu;let eN=({scope:e,description:t})=>({value:e,label:e,description:t});e.s(["f",0,function({label:e,listed:t,picked:n,onPick:r,isDisabled:s=!1,testId:i}){let{contains:a}=eu.useFilter(),o=[...t.map(eN),...n.filter(e=>!t.some(t=>t.scope===e)).map(e=>({value:e,label:e,description:"No longer defined in the fleet"}))],l=o.filter(e=>n.includes(e.value));return(0,b.jsxs)(ec.f.Root,{multiple:!0,items:o,value:l,disabled:s,isItemEqualToValue:(e,t)=>e.value===t.value,onValueChange:(e,t)=>{"escape-key"===t.reason?t.cancel():r(e.map(e=>e.value))},filter:(e,t)=>a(e.label,t)||a(e.description,t),children:[(0,b.jsxs)("div",{className:"grid gap-1","data-testid":i,children:[(0,b.jsx)(ed.f.Label,{className:"font-medium",children:e}),(0,b.jsx)(ef.InputGroup,{className:"flex min-h-9 flex-wrap items-center gap-1 rounded-md border border-input bg-background px-2 py-1",children:(0,b.jsxs)(ep.Chips,{className:"contents",children:[l.map(e=>(0,b.jsxs)(eh.Chip,{className:"inline-flex items-center gap-1 rounded-md border border-border bg-muted px-2 font-mono text-caption","aria-label":e.value,children:[e.value,(0,b.jsx)(em.ChipRemove,{className:"text-muted-foreground hover:text-foreground","aria-label":`Remove ${e.value}`,children:"×"})]},e.value)),(0,b.jsx)(eg.f.Input,{placeholder:0===l.length?"Search the fleet's scopes":"",className:"h-7 min-w-32 flex-1 bg-transparent outline-none"})]})})]}),(0,b.jsx)(ex.f.Portal,{children:(0,b.jsx)(ev.f.Positioner,{sideOffset:4,className:"z-50",children:(0,b.jsxs)(eb.f.Popup,{className:"max-h-72 w-(--anchor-width) overflow-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md",children:[(0,b.jsx)(ey.f.Empty,{className:"px-2 py-1 text-muted-foreground",children:"No scope listed matches."}),(0,b.jsx)(ew.f.List,{children:e=>(0,b.jsxs)(eS.f.Item,{value:e,className:"grid cursor-default grid-cols-[1rem_1fr] gap-x-2 rounded px-2 py-1 data-highlighted:bg-accent",children:[(0,b.jsx)(ej.ItemIndicator,{className:"row-span-2",children:"✓"}),(0,b.jsx)("span",{className:"col-start-2 font-mono text-code",children:e.value}),(0,b.jsx)("span",{className:"col-start-2 text-caption text-muted-foreground",children:e.description})]},e.value)})]})})})]})}],35671);var eT=e.i(26323),eR=e.i(9977),eP=e.i(41708),eC=e.i(93480),eM=e.i(9169),eI=e.i(52744),e$=e.i(30402),eO=e.i(55070);e.s(["G",0,function({isOpen:e,onClose:t,title:n,description:r,children:s,appliesTo:i,action:a,isSaving:o,refusal:l,onReload:u,isReloading:c,testId:d}){return(0,b.jsx)(eT.f.Root,{open:e,onOpenChange:e=>{e||o||t()},children:(0,b.jsxs)(eR.f.Portal,{children:[(0,b.jsx)(eP.f.Backdrop,{className:"fixed inset-0 z-40 bg-(--overlay)"}),(0,b.jsxs)(eC.f.Popup,{className:"fixed top-1/2 left-1/2 z-50 grid max-h-[90vh] w-[min(36rem,calc(100vw-2rem))] -translate-1/2 gap-4 overflow-auto rounded-lg border border-border bg-popover p-6 text-popover-foreground shadow-lg","data-testid":d,children:[(0,b.jsxs)("div",{className:"grid gap-1",children:[(0,b.jsx)(eM.f.Title,{className:"text-heading font-semibold",children:n}),(0,b.jsx)(eI.f.Description,{className:"text-muted-foreground",children:r})]}),(0,b.jsx)("fieldset",{disabled:o,className:"grid gap-4",children:s}),null===l?null:(0,b.jsxs)("div",{role:"alert",className:"flex flex-wrap items-center justify-between gap-2 rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg","data-testid":"tools-table-dialog-refusal",children:[(0,b.jsx)("span",{children:l.message}),l.isConflict?(0,b.jsx)(eO.f,{isPending:c,pendingLabel:"Reloading…",onClick:u,"data-testid":"tools-table-reload",children:"Reload"}):null]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-muted-foreground","data-testid":"tools-table-applies-to",children:i}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{type:"button",className:e$.x.secondary,disabled:o,onClick:t,children:"Cancel"}),(0,b.jsx)(eO.f,{variant:"primary",isPending:o,pendingLabel:a.pending,disabled:a.isDisabled||c,onClick:a.onPress,"data-testid":"tools-table-dialog-action",children:a.label})]})]})]})]})})},"V",0,function(e,t){return e?.isConflict===!0&&t>e.version?null:e}],44047);var er=en;e.s(["f",0,function(){let{toasts:e}=er.useToastManager();return(0,b.jsx)(en.Portal,{children:(0,b.jsx)(en.Viewport,{className:"fixed right-4 bottom-4 z-50 grid w-[min(24rem,calc(100vw-2rem))] gap-2",children:e.map(e=>(0,b.jsx)(en.Root,{toast:e,className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-4 py-3 text-tone-ok-fg shadow-md","data-testid":"tools-table-toast",children:(0,b.jsxs)(en.Content,{className:"flex items-start justify-between gap-3",children:[(0,b.jsx)(en.Title,{}),(0,b.jsx)(en.Close,{"aria-label":"Dismiss",children:"×"})]})},e.id))})})}],90218)},25621,e=>{var t=e.i(43476);e.s(["f",0,function({isOn:e,label:n,isPending:r=!1,type:s="button",onClick:i,testId:a}){return(0,t.jsx)("button",{type:s,role:"switch","aria-checked":e,"aria-label":n,"aria-busy":r,disabled:r,onClick:i,"data-testid":a,className:`inline-flex h-5 w-9 shrink-0 items-center rounded-full border p-0.5 transition-colors disabled:opacity-60 ${e?"border-primary bg-primary":"border-input bg-muted"}`,children:(0,t.jsx)("span",{className:`size-3.5 rounded-full bg-background shadow-sm transition-transform ${e?"translate-x-4":"translate-x-0"} ${r?"animate-pulse":""}`})})}])},625,e=>{var t=e.i(95187);let n=(0,t.createServerReference)("605fc52b665501784e45af8b5ef9fd6463505ed12f",t.callServer,void 0,t.findSourceMapURL,"signInToParty");e.s(["f",0,n])},12589,e=>{var t=e.i(43476),n=e.i(58487),r=e.i(5654),s=e.i(18566),i=e.i(71645),a=e.i(54940),o=e.i(19407),l=e.i(17779),u=e.i(35671),c=e.i(44047),d=e.i(90218);function f({fleetId:e,party:n,version:d,scopes:p,listed:h,canChange:m}){let g=(0,s.useRouter)(),x=r.f.useToastManager(),[,v]=(0,i.useTransition)(),[b,y]=(0,i.useTransition)(),[w,S]=(0,i.useState)(!1),[j,N]=(0,i.useState)([]),[T,R]=(0,i.useState)(!1),[P,C]=(0,i.useState)(null),[M,I]=(0,i.useState)(null),[$,O]=(0,i.useState)(0),[E,k]=(0,i.useState)(null),F=E?.basis===p?E.scopes:p;return(0,t.jsxs)("div",{className:`flex flex-wrap items-center gap-2 rounded-md ${$>0?"animate-highlight":""}`,"data-testid":"agent-needs",children:[(0,t.jsx)(l.f,{own:F,listed:null===h?null:new Set(h.map(({scope:e})=>e))}),m&&null!==h?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",className:"text-primary hover:underline",onClick:()=>{N([...F]),C(null),S(!0)},"data-testid":"agent-needs-change",children:"Change…"}),(0,t.jsx)(c.G,{isOpen:w,onClose:()=>{S(!1)},title:"Every message needs",description:`The scopes a calling ship must hold to message ${n}.`,appliesTo:`Applies to every message to ${n}`,action:{label:"Save",pending:"Saving…",isDisabled:!1,onPress:()=>{R(!0),C(null);let t=Math.max(d,M??0);v(async()=>{let r=await (0,a.f)({fleetId:e,name:n,version:t,party:j,tools:[]});(R(!1),r.isOk)?(I(r.version),k({basis:p,scopes:j}),S(!1),O(e=>e+1),x.add({title:(0,o.I)((0,o.B)({party:n,scopes:j}),r.statementRefusal)}),g.refresh()):C({message:r.message,isConflict:r.isConflict,version:t})})}},isSaving:T,refusal:(0,c.V)(P,Math.max(d,M??0)),isReloading:b,onReload:()=>{y(()=>{g.refresh()})},testId:"agent-needs-dialog",children:(0,t.jsx)(u.f,{label:"Scopes",listed:h,picked:j,onPick:N,isDisabled:T,testId:"agent-needs-picker"})})]}):null]},$)}e.s(["AgentNeeds",0,function(e){return(0,t.jsxs)(n.f.Provider,{children:[(0,t.jsx)(f,{...e}),(0,t.jsx)(d.f,{})]})}])},96535,e=>{var t,n,r=e.i(43476),s=e.i(71645),i=e.i(8821),a=e.i(52245),o=e.i(79938);let l="--drawer-height",u="--drawer-swipe-movement-x",c="--drawer-swipe-movement-y",d="--drawer-snap-point-offset",f="--drawer-swipe-strength",p="--drawer-swipe-progress",h=s.forwardRef(function(e,t){let{render:n,className:r,style:s,forceRender:l=!1,...u}=e,c=(0,i.x)(),d=c.useState("open"),h=c.useState("nested"),m=c.useState("mounted"),g=c.useState("transitionStatus");return(0,a.a)("div",e,{state:{open:d,transitionStatus:g},ref:[c.context.backdropRef,t],stateAttributesMapping:o.M,props:[{role:"presentation",hidden:!m,style:{pointerEvents:d?void 0:"none",userSelect:"none",WebkitUserSelect:"none",[p]:"0",[f]:"1"}},u],enabled:l||!h})}),m=e.i(56736).f,g="data-drawer-content",x=s.forwardRef(function(e,t){let{render:n,className:r,style:s,...o}=e;return(0,i.x)(),(0,a.a)("div",e,{ref:t,props:[{[g]:""},o]})});var v=e.i(46376),b=e.i(67865),y=e.i(56789),w=e.i(61487),S=e.i(35890),j=e.i(64938),N=e.i(80829),T=e.i(6640);S.f.open,j.f.closed,N.f.startingStyle,T.f.endingStyle;let R="data-swipe-dismiss",P="data-swiping";var C=e.i(25834),M=e.i(37584),I=e.i(73327),$=e.i(33332);let O=s.createContext(void 0);function E(e){let t=s.useContext(O);if(!0!==e&&void 0===t)throw Error((0,$.f)(90));return t}var k=e.i(8868),F=e.i(24429);function D(e,t){let n=e+t;return n>=0?t:-Math.sqrt(-n)-e}function A(e,t,n){if(!Number.isFinite(t)||t<=0)return null;if("number"==typeof e)return Number.isFinite(e)?e<=1?(0,F.f)(e,0,1)*t:e:null;let r=e.trim();if(r.endsWith("px")){let e=Number.parseFloat(r);return Number.isFinite(e)?e:null}if(r.endsWith("rem")){let e=Number.parseFloat(r);return Number.isFinite(e)?e*n:null}return null}function Y(e,t){let n=-1,r=1/0;for(let s=0;s<e.length;s+=1){let i=Math.abs(e[s]-t);i<r&&(r=i,n=s)}return n}function X(){let e=(0,i.x)(),{snapPoints:t,activeSnapPoint:n,setActiveSnapPoint:r,popupHeight:a}=E(),o=e.useState("viewportElement"),[l,u]=s.useState(0),[c,d]=s.useState(16),f=(0,b.f)(()=>{let e=(0,k.f)(o).documentElement;u(o?o.offsetHeight:e.clientHeight);let t=parseFloat(getComputedStyle(e).fontSize);Number.isFinite(t)&&d(t)});(0,v.f)(()=>{if(f(),!o||"function"!=typeof ResizeObserver)return;let e=new ResizeObserver(f);return e.observe(o),()=>{e.disconnect()}},[f,o]);let p=s.useMemo(()=>{if(!t||0===t.length||l<=0||a<=0)return[];let e=Math.min(a,l),n=t.map(t=>{let n=A(t,l,c);if(null===n)return null;let r=(0,F.f)(n,0,e);return{value:t,height:r,offset:Math.max(0,a-r)}}).filter(e=>!!e);if(n.length<=1)return n;let r=[],s=[];for(let e=n.length-1;e>=0;e-=1){let t=n[e];s.some(e=>1>=Math.abs(e-t.height))||(s.push(t.height),r.push(t))}return r.reverse(),r},[a,c,t,l]),h=s.useMemo(()=>{if(null===n)return;let e=p.find(e=>Object.is(e.value,n));if(e)return e;let t=Math.min(a,l),r=A(n,l,c);if(null===r)return;let s=(0,F.f)(r,0,t);return p[Y(p.map(e=>e.height),s)]},[n,a,p,c,l]);return{snapPoints:t,activeSnapPoint:n,setActiveSnapPoint:r,popupHeight:a,viewportHeight:l,resolvedSnapPoints:p,activeSnapPointOffset:h?.offset??null}}let z=s.createContext(null);var U=e.i(64111);let L=!1,H={...o.M,expanded:e=>e?{"data-expanded":""}:null,nestedDrawerOpen:e=>e?{"data-nested-drawer-open":""}:null,nestedDrawerSwiping:e=>e?{"data-nested-drawer-swiping":""}:null,swipeDirection:e=>({"data-swipe-direction":e}),swiping:e=>e?{[P]:""}:null},V=s.forwardRef(function(e,t){let n,{render:o,className:h,style:m,finalFocus:g,initialFocus:x,...S}=e,j=(0,i.x)(),N=j.context.popupRef,{swipeDirection:T,frontmostHeight:R,hasNestedDrawer:P,nestedSwiping:$,nestedSwipeProgressStore:O,onPopupHeightChange:k,notifyParentFrontmostHeight:F,notifyParentHasNestedDrawer:A}=E(),Y=j.useState("descriptionElementId"),V=j.useState("disablePointerDismissal"),W=j.useState("floatingRootContext"),K=j.useState("popupProps"),G=j.useState("modal"),Z=j.useState("mounted"),B=j.useState("nested"),q=j.useState("nestedOpenDrawerCount"),_=j.useState("transitionStatus"),J=j.useState("open"),Q=j.useState("openMethod"),ee=j.useState("titleElementId"),et=j.useState("role"),en=W.useState("floatingId"),er=S.id??en,es=s.useContext(z);(0,C.Z)();let{snapPoints:ei,activeSnapPoint:ea,activeSnapPointOffset:eo}=X(),el=q>0,eu=es?.swiping??!1,ec=es?.swipeStrength??null,[ed,ef]=s.useState(0),ep=s.useRef(0),eh=(0,b.f)(()=>{let e=N.current;if(!e)return;let t=e.offsetHeight;if(!(ep.current>0)||!(R>ep.current)||!(t>ep.current)){if(ep.current>0&&P){let e=ep.current;ef(e),k(e);return}t!==ep.current&&(ep.current=t,ef(t),k(t))}});(0,v.f)(()=>{if(!Z){ep.current=0,ef(0),k(0);return}let e=N.current;if(!e||(L||("u">typeof CSS&&"registerProperty"in CSS&&([u,c,d].forEach(e=>{try{CSS.registerProperty({name:e,syntax:"<length>",inherits:!1,initialValue:"0px"})}catch{}}),[{name:p,initialValue:"0"},{name:f,initialValue:"1"}].forEach(({name:e,initialValue:t})=>{try{CSS.registerProperty({name:e,syntax:"<number>",inherits:!1,initialValue:t})}catch{}})),L=!0),eh(),"function"!=typeof ResizeObserver))return;let t=new ResizeObserver(eh);return t.observe(e),()=>{t.disconnect()}},[eh,Z,el,k,N]),(0,v.f)(()=>{let e=()=>{let e=N.current;if(!e)return;let t=O.getSnapshot();t>0?e.style.setProperty(p,`${t}`):e.style.setProperty(p,"0")};e();let t=O.subscribe(e),n=N.current;return()=>{t(),n&&n.style.setProperty(p,"0")}},[O,N]),(0,v.f)(()=>{if(J)return F?.(R),()=>{F?.(0)}},[R,J,F]),(0,v.f)(()=>{if(A)return A(J||"ending"===_),()=>{A(!1)}},[A,J,_]),(0,M.f)({open:J,ref:N,onComplete(){J&&j.context.onOpenChangeComplete?.(!0)}});let em=void 0===x?N:x,eg=j.useStateSetter("popupElement"),ex=!P&&"ending"!==_;ed&&!ex&&(n=`${ed}px`);let ev=ei&&ei.length>0&&("down"===T||"up"===T),eb=null;ev&&null!==eo&&(eb="up"===T?-eo:eo);let ey=es?es.getDragStyles():y.w;if(ev&&"down"===T){let e=Number.parseFloat(String(ey[c]));ey=eu&&Number.isFinite(e)?{...ey,transform:void 0,[c]:`${D(eo??0,e)}px`}:{...ey,transform:void 0}}let ew=(0,a.a)("div",e,{state:{open:J,nested:B,transitionStatus:_,expanded:1===ea,nestedDrawerOpen:el,nestedDrawerSwiping:$,swipeDirection:T,swiping:eu},props:[K,{id:er,"aria-labelledby":ee,"aria-describedby":Y,role:et,...U.X,hidden:!Z,onKeyDown(e){I.f.has(e.key)&&e.stopPropagation()},style:{...ey,[p]:"0","--nested-drawers":q,[l]:n,[d]:"number"==typeof eb?`${eb}px`:"0px","--drawer-frontmost-height":R?`${R}px`:void 0,[f]:"number"==typeof ec&&Number.isFinite(ec)&&ec>0?`${ec}`:"1"}},S],ref:[t,N,eg],stateAttributesMapping:H});return(0,r.jsx)(w.f,{context:W,openInteractionType:Q,disabled:!Z,closeOnFocusOut:!V,initialFocus:em,returnFocus:g,modal:!1!==G,restoreFocus:"popup",children:ew})}),W=e.i(64951).f;var K=e.i(74735),G=e.i(51437),Z=e.i(33848),B=e.i(22162),q=e.i(75606),_=e.i(80025),J=e.i(16856),J=J,Q=e.i(66250);let ee=s.createContext(void 0);function et(){return s.useContext(ee)}function en(){let e=0,t=new Set;return{getSnapshot:()=>e,set(n){let r=Number.isFinite(n)?n:0;r!==e&&(e=r,t.forEach(e=>{e()}))},subscribe:e=>(t.add(e),()=>{t.delete(e)})}}function er(){let e=et(),t=(0,i.x)(!1),n=e?.setDrawerOpen,r=e?.removeDrawer,a=t.useState("open"),o=t.useState("nestedOpenDialogCount"),l=t.useState("popupElement"),u=0===o;return(0,v.f)(()=>{if(r)return()=>{r(t)}},[r,t]),(0,v.f)(()=>{n?.(t,a)},[a,n,t]),s.useEffect(()=>{if(!a||!u||!B.f.os.android)return;let e=(0,Z.f)(l).CloseWatcher;if(!e)return;let n=new e,r=(0,K.f)(n,"cancel",function(e){if(!t.select("open"))return;let n=(0,q.j)(J.closeWatcher,e);e.cancelable||(n.cancel=y.x),t.setOpen(!1,n),n.isCanceled&&e.preventDefault()});return()=>{r(),n.destroy()}},[t,u,a,l]),null}let es=e.i(77173).f,ei=e.i(13488).f;var ea=e.i(74080),eo=e.i(29315),el=e.i(8445),eu=e.i(10199);let ec=s.forwardRef(function(e,t){let{render:n,className:r,style:s,children:o,...l}=e,u=(0,C.Z)(),c=(0,i.x)(),d=c.useState("open"),f=c.useState("nested"),p=c.useState("transitionStatus"),h=c.useState("nestedOpenDialogCount"),m=c.useState("mounted"),g=c.useStateSetter("viewportElement");return(0,a.a)("div",e,{enabled:u||m,state:{open:d,nested:f,transitionStatus:p,nestedDialogOpen:h>0},ref:[t,g],stateAttributesMapping:eu.f,props:[{role:"presentation",hidden:!m,style:{pointerEvents:d?void 0:"none"},children:o},l]})});S.f.open,j.f.closed,N.f.startingStyle,T.f.endingStyle;var ed=e.i(76782),ef=e.i(8760),ep=J,eh=e.i(84446),em=e.i(24166),eg=e.i(96545),ex=e.i(38396),ev=e.i(2410);let eb=s.createContext(void 0),ey=`[${g}]`,ew={horizontal:`[${ex.a}="x"]`,vertical:`[${ex.a}="y"]`},eS=s.forwardRef(function(e,t){let{render:n,className:a,style:o,children:d,...f}=e,h=(0,i.x)(),m=h.context.popupRef,g=h.context.backdropRef,{swipeDirection:x,notifyParentSwipingChange:y,notifyParentSwipeProgressChange:w,frontmostHeight:S,snapToSequentialPoints:j,swipeAreaActiveRef:N}=E(),T=et(),{snapPoints:P,resolvedSnapPoints:C,activeSnapPoint:M,activeSnapPointOffset:I,setActiveSnapPoint:$,popupHeight:O}=X(),A=h.useState("open"),U=h.useState("mounted"),L=h.useState("nested"),H=h.useState("nestedOpenDrawerCount"),V=h.useState("viewportElement"),W=h.useState("popupElement"),G=T?.visualStateStore,B=H>0,_="left"===x||"right"===x?"horizontal":"vertical",J="vertical"===_,Q=J?"horizontal":"vertical",[ee,en]=s.useState(null),er=s.useRef(void 0),es=s.useRef(null),ei=(0,el.z)(),eu=s.useRef(!1),eS=s.useRef(!1),eI=s.useRef(""),e$=s.useRef(!1),eO=s.useRef(!1),eE=s.useRef(null),ek=s.useContext(eb),eF=s.useMemo(()=>{if(!P||P.length<2||C.length<2||"down"!==x&&"up"!==x)return null;let e=C.map(e=>e.offset).sort((e,t)=>e-t),t=e[0];return{minOffset:t,range:e[1]-t}},[C,P,x]),eD=s.useMemo(()=>eF&&null!==I?(0,F.f)((I-eF.minOffset)/eF.range,0,1):null,[I,eF]),eA=s.useMemo(()=>P&&P.length>0&&("down"===x||"up"===x)?"down"===x?["down","up"]:["up","down"]:[x],[P,x]),eY=(0,b.f)(e=>{m.current?.toggleAttribute(R,e),g.current?.toggleAttribute(R,e)}),eX=(0,b.f)(()=>{eY(!1),m.current?.removeAttribute(em.f.endingStyle),en(null)}),ez=(0,b.f)(()=>{eS.current&&(eS.current=!1,y?.(!1))}),eU=(0,b.f)((e,t,n)=>{let r=A&&!L&&t,s=r?e:0,i=A&&t?e:0;n&&w&&(w(i),i<=0&&ez()),G?.set({swipeProgress:s,frontmostHeight:s>0?S:0});let a=g.current;if(!a)return;let o=r&&s>0;a.style.setProperty(p,o?`${s}`:"0"),o&&S>0?a.style.setProperty(l,`${S}px`):a.style.removeProperty(l)}),eL=(0,ef.w)({enabled:U&&!B,directions:eA,elementRef:h.context.popupRef,ignoreSelectorWhenTouch:!1,ignoreScrollableAncestors:!0,movementCssVars:{x:u,y:c},onSwipeStart(e){if("touches"in e||"touch"===e.pointerType)return;let t=m.current,n=(0,k.f)(t),r=n.getSelection?.();if(!r||r.isCollapsed)return;let s=(0,eo.m)(r.anchorNode)?r.anchorNode:r.anchorNode?.parentElement,i=(0,eo.m)(r.focusNode)?r.focusNode:r.focusNode?.parentElement;((0,eh.I)(t,s)||(0,eh.I)(t,i))&&r.removeAllRanges()},onSwipingChange(e){eu.current=e,ej(h.context.backdropRef.current,e),e||w||ez()},swipeThreshold:({element:e,direction:t})=>eT(e,t),canStart(e,t){let n=h.context.popupRef.current;if(!n)return!1;let r=t.nativeEvent,s="touches"in r||"touch"===r.pointerType,i=s?eE.current:null,a=n.ownerDocument,o=(0,ev.f)(n.getRootNode(),e.x,e.y);return!(!i?.startedInPopup&&!(0,eh.I)(n,o)||s&&eR(a,n)||i?.hasCrossAxisGestureTarget&&!i.drawerAxisAttributed&&!0!==i.allowSwipe)},onProgress(e,t){let n=eu.current;n&&function(e){if(eS.current||!e)return;let t=e.direction??x;10>Math.abs((0,ef.R)(t,e.deltaX,e.deltaY))||(eS.current=!0,y?.(!0))}(t);let r=!!(P&&P.length>0);if(n&&"down"===x&&r&&t){let e=h.context.popupRef.current;e&&(e.style.removeProperty("transform"),e.style.setProperty(c,`${D(I??0,t.deltaY)}px`))}let s=e;if(eF&&O>0){let e=I??eF.minOffset;if(n&&t&&Number.isFinite(t.deltaY)){let n;n=(0,F.f)(e+t.deltaY,0,O),s=(0,F.f)((n-eF.minOffset)/eF.range,0,1)}else null!==eD&&(s=eD)}n||(w?.(0),ez()),eU(s,!0,n)},onRelease({event:e,deltaX:t,deltaY:n,direction:r,velocityX:s,velocityY:i,releaseVelocityX:a,releaseVelocityY:o}){let l=h.context.popupRef.current;if(!l)return void eX();function u(e){ez(),eY(!0),l.style.removeProperty("transition"),l.setAttribute(em.f.endingStyle,""),ea.flushSync(()=>{en(function(e,t,n,r,s,i,a,o){let l=eN(e,t);if(l<=0)return null;let u=Math.max(0,l-((("down"===t||"up"===t)&&P&&P.length>0?I??0:0)+(0,ef.R)(t,n,r)));if(u<=0)return null;let c=(0,ef.R)(t,a,o),d=Math.abs(c)>0?c:(0,ef.R)(t,s,i);if(d<=.2)return null;let f=(0,F.f)(d,.2,4);return .1+((0,F.f)(u/f,80,360)-80)/280*.9}(l,e,t,n,s,i,a,o))})}if(!P||0===P.length){if(!r)return void eX();let e=(0,ef.R)(r,t,n);if(e<=0)return eX(),!1;if((0,ef.R)(r,s,i)>=.5)return u(r),!0;let a=e>eT(l,r);return a?u(r):eX(),a}if("down"!==x&&"up"!==x)return void eX();if(!O)return eX(),!1;if(0===C.length)return void eX();let c="down"===x?n:-n,d=Math.sign(c),f="down"===x?o:-o,p="down"===x?i:-i,m=f;if(0!==d&&Math.abs(c)>=10){let e=Math.sign(m);0!==e&&e!==d&&(m=p)}let g=I??0,v=(0,F.f)(g+c,0,O),b=Math.abs(m)>=.5?300*(0,F.f)(m,-4,4):0,y=j?v:(0,F.f)(v+b,0,O),w=(0,q.j)(ep.swipe,e),S=()=>(eU(0,!0,!0),eX(),!1),N=e=>($(e.value,w),S()),T=e=>r?($(null,w),w.isCanceled)?S():(er.current=M,u(x),!0):N(e);if(j){let e=[...C].sort((e,t)=>e.offset-t.offset),t=e.map(e=>e.offset),n=Y(t,g),r=e[Y(t,y)],s=Math.sign(m),i=y;if(0!==d&&0!==s&&s===d&&Math.abs(m)>=.5){let t=(0,F.f)(n+d,0,e.length-1);if(t!==n){let n=e[t];(d>0?y<n.offset:y>n.offset)&&(r=n,i=n.offset)}else if(d>0)return T(r)}return Math.abs(i-O)<Math.abs(i-r.offset)?T(r):N(r)}let R=C[Y(C.map(e=>e.offset),y)];return m>=.5&&c>0||Math.abs(y-O)<Math.abs(y-R.offset)?T(R):N(R)},onDismiss(e){G?.set({swipeProgress:0,frontmostHeight:0});let t=h.context.backdropRef.current;t&&(t.style.setProperty(p,"0"),t.style.removeProperty(l));let n=(0,q.j)(ep.swipe,e);if(h.setOpen(!1,n),n.isCanceled){let t=er.current;void 0!==t&&$(t,(0,q.j)(ep.swipe,e)),er.current=void 0,es.current?.(),eX();return}h.select("open")?ei.request(()=>{if(h.select("open")){let t=er.current;void 0!==t&&$(t,(0,q.j)(ep.swipe,e)),er.current=void 0,eX(),es.current?.()}else er.current=void 0}):(er.current=void 0,eY(!0))}}),eH=eL.getPointerProps(),eV=eL.getTouchProps(),{moveNative:eW,reset:eK}=eL;es.current=eK,s.useEffect(()=>{let e=V??W;if(!e||!A||!U)return;let t=(0,k.f)(e);return(0,K.f)(t,"touchmove",function(n){var r,s;if(ek?.onTouchMove(n),eO.current)return;let i=eE.current,a=n.touches[0];a&&i&&(!function(n,r,s){let i=J?s.clientY-r.lastY:s.clientX-r.lastX;if(2===n.touches.length||eR(t,e)||B||function(e,t,n,r){if(e.preserveNativeCrossAxisScroll)return!0;if(e.drawerAxisAttributed||!0===e.allowSwipe||!e.hasCrossAxisGestureTarget)return!1;if(!t.cancelable)return e.preserveNativeCrossAxisScroll=!0,!0;let s=r?n.clientY-e.startY:n.clientX-e.startX,i=r?n.clientX-e.startX:n.clientY-e.startY,a=Math.abs(s),o=Math.abs(i);return o>=6&&o>a+2?(e.preserveNativeCrossAxisScroll=!0,!0):!(a>=6)||(e.drawerAxisAttributed=!0,!1)}(r,n,s,J))return;let a=r.scrollTarget;if(!a||a===t.documentElement||a===t.body){n.cancelable&&n.preventDefault(),n.stopPropagation(),eW(n,e);return}if(!(eP(a,_).max>0)){n.cancelable&&n.preventDefault(),n.stopPropagation();return}if(0!==i){var o,l,u,c;let e=(o=a,l=_,u=x,c=i,!!(eM(u,l)?c>0:c<0)&&eC(o,l,u));r.allowSwipe?n.cancelable&&n.preventDefault():n.cancelable&&e?(r.allowSwipe=!0,n.preventDefault()):r.allowSwipe=!1}!0===r.allowSwipe&&(n.stopPropagation(),eW(n,e))}(n,i,a),(r=i).lastX=(s=a).clientX,r.lastY=s.clientY)},{passive:!1,capture:!0})},[U,B,A,W,J,_,x,eW,V,ek]),(0,v.f)(()=>{eF&&!eL.swiping&&eU(!A||L?0:eD??0,!0,!1)},[eU,S,L,w,A,eD,eF,eL.swiping,h,G]),(0,v.f)(()=>{if(w)return A||w(0),()=>{w(0)}},[w,A]),(0,v.f)(()=>{A&&(N.current||eK(),eX())},[eX,A,eK,N]),(0,v.f)(()=>{let e=g.current;return()=>{G?.set({swipeProgress:0,frontmostHeight:0}),ej(e,!1);let t=g.current;t!==e&&ej(t,!1),ez()}},[g,ez,G]);let eG=s.useMemo(()=>({swiping:eL.swiping,getDragStyles:eL.getDragStyles,swipeStrength:ee??null,setSwipeDismissed:eY}),[eY,eL.getDragStyles,eL.swiping,ee]);function eZ(e){eO.current=e,eE.current=null}function eB(){eZ(!1),eI.current="",e$.current=!1}function eq(e){return eI.current="","touch"!==e.pointerType}return(0,r.jsx)(ec,{ref:t,className:a,style:o,render:n,...(0,ed.w)(f,{onPointerDown(e){var t,n;if(eI.current=e.pointerType,e$.current="pen"===e.pointerType,!A||!U||B)return;let r=(0,ev.f)(e.currentTarget.getRootNode(),e.clientX,e.clientY);t=r,(0,eh.h)(t,ex.u)||(n=r,(0,eh.h)(n,ey))||"touch"!==e.pointerType&&eH.onPointerDown?.(e)},onPointerMove(e){"touch"!==e.pointerType&&eH.onPointerMove?.(e)},onPointerUp(e){eq(e)&&eH.onPointerUp?.(e)},onPointerCancel(e){eq(e)&&eH.onPointerCancel?.(e)},onTouchStart(e){var t,n,r;if("pen"===eI.current&&e$.current){e$.current=!1,eZ(!1);return}if(!A||!U||B)return void eZ(!1);let s=e.touches[0];if(!s)return;if(n=(t=e).nativeEvent,r=(0,Z.f)(t.currentTarget),n.composedPath().some(e=>e instanceof r.HTMLInputElement&&"range"===e.type))return void eZ(!1);let i=e.currentTarget,a=(0,ev.f)(i.getRootNode(),s.clientX,s.clientY),o=(0,eh.Z)(e.nativeEvent),l=(0,eo.m)(o)?o:i;if(!(0,eh.I)(i,l)||(ek?.onTouchStart(e),(0,eh.h)(a,`${ex.u}:not(${ew[Q]})`)))return void eZ(!0);eO.current=!1;let u=(0,eg.U)(l,i,_),c=null!=(0,eg.U)(l,i,Q)||null!=(0,eh.h)(a,ew[Q]),d=null;u&&(d=!!eC(u,_,x)&&null),eE.current={startX:s.clientX,startY:s.clientY,lastX:s.clientX,lastY:s.clientY,startedInPopup:(0,eh.I)(m.current,a),scrollTarget:u,hasCrossAxisGestureTarget:c,allowSwipe:d,preserveNativeCrossAxisScroll:!1,drawerAxisAttributed:!1},eV.onTouchStart?.(e)},onTouchEnd(e){ek?.onTouchEnd(e),eB(),eV.onTouchEnd?.(e)},onTouchCancel(e){ek?.onTouchCancel(),eB(),eV.onTouchCancel?.(e)},"data-nested-dialog-open":void 0}),children:(0,r.jsx)(z.Provider,{value:eG,children:d})})});function ej(e,t){e?.toggleAttribute(P,t)}function eN(e,t){return"left"===t||"right"===t?e.offsetWidth:e.offsetHeight}function eT(e,t){return Math.max(.5*eN(e,t),10)}function eR(e,t){let n,r,s=(0,eh.T)(e);if(s&&(0,eh.I)(t,s)&&("INPUT"===s.tagName||"TEXTAREA"===s.tagName)){let{selectionStart:e,selectionEnd:t}=s;if(null!=e&&null!=t&&e<t)return!0}let i=e.getSelection?.();return!!i&&!i.isCollapsed&&(n=(0,eo.m)(i.anchorNode)?i.anchorNode:i.anchorNode?.parentElement,r=(0,eo.m)(i.focusNode)?i.focusNode:i.focusNode?.parentElement,i.containsNode(t,!0)||(0,eh.I)(t,n)||(0,eh.I)(t,r))}function eP(e,t){if("vertical"===t){let t=Math.max(0,e.scrollHeight-e.clientHeight);return{offset:e.scrollTop,max:t}}let n=Math.max(0,e.scrollWidth-e.clientWidth);return{offset:e.scrollLeft,max:n}}function eC(e,t,n){let r=eM(n,t),{offset:s,max:i}=eP(e,t);return r?s<=0:s>=i}function eM(e,t){return"vertical"===t?"down"===e:"right"===e}e.s(["Backdrop",0,h,"Close",0,m,"Content",0,x,"Popup",0,V,"Portal",0,W,"Root",0,function(e){let{children:i,open:a,defaultOpen:o=!1,onOpenChange:l,onOpenChangeComplete:u,disablePointerDismissal:c=!1,modal:d=!0,actionsRef:f,handle:p,triggerId:h,defaultTriggerId:m=null,swipeDirection:g="down",snapToSequentialPoints:x=!1,snapPoints:v,snapPoint:y,defaultSnapPoint:w,onSnapPointChange:S}=e,j=E(!0),N=j?.onNestedSwipeProgressChange,T=j?.onNestedFrontmostHeightChange,R=j?.onNestedSwipingChange,P=j?.onNestedDrawerPresenceChange,[C,M]=s.useState(0),[I,$]=s.useState(0),[k,F]=s.useState(!1),[D,A]=s.useState(!1),[Y]=s.useState(en),X=void 0!==w?w:v?.[0]??null,z=void 0!==y,[U,L]=(0,G.f)({controlled:y,default:X,name:"Drawer",state:"snapPoint"}),H=s.useRef(!1),V=s.useRef(!1),W=(0,b.f)((e,t)=>{let n=t??(0,q.j)(_.f.none);S?.(e,n),n.isCanceled||L(e)}),K=s.useMemo(()=>z||!v||0===v.length||null!==U&&v.some(e=>Object.is(e,U))?U:X,[U,z,X,v]),Z=(0,b.f)(e=>{M(e),!H.current&&e>0&&$(e)}),B=(0,b.f)(e=>{if(e>0){H.current=!0,$(e);return}H.current=!1,C>0&&$(C)}),J=(0,b.f)(e=>{F(e)}),ee=(0,b.f)(e=>{Y.set(e),N?.(e)}),et=(0,b.f)(e=>{A(e),R?.(e)}),es=(0,b.f)((e,t)=>{l?.(e,t),!t.isCanceled&&!e&&v&&v.length>0&&W(X,(0,q.j)(t.reason,t.event,t.trigger))}),ei=s.useMemo(()=>({swipeDirection:g,swipeAreaActiveRef:V,snapToSequentialPoints:x,snapPoints:v,activeSnapPoint:K,setActiveSnapPoint:W,frontmostHeight:I,popupHeight:C,hasNestedDrawer:k,nestedSwiping:D,nestedSwipeProgressStore:Y,onNestedDrawerPresenceChange:J,onPopupHeightChange:Z,onNestedFrontmostHeightChange:B,onNestedSwipingChange:et,onNestedSwipeProgressChange:ee,notifyParentFrontmostHeight:T,notifyParentSwipingChange:R,notifyParentSwipeProgressChange:N,notifyParentHasNestedDrawer:P}),[K,I,k,D,Y,P,N,R,T,J,B,ee,et,Z,C,W,v,x,V,g]),ea="function"==typeof i?e=>(0,r.jsxs)(s.Fragment,{children:[t||(t=(0,r.jsx)(er,{})),i(e)]}):(0,r.jsxs)(s.Fragment,{children:[n||(n=(0,r.jsx)(er,{})),i]}),eo=(0,Q.f)("drawer",{open:a,defaultOpen:o,onOpenChange:es,onOpenChangeComplete:u,disablePointerDismissal:c,modal:d,actionsRef:f,handle:p,triggerId:h,defaultTriggerId:m,children:ea});return(0,r.jsx)(O.Provider,{value:ei,children:eo})},"Title",0,es,"Trigger",0,ei,"Viewport",0,eS],58954);var eI=e.i(58954),eI=eI,e$=eI,eO=eI,eE=eI,ek=eI,eF=eI,eD=eI,eA=eI,eY=eI,eX=e.i(58487),ez=e.i(5654),eU=e.i(18566),eL=e.i(30402),eH=e.i(25621),eV=e.i(55070),eW=e.i(97e3),eK=e.i(54940),eG=e.i(95187);let eZ=(0,eG.createServerReference)("4022f71fc1b692c7a60917ba9daa1eea6ab8e71642",eG.callServer,void 0,eG.findSourceMapURL,"switchPartyTools"),eB=[{how:"add",label:"Add to each"},{how:"remove",label:"Remove from each"},{how:"replace",label:"Replace with these"}];var eq=e.i(19407);let e_=[{state:"all",label:"All"},{state:"on",label:"On"},{state:"off",label:"Off"},{state:"new",label:"New"},{state:"needsNothing",label:"Needs nothing"}];var eJ=e.i(17779),eQ=e.i(35671),e0=e.i(44047),e1=e.i(90218);function e2(e){return e?.split("\n").find(e=>""!==e.trim())?.trim()??""}function e4({fleetId:e,party:t,tools:n,version:i,partyScopes:a,listed:o,canChange:l,serverRefusal:u}){var c;let d,f,p=(0,eU.useRouter)(),h=ez.f.useToastManager(),[,m]=(0,s.useTransition)(),[g,x]=(0,s.useTransition)(),[v,b]=(0,s.useState)(""),[y,w]=(0,s.useState)("all"),[S,j]=(0,s.useState)(new Set),[N,T]=(0,s.useState)(null),[R,P]=(0,s.useState)([]),[C,M]=(0,s.useState)("add"),[I,$]=(0,s.useState)({readOnly:[],other:[]}),[O,E]=(0,s.useState)(!1),[k,F]=(0,s.useState)(null),[D,A]=(0,s.useState)(null),[Y,X]=(0,s.useState)(null),[z,U]=(0,s.useState)({names:new Set,round:0}),[L,H]=(0,s.useState)(null),[V,W]=(0,s.useState)(!1),[K,G]=(0,s.useState)(null),Z=K?.basis===n?K:null,B=null===Z?n:n.map(e=>({...e,scopes:Z.scopes.get(e.name)??e.scopes,isOn:null===e.isOn?null:Z.switches.get(e.name)??e.isOn})),q=Z?.party??a,_=Math.max(i,L??0),J=null===o?null:new Set(o.map(({scope:e})=>e)),Q=(d=(c={name:v,state:y,partyScopes:q}).name.trim().toLowerCase(),B.filter(e=>e.name.toLowerCase().includes(d)&&function(e,{state:t,partyScopes:n}){switch(t){case"all":return!0;case"on":return!0===e.isOn;case"off":return!1===e.isOn;case"new":return e.isNew;case"needsNothing":return 0===n.length&&0===e.scopes.length}}(e,c))),ee=B.filter(({name:e})=>S.has(e)),et=null===u,en=Q.length>0&&Q.every(({name:e})=>S.has(e)),er=function(e){let t={readOnly:[],other:[],withoutHints:[]};for(let n of e.filter(({scopes:e})=>0===e.length))!0===n.isDestructive||!1===n.isReadOnly?t.other.push(n.name):!0===n.isReadOnly?t.readOnly.push(n.name):t.withoutHints.push(n.name);return t}(B),es=[...(f=(e,t)=>0===t.length?[]:e.map(e=>({tool:e,scopes:[...t]})))(er.readOnly,I.readOnly),...f(er.other,I.other)],ei=({outcome:e,changed:t,message:r,change:s})=>{G({basis:n,party:s.party??Z?.party??null,scopes:new Map([...Z?.scopes??[],...(s.scopes??[]).map(({tool:e,scopes:t})=>[e,t])]),switches:new Map([...Z?.switches??[],...s.switches??[]])}),null!==e.version&&H(e.version),U(e=>({names:new Set(t),round:e.round+1})),h.add({title:(0,eq.I)(r,e.statementRefusal)}),p.refresh()},ea=e=>{F(null),W(!1),P("party"===e?[...q]:[]),M("add"),$({readOnly:[],other:[]}),T(e)},eo=()=>{T(null),F(null)},el=({change:n,changed:r,message:s})=>{E(!0),F(null),m(async()=>{let i=await (0,eK.f)({fleetId:e,name:t,version:_,...n});(E(!1),i.isOk)?(T(null),j(new Set),ei({outcome:i,changed:r,message:s,change:{...void 0===n.party?{}:{party:n.party},scopes:n.tools}})):F({message:i.message,isConflict:i.isConflict,version:_})})},eu=({names:n,isOn:r,working:s})=>{A(s),X(null),W(!1),m(async()=>{let s=await eZ({fleetId:e,name:t,tools:[...n],isOn:r});if(A(null),!s.isOk)return void X(s.message);let[i]=n;ei({outcome:s,changed:n,change:{switches:new Map(n.map(e=>[e,r]))},message:1===n.length&&void 0!==i?function({tool:e,isOn:t,statementRefusal:n}){let r=`${e} is ${t?"on":"off"}`;return null!==n?`${r}; the fleet sees it at the proxy ship's next statement: ${n}`:t?`${r}: the fleet may call it.`:`${r}: the fleet sees it no more, and a call to it is refused.`}({tool:i,isOn:r,statementRefusal:null}):(0,eq.g)({count:n.length,isOn:r,statementRefusal:null})})})},ec=()=>{x(()=>{p.refresh()})},ed=null!==D||O,ef=(0,r.jsxs)("div",{className:"grid gap-3 sm:flex sm:flex-wrap sm:items-center","data-testid":"tools-table-toolbar",children:[(0,r.jsxs)("label",{className:"grid gap-1 sm:w-56",children:[(0,r.jsx)("span",{className:"sr-only",children:"Filter by name"}),(0,r.jsx)("input",{className:eL.w,type:"search",placeholder:"Filter by name",value:v,onChange:e=>{b(e.target.value)},"data-testid":"tools-table-name-filter"})]}),(0,r.jsx)("div",{role:"group","aria-label":"Filter by state",className:"flex flex-wrap gap-1",children:e_.map(({state:e,label:t})=>(0,r.jsx)("button",{type:"button","aria-pressed":y===e,onClick:()=>{w(e)},className:`h-8 rounded-md border px-3 ${y===e?"border-primary bg-primary text-primary-foreground":"border-border bg-card hover:bg-accent"}`,"data-testid":`tools-table-state-${e}`,children:t},e))}),l?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("label",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{type:"checkbox",checked:en,onChange:()=>{j(e=>{let t=new Set(e);for(let{name:e}of Q)en?t.delete(e):t.add(e);return t})},disabled:0===Q.length,"data-testid":"tools-table-select-shown"}),"Select all shown"]}),(0,r.jsxs)("span",{className:"text-muted-foreground","data-testid":"tools-table-selected",children:[S.size," selected"]}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2 sm:ml-auto",children:[(0,r.jsx)("button",{type:"button",className:eL.x.secondary,disabled:0===S.size||ed||null===o,onClick:()=>{ea("scopes")},"data-testid":"tools-table-set-scopes",children:"Set scopes…"}),(0,r.jsx)(eV.f,{isPending:"on"===D,pendingLabel:"Switching on…",disabled:0===S.size||ed||!et,onClick:()=>{eu({names:[...S],isOn:!0,working:"on"})},"data-testid":"tools-table-switch-on",children:"Switch on"}),(0,r.jsx)(eV.f,{isPending:"off"===D,pendingLabel:"Switching off…",disabled:0===S.size||ed||!et,onClick:()=>{eu({names:[...S],isOn:!1,working:"off"})},"data-testid":"tools-table-switch-off",children:"Switch off"}),(0,r.jsx)("button",{type:"button",className:eL.x.secondary,disabled:ed||!et||null===o,onClick:()=>{ea("suggest")},"data-testid":"tools-table-suggest",children:"Suggest from hints…"})]})]}):null]});return(0,r.jsxs)("div",{className:"grid gap-3",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2","data-testid":"tools-table-party-needs",children:[(0,r.jsx)("span",{className:"font-medium",children:"Every tool needs"}),(0,r.jsx)(eJ.f,{party:q,own:[],listed:J}),l?(0,r.jsx)("button",{type:"button",className:"text-primary hover:underline disabled:opacity-60",disabled:ed||null===o,onClick:()=>{ea("party")},"data-testid":"tools-table-party-change",children:"Change…"}):null]}),null===u?null:(0,r.jsxs)("p",{role:"status",className:"rounded-md border border-tone-waiting-border bg-tone-waiting-bg px-3 py-2 text-tone-waiting-fg","data-testid":"tools-table-server-down",children:["The server did not answer, so this shows the scopes kept per tool name; they can still be changed. ",u]}),(0,r.jsx)("div",{className:"hidden sm:block",children:ef}),(0,r.jsx)("div",{className:"sm:hidden",children:(0,r.jsxs)(eI.Root,{open:V,onOpenChange:W,children:[(0,r.jsxs)(e$.Trigger,{className:eL.x.secondary,"data-testid":"tools-table-sheet-open",children:["Filters and actions",l?` (${String(S.size)} selected)`:""]}),(0,r.jsxs)(eO.Portal,{children:[(0,r.jsx)(eE.Backdrop,{className:"fixed inset-0 z-40 bg-(--overlay)"}),(0,r.jsx)(ek.Viewport,{className:"fixed inset-0 z-50 flex items-end",children:(0,r.jsx)(eF.Popup,{className:"w-full rounded-t-lg border border-border bg-popover p-4 text-popover-foreground shadow-lg",children:(0,r.jsxs)(eD.Content,{className:"grid gap-3",children:[(0,r.jsx)(eA.Title,{className:"text-heading font-semibold",children:"Filters and actions"}),ef,(0,r.jsx)(eY.Close,{className:eL.x.secondary,children:"Done"})]})})})]})]})}),null===Y?null:(0,r.jsx)("p",{role:"alert",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg","data-testid":"tools-table-switch-refusal",children:Y}),(0,r.jsxs)("table",{className:"w-full border-collapse max-sm:block","data-testid":"tools-table",children:[(0,r.jsx)("thead",{className:"max-sm:hidden",children:(0,r.jsxs)("tr",{className:"border-b border-border text-left text-muted-foreground",children:[l?(0,r.jsx)("th",{className:"w-8 py-2",children:(0,r.jsx)("span",{className:"sr-only",children:"Selected"})}):null,(0,r.jsx)("th",{className:"py-2 font-medium",children:"Tool"}),(0,r.jsx)("th",{className:"py-2 font-medium",children:"Hints"}),(0,r.jsx)("th",{className:"py-2 font-medium",children:"On"}),(0,r.jsx)("th",{className:"py-2 font-medium",children:"Needs"})]})}),(0,r.jsx)("tbody",{className:"max-sm:grid max-sm:gap-2",children:Q.map(e=>{let t=z.names.has(e.name);return(0,r.jsxs)("tr",{className:`border-b border-border align-top last:border-b-0 max-sm:grid max-sm:grid-cols-[auto_1fr] max-sm:gap-x-2 max-sm:rounded-md max-sm:border max-sm:p-2 ${t?"animate-highlight":""}`,"data-testid":"tools-table-row","data-tool":e.name,children:[l?(0,r.jsx)("td",{className:"py-2 pr-2 max-sm:row-span-4",children:(0,r.jsx)("input",{type:"checkbox","aria-label":`Select ${e.name}`,checked:S.has(e.name),onChange:()=>{var t;t=e.name,j(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})},"data-testid":"tools-table-select"})}):null,(0,r.jsxs)("td",{className:"py-2 pr-3 max-sm:col-start-2",children:[(0,r.jsxs)("span",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("span",{className:"font-mono",children:e.name}),e.isNew?(0,r.jsx)(eW.T,{tone:"attention",label:"New"}):null]}),""===e2(e.description)?null:(0,r.jsx)("span",{className:"block text-muted-foreground",children:e2(e.description)})]}),(0,r.jsx)("td",{className:"py-2 pr-3 max-sm:col-start-2",children:(0,r.jsxs)("span",{className:"flex flex-wrap gap-1",children:[!0===e.isReadOnly?(0,r.jsx)(eW.E,{children:"Read only"}):null,!0===e.isDestructive?(0,r.jsx)(eW.E,{children:"Destructive"}):null]})}),(0,r.jsx)("td",{className:"py-2 pr-3 max-sm:col-start-2",children:null===e.isOn?(0,r.jsx)("span",{className:"text-muted-foreground",children:"Not known"}):l?(0,r.jsx)(eH.f,{isOn:e.isOn,label:e.name,isPending:D===e.name,onClick:()=>{eu({names:[e.name],isOn:!0!==e.isOn,working:e.name})},testId:"tools-table-switch"}):(0,r.jsx)(eW.E,{children:e.isOn?"On":"Off"})}),(0,r.jsx)("td",{className:"py-2 max-sm:col-start-2",children:(0,r.jsx)(eJ.f,{party:q,own:e.scopes,listed:J})})]},t?`${e.name}-${String(z.round)}`:e.name)})})]}),0===Q.length?(0,r.jsx)("p",{className:"text-muted-foreground","data-testid":"tools-table-empty",children:0===B.length?et?`${t} lists no tools.`:"No tool needs a scope of its own yet.":"No tool matches the filters."}):null,null===o?null:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(e0.G,{isOpen:"scopes"===N,onClose:eo,title:"Set scopes",description:"The scopes a calling ship must hold for each selected tool, beside what every tool needs.",appliesTo:`Applies to ${String(ee.length)} ${1===ee.length?"tool":"tools"}`,action:{label:"Set scopes",pending:"Setting…",isDisabled:0===R.length&&"replace"!==C,onPress:()=>{var e;el({change:{tools:(e={scopes:R,how:C},ee.map(({name:t,scopes:n})=>{switch(e.how){case"add":return{tool:t,scopes:[...new Set([...n,...e.scopes])]};case"remove":return{tool:t,scopes:n.filter(t=>!e.scopes.includes(t))};case"replace":return{tool:t,scopes:[...new Set(e.scopes)]}}}))},changed:ee.map(({name:e})=>e),message:(0,eq.y)({scopes:R,how:C,count:ee.length})})}},isSaving:O,refusal:(0,e0.V)(k,_),isReloading:g,onReload:ec,testId:"tools-table-scopes-dialog",children:[(0,r.jsx)(eQ.f,{label:"Scopes",listed:o,picked:R,onPick:P,isDisabled:O,testId:"tools-table-scopes-picker"}),(0,r.jsxs)("fieldset",{className:"grid gap-1",children:[(0,r.jsx)("legend",{className:"font-medium",children:"On each selected tool"}),eB.map(e=>(0,r.jsxs)("label",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{type:"radio",name:"how",value:e.how,checked:C===e.how,onChange:()=>{M(e.how)},"data-testid":`tools-table-how-${e.how}`}),e.label]},e.how))]})]}),(0,r.jsx)(e0.G,{isOpen:"party"===N,onClose:eo,title:"Every tool needs",description:`The scopes a calling ship must hold for every tool of ${t}, beside each tool's own.`,appliesTo:`Applies to every tool of ${t}`,action:{label:"Save",pending:"Saving…",isDisabled:!1,onPress:()=>{el({change:{party:R,tools:[]},changed:B.map(({name:e})=>e),message:(0,eq.G)({party:t,scopes:R})})}},isSaving:O,refusal:(0,e0.V)(k,_),isReloading:g,onReload:ec,testId:"tools-table-party-dialog",children:(0,r.jsx)(eQ.f,{label:"Scopes",listed:o,picked:R,onPick:P,isDisabled:O,testId:"tools-table-party-picker"})}),(0,r.jsxs)(e0.G,{isOpen:"suggest"===N,onClose:eo,title:"Suggest from hints",description:"Scopes for each tool with no scope of its own, by what the server says of it. Hints are the server's claim: nothing applies until you confirm.",appliesTo:`Applies to ${String(es.length)} ${1===es.length?"tool":"tools"}`,action:{label:"Apply",pending:"Applying…",isDisabled:0===es.length,onPress:()=>{let e=[{scopes:I.readOnly,count:0===I.readOnly.length?0:er.readOnly.length},{scopes:I.other,count:0===I.other.length?0:er.other.length}].filter(({count:e})=>e>0);el({change:{tools:es},changed:es.map(({tool:e})=>e),message:(0,eq.q)(e)})}},isSaving:O,refusal:(0,e0.V)(k,_),isReloading:g,onReload:ec,testId:"tools-table-suggest-dialog",children:[(0,r.jsx)(eQ.f,{label:"Scopes for read-only tools",listed:o,picked:I.readOnly,onPick:e=>{$(t=>({...t,readOnly:e}))},isDisabled:O,testId:"tools-table-suggest-read-only"}),(0,r.jsx)(eQ.f,{label:"Scopes for the other tools",listed:o,picked:I.other,onPick:e=>{$(t=>({...t,other:e}))},isDisabled:O,testId:"tools-table-suggest-other"}),(0,r.jsx)(e5,{title:"Read-only tools",names:er.readOnly,testId:"tools-table-suggest-read-only-tools"}),(0,r.jsx)(e5,{title:"Other tools",names:er.other,testId:"tools-table-suggest-other-tools"}),(0,r.jsx)(e5,{title:"Without hints, left as they are",names:er.withoutHints,testId:"tools-table-suggest-without-hints"})]})]})]})}function e5({title:e,names:t,testId:n}){return(0,r.jsxs)("details",{className:"rounded-md border border-border px-3 py-2","data-testid":n,children:[(0,r.jsxs)("summary",{className:"cursor-pointer",children:[e," (",t.length,")"]}),0===t.length?(0,r.jsx)("p",{className:"text-muted-foreground",children:"None"}):(0,r.jsx)("p",{className:"font-mono text-code break-words",children:t.join(", ")})]})}e.s(["ToolsTable",0,function(e){return(0,r.jsxs)(eX.f.Provider,{children:[(0,r.jsx)(e4,{...e}),(0,r.jsx)(e1.f,{})]})}],96535)},15327,e=>{var t=e.i(43476),n=e.i(71645),r=e.i(28008),s=e.i(95187);let i=(0,s.createServerReference)("40781bbbdfcf571b59edd676b5f2d5fd317126a449",s.callServer,void 0,s.findSourceMapURL,"readMoreSignIns"),a=(0,s.createServerReference)("4066730a504d80c9fc1a2cada4ae1f0f7440562d31",s.callServer,void 0,s.findSourceMapURL,"removePersonSignIn");function o(e,t){let n=new Set(e.map(({personShipId:e})=>e));return[...e,...t.filter(({personShipId:e})=>!n.has(e))]}var l=e.i(30402),u=e.i(94984),c=e.i(97e3);let d=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],f=e=>String(e).padStart(2,"0"),p={signedIn:{tone:"ok",label:"Signed in"},lost:{tone:"attention",label:"Lost"}};function h(e){return e.personName??e.personShipId}function m({count:e}){return(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,t.jsx)("h2",{className:"text-section font-semibold",children:"Everyone's sign-ins"}),null===e?null:(0,t.jsx)("span",{className:"text-muted-foreground",children:e})]})}function g(){return(0,t.jsx)("thead",{className:"max-sm:hidden",children:(0,t.jsxs)("tr",{className:"border-b border-border text-left text-muted-foreground",children:[(0,t.jsx)("th",{className:"h-10 px-2 font-medium",children:"Person"}),(0,t.jsx)("th",{className:"h-10 px-2 font-medium",children:"Account"}),(0,t.jsx)("th",{className:"h-10 px-2 font-medium",children:"State"}),(0,t.jsx)("th",{className:"h-10 px-2 font-medium",children:"Last used"}),(0,t.jsx)("th",{className:"h-10 px-2",children:(0,t.jsx)("span",{className:"sr-only",children:"Remove"})})]})})}function x({signIn:e,party:n,isRemoving:r,onConfirm:s,onKeep:i}){let a=h(e);return(0,t.jsxs)("div",{className:"grid gap-2 rounded-md bg-muted p-3","data-testid":"outside-party-sign-ins-confirm",children:[(0,t.jsxs)("p",{children:["Remove ",a,"'s sign-in? Their ships' calls to ",n," are refused until they sign in again."]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)("button",{type:"button",className:l.x.destructive,disabled:r,"aria-busy":r,onClick:s,"data-testid":"outside-party-sign-ins-remove-confirmed",children:r?"Removing…":`Remove ${a}'s sign-in`}),(0,t.jsx)("button",{type:"button",className:l.x.secondary,onClick:i,children:"Keep"})]})]})}function v(e){let{party:n,now:r,rows:s,refusal:i,hasMore:a,isLoadingMore:o,confirming:v,removing:b,outcome:y}=e;return(0,t.jsxs)("section",{className:`${l.r} grid gap-3`,"data-testid":"outside-party-sign-ins",children:[(0,t.jsx)(m,{count:null===i?s.length:null}),(0,t.jsx)(u.f,{state:y}),null!==i?(0,t.jsx)(u.f,{state:{kind:"refused",message:i}}):0===s.length?(0,t.jsx)("p",{className:"text-muted-foreground",children:"Nobody has signed in yet."}):(0,t.jsxs)("table",{className:"w-full border-collapse max-sm:block",children:[(0,t.jsx)(g,{}),(0,t.jsx)("tbody",{className:"max-sm:grid",children:s.map(s=>{var i;let a,o,u=p[s.state],m=v===s.personShipId,g=null===s.lastUsedAt?"Not yet":(i=s.lastUsedAt,(o=new Date(r).getTime()-new Date(i).getTime())<6e4?"Just now":o<36e5?`${String(Math.floor(o/6e4))} min ago`:(a=new Date(i),`${String(a.getUTCDate())} ${d[a.getUTCMonth()]??""}, ${f(a.getUTCHours())}:${f(a.getUTCMinutes())}`));return[(0,t.jsxs)("tr",{className:`border-b border-border max-sm:grid max-sm:grid-cols-[1fr_auto] max-sm:gap-1 max-sm:py-3 ${m?"border-b-0":"last:border-b-0"}`,"data-testid":"outside-party-sign-ins-row",children:[(0,t.jsxs)("td",{className:"h-12 px-2 max-sm:col-start-1 max-sm:row-start-1 max-sm:h-auto max-sm:px-0 max-sm:font-medium",children:[h(s),s.isYours?(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:" (you)"}):null]}),(0,t.jsxs)("td",{className:"h-12 px-2 max-sm:col-span-2 max-sm:row-start-2 max-sm:h-auto max-sm:px-0 max-sm:text-muted-foreground",children:[function({outsideAccount:e}){return e.name??e.subject??(0,t.jsx)("span",{className:"text-muted-foreground",children:"Not known"})}(s),(0,t.jsxs)("span",{className:"sm:hidden",children:[" · last used ",null===s.lastUsedAt?"not yet":g]})]}),(0,t.jsx)("td",{className:"h-12 px-2 max-sm:col-start-2 max-sm:row-start-1 max-sm:h-auto max-sm:px-0",children:(0,t.jsx)(c.T,{tone:u.tone,label:u.label})}),(0,t.jsx)("td",{className:"h-12 px-2 text-muted-foreground max-sm:hidden",children:g}),(0,t.jsx)("td",{className:"h-12 px-2 text-right max-sm:col-span-2 max-sm:row-start-3 max-sm:h-auto max-sm:px-0 max-sm:text-left",children:(0,t.jsx)("button",{type:"button",className:`${l.x.secondary} ${m?"max-sm:hidden":""}`,onClick:()=>{e.onRemove(s.personShipId)},"data-testid":"outside-party-sign-ins-remove",children:"Remove"})})]},s.personShipId),m?(0,t.jsx)("tr",{className:"border-b border-border last:border-b-0 max-sm:block max-sm:pb-3",children:(0,t.jsx)("td",{colSpan:5,className:"pb-2 max-sm:block max-sm:pb-0",children:(0,t.jsx)(x,{signIn:s,party:n,isRemoving:b===s.personShipId,onConfirm:()=>{e.onConfirm(s)},onKeep:e.onKeep})})},`${s.personShipId}-confirm`):null]})})]}),null===i&&a?(0,t.jsx)("div",{children:(0,t.jsx)("button",{type:"button",className:l.x.secondary,disabled:o,"aria-busy":o,onClick:e.onMore,"data-testid":"outside-party-sign-ins-more",children:o?"Showing more…":"Show more"})}):null]})}e.s(["EveryonesSignInsCard",0,function({fleetId:e,party:s,now:l,first:u}){let[c,d]=(0,n.useState)([]),[f,p]=(0,n.useState)(u.next),[m,g]=(0,n.useState)(new Set),[x,b]=(0,n.useState)(null),[y,w]=(0,n.useState)(null),[S,j]=(0,n.useState)(r.Q),[N,T]=(0,n.useTransition)(),[,R]=(0,n.useTransition)(),P=o(u.grants,c).filter(({personShipId:e})=>!m.has(e));return(0,t.jsx)(v,{party:s,now:l,rows:P,refusal:null,hasMore:null!==f,isLoadingMore:N,confirming:x,removing:y,outcome:S,onRemove:e=>{b(e),j(r.Q)},onConfirm:t=>{w(t.personShipId),R(async()=>{let n=await a({fleetId:e,name:s,personShipId:t.personShipId});w(null),b(null),n.isOk?(g(e=>new Set([...e,t.personShipId])),j({kind:"done",message:function({person:e,party:t,isRevoked:n}){return n?`${e}'s sign-in is removed, and revoked at ${t}.`:`${e}'s sign-in is removed.`}({person:h(t),party:s,isRevoked:n.isRevoked})})):j({kind:"refused",message:n.message})})},onKeep:()=>{b(null)},onMore:()=>{let t=f??P.at(-1)?.personShipId;void 0!==t&&T(async()=>{let n=await i({fleetId:e,name:s,after:t});n.isOk?(d(e=>o(e,n.grants)),p(n.next)):j({kind:"refused",message:n.message})})}})}],15327)},52979,e=>{var t=e.i(43476),n=e.i(71645),r=e.i(28008),s=e.i(94984),i=e.i(58107),a=e.i(95187);let o=(0,a.createServerReference)("60aebc51419ce1755576b4ee4a1a76ff8cdb4eb6b3",a.callServer,void 0,a.findSourceMapURL,"removeOwnSignIn");var l=e.i(625);function u({fleetId:e,party:n}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("input",{type:"hidden",name:r.H,value:e}),(0,t.jsx)("input",{type:"hidden",name:"name",value:n})]})}e.s(["RemoveSignInForm",0,function({fleetId:e,party:a}){let[l,c]=(0,n.useActionState)(o,r.Q);return(0,t.jsxs)("form",{action:c,className:"grid gap-2",children:[(0,t.jsx)(s.f,{state:l}),(0,t.jsx)(u,{fleetId:e,party:a}),(0,t.jsx)("div",{children:(0,t.jsx)(i.f,{kind:"secondary",pending:"Removing…",testId:"outside-party-sign-in-remove",children:"Remove"})})]})},"SignInForm",0,function({fleetId:e,party:a,label:o,kind:c}){let[d,f]=(0,n.useActionState)(l.f,r.Q);return(0,t.jsxs)("form",{action:f,className:"grid gap-2",children:[(0,t.jsx)(s.f,{state:d}),(0,t.jsx)(u,{fleetId:e,party:a}),(0,t.jsx)("div",{children:(0,t.jsx)(i.f,{kind:c,pending:`Opening ${a}…`,testId:"outside-party-sign-in-start",children:o})})]})}],52979)},98722,e=>{var t=e.i(43476),n=e.i(71645),r=e.i(74080),s=e.i(28008),i=e.i(25621),a=e.i(95187);let o=(0,a.createServerReference)("60b0f4a8553de54d3d0005faaf9f0d245fd5469a69",a.callServer,void 0,a.findSourceMapURL,"markA2aAgent"),l={kind:"idle"};function u({isRepeatable:e}){let n=(0,r.useFormStatus)();return(0,t.jsx)(i.f,{type:"submit",isOn:e,label:"Repeatable",isPending:n.pending,testId:"outside-party-repeatable-switch"})}e.s(["RepeatableSwitch",0,function({fleetId:e,party:r,isRepeatable:i}){let[a,c]=(0,n.useActionState)(o,l),d="marked"===a.kind?a.isRepeatable:i;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("form",{action:c,className:"contents",children:[(0,t.jsx)("input",{type:"hidden",name:s.H,value:e}),(0,t.jsx)("input",{type:"hidden",name:"name",value:r}),(0,t.jsx)("input",{type:"hidden",name:"isRepeatable",value:String(!d)}),(0,t.jsx)(u,{isRepeatable:d})]}),"idle"===a.kind?null:(0,t.jsx)("span",{role:"refused"===a.kind?"alert":"status",className:`basis-full text-caption ${"refused"===a.kind?"text-tone-attention-fg":"text-tone-ok-fg"}`,"data-testid":"outside-party-repeatable-outcome",children:a.message})]})}],98722)}])})();
@@ -1 +0,0 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,34982,e=>{var t=e.i(43476),n=e.i(71645),r=e.i(96499),o=e.i(56789),i=e.i(46376),s=e.i(33332);let a=n.createContext(void 0);function l(e){let t=n.useContext(a);if(void 0===t&&!e)throw Error((0,s.f)(72));return t}var u=e.i(74735),p=e.i(67865),c=e.i(29315),d=e.i(84446),f=e.i(57940);function g(e){return null!=e&&null!=e.clientX}var v=e.i(17989),h=e.i(75606),m=e.i(64111),C=e.i(76782),S=e.i(1252),x=e.i(41530),P=e.i(16786),R=e.i(90627);let b={...P.j,disabled:e=>e.disabled,instantType:e=>e.instantType,isInstantPhase:e=>e.isInstantPhase,trackCursorAxis:e=>e.trackCursorAxis,disableHoverablePopup:e=>e.disableHoverablePopup,lastOpenChangeReason:e=>e.openChangeReason,closeOnClick:e=>e.closeOnClick,appliedTriggerProps:(e,t)=>t?e.activeTriggerProps:void 0,closeDelay:e=>e.closeDelay,adaptiveOrigin:e=>e.adaptiveOrigin};class y extends S.f{constructor(e,t,r){var o;let i=new R.f;super(function(e,t,n,r=!1){return{...(0,P.i)(t,n,r),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,adaptiveOrigin:void 0,...e}}(e,i,t,r),(o=i,{popupRef:n.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:o}),b)}setOpen=(e,t)=>{(0,m.c)(this,e,t,{extraState:{openChangeReason:t.reason}})};cancelPendingOpen(e){this.state.floatingRootContext.dispatchOpenChange(!1,(0,h.j)(x.f.triggerPress,e))}}var O=e.i(16856),O=O,E=e.i(80025),T=e.i(68765);let w=(0,r.U)(function(e){let{disabled:r=!1,defaultOpen:o=!1,open:s,disableHoverablePopup:l=!1,trackCursorAxis:u="none",actionsRef:p,onOpenChange:c,onOpenChangeComplete:d,handle:f,triggerId:g,defaultTriggerId:v=null,children:C}=e,S=(0,m.$)((e,t)=>new y({open:o,openProp:s,activeTriggerId:v,triggerIdProp:g},e,t));S.useControlledProp("openProp",s),S.useControlledProp("triggerIdProp",g),S.useContextCallback("onOpenChange",c),S.useContextCallback("onOpenChangeComplete",d);let x=S.useState("open"),P=!r&&x,R=S.useState("activeTriggerId"),b=S.useState("mounted"),w=S.useState("payload");S.useSyncedValues({trackCursorAxis:u,disableHoverablePopup:l,disabled:r}),(0,m._)(S,{closeOnActiveTriggerUnmount:!0});let{forceUnmount:k,transitionStatus:D}=(0,m.L)(P,S),M=S.useState("isInstantPhase"),j=S.useState("instantType"),A=S.useState("lastOpenChangeReason"),_=n.useRef(null);(0,i.f)(()=>{x&&r&&S.setOpen(!1,(0,h.j)(O.disabled))},[x,r,S]),(0,i.f)(()=>{"ending"===D&&A===E.f.none||"ending"!==D&&M?("delay"!==j&&(_.current=j),S.set("instantType","delay")):null!==_.current&&(S.set("instantType",_.current),_.current=null)},[D,M,A,j,S]),(0,i.f)(()=>{P&&null==R&&S.set("payload",void 0)},[S,R,P]),n.useImperativeHandle(p,()=>({unmount:k,close:()=>S.setOpen(!1,(0,h.j)(T.f.imperativeAction))}),[k,S]);let H=P||b||!r&&"none"!==u;return(0,t.jsxs)(a.Provider,{value:S,children:[f&&(0,t.jsx)(m.d,{handle:f,store:S}),H&&(0,t.jsx)(I,{store:S,disabled:r,trackCursorAxis:u}),"function"==typeof C?C({payload:w}):C]})});function I({store:e,disabled:t,trackCursorAxis:r}){let i=e.useState("floatingRootContext"),s=(0,v.f)(i,{enabled:!t,referencePress:()=>e.select("closeOnClick")}),a=function(e,t={}){let{enabled:r=!0,axis:o="both"}=t,i=e.useState("open"),s=e.useState("floatingElement"),a=e.useState("domReferenceElement"),l=e.context.dataRef,v=n.useRef(!1),h=n.useRef(null),[m,C]=n.useState(),[S,x]=n.useState([]),P=(0,p.f)(t=>{e.set("positionReference",t)}),R=(0,p.f)((t,n,r)=>{if(!v.current&&(!l.current.openEvent||g(l.current.openEvent))){var i,s;let u,p,c;e.set("positionReference",(i=r??a,s={x:t,y:n,axis:o,dataRef:l,pointerType:m},u=null,p=null,c=!1,{contextElement:i||void 0,getBoundingClientRect(){let e=i?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},t="x"===s.axis||"both"===s.axis,n="y"===s.axis||"both"===s.axis,r=["mouseenter","mousemove"].includes(s.dataRef.current.openEvent?.type||"")&&"touch"!==s.pointerType,o="y"===s.axis?e.width:0,a="x"===s.axis?e.height:0,l=e.x,d=e.y;return null==u&&s.x&&t&&(u=e.x-s.x),null==p&&s.y&&n&&(p=e.y-s.y),l-=u||0,d-=p||0,(!c||r)&&(l=t&&null!=s.x?s.x:l,d=n&&null!=s.y?s.y:d),c=!0,{width:o,height:a,x:l,y:d,top:d,right:l+o,bottom:d+a,left:l}}}))}}),b=(0,p.f)(e=>{i?h.current||(R(e.clientX,e.clientY,e.currentTarget),x([])):R(e.clientX,e.clientY,e.currentTarget)}),y=(0,f.J)(m)?s:i;n.useEffect(()=>{if(!r)return void P(a);if(!y)return;function e(){h.current?.(),h.current=null}let t=(0,c.K)(s);return!l.current.openEvent||g(l.current.openEvent)?h.current=(0,u.f)(t,"mousemove",function(t){let n=(0,d.Z)(t);(0,d.I)(s,n)?e():R(t.clientX,t.clientY)}):P(a),e},[y,r,s,l,a,e,R,P,S]),n.useEffect(()=>()=>{e.set("positionReference",null)},[e]),n.useEffect(()=>{r&&!s&&(v.current=!1)},[r,s]),n.useEffect(()=>{!r&&i&&(v.current=!0)},[r,i]);let O=n.useMemo(()=>{function e(e){C(e.pointerType)}return{onPointerDown:e,onPointerEnter:e,onMouseMove:b,onMouseEnter:b}},[b]);return n.useMemo(()=>r?{reference:O,trigger:O}:{},[r,O])}(i,{enabled:!t&&"none"!==r,axis:"none"===r?void 0:r}),l=n.useMemo(()=>(0,C.w)(a.reference,s.reference),[a.reference,s.reference]);return(0,m.y)(e,{activeTriggerProps:l,inactiveTriggerProps:l,popupProps:s.floating??o.w}),null}var k=e.i(39957),D=e.i(46265),M=e.i(79938),j=e.i(52245),A=e.i(59636),_=e.i(88015);let H=n.createContext(void 0);var B=e.i(50316),U=e.i(44681);let F=n.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new k.U,currentIdRef:{current:null},currentContextRef:{current:null}});function X(e){let{children:r,delay:o,timeoutMs:s=0}=e,a=n.useRef(o),l=n.useRef(o),u=n.useRef(null),p=n.useRef(null),c=(0,k.e)();return(0,i.f)(()=>{if(l.current=o,!u.current){a.current=o;return}a.current={open:(0,U.c)(a.current,"open"),close:(0,U.c)(o,"close")}},[o,u,a,l]),(0,t.jsx)(F.Provider,{value:n.useMemo(()=>({hasProvider:!0,delayRef:a,initialDelayRef:l,currentIdRef:u,timeoutMs:s,currentContextRef:p,timeout:c}),[s,c]),children:r})}var q=e.i(13082),K=e.i(72135),N=e.i(22428),V=e.i(73752),W=e.i(22846);let J="data-base-ui-tooltip-trigger";function L(e){let t=(0,d.Z)(e);return(0,c.m)(t)?t:null}let Z=(0,r.u)(function(e,t){let{render:r,className:o,style:a,handle:u,payload:p,disabled:c,delay:g,closeOnClick:v=!0,closeDelay:C,id:S,...x}=e,P=l(!0),R=(0,A.f)(u)??P;if(!R)throw Error((0,s.f)(82));let b=(0,_.f)(S),y=R.useState("isTriggerActive",b),O=R.useState("isOpenedByTrigger",b),T=R.useState("floatingRootContext"),w=n.useRef(null),I=C??0,{registerTrigger:X,isMountedByThisTrigger:Z}=(0,m.F)(b,w,R,{payload:p,closeOnClick:v,closeDelay:I}),Y=n.useContext(H),{activeIdRef:$,delayRef:z,isInstantPhase:G,hasProvider:Q}=function(e,t={open:!1}){let{open:r}=t,o=e.useState("floatingId"),{currentIdRef:s,delayRef:a,timeoutMs:l,initialDelayRef:u,currentContextRef:p,hasProvider:c,timeout:d}=n.useContext(F),[f,g]=n.useState(!1),v=n.useRef(r);return(0,i.f)(()=>{v.current=r},[r]),(0,i.f)(()=>{function t(){p.current?.setIsInstantPhase(!1),s.current=null,p.current=null,a.current=u.current,d.clear()}if(s.current&&!r&&s.current===o){if(g(!1),l)return d.start(l,()=>{e.select("open")||s.current&&s.current!==o||t()}),()=>{(v.current||s.current!==o)&&d.clear()};t()}},[r,o,s,a,l,u,p,d,e]),(0,i.f)(()=>{if(!r)return;let t=p.current,n=s.current;d.clear(),p.current={onOpenChange:e.setOpen,setIsInstantPhase:g},s.current=o,a.current={open:0,close:(0,U.c)(u.current,"close")},null!==n&&n!==o?(g(!0),t?.setIsInstantPhase(!0),t?.onOpenChange(!1,(0,h.j)(E.f.none))):(g(!1),t?.setIsInstantPhase(!1))},[r,o,e,s,a,u,p,d]),(0,i.f)(()=>()=>{s.current===o&&(p.current=null,v.current)&&(s.current=null,a.current=u.current,d.clear())},[p,s,a,o,u,d]),n.useMemo(()=>({activeIdRef:s,hasProvider:c,delayRef:a,isInstantPhase:f}),[s,c,a,f])}(T,{open:O}),ee=(0,V.s)(T);R.useSyncedValue("isInstantPhase",G);let et=R.useState("disabled"),en=c??et,er=(0,D.f)(en),eo=R.useState("trackCursorAxis"),ei=R.useState("disableHoverablePopup"),es=n.useRef(!1),ea=(0,k.e)(),el=n.useRef(void 0);function eu(){return Q&&null!=$.current?0:g??Y??600}function ep(e){let t=w.current;if(!t||!e)return!1;let n=(0,d.h)(e,`[${J}]`);return null!==n&&n!==t&&(0,d.I)(t,n)}let ec=(0,K.f)(T,{enabled:!en,mouseOnly:!0,move:!1,handleClose:ei||"both"===eo?null:(0,B.f)(),restMs:eu,delay:()=>null==C&&Q?{close:(0,U.c)(z.current,"close")}:{close:I},triggerElementRef:w,isActiveTrigger:y,isClosing:()=>"ending"===R.select("transitionStatus"),shouldOpen:()=>!es.current}),ed=(0,q.f)(T,{enabled:!en}).reference,ef=R.useState("appliedTriggerProps",Z||"none"!==eo);return(0,j.a)("button",e,{state:{open:O},ref:[t,X,w],props:[ec,ed,ef,{onMouseOver(e){(e=>{let t,n=es.current,r=L(e),o=(es.current=t=ep(r),t&&(ee.openChangeTimeout.clear(),ee.restTimeout.clear(),ee.restTimeoutPending=!1,ea.clear()),t),i=w.current,s=i&&r&&(0,d.I)(i,r);if(o&&R.select("open")&&R.select("lastOpenChangeReason")===N.f.triggerHover)return R.setOpen(!1,(0,h.j)(N.f.triggerHover,e));if(n&&!o&&s&&!er.current&&!R.select("open")&&i&&(0,f.J)(el.current)){let t=()=>{es.current||er.current||R.select("open")||R.setOpen(!0,(0,h.j)(N.f.triggerHover,e,i))},n=eu();0===n?(ea.clear(),t()):ea.start(n,t)}})(e.nativeEvent)},onFocus(e){ep(L(e.nativeEvent))&&e.preventBaseUIHandler()},onMouseLeave(){es.current=!1,ea.clear(),el.current=void 0},onPointerEnter(e){el.current=e.pointerType},onPointerDown(e){el.current=e.pointerType,R.set("closeOnClick",v),v&&!R.select("open")&&R.cancelPendingOpen(e.nativeEvent)},onClick(e){v&&!R.select("open")&&R.cancelPendingOpen(e.nativeEvent)},id:b,[W.f]:en?"":void 0,[J]:en?void 0:""},x],stateAttributesMapping:M.J})}),Y=n.createContext(void 0);var $=e.i(78680);let z=n.forwardRef(function(e,n){let{keepMounted:r=!1,...o}=e;return l().useState("mounted")||r?(0,t.jsx)(Y.Provider,{value:r,children:(0,t.jsx)($.f,{ref:n,...o})}):null}),G=n.createContext(void 0);var Q=e.i(23706),ee=e.i(38396),et=e.i(89579);let en=n.forwardRef(function(e,r){let{render:o,className:i,anchor:a,positionMethod:u="absolute",side:p="top",align:c="center",sideOffset:d=0,alignOffset:f=0,collisionBoundary:g="clipping-ancestors",collisionPadding:v=5,arrowPadding:h=5,sticky:m=!1,disableAnchorTracking:C=!1,collisionAvoidance:S=ee.n,style:x,...P}=e,R=l(),b=function(){let e=n.useContext(Y);if(void 0===e)throw Error((0,s.f)(70));return e}(),y=R.useState("open"),O=R.useState("mounted"),E=R.useState("trackCursorAxis"),T=R.useState("disableHoverablePopup"),w=R.useState("floatingRootContext"),I=R.useState("instantType"),k=R.useState("transitionStatus"),D=R.useState("adaptiveOrigin"),M=(0,Q.f)({anchor:a,positionMethod:u,floatingRootContext:w,mounted:O,side:p,sideOffset:d,align:c,alignOffset:f,collisionBoundary:g,collisionPadding:v,sticky:m,arrowPadding:h,disableAnchorTracking:C,keepMounted:b,collisionAvoidance:S,adaptiveOrigin:D}),j=n.useMemo(()=>({open:y,side:M.side,align:M.align,anchorHidden:M.anchorHidden,instant:"none"!==E?"tracking-cursor":I}),[y,M.side,M.align,M.anchorHidden,E,I]),A=(0,et.f)(e,j,{styles:M.positionerStyles,transitionStatus:k,props:P,refs:[r,R.useStateSetter("positionerElement")],hidden:!O,inert:!y||"both"===E||T});return(0,t.jsx)(G.Provider,{value:M,children:A})});var er=e.i(37584),eo=e.i(53984),ei=e.i(31157);let es=n.forwardRef(function(e,t){let{render:r,className:o,style:i,...a}=e,u=l(),{side:p,align:c}=function(){let e=n.useContext(G);if(void 0===e)throw Error((0,s.f)(71));return e}(),d=u.useState("open"),f=u.useState("instantType"),g=u.useState("transitionStatus"),v=u.useState("popupProps"),h=u.useState("floatingRootContext"),C=u.useState("disabled"),S=u.useState("closeDelay");(0,er.f)({open:d,ref:u.context.popupRef,onComplete(){d&&u.context.onOpenChangeComplete?.(!0)}}),(0,ei.f)(h,{enabled:!C,closeDelay:S});let x=u.useStateSetter("popupElement");return(0,j.a)("div",e,{state:{open:d,side:p,align:c,instant:f,transitionStatus:g},ref:[t,u.context.popupRef,x],props:[m.X,v,(0,eo.f)(g),a],stateAttributesMapping:M.M})});e.s(["Popup",0,es,"Portal",0,z,"Positioner",0,en,"Provider",0,function(e){let{delay:r,closeDelay:o,timeout:i=400}=e,s=n.useMemo(()=>({open:r,close:o}),[r,o]);return(0,t.jsx)(H.Provider,{value:r,children:(0,t.jsx)(X,{delay:s,timeoutMs:i,children:e.children})})},"Root",0,w,"Trigger",0,Z],99643),e.i(99643),e.i(71773),e.s([],34982)},49317,e=>{e.i(43476),e.i(71645),e.s([])},93270,e=>{let t;e.i(43476),e.i(71645);var n=e.i(71773);let r=["from-above-1","squadrons-1","squadrons-3","squadrons-4","squadrons-5","squadrons-6"],o={width:1600,height:1e3},i=.2*o.height;t=Math.min(r.length-1,Math.floor((0,Math.random)()*r.length)),r[t],(0,n.f)("[--sign-in-faint:color-mix(in_oklch,var(--foreground)_11%,transparent)] [--sign-in-brand:color-mix(in_oklch,var(--primary)_22%,transparent)]","[--sign-in-warm:oklch(0.88_0.06_60)] [--sign-in-sky:oklch(0.9_0.04_255)]","dark:[--sign-in-faint:color-mix(in_oklch,var(--foreground)_9%,transparent)] dark:[--sign-in-brand:color-mix(in_oklch,var(--primary)_20%,transparent)]","dark:[--sign-in-warm:oklch(0.55_0.06_55)] dark:[--sign-in-sky:oklch(0.3_0.05_260)]");let{width:s,height:a}=o;String(i/a*100),String(i),String(s),String(s),String(i),String(.68),String(-.68),e.s([],93270)},26323,8821,56736,25834,35890,64938,80829,6640,10199,64951,66250,77173,13488,28376,9977,41708,93480,9169,52744,e=>{var t=e.i(71645),n=e.i(33332);let r=t.createContext(void 0);function o(e){let o=t.useContext(r);if(!e&&void 0===o)throw Error((0,n.f)(27));return o}e.s(["R",0,r,"x",0,o],8821);var i=e.i(52245),s=e.i(79938);let a=t.forwardRef(function(e,t){let{render:n,className:r,style:a,forceRender:l=!1,...u}=e,p=o(),c=p.useState("open"),d=p.useState("nested"),f=p.useState("mounted"),g=p.useState("transitionStatus");return(0,i.a)("div",e,{state:{open:c,transitionStatus:g},ref:[p.context.backdropRef,t],stateAttributesMapping:s.M,props:[{role:"presentation",hidden:!f,style:{userSelect:"none",WebkitUserSelect:"none"}},u],enabled:l||!d})});var l=e.i(40886),u=e.i(75606),p=e.i(57749);let c=t.forwardRef(function(e,t){let{render:n,className:r,style:s,disabled:a=!1,nativeButton:c=!0,...d}=e,f=o(),g=f.useState("open"),{getButtonProps:v,buttonRef:h}=(0,l.f)({disabled:a,native:c});return(0,i.a)("button",e,{state:{disabled:a},ref:[t,h],props:[{onClick:function(e){g&&f.setOpen(!1,(0,u.j)(p.f.closePress,e.nativeEvent))}},d,v]})});e.s(["f",0,c],56736);var d=e.i(88015);let f=t.forwardRef(function(e,t){let{render:n,className:r,style:s,id:a,...l}=e,u=o(),p=(0,d.f)(a);return u.useSyncedValueWithCleanup("descriptionElementId",p),(0,i.a)("p",e,{ref:t,props:[{id:p},l]})});var g=e.i(61487);let v=t.createContext(void 0);function h(){let e=t.useContext(v);if(void 0===e)throw Error((0,n.f)(26));return e}e.s(["_",0,v,"Z",0,h],25834);var m=e.i(37584),C=e.i(73327),S=e.i(64111),x=e.i(74354),P=e.i(38380);e.s(["f",0,P],35890);var P=P,R=P;e.s(["f",0,R],64938);var R=P,b=P;e.s(["f",0,b],80829);var b=P,y=P;e.s(["f",0,y],6640);var y=P;P.open,R.closed,b.startingStyle,y.endingStyle;let O={...s.E,...x.f,nestedDialogOpen:e=>e?{"data-nested-dialog-open":""}:null};e.s(["f",0,O],10199);var E=e.i(43476);let T=t.forwardRef(function(e,t){let{render:n,className:r,style:s,finalFocus:a,initialFocus:l,...u}=e,p=o(),c=p.useState("descriptionElementId"),d=p.useState("disablePointerDismissal"),f=p.useState("floatingRootContext"),v=p.useState("popupProps"),x=p.useState("modal"),P=p.useState("mounted"),R=p.useState("nested"),b=p.useState("nestedOpenDialogCount"),y=p.useState("open"),T=p.useState("openMethod"),w=p.useState("titleElementId"),I=p.useState("transitionStatus"),k=p.useState("role"),D=f.useState("floatingId");h(),(0,m.f)({open:y,ref:p.context.popupRef,onComplete(){y&&p.context.onOpenChangeComplete?.(!0)}});let M=void 0===l?(0,S.H)(p.context.popupRef):l,j=p.useStateSetter("popupElement"),A=(0,i.a)("div",e,{state:{open:y,nested:R,transitionStatus:I,nestedDialogOpen:b>0},props:[v,{id:D,"aria-labelledby":w,"aria-describedby":c,role:k,...S.X,hidden:!P,onKeyDown(e){C.f.has(e.key)&&e.stopPropagation()},style:{"--nested-dialogs":b}},u],ref:[t,p.context.popupRef,j],stateAttributesMapping:O});return(0,E.jsx)(g.f,{context:f,openInteractionType:T,disabled:!P,closeOnFocusOut:!d,initialFocus:M,returnFocus:a,modal:!1!==x,restoreFocus:"popup",children:A})});var w=e.i(44394),I=e.i(26674),k=e.i(426);let D=t.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,i=o(),s=i.useState("mounted"),a=i.useState("modal"),l=i.useState("open");return s||n?(0,E.jsx)(v.Provider,{value:n,children:(0,E.jsxs)(I.r,{ref:t,...r,children:[s&&!0===a&&(0,E.jsx)(k.f,{ref:i.context.internalBackdropRef,inert:(0,w.f)(!l)}),e.children]})}):null});e.s(["f",0,D],64951);var M=e.i(96499),j=e.i(46376),A=e.i(45484),_=e.i(17989),H=e.i(84446);function B({store:e,parentContext:n,isDrawer:r}){let o=e.useState("open"),i=e.useState("mounted"),s=e.useState("disablePointerDismissal"),a=e.useState("modal"),l=e.useState("popupElement"),u=e.useState("floatingRootContext"),[p,c]=t.useState(0),[d,f]=t.useState(0),g=0===p,v=(0,_.f)(u,{outsidePressEvent:()=>e.context.internalBackdropRef.current||e.context.backdropRef.current?"intentional":{mouse:"trap-focus"===a?"sloppy":"intentional",touch:"sloppy"},outsidePress(t){if(!e.context.outsidePressEnabledRef.current||"button"in t&&0!==t.button)return!1;if("touches"in t){if("touchend"===t.type){if(1!==t.changedTouches.length||0!==t.touches.length)return!1}else if(1!==t.touches.length)return!1}let n=(0,H.Z)(t);if(g&&!s){if(a){let t=e.context.internalBackdropRef.current,r=e.context.backdropRef.current;return!t&&!r||t===n||r===n||(0,H.I)(n,l)&&!n?.hasAttribute("data-base-ui-portal")}return!0}return!1},escapeKey:g});return(0,A.f)(o&&!0===a,l),e.useContextCallback("onNestedDialogOpen",(t,n)=>{(e.select("open")||e.select("mounted"))&&(c(t),f(n))}),(0,j.f)(()=>{o||i||(c(0),f(0))},[o,i]),(0,j.f)(()=>(n?.onNestedDialogOpen&&o&&n.onNestedDialogOpen(p+1,d+ +!!r),()=>{n?.onNestedDialogOpen&&o&&n.onNestedDialogOpen(0,0)}),[r,o,p,d,n]),(0,S.y)(e,{activeTriggerProps:v.reference,inactiveTriggerProps:v.trigger,popupProps:v.floating,nestedOpenDialogCount:p,nestedOpenDrawerCount:d}),null}var U=e.i(1252),F=e.i(16786),X=e.i(90627);let q={...F.j,modal:e=>e.modal,nested:e=>e.nested,nestedOpenDialogCount:e=>e.nestedOpenDialogCount,nestedOpenDrawerCount:e=>e.nestedOpenDrawerCount,disablePointerDismissal:e=>e.disablePointerDismissal,openMethod:e=>e.openMethod,descriptionElementId:e=>e.descriptionElementId,titleElementId:e=>e.titleElementId,viewportElement:e=>e.viewportElement,role:e=>e.role};class K extends U.f{constructor(e,n,r){var o;let i=new X.f;super(function(e,t,n,r=!1){return{...(0,F.i)(t,n,r),modal:!0,disablePointerDismissal:!1,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...e}}(e,i,n,r),(o=i,{popupRef:t.createRef(),backdropRef:t.createRef(),internalBackdropRef:t.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:o,onOpenChange:void 0,onOpenChangeComplete:void 0}),q)}setOpen=(e,t)=>{t.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},e||null!=t.trigger||null==this.state.activeTriggerId||(t.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(e,t),t.isCanceled||(this.state.floatingRootContext.dispatchOpenChange(e,t),this.update((0,S.z)(this.state,e,t.trigger)))}}var N=e.i(68765);function V(e,n){let{children:i,open:s,defaultOpen:a=!1,onOpenChange:l,onOpenChangeComplete:p,disablePointerDismissal:c=!1,modal:d=!0,actionsRef:f,handle:g,triggerId:v,defaultTriggerId:h=null}=n,m="alert-dialog"===e,C=o(!0),x={modal:!!m||d,disablePointerDismissal:m||c,nested:null!=C,role:m?"alertdialog":"dialog"},P=(0,S.$)((e,t)=>new K({open:a,openProp:s,activeTriggerId:h,triggerIdProp:v,...x},e,t),!0);P.useControlledProp("openProp",s),P.useControlledProp("triggerIdProp",v),P.useSyncedValues(x),P.useContextCallback("onOpenChange",l),P.useContextCallback("onOpenChangeComplete",p);let R=P.useState("open"),b=P.useState("mounted"),y=P.useState("payload");(0,S.e)(P,R),(0,S._)(P);let{forceUnmount:O}=(0,S.L)(R,P);t.useImperativeHandle(f,()=>({unmount:O,close:()=>P.setOpen(!1,(0,u.j)(N.f.imperativeAction))}),[O,P]);let T=R||b||null!=g;return(0,E.jsxs)(r.Provider,{value:P,children:[g&&(0,E.jsx)(S.d,{handle:g,store:P}),T&&(0,E.jsx)(B,{store:P,parentContext:C?.context,isDrawer:"drawer"===e}),"function"==typeof i?i({payload:y}):i]})}e.s(["f",0,V],66250);let W=(0,M.U)(function(e){return V("dialog",e)}),J=t.forwardRef(function(e,t){let{render:n,className:r,style:s,id:a,...l}=e,u=o(),p=(0,d.f)(a);return u.useSyncedValueWithCleanup("titleElementId",p),(0,i.a)("h2",e,{ref:t,props:[{id:p},l]})});e.s(["f",0,J],77173);var L=e.i(38396),Z=e.i(59636),Y=e.i(85689),$=e.i(32199);let z=(0,M.u)(function(e,r){let{render:a,className:u,style:p,disabled:c=!1,nativeButton:f=!0,id:g,payload:v,handle:h,...m}=e,C=o(!0),x=(0,Z.f)(h)??C;if(!x)throw Error((0,n.f)(79));let P=(0,d.f)(g),R=x.useState("floatingRootContext"),b=x.useState("isOpenedByTrigger",P),y=x.useState("triggerPopupId",P),O=t.useRef(null),{registerTrigger:E,isMountedByThisTrigger:T}=(0,S.F)(P,O,x,{payload:v}),{getButtonProps:w,buttonRef:I}=(0,l.f)({disabled:c,native:f}),k=(0,Y.f)(R),D=(0,$.p)(()=>x.select("open"),e=>{x.set("openMethod",e)}),M=x.useState("triggerProps",T);return(0,i.a)("button",e,{state:{disabled:c,open:b},ref:[I,r,E,O],props:[k.reference,M,D,{[L.j]:"",id:P,"aria-haspopup":"dialog","aria-expanded":b,"aria-controls":y},m,w],stateAttributesMapping:s.J})});e.s(["f",0,z],13488),e.s(["Backdrop",0,a,"Close",0,c,"Description",0,f,"Popup",0,T,"Portal",0,D,"Root",0,W,"Title",0,J,"Trigger",0,z],28376);var G=e.i(28376);e.s(["f",0,G],26323),e.s(["f",0,G],9977),e.s(["f",0,G],41708),e.s(["f",0,G],93480),e.s(["f",0,G],9169),e.s(["f",0,G],52744)},73327,e=>{let t=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"]);e.s(["f",0,t])},78680,e=>{e.i(47167);var t=e.i(71645),n=e.i(74080),r=e.i(26674),o=e.i(43476);let i=t.forwardRef(function(e,i){let{children:s,container:a,className:l,render:u,style:p,...c}=e,{node:d,subtree:f}=(0,r.o)({container:a,ref:i,componentProps:e,elementProps:c});return f||d?(0,o.jsxs)(t.Fragment,{children:[f,d&&n.createPortal(s,d)]}):null});e.s(["f",0,i])},16786,59636,e=>{var t=e.i(56789),n=e.i(56341);let r=e=>e.triggerIdProp??e.activeTriggerId,o=e=>e.openProp??e.open,i=e=>(e.popupElement?.id??e.floatingId)||void 0;function s(e,t){return void 0!==t&&o(e)&&r(e)===t}e.s(["i",0,function(e,r,o=!1){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:new n.f({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:e,floatingId:r,syncOnly:!0,nested:o,onOpenChange:void 0}),floatingId:r,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,openedWithoutTrigger:!1,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:t.w,inactiveTriggerProps:t.w,popupProps:t.w}},"j",0,{open:o,mounted:e=>e.mounted,transitionStatus:e=>o(e)&&!e.mounted?"starting":e.transitionStatus,floatingRootContext:e=>e.floatingRootContext,triggerCount:e=>e.triggerCount,preventUnmountingOnClose:e=>e.preventUnmountingOnClose,payload:e=>e.payload,activeTriggerId:r,activeTriggerElement:e=>e.mounted?e.activeTriggerElement:null,popupId:i,isTriggerActive:(e,t)=>void 0!==t&&r(e)===t,isOpenedByTrigger:(e,t)=>s(e,t),isMountedByTrigger:(e,t)=>void 0!==t&&r(e)===t&&e.mounted,triggerProps:(e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps,triggerPopupId:(e,t)=>s(e,t)||void 0!==t&&o(e)&&null==r(e)&&!e.openedWithoutTrigger&&1===e.triggerCount?i(e):void 0,popupProps:e=>e.popupProps,popupElement:e=>e.popupElement,positionerElement:e=>e.positionerElement}],16786);var a=e.i(71645),l=e.i(2239);e.s(["f",0,function(e){let n=a.useCallback(n=>void 0===e?t.x:e.subscribeStore(n),[e]),r=a.useCallback(()=>void 0===e?void 0:e.store,[e]);return(0,l.useSyncExternalStore)(n,r,()=>e?.serverStore)}],59636)}])})();
@@ -1 +0,0 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,78680,e=>{e.i(47167);var r=e.i(71645),t=e.i(74080),n=e.i(26674),o=e.i(43476);let d=r.forwardRef(function(e,d){let{children:i,container:a,className:s,render:b,style:c,...l}=e,{node:u,subtree:g}=(0,n.o)({container:a,ref:d,componentProps:e,elementProps:l});return g||u?(0,o.jsxs)(r.Fragment,{children:[g,u&&t.createPortal(i,u)]}):null});e.s(["f",0,d])},55070,e=>{var r=e.i(43476);let t={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};e.s(["f",0,function({isPending:e,pendingLabel:n,variant:o="secondary",children:d,className:i="",disabled:a,...s}){return(0,r.jsx)("button",{...s,disabled:!0===a||e,"aria-busy":e,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${t[o]} ${i}`,children:e?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),n]}):d})}])},28008,e=>{e.s(["H",0,"fleet","Q",0,{kind:"idle"}])},76427,e=>{var r=e.i(43476),t=e.i(71645),n=e.i(28008),o=e.i(94984),d=e.i(58107);e.s(["ActionForm",0,function({action:e,fleetId:i,children:a,submit:s,className:b="grid gap-3",testId:c}){let[l,u]=(0,t.useActionState)(e,n.Q);return(0,r.jsxs)("form",{action:u,className:b,"data-testid":c,children:[(0,r.jsx)("input",{type:"hidden",name:n.H,value:i}),a,(0,r.jsx)("div",{children:(0,r.jsx)(d.f,{pending:s.pending,...void 0===s.kind?{}:{kind:s.kind},children:s.label})}),(0,r.jsx)(o.f,{state:l})]})}])},30402,e=>{let r="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",t={primary:`${r} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${r} border border-border bg-card hover:bg-accent`,destructive:`${r} bg-destructive text-destructive-foreground`};e.s(["x",0,t,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},94984,e=>{var r=e.i(43476);e.s(["f",0,function({state:e,testId:t}){switch(e.kind){case"idle":return null;case"done":return(0,r.jsx)("p",{role:"status","data-testid":t,className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:e.message});case"refused":case"openNetwork":return(0,r.jsx)("p",{role:"alert","data-testid":t,className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:e.message})}}])},58107,e=>{var r=e.i(43476),t=e.i(74080),n=e.i(30402);e.s(["f",0,function({children:e,pending:o,kind:d="primary",testId:i}){let a=(0,t.useFormStatus)();return(0,r.jsx)("button",{type:"submit",className:n.x[d],disabled:a.pending,"aria-busy":a.pending,"data-testid":i,children:a.pending?o:e})}])},97e3,e=>{var r=e.i(43476);let t={waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",active:"border-tone-active-border bg-tone-active-bg text-tone-active-fg",ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",ended:"border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg"};e.s(["T",0,function({tone:e,label:n}){return(0,r.jsx)("span",{className:`inline-flex items-center rounded-full border px-2 text-caption ${t[e]}`,children:n})},"E",0,function({children:e,isMono:t=!1}){return(0,r.jsx)("span",{className:`inline-flex items-center rounded-md border border-border px-2 text-caption ${t?"font-mono":""}`,children:e})}])}])})();
@@ -1 +0,0 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,78680,e=>{e.i(47167);var n=e.i(71645),s=e.i(74080),t=e.i(26674),r=e.i(43476);let a=n.forwardRef(function(e,a){let{children:d,container:i,className:l,render:o,style:c,...u}=e,{node:m,subtree:p}=(0,t.o)({container:i,ref:a,componentProps:e,elementProps:u});return p||m?(0,r.jsxs)(n.Fragment,{children:[p,m&&s.createPortal(d,m)]}):null});e.s(["f",0,a])},27921,e=>{var n=e.i(43476),s=e.i(71645),t=e.i(95187);let r=(0,t.createServerReference)("603c1c8bc58d771628bd6e97e00ea17b677893c09e",t.callServer,void 0,t.findSourceMapURL,"approveServer"),a=(0,t.createServerReference)("60d88dd4308d5d5dab2e7b91e11e99a312ec2cffe2",t.callServer,void 0,t.findSourceMapURL,"checkServer");var d=e.i(28008),i=e.i(88374),l=e.i(62052),o=e.i(30402),c=e.i(58107);let u=["Address","Check","Owner"],m=["Address","Owner","Sign in"];var p=e.i(94984);function x({refusal:e}){return void 0===e?null:(0,n.jsx)(p.f,{state:{kind:"refused",message:e}})}function h({names:e,at:s}){return(0,n.jsx)("ol",{className:"flex gap-4",children:e.map((e,t)=>(0,n.jsxs)("li",{"aria-current":t===s?"step":void 0,className:t<=s?"font-medium":"text-muted-foreground",children:[t+1," ",e]},e))})}function f({state:e,action:t,fleetId:r}){let[a,p]=(0,s.useState)((0,i.G)(e.fields.credentialKind??"")),g=a===i.m.kind;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(h,{names:a===i.m.kind?m:u,at:0}),(0,n.jsxs)("form",{action:t,className:`${o.r} grid gap-3`,"data-testid":"add-server-address",children:[(0,n.jsx)("input",{type:"hidden",name:d.H,value:r}),(0,n.jsx)(x,{refusal:e.refusal}),(0,n.jsxs)("label",{className:o.z,children:[(0,n.jsx)("span",{children:"Streamable HTTP address"}),(0,n.jsx)("input",{className:o.w,type:"url",name:"url",defaultValue:e.fields.url??"",placeholder:"https://mcp.example.com/mcp",required:!0})]}),(0,n.jsx)(l.f,{legend:"The server's credential",fields:e.fields,noneHelp:"The gateway sends no credential: for a server reached only on a private network.",canEachPersonSignIn:!0,onKindChange:p}),(0,n.jsx)("div",{children:(0,n.jsx)(c.f,{pending:g?"Next…":"Checking the server…",testId:"add-server-check",children:g?"Next":"Check the server"})})]})]})}var g=e.i(65818),b=e.i(25621),j=e.i(97e3);function v({tool:e,control:s,testId:t}){let{name:r,description:a,isReadOnly:d,isNew:i=!1}=e,l=void 0===a?"":a.split("\n").map(e=>e.trim()).find(e=>""!==e)??"",o=void 0!==a&&a.trim()!==l;return(0,n.jsxs)("li",{className:"grid gap-1 border-b border-border py-2 last:border-b-0","data-testid":t,children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[s,(0,n.jsx)("span",{className:"font-mono",children:r}),d?(0,n.jsx)(j.E,{children:"reads only"}):null,i?(0,n.jsx)(j.T,{tone:"attention",label:"New"}):null]}),""===l?null:o?(0,n.jsxs)("details",{className:"text-muted-foreground",children:[(0,n.jsx)("summary",{className:"cursor-pointer",children:l}),(0,n.jsx)("p",{className:"mt-1 whitespace-pre-line",children:a})]}):(0,n.jsx)("p",{className:"text-muted-foreground",children:l})]})}function N({tools:e,canSwitch:t}){let[r,a]=(0,s.useState)(new Set),d=e.length-r.size;return(0,n.jsxs)("section",{className:"grid gap-2","data-testid":"add-server-tools",children:[(0,n.jsxs)("h2",{className:"flex flex-wrap justify-between gap-2 text-section font-semibold",children:[(0,n.jsxs)("span",{children:["The server answers: ",e.length," ",1===e.length?"tool":"tools"]}),t?(0,n.jsxs)("span",{role:"status",className:"font-normal text-muted-foreground","data-testid":"add-server-tools-on",children:[d," of ",e.length," on"]}):null]}),(0,n.jsx)("p",{className:"text-muted-foreground",children:t?"The fleet may call only the tools switched on. A tool the server adds later starts off.":"Switching tools needs gateway:approve: every tool starts on, and an approver switches them on its page."}),(0,n.jsx)("ul",{className:"grid",children:e.map(e=>{let s=!r.has(e.name);return(0,n.jsx)(v,{tool:e,testId:"add-server-tool",control:t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("input",{type:"hidden",name:"toolShown",value:e.name}),s?(0,n.jsx)("input",{type:"hidden",name:"toolOn",value:e.name}):null,(0,n.jsx)(b.f,{isOn:s,label:e.name,onClick:()=>{var n;n=e.name,a(e=>{let s=new Set(e);return s.delete(n)||s.add(n),s})}})]}):null},e.name)})})]})}let w=["url","credentialKind","token","clientId","clientSecret","issuer","scope"];function y({state:e,refused:t,action:r,onBack:a,fleetId:i,canSwitchTools:l}){let p,f="refused"===t.kind&&t.requestId===e.requestId,b=f?t.fields:e.fields,j=b.url??"",[v,k]=(0,s.useState)(b.name??function(e){if(!URL.canParse(e))return"";let{hostname:n}=new URL(e);return/^\d+(\.\d+){3}$/.test(n)||n.startsWith("[")?"":(n.split(".").filter(e=>"mcp"!==e&&"www"!==e)[0]??"").toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-+|-+$/g,"")}(j)),S=e.tools;return(0,n.jsxs)(n.Fragment,{children:[null===S?(0,n.jsx)(h,{names:m,at:1}):(0,n.jsx)(h,{names:u,at:2}),(0,n.jsxs)("form",{action:r,className:`${o.r} grid gap-3`,"data-testid":"add-server-owner",children:[null===S?null:(0,n.jsx)(N,{tools:S,canSwitch:l}),(0,n.jsx)("h2",{className:"text-section font-semibold",children:"Its owner"}),(0,n.jsx)(x,{refusal:f?t.message:void 0}),(0,n.jsx)("input",{type:"hidden",name:d.H,value:i}),(0,n.jsx)("input",{type:"hidden",name:"requestId",value:e.requestId}),w.map(e=>(0,n.jsx)("input",{type:"hidden",name:e,value:b[e]??""},e)),(0,n.jsx)("p",{className:"font-mono text-muted-foreground",children:j}),(0,n.jsxs)("label",{className:o.z,children:[(0,n.jsx)("span",{children:"Proxy ship's name"}),(0,n.jsx)("input",{className:o.w,type:"text",name:"name",value:v,onChange:e=>{k(e.target.value)},required:!0})]}),(0,n.jsx)(g.f,{choices:e.owners,current:e.owners.find(e=>e.shipId===b.ownerShipId)??null,help:"A person ship or argo. It answers for this server."}),(0,n.jsxs)("label",{className:o.z,children:[(0,n.jsx)("span",{children:"Calls at once"}),(0,n.jsx)("input",{className:o.w,type:"number",name:"concurrencyLimit",min:1,max:10,defaultValue:b.concurrencyLimit??"4"})]}),null===S?(0,n.jsx)("p",{className:"text-muted-foreground",children:"Its tools show once someone signs in."}):null,(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsx)(c.f,{pending:null===S?"Checking the sign-in…":"Adding…",testId:"add-server-approve",children:""===(p=v.trim())?"Add as outside party":p.length>20?`Add ${p.slice(0,20)}…`:`Add ${p}`}),(0,n.jsx)("button",{type:"button",className:o.x.secondary,onClick:a,children:"Back to the address"})]})]})]})}var k=e.i(65894),S=e.i(31831),I=e.i(625);function C({fleetId:e,name:t}){let[r,a]=(0,s.useActionState)(I.f,d.Q);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(h,{names:m,at:2}),(0,n.jsxs)("form",{action:a,className:`${o.r} grid gap-3`,"data-testid":"add-server-sign-in",children:[(0,n.jsx)(p.f,{state:{kind:"done",message:`${t} is added.`}}),(0,n.jsx)(p.f,{state:r}),(0,n.jsx)("input",{type:"hidden",name:d.H,value:e}),(0,n.jsx)("input",{type:"hidden",name:"name",value:t}),(0,n.jsxs)("p",{children:["Sign in to ",t," for yourself. Its tools show after the first sign-in."]}),(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsxs)(c.f,{pending:`Opening ${t}…`,testId:"add-server-sign-in-start",children:["Sign in to ",t]}),(0,n.jsx)("a",{href:(0,k.f)((0,S.f)(t),e),className:o.x.secondary,children:"Later"})]})]})]})}e.s(["AddServer",0,function({fleetId:e,canSwitchTools:t}){let[d,i]=(0,s.useActionState)(a,{step:"address",fields:{}}),[l,o]=(0,s.useActionState)(r,{kind:"idle"}),[c,u]=(0,s.useState)(void 0),m="owner"===d.step&&c!==d.requestId?d:void 0;return(0,n.jsxs)("div",{className:"grid gap-4",children:[(0,n.jsx)("h1",{className:"text-title font-semibold",children:"Add MCP server"}),"added"===l.kind?(0,n.jsx)(C,{fleetId:e,name:l.name}):void 0===m?(0,n.jsx)(f,{state:d,action:i,fleetId:e}):(0,n.jsx)(y,{state:m,refused:l,action:o,onBack:()=>{u(m.requestId)},fleetId:e,canSwitchTools:t})]})}],27921)},55070,e=>{var n=e.i(43476);let s={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};e.s(["f",0,function({isPending:e,pendingLabel:t,variant:r="secondary",children:a,className:d="",disabled:i,...l}){return(0,n.jsx)("button",{...l,disabled:!0===i||e,"aria-busy":e,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${s[r]} ${d}`,children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),t]}):a})}])},28008,e=>{e.s(["H",0,"fleet","Q",0,{kind:"idle"}])},88374,e=>{let n=[{kind:"none",label:"No credential"},{kind:"bearer",label:"Bearer token"},{kind:"clientCredentials",label:"OAuth client credentials"}],s={kind:"personSignIn",label:"Each person signs in"},t=[...n,s];e.s(["a",0,t,"x",0,n,"m",0,s,"G",0,function(e){return t.find(({kind:n})=>n===e)?.kind??"bearer"},"C",0,function(e){return n.find(({kind:n})=>n===e)?.kind??"bearer"}])},62052,e=>{var n=e.i(43476),s=e.i(71645),t=e.i(88374),r=e.i(30402);e.s(["f",0,function({legend:e,fields:a,noneHelp:d,canEachPersonSignIn:i=!1,onKindChange:l}){let o=i?t.G:t.C,[c,u]=(0,s.useState)(o(a.credentialKind??""));return(0,n.jsxs)("fieldset",{className:"grid gap-3",children:[(0,n.jsx)("legend",{className:"font-medium",children:e}),(0,n.jsxs)("label",{className:r.z,children:[(0,n.jsx)("span",{children:"Credential"}),(0,n.jsx)("select",{className:r.w,name:"credentialKind",value:c,onChange:e=>{let n=o(e.target.value);u(n),l?.(n)},children:(i?t.a:t.x).map(({kind:e,label:s})=>(0,n.jsx)("option",{value:e,children:s},e))})]}),"clientCredentials"===c?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:r.z,children:[(0,n.jsx)("span",{children:"Client id"}),(0,n.jsx)("input",{className:r.w,type:"text",name:"clientId",defaultValue:a.clientId??""})]}),(0,n.jsxs)("label",{className:r.z,children:[(0,n.jsx)("span",{children:"Client secret"}),(0,n.jsx)("input",{className:r.w,type:"password",name:"clientSecret"})]}),(0,n.jsxs)("label",{className:r.z,children:[(0,n.jsx)("span",{children:"Issuer"}),(0,n.jsx)("input",{className:r.w,type:"url",name:"issuer",defaultValue:a.issuer??""})]}),(0,n.jsxs)("label",{className:r.z,children:[(0,n.jsx)("span",{children:"Scope"}),(0,n.jsx)("input",{className:r.w,type:"text",name:"scope",defaultValue:a.scope??""})]})]}):"bearer"===c?(0,n.jsxs)("label",{className:r.z,children:[(0,n.jsx)("span",{children:"Bearer token"}),(0,n.jsx)("input",{className:r.w,type:"password",name:"token"})]}):c===t.m.kind?(0,n.jsx)("p",{className:"text-muted-foreground",children:"Each person signs in for themselves. A ship calls under its owner's sign-in."}):(0,n.jsx)("p",{className:"text-muted-foreground",children:d})]})}])},30402,e=>{let n="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",s={primary:`${n} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${n} border border-border bg-card hover:bg-accent`,destructive:`${n} bg-destructive text-destructive-foreground`};e.s(["x",0,s,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},94984,e=>{var n=e.i(43476);e.s(["f",0,function({state:e,testId:s}){switch(e.kind){case"idle":return null;case"done":return(0,n.jsx)("p",{role:"status","data-testid":s,className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:e.message});case"refused":case"openNetwork":return(0,n.jsx)("p",{role:"alert","data-testid":s,className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:e.message})}}])},65818,e=>{var n=e.i(43476),s=e.i(30402);e.s(["f",0,function({choices:e,current:t,help:r,refusal:a}){let d=null===t||e.some(e=>e.shipId===t.shipId)?e:[t,...e];return(0,n.jsxs)("label",{className:s.z,children:[(0,n.jsx)("span",{children:"Owner"}),(0,n.jsxs)("select",{className:s.w,name:"ownerShipId",defaultValue:t?.shipId??"",required:!0,"data-testid":"owner-field",children:[null===t?(0,n.jsx)("option",{value:"",disabled:!0,children:"Pick its owner"}):null,d.map(e=>(0,n.jsx)("option",{value:e.shipId,children:e.name},e.shipId))]}),(0,n.jsx)("span",{className:"text-muted-foreground",children:a??r})]})}])},58107,e=>{var n=e.i(43476),s=e.i(74080),t=e.i(30402);e.s(["f",0,function({children:e,pending:r,kind:a="primary",testId:d}){let i=(0,s.useFormStatus)();return(0,n.jsx)("button",{type:"submit",className:t.x[a],disabled:i.pending,"aria-busy":i.pending,"data-testid":d,children:i.pending?r:e})}])},31831,e=>{e.s(["f",0,function(e,n){return`/outside-parties/${encodeURIComponent(e)}${void 0===n?"":`/${n}`}`}])},97e3,e=>{var n=e.i(43476);let s={waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",active:"border-tone-active-border bg-tone-active-bg text-tone-active-fg",ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",ended:"border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg"};e.s(["T",0,function({tone:e,label:t}){return(0,n.jsx)("span",{className:`inline-flex items-center rounded-full border px-2 text-caption ${s[e]}`,children:t})},"E",0,function({children:e,isMono:s=!1}){return(0,n.jsx)("span",{className:`inline-flex items-center rounded-md border border-border px-2 text-caption ${s?"font-mono":""}`,children:e})}])}])})();
@@ -1 +0,0 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,57228,e=>{e.s(["H",0,"/bridge/basket","T",0,"/bridge/settings"])},95893,e=>{var r=e.i(43476),n=e.i(18566),s=e.i(71645),i=e.i(95187);let a=(0,i.createServerReference)("4013cfcec33d2651e37d34a8c0cd6f4b7e2f79d5b8",i.callServer,void 0,i.findSourceMapURL,"decideRequest");var t=e.i(57228),d=e.i(88374),l=e.i(65818);let c=["messages:send","messages:receive"],o={"messages:send":"Send","messages:receive":"Receive","fleet:read":"Read the fleet"};var u=e.i(55070),p=e.i(63132);let m="rounded-md border border-input bg-background px-2 py-1.5";function b({scope:e,isLocked:n}){return(0,r.jsxs)("label",{className:"flex items-center gap-2",children:[n?(0,r.jsx)("input",{type:"checkbox",checked:!0,disabled:!0,"aria-label":o[e]??e}):(0,r.jsx)("input",{type:"checkbox",name:"scope",value:e,"aria-label":o[e]??e}),(0,r.jsx)("span",{children:o[e]??e}),(0,r.jsx)("span",{className:"font-mono text-caption text-muted-foreground",children:e}),n?(0,r.jsx)("span",{className:"text-caption text-muted-foreground",children:"(always)"}):null]})}function g(e,r){let n=e.get(r);return"string"==typeof n?n:""}function h({request:e,heldScopes:n,owners:i,working:a,failure:t,onDecide:o}){let[x,f]=(0,s.useState)("bearer"),v=function(e){switch(e.subject.kind){case"client":return e.subject.clientName;case"server":return URL.canParse(e.subject.url)?new URL(e.subject.url).host:e.subject.url}}(e),j="server"===e.subject.kind;return(0,r.jsxs)("section",{className:"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm",children:[(0,r.jsxs)("h2",{className:"text-heading font-semibold",children:["Approve ",v]}),(0,r.jsxs)("form",{onSubmit:e=>{e.preventDefault();let r=new FormData(e.currentTarget),n=r.getAll("scope").filter(e=>"string"==typeof e);o({kind:"approve",name:g(r,"name"),ownerShipId:g(r,"ownerShipId"),scopes:n,server:j?{credentialKind:(0,d.C)(g(r,"credentialKind")),token:g(r,"token"),clientId:g(r,"clientId"),clientSecret:g(r,"clientSecret"),issuer:g(r,"issuer"),scope:g(r,"scope-requested"),concurrencyLimit:Number(g(r,"concurrencyLimit"))}:void 0})},className:"grid gap-3",children:[(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Proxy ship's name"}),(0,r.jsx)("input",{name:"name",defaultValue:v.toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-+|-+$/g,""),required:!0,className:m})]}),(0,r.jsx)(l.f,{choices:i.isOk?i.value:[],current:null,help:"A person ship or argo. It answers for this party.",refusal:i.isOk?void 0:i.refusal}),(0,r.jsxs)("fieldset",{className:"grid gap-1",children:[(0,r.jsx)("legend",{children:"Scopes"}),c.map(e=>(0,r.jsx)(b,{scope:e,isLocked:!0},e)),n.filter(e=>!c.includes(e)).map(e=>(0,r.jsx)(b,{scope:e,isLocked:!1},e))]}),j?(0,r.jsxs)("fieldset",{className:"grid gap-2",children:[(0,r.jsx)("legend",{children:"The server's credential"}),(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Credential"}),(0,r.jsx)("select",{name:"credentialKind",value:x,onChange:e=>{f((0,d.C)(e.target.value))},className:m,children:d.x.map(({kind:e,label:n})=>(0,r.jsx)("option",{value:e,children:n},e))})]}),"none"===x?null:"bearer"===x?(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Bearer token"}),(0,r.jsx)("input",{type:"password",name:"token",className:m})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Client id"}),(0,r.jsx)("input",{name:"clientId",className:m})]}),(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Client secret"}),(0,r.jsx)("input",{type:"password",name:"clientSecret",className:m})]}),(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Issuer"}),(0,r.jsx)("input",{type:"url",name:"issuer",className:m})]}),(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Scope"}),(0,r.jsx)("input",{name:"scope-requested",className:m})]})]}),(0,r.jsxs)("label",{className:"grid gap-1",children:[(0,r.jsx)("span",{children:"Calls at once"}),(0,r.jsx)("input",{type:"number",name:"concurrencyLimit",min:1,max:10,defaultValue:4,className:m})]})]}):null,void 0===t?null:(0,r.jsx)(p.f,{message:t,isFailure:!0}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(u.f,{type:"submit",variant:"primary","data-testid":"bridge-approve",isPending:"approve"===a,pendingLabel:"Approving...",disabled:void 0!==a,children:"Approve"}),(0,r.jsx)(u.f,{type:"button","data-testid":"bridge-deny",isPending:"deny"===a,pendingLabel:"Denying...",disabled:void 0!==a,onClick:()=>{o({kind:"deny"})},children:"Deny"})]})]})]})}e.s(["DecisionPanel",0,function({fleetId:e,request:i,heldScopes:d,owners:l}){let c=(0,n.useRouter)(),[o,u]=(0,s.useState)(),[p,m]=(0,s.useState)(),[,b]=(0,s.useTransition)();return(0,r.jsx)(h,{request:i,heldScopes:d,owners:l,working:o,failure:p,onDecide:r=>{u(r.kind),m(void 0),b(async()=>{let n=await a({fleet:e,requestId:i.requestId,input:r});n.isOk?c.push(`${t.T}?${new URLSearchParams({fleet:e,decided:r.kind}).toString()}`):(u(void 0),m(n.message))})}})}],95893)},10629,e=>{var r=e.i(71645),n=e.i(18566);e.s(["LiveRefresh",0,function({fleetId:e}){let s;return s=(0,n.useRouter)(),(0,r.useEffect)(()=>{let r=new EventSource(`/bridge/changes?fleet=${encodeURIComponent(e)}`);return r.onmessage=()=>{s.refresh()},()=>{r.close()}},[e,s]),(0,r.useEffect)(()=>{let r,n=()=>{let n="visible"===document.visibilityState&&document.hasFocus();n&&void 0===r?r=new EventSource(`/bridge/focus?fleet=${encodeURIComponent(e)}`):n||void 0===r||(r.close(),r=void 0)};return n(),window.addEventListener("focus",n),window.addEventListener("blur",n),document.addEventListener("visibilitychange",n),()=>{window.removeEventListener("focus",n),window.removeEventListener("blur",n),document.removeEventListener("visibilitychange",n),r?.close()}},[e]),null}],10629)},55070,e=>{var r=e.i(43476);let n={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};e.s(["f",0,function({isPending:e,pendingLabel:s,variant:i="secondary",children:a,className:t="",disabled:d,...l}){return(0,r.jsx)("button",{...l,disabled:!0===d||e,"aria-busy":e,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${n[i]} ${t}`,children:e?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),s]}):a})}])},63132,e=>{var r=e.i(43476);e.s(["f",0,function({message:e,isFailure:n}){return n?(0,r.jsx)("p",{role:"alert","data-testid":"bridge-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:e}):(0,r.jsx)("p",{role:"status","data-testid":"bridge-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:e})}])},88374,e=>{let r=[{kind:"none",label:"No credential"},{kind:"bearer",label:"Bearer token"},{kind:"clientCredentials",label:"OAuth client credentials"}],n={kind:"personSignIn",label:"Each person signs in"},s=[...r,n];e.s(["a",0,s,"x",0,r,"m",0,n,"G",0,function(e){return s.find(({kind:r})=>r===e)?.kind??"bearer"},"C",0,function(e){return r.find(({kind:r})=>r===e)?.kind??"bearer"}])},30402,e=>{let r="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",n={primary:`${r} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${r} border border-border bg-card hover:bg-accent`,destructive:`${r} bg-destructive text-destructive-foreground`};e.s(["x",0,n,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},65818,e=>{var r=e.i(43476),n=e.i(30402);e.s(["f",0,function({choices:e,current:s,help:i,refusal:a}){let t=null===s||e.some(e=>e.shipId===s.shipId)?e:[s,...e];return(0,r.jsxs)("label",{className:n.z,children:[(0,r.jsx)("span",{children:"Owner"}),(0,r.jsxs)("select",{className:n.w,name:"ownerShipId",defaultValue:s?.shipId??"",required:!0,"data-testid":"owner-field",children:[null===s?(0,r.jsx)("option",{value:"",disabled:!0,children:"Pick its owner"}):null,t.map(e=>(0,r.jsx)("option",{value:e.shipId,children:e.name},e.shipId))]}),(0,r.jsx)("span",{className:"text-muted-foreground",children:a??i})]})}])}])})();