@aeolus-fleet/gateway 0.35.0 → 0.36.0

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 (731) hide show
  1. package/README.md +12 -9
  2. package/dist/adapters/fleet/core-version.d.ts +1 -1
  3. package/dist/adapters/fleet/core-version.js +1 -1
  4. package/dist/adapters/fleet/rest-fleet-door.js +51 -7
  5. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  6. package/dist/adapters/http/front-door.d.ts +1 -1
  7. package/dist/adapters/http/front-door.js +5 -3
  8. package/dist/adapters/http/front-door.js.map +1 -1
  9. package/dist/adapters/http/person-tools.js +27 -9
  10. package/dist/adapters/http/person-tools.js.map +1 -1
  11. package/dist/adapters/http/slack-routes.d.ts +2 -0
  12. package/dist/adapters/http/slack-routes.js +11 -10
  13. package/dist/adapters/http/slack-routes.js.map +1 -1
  14. package/dist/adapters/pagasae/email-channel.d.ts +1 -2
  15. package/dist/adapters/pagasae/email-channel.js +3 -3
  16. package/dist/adapters/pagasae/email-channel.js.map +1 -1
  17. package/dist/adapters/prisma/basket-entries.d.ts +4 -0
  18. package/dist/adapters/prisma/basket-entries.js +53 -0
  19. package/dist/adapters/prisma/basket-entries.js.map +1 -0
  20. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  21. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  22. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  23. package/dist/adapters/prisma/generated/browser.d.ts +15 -4
  24. package/dist/adapters/prisma/generated/client.d.ts +15 -4
  25. package/dist/adapters/prisma/generated/internal/class.d.ts +26 -4
  26. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  27. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  28. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +228 -43
  29. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +42 -9
  30. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  31. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +42 -7
  32. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +42 -9
  33. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  34. package/dist/adapters/prisma/generated/models/BasketEntry.d.ts +1303 -0
  35. package/dist/adapters/prisma/generated/models/BasketEntry.js +2 -0
  36. package/dist/adapters/prisma/generated/models/BasketEntry.js.map +1 -0
  37. package/dist/adapters/prisma/generated/models/ItemOutcome.d.ts +1106 -0
  38. package/dist/adapters/prisma/generated/models/ItemOutcome.js +2 -0
  39. package/dist/adapters/prisma/generated/models/ItemOutcome.js.map +1 -0
  40. package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +125 -1
  41. package/dist/adapters/prisma/generated/models/PartySignInNotice.d.ts +32 -1
  42. package/dist/adapters/prisma/generated/models/Route.d.ts +1038 -0
  43. package/dist/adapters/prisma/generated/models/Route.js +2 -0
  44. package/dist/adapters/prisma/generated/models/Route.js.map +1 -0
  45. package/dist/adapters/prisma/generated/models/SlackLink.d.ts +1 -32
  46. package/dist/adapters/prisma/generated/models/SlackPost.d.ts +33 -58
  47. package/dist/adapters/prisma/generated/models.d.ts +3 -1
  48. package/dist/adapters/prisma/item-outcomes.d.ts +4 -0
  49. package/dist/adapters/prisma/item-outcomes.js +28 -0
  50. package/dist/adapters/prisma/item-outcomes.js.map +1 -0
  51. package/dist/adapters/prisma/opened-deliveries.js +4 -0
  52. package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
  53. package/dist/adapters/prisma/routes.d.ts +4 -0
  54. package/dist/adapters/prisma/routes.js +19 -0
  55. package/dist/adapters/prisma/routes.js.map +1 -0
  56. package/dist/adapters/prisma/sign-in-notices.js +11 -5
  57. package/dist/adapters/prisma/sign-in-notices.js.map +1 -1
  58. package/dist/adapters/prisma/slack-links.js +0 -4
  59. package/dist/adapters/prisma/slack-links.js.map +1 -1
  60. package/dist/adapters/prisma/slack-posts.js +37 -3
  61. package/dist/adapters/prisma/slack-posts.js.map +1 -1
  62. package/dist/adapters/slack/slack-messages.d.ts +2 -0
  63. package/dist/adapters/slack/slack-messages.js +29 -3
  64. package/dist/adapters/slack/slack-messages.js.map +1 -1
  65. package/dist/adapters/trpc/router.d.ts +88 -20
  66. package/dist/adapters/trpc/router.js +47 -18
  67. package/dist/adapters/trpc/router.js.map +1 -1
  68. package/dist/adapters/web-push/web-push.js +1 -1
  69. package/dist/adapters/web-push/web-push.js.map +1 -1
  70. package/dist/app.d.ts +7 -0
  71. package/dist/app.js +88 -22
  72. package/dist/app.js.map +1 -1
  73. package/dist/bin/aeolus-gateway.js +1 -0
  74. package/dist/bin/aeolus-gateway.js.map +1 -1
  75. package/dist/config.d.ts +8 -1
  76. package/dist/config.js +21 -0
  77. package/dist/config.js.map +1 -1
  78. package/dist/core/account-sign-in/start-account-sign-in.d.ts +1 -1
  79. package/dist/core/account-sign-in/start-account-sign-in.js +1 -1
  80. package/dist/core/account-sign-in/start-account-sign-in.js.map +1 -1
  81. package/dist/core/mcp-in/collect-replies.d.ts +2 -0
  82. package/dist/core/mcp-in/collect-replies.js +11 -3
  83. package/dist/core/mcp-in/collect-replies.js.map +1 -1
  84. package/dist/core/mcp-in/ports.d.ts +2 -1
  85. package/dist/core/mcp-out/run-party.d.ts +3 -1
  86. package/dist/core/mcp-out/run-party.js +9 -2
  87. package/dist/core/mcp-out/run-party.js.map +1 -1
  88. package/dist/core/party-grants/complete-party-sign-in.d.ts +5 -3
  89. package/dist/core/party-grants/complete-party-sign-in.js +7 -3
  90. package/dist/core/party-grants/complete-party-sign-in.js.map +1 -1
  91. package/dist/core/party-grants/ports.d.ts +17 -3
  92. package/dist/core/party-grants/tell-sign-in-needed.d.ts +9 -6
  93. package/dist/core/party-grants/tell-sign-in-needed.js +28 -12
  94. package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -1
  95. package/dist/core/people/answer-delivery.d.ts +9 -13
  96. package/dist/core/people/answer-delivery.js +23 -6
  97. package/dist/core/people/answer-delivery.js.map +1 -1
  98. package/dist/core/people/basket.d.ts +104 -0
  99. package/dist/core/people/basket.js +42 -0
  100. package/dist/core/people/basket.js.map +1 -0
  101. package/dist/core/people/count-basket.d.ts +16 -0
  102. package/dist/core/people/count-basket.js +14 -0
  103. package/dist/core/people/count-basket.js.map +1 -0
  104. package/dist/core/people/done-delivery.d.ts +21 -13
  105. package/dist/core/people/done-delivery.js +34 -4
  106. package/dist/core/people/done-delivery.js.map +1 -1
  107. package/dist/core/people/finish-own-step.d.ts +27 -0
  108. package/dist/core/people/finish-own-step.js +67 -0
  109. package/dist/core/people/finish-own-step.js.map +1 -0
  110. package/dist/core/people/inbox-entry.js +1 -1
  111. package/dist/core/people/inbox-entry.js.map +1 -1
  112. package/dist/core/people/item-job.d.ts +9 -0
  113. package/dist/core/people/item-job.js +38 -0
  114. package/dist/core/people/item-job.js.map +1 -0
  115. package/dist/core/people/item-outcome.d.ts +37 -0
  116. package/dist/core/people/item-outcome.js +21 -0
  117. package/dist/core/people/item-outcome.js.map +1 -0
  118. package/dist/core/people/item-state.d.ts +10 -0
  119. package/dist/core/people/item-state.js +17 -0
  120. package/dist/core/people/item-state.js.map +1 -0
  121. package/dist/core/people/open-delivery.d.ts +29 -14
  122. package/dist/core/people/open-delivery.js +108 -19
  123. package/dist/core/people/open-delivery.js.map +1 -1
  124. package/dist/core/people/opened-of.d.ts +30 -9
  125. package/dist/core/people/opened-of.js +25 -4
  126. package/dist/core/people/opened-of.js.map +1 -1
  127. package/dist/core/people/person-crew.d.ts +5 -1
  128. package/dist/core/people/person-crew.js +7 -0
  129. package/dist/core/people/person-crew.js.map +1 -1
  130. package/dist/core/people/ports.d.ts +42 -19
  131. package/dist/core/people/put-in-basket.d.ts +39 -0
  132. package/dist/core/people/put-in-basket.js +57 -0
  133. package/dist/core/people/put-in-basket.js.map +1 -0
  134. package/dist/core/people/read-basket.d.ts +54 -0
  135. package/dist/core/people/read-basket.js +57 -0
  136. package/dist/core/people/read-basket.js.map +1 -0
  137. package/dist/core/people/read-bridge-home.d.ts +47 -0
  138. package/dist/core/people/read-bridge-home.js +53 -0
  139. package/dist/core/people/read-bridge-home.js.map +1 -0
  140. package/dist/core/people/read-inbox.d.ts +11 -6
  141. package/dist/core/people/read-inbox.js +17 -10
  142. package/dist/core/people/read-inbox.js.map +1 -1
  143. package/dist/core/people/read-record.d.ts +48 -0
  144. package/dist/core/people/read-record.js +44 -0
  145. package/dist/core/people/read-record.js.map +1 -0
  146. package/dist/core/people/read-routing.d.ts +26 -0
  147. package/dist/core/people/read-routing.js +22 -0
  148. package/dist/core/people/read-routing.js.map +1 -0
  149. package/dist/core/people/read-wake-channels.d.ts +7 -8
  150. package/dist/core/people/read-wake-channels.js +4 -4
  151. package/dist/core/people/read-wake-channels.js.map +1 -1
  152. package/dist/core/people/remove-from-basket.d.ts +20 -0
  153. package/dist/core/people/remove-from-basket.js +52 -0
  154. package/dist/core/people/remove-from-basket.js.map +1 -0
  155. package/dist/core/people/routing.d.ts +50 -0
  156. package/dist/core/people/routing.js +35 -0
  157. package/dist/core/people/routing.js.map +1 -0
  158. package/dist/core/people/send-basket.d.ts +40 -0
  159. package/dist/core/people/send-basket.js +60 -0
  160. package/dist/core/people/send-basket.js.map +1 -0
  161. package/dist/core/people/send-stored-answers.d.ts +33 -0
  162. package/dist/core/people/send-stored-answers.js +96 -0
  163. package/dist/core/people/send-stored-answers.js.map +1 -0
  164. package/dist/core/people/stale-question.d.ts +28 -0
  165. package/dist/core/people/stale-question.js +26 -0
  166. package/dist/core/people/stale-question.js.map +1 -0
  167. package/dist/core/people/step-outcome.d.ts +18 -0
  168. package/dist/core/people/step-outcome.js +18 -0
  169. package/dist/core/people/step-outcome.js.map +1 -0
  170. package/dist/core/people/turn-route.d.ts +34 -0
  171. package/dist/core/people/turn-route.js +42 -0
  172. package/dist/core/people/turn-route.js.map +1 -0
  173. package/dist/core/people/wake-person.d.ts +15 -7
  174. package/dist/core/people/wake-person.js +54 -28
  175. package/dist/core/people/wake-person.js.map +1 -1
  176. package/dist/core/people/web-push-channel.d.ts +2 -2
  177. package/dist/core/people/web-push-channel.js +3 -3
  178. package/dist/core/people/web-push-channel.js.map +1 -1
  179. package/dist/core/requests/ask-owners.d.ts +1 -1
  180. package/dist/core/requests/ask-owners.js +4 -4
  181. package/dist/core/requests/ask-owners.js.map +1 -1
  182. package/dist/core/requests/list-mine.d.ts +1 -1
  183. package/dist/core/requests/list-mine.js +1 -1
  184. package/dist/core/requests/list-to-decide.d.ts +1 -1
  185. package/dist/core/requests/list-to-decide.js +1 -1
  186. package/dist/core/requests/list-to-decide.js.map +1 -1
  187. package/dist/core/shared/errors.d.ts +1 -1
  188. package/dist/core/shared/errors.js.map +1 -1
  189. package/dist/core/slack/answer-in-slack.d.ts +18 -15
  190. package/dist/core/slack/answer-in-slack.js +39 -20
  191. package/dist/core/slack/answer-in-slack.js.map +1 -1
  192. package/dist/core/slack/complete-link.js +3 -3
  193. package/dist/core/slack/complete-link.js.map +1 -1
  194. package/dist/core/slack/edit-slack-posts.d.ts +23 -0
  195. package/dist/core/slack/edit-slack-posts.js +49 -0
  196. package/dist/core/slack/edit-slack-posts.js.map +1 -0
  197. package/dist/core/slack/ports.d.ts +28 -9
  198. package/dist/core/slack/read-slack-link.d.ts +2 -3
  199. package/dist/core/slack/read-slack-link.js +2 -2
  200. package/dist/core/slack/read-slack-link.js.map +1 -1
  201. package/dist/core/slack/see-in-slack.d.ts +34 -0
  202. package/dist/core/slack/see-in-slack.js +48 -0
  203. package/dist/core/slack/see-in-slack.js.map +1 -0
  204. package/dist/core/slack/send-slack-events.js +1 -1
  205. package/dist/core/slack/send-slack-events.js.map +1 -1
  206. package/dist/core/slack/show-in-slack.d.ts +20 -15
  207. package/dist/core/slack/show-in-slack.js +36 -45
  208. package/dist/core/slack/show-in-slack.js.map +1 -1
  209. package/dist/core/slack/slack-link.d.ts +0 -2
  210. package/dist/core/slack/slack-post-of.d.ts +9 -9
  211. package/dist/core/slack/slack-post-of.js +12 -3
  212. package/dist/core/slack/slack-post-of.js.map +1 -1
  213. package/dist/core/slack/slack-post.d.ts +13 -7
  214. package/dist/core/slack/slack-post.js +2 -2
  215. package/dist/core/slack/slack-post.js.map +1 -1
  216. package/dist/core/slack/slack-press.d.ts +45 -0
  217. package/dist/core/slack/slack-press.js +26 -0
  218. package/dist/core/slack/slack-press.js.map +1 -0
  219. package/dist/core/slack/start-link.d.ts +1 -1
  220. package/dist/core/slack/start-link.js +1 -1
  221. package/dist/core/slack/unlink-slack.d.ts +1 -1
  222. package/dist/core/slack/unlink-slack.js +1 -1
  223. package/dist/core/slack/unlink-slack.js.map +1 -1
  224. package/dist/round-worker.d.ts +23 -0
  225. package/dist/round-worker.js +38 -0
  226. package/dist/round-worker.js.map +1 -0
  227. package/package.json +3 -3
  228. package/src/adapters/prisma/migrations/20261101090000_item_outcomes/migration.sql +12 -0
  229. package/src/adapters/prisma/migrations/20261101091000_opened_deliveries_content_type/migration.sql +2 -0
  230. package/src/adapters/prisma/migrations/20261101120000_opened_deliveries_questions/migration.sql +3 -0
  231. package/src/adapters/prisma/migrations/20261101150000_basket_entries/migration.sql +25 -0
  232. package/src/adapters/prisma/migrations/20261101180000_opened_deliveries_steps/migration.sql +2 -0
  233. package/src/adapters/prisma/migrations/20261101181000_party_sign_in_notices_steps/migration.sql +2 -0
  234. package/src/adapters/prisma/migrations/20261102090000_routes/migration.sql +11 -0
  235. package/src/adapters/prisma/migrations/20261102091000_slack_posts_unacknowledged/migration.sql +3 -0
  236. package/src/adapters/prisma/migrations/20261102092000_slack_links_routed/migration.sql +2 -0
  237. package/src/adapters/prisma/migrations/20261102093000_email_channels_routed/migration.sql +2 -0
  238. package/src/adapters/prisma/migrations/20261103090000_slack_posts_edited/migration.sql +5 -0
  239. package/src/adapters/prisma/schema.prisma +71 -15
  240. package/web/.next/BUILD_ID +1 -1
  241. package/web/.next/app-path-routes-manifest.json +8 -4
  242. package/web/.next/build-manifest.json +127 -79
  243. package/web/.next/diagnostics/route-bundle-stats.json +215 -143
  244. package/web/.next/fallback-build-manifest.json +3 -3
  245. package/web/.next/prerender-manifest.json +3 -3
  246. package/web/.next/routes-manifest.json +50 -26
  247. package/web/.next/server/app/(console)/bridge/basket/page/app-paths-manifest.json +3 -0
  248. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/basket}/page/build-manifest.json +4 -4
  249. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/basket}/page/next-font-manifest.json +1 -1
  250. package/web/.next/server/app/(console)/bridge/basket/page/server-reference-manifest.json +75 -0
  251. package/web/.next/server/app/(console)/bridge/basket/page.js +25 -0
  252. package/web/.next/server/app/(console)/bridge/basket/page.js.nft.json +1 -0
  253. package/web/.next/server/app/(console)/bridge/basket/page_client-reference-manifest.js +3 -0
  254. package/web/.next/server/app/(console)/bridge/changes/route/app-paths-manifest.json +3 -0
  255. package/web/.next/server/app/(console)/bridge/changes/route.js +8 -0
  256. package/web/.next/server/app/(console)/{overview/focus → bridge/changes}/route.js.nft.json +1 -1
  257. package/web/.next/server/app/(console)/{overview/focus → bridge/changes}/route_client-reference-manifest.js +1 -1
  258. package/web/.next/server/app/(console)/bridge/done/page/app-paths-manifest.json +3 -0
  259. package/web/.next/server/app/(console)/bridge/done/page/build-manifest.json +23 -0
  260. package/web/.next/server/app/(console)/bridge/done/page/next-font-manifest.json +11 -0
  261. package/web/.next/server/app/(console)/bridge/done/page/server-reference-manifest.json +75 -0
  262. package/web/.next/server/app/(console)/bridge/done/page.js +25 -0
  263. package/web/.next/server/app/(console)/bridge/done/page.js.nft.json +1 -0
  264. package/web/.next/server/app/(console)/bridge/done/page_client-reference-manifest.js +3 -0
  265. package/web/.next/server/app/(console)/bridge/focus/route/app-paths-manifest.json +3 -0
  266. package/web/.next/server/app/(console)/bridge/focus/route.js +8 -0
  267. package/web/.next/server/app/(console)/{overview/changes → bridge/focus}/route.js.nft.json +1 -1
  268. package/web/.next/server/app/(console)/bridge/focus/route_client-reference-manifest.js +3 -0
  269. package/web/.next/server/app/(console)/bridge/page/app-paths-manifest.json +3 -0
  270. package/web/.next/server/app/(console)/{overview → bridge}/page/build-manifest.json +4 -4
  271. package/web/.next/server/app/(console)/{overview → bridge}/page/next-font-manifest.json +1 -1
  272. package/web/.next/server/app/(console)/bridge/page/react-loadable-manifest.json +1 -0
  273. package/web/.next/server/app/(console)/bridge/page/server-reference-manifest.json +65 -0
  274. package/web/.next/server/app/(console)/{overview → bridge}/page.js +11 -11
  275. package/web/.next/server/app/(console)/bridge/page.js.map +5 -0
  276. package/web/.next/server/app/(console)/{overview → bridge}/page.js.nft.json +1 -1
  277. package/web/.next/server/app/(console)/bridge/page_client-reference-manifest.js +3 -0
  278. package/web/.next/server/app/(console)/bridge/settings/page/app-paths-manifest.json +3 -0
  279. package/web/.next/server/app/(console)/bridge/settings/page/build-manifest.json +23 -0
  280. package/web/.next/server/app/(console)/bridge/settings/page/next-font-manifest.json +11 -0
  281. package/web/.next/server/app/(console)/bridge/settings/page/react-loadable-manifest.json +1 -0
  282. package/web/.next/server/app/(console)/bridge/settings/page/server-reference-manifest.json +15 -0
  283. package/web/.next/server/app/(console)/bridge/settings/page.js +23 -0
  284. package/web/.next/server/app/(console)/bridge/settings/page.js.map +5 -0
  285. package/web/.next/server/app/(console)/bridge/settings/page.js.nft.json +1 -0
  286. package/web/.next/server/app/(console)/bridge/settings/page_client-reference-manifest.js +3 -0
  287. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +3 -0
  288. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/build-manifest.json +23 -0
  289. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +11 -0
  290. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/react-loadable-manifest.json +1 -0
  291. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +25 -0
  292. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js +25 -0
  293. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js.map +5 -0
  294. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js.nft.json +1 -0
  295. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +3 -0
  296. package/web/.next/server/app/(console)/bridge/settings/routing/page/app-paths-manifest.json +3 -0
  297. package/web/.next/server/app/(console)/bridge/settings/routing/page/build-manifest.json +23 -0
  298. package/web/.next/server/app/(console)/bridge/settings/routing/page/next-font-manifest.json +11 -0
  299. package/web/.next/server/app/(console)/bridge/settings/routing/page/react-loadable-manifest.json +1 -0
  300. package/web/.next/server/app/(console)/bridge/settings/routing/page/server-reference-manifest.json +55 -0
  301. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/settings/routing}/page.js +12 -12
  302. package/web/.next/server/app/(console)/bridge/settings/routing/page.js.map +5 -0
  303. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/settings/routing}/page.js.nft.json +1 -1
  304. package/web/.next/server/app/(console)/bridge/settings/routing/page_client-reference-manifest.js +3 -0
  305. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +4 -4
  306. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  307. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  308. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  309. package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +4 -4
  310. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  311. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +1 -1
  312. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  313. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  314. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +4 -4
  315. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +15 -15
  316. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  317. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  318. package/web/.next/server/app/(console)/outside-parties/[name]/page/build-manifest.json +4 -4
  319. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +8 -8
  320. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  321. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  322. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +4 -4
  323. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +15 -15
  324. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  325. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  326. package/web/.next/server/app/(console)/outside-parties/add/page/build-manifest.json +4 -4
  327. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +10 -10
  328. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  329. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  330. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +4 -4
  331. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  332. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  333. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  334. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +4 -4
  335. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  336. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  337. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  338. package/web/.next/server/app/(console)/outside-parties/page/build-manifest.json +4 -4
  339. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  340. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  341. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  342. package/web/.next/server/app/(console)/parties/page/build-manifest.json +4 -4
  343. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +9 -9
  344. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  345. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  346. package/web/.next/server/app/(console)/sign-in/failed/page/build-manifest.json +4 -4
  347. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  348. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  349. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  350. package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +4 -4
  351. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +10 -10
  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.nft.json +1 -1
  357. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  358. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
  359. package/web/.next/server/app/(console)/slack/page/build-manifest.json +4 -4
  360. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +10 -10
  361. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  362. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  363. package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +4 -4
  364. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +10 -10
  365. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  366. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  367. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  368. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  369. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  370. package/web/.next/server/app/_global-error.html +1 -1
  371. package/web/.next/server/app/_global-error.rsc +1 -1
  372. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  373. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  374. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  375. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  376. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  377. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  378. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  379. package/web/.next/server/app/authorize/failed/page/build-manifest.json +4 -4
  380. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  381. package/web/.next/server/app/authorize/failed/page.js +1 -1
  382. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  383. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  384. package/web/.next/server/app/authorize/pick/page/build-manifest.json +4 -4
  385. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  386. package/web/.next/server/app/authorize/pick/page.js +1 -1
  387. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  388. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  389. package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +4 -4
  390. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  391. package/web/.next/server/app/authorize/waiting/approval/page.js +1 -1
  392. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  393. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  394. package/web/.next/server/app-paths-manifest.json +8 -4
  395. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js +3 -0
  396. package/web/.next/server/chunks/{[root-of-the-server]__1tfyrijwfgqlk._.js → [root-of-the-server]__13mh3krxil59c._.js} +2 -2
  397. package/web/.next/server/chunks/[root-of-the-server]__13mh3krxil59c._.js.map +1 -0
  398. package/web/.next/server/chunks/_05qgg3__4kdbm._.js +3 -0
  399. package/web/.next/server/chunks/_05qgg3__4kdbm._.js.map +1 -0
  400. package/web/.next/server/chunks/_0_um96p6psnqx._.js +4 -4
  401. package/web/.next/server/chunks/_0_um96p6psnqx._.js.map +1 -1
  402. package/web/.next/server/chunks/_1uap5tql2vvsb._.js +3 -0
  403. package/web/.next/server/chunks/{_04is-uopj3op9._.js.map → _1uap5tql2vvsb._.js.map} +1 -1
  404. package/web/.next/server/chunks/_1xf83h9norhws._.js +4 -4
  405. package/web/.next/server/chunks/_1xf83h9norhws._.js.map +1 -1
  406. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +1 -1
  407. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -1
  408. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js +3 -0
  409. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js.map +1 -0
  410. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js +3 -0
  411. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js.map +1 -0
  412. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  413. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  414. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  415. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  416. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  417. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  418. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  419. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  420. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  421. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  422. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
  423. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
  424. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js +3 -0
  425. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js.map +1 -0
  426. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +1 -1
  427. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
  428. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
  429. package/web/.next/server/chunks/ssr/{[root-of-the-server]__179upda-y7uap._.js → [root-of-the-server]__0gnfxe62edx95._.js} +1 -1
  430. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js +3 -0
  431. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js.map +1 -0
  432. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  433. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  434. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
  435. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
  436. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
  437. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
  438. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  439. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  440. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js +4 -0
  441. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js.map +1 -0
  442. package/web/.next/server/chunks/ssr/[root-of-the-server]__1iqxg48po42ig._.js +3 -0
  443. package/web/.next/server/chunks/ssr/[root-of-the-server]__1iqxg48po42ig._.js.map +1 -0
  444. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
  445. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
  446. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js +3 -0
  447. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js.map +1 -0
  448. package/web/.next/server/chunks/ssr/{[root-of-the-server]__04_bc8g0oe4jt._.js → [root-of-the-server]__1yyaeeylnezpi._.js} +1 -1
  449. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  450. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  451. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +4 -4
  452. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  453. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js +4 -0
  454. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js.map +1 -0
  455. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js +3 -0
  456. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js.map +1 -0
  457. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  458. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  459. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  460. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  461. package/web/.next/server/chunks/ssr/_0swrejvekuzfx._.js +3 -0
  462. package/web/.next/server/chunks/ssr/_0swrejvekuzfx._.js.map +1 -0
  463. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  464. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  465. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  466. package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
  467. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js +1 -1
  468. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +1 -1
  469. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js +3 -0
  470. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js.map +1 -0
  471. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  472. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  473. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js +3 -0
  474. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js.map +1 -0
  475. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  476. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  477. package/web/.next/server/chunks/ssr/_1qdpkpsskm5wj._.js +3 -0
  478. package/web/.next/server/chunks/ssr/_1qdpkpsskm5wj._.js.map +1 -0
  479. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js +3 -0
  480. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js.map +1 -0
  481. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js +3 -0
  482. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js.map +1 -0
  483. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js +3 -0
  484. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js.map +1 -0
  485. package/web/.next/server/chunks/ssr/{node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js → node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js} +2 -2
  486. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +1 -0
  487. package/web/.next/server/chunks/ssr/{node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js → node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js} +2 -2
  488. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js.map +1 -0
  489. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js +3 -0
  490. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js.map +1 -0
  491. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js +3 -0
  492. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js.map +1 -0
  493. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js +3 -0
  494. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js.map +1 -0
  495. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js +3 -0
  496. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js.map +1 -0
  497. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js +3 -0
  498. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js.map +1 -0
  499. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js +3 -0
  500. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js.map +1 -0
  501. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js +3 -0
  502. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js.map +1 -0
  503. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js +1 -1
  504. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js.map +1 -1
  505. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js +3 -0
  506. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js.map +1 -0
  507. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  508. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  509. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js +3 -0
  510. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js.map +1 -0
  511. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js +3 -0
  512. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js.map +1 -0
  513. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js +3 -0
  514. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js.map +1 -0
  515. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js +3 -0
  516. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js.map +1 -0
  517. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js +3 -0
  518. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js.map +1 -0
  519. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js +3 -0
  520. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js.map +1 -0
  521. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js +3 -0
  522. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js.map +1 -0
  523. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js +3 -0
  524. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js.map +1 -0
  525. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js +3 -0
  526. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js.map +1 -0
  527. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js +3 -0
  528. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js.map +1 -0
  529. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js +1 -1
  530. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js +1 -1
  531. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js +3 -0
  532. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js.map +1 -0
  533. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js +3 -0
  534. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js.map +1 -0
  535. package/web/.next/server/chunks/ssr/web_features_1je122n6carea._.js +3 -0
  536. package/web/.next/server/chunks/ssr/web_features_1je122n6carea._.js.map +1 -0
  537. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js +3 -0
  538. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js.map +1 -0
  539. package/web/.next/server/chunks/ssr/web_features_1nrnskep6p8ci._.js +3 -0
  540. package/web/.next/server/chunks/ssr/web_features_1nrnskep6p8ci._.js.map +1 -0
  541. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  542. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  543. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  544. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  545. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  546. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  547. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js +3 -0
  548. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js.map +1 -0
  549. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js +3 -0
  550. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js.map +1 -0
  551. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js +3 -0
  552. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js.map +1 -0
  553. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js +3 -0
  554. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js.map +1 -0
  555. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +3 -0
  556. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map +1 -0
  557. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js +3 -0
  558. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js.map +1 -0
  559. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +3 -0
  560. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -0
  561. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +3 -0
  562. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -0
  563. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +3 -0
  564. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -0
  565. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js +3 -0
  566. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js.map +1 -0
  567. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js +3 -0
  568. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map +1 -0
  569. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js +3 -0
  570. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js.map +1 -0
  571. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  572. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -1
  573. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  574. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  575. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  576. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  577. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  578. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  579. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  580. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  581. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  582. package/web/.next/server/chunks/web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js +3 -0
  583. package/web/.next/server/middleware-build-manifest.js +127 -79
  584. package/web/.next/server/next-font-manifest.js +1 -1
  585. package/web/.next/server/next-font-manifest.json +24 -8
  586. package/web/.next/server/pages/500.html +1 -1
  587. package/web/.next/server/preview-props.json +3 -3
  588. package/web/.next/server/server-reference-manifest.js +1 -1
  589. package/web/.next/server/server-reference-manifest.json +219 -133
  590. package/web/.next/static/chunks/0c1tqlbsvq1dj.js +1 -0
  591. package/web/.next/static/chunks/0fh11dkddwf_2.js +1 -0
  592. package/web/.next/static/chunks/0fu7je2vzzzh7.js +1 -0
  593. package/web/.next/static/chunks/1166rxt6h6ilq.js +1 -0
  594. package/web/.next/static/chunks/180aowme095ds.js +1 -0
  595. package/web/.next/static/chunks/1ehmzxr697ifa.js +1 -0
  596. package/web/.next/static/chunks/1lyv8ukt_q3ph.js +1 -0
  597. package/web/.next/static/chunks/1ymfhxs-xqiy6.js +1 -0
  598. package/web/.next/static/chunks/2799kv0y5g2va.js +1 -0
  599. package/web/.next/static/chunks/2hoi73vy1wqpo.js +1 -0
  600. package/web/.next/static/chunks/{3l5jtag3-fukc.js → 2jr8r6g9kk42a.js} +1 -1
  601. package/web/.next/static/chunks/2mtfca4qk_s34.js +1 -0
  602. package/web/.next/static/chunks/{0tmvd_zw45u96.js → 322fzslly9wpf.js} +1 -1
  603. package/web/.next/static/chunks/{03239gtej3tj0.js → 36fnm0ezsx1eh.js} +1 -1
  604. package/web/.next/static/chunks/3f2trjz7_wrzh.js +1 -0
  605. package/web/.next/static/chunks/{2_e-puldye2do.js → 3hvw5n04pbwg8.js} +1 -1
  606. package/web/.next/static/chunks/3ow9h8hreko-p.css +3 -0
  607. package/web/.next/static/chunks/3pd8pele5x1o9.js +1 -0
  608. package/web/.next/static/chunks/3rt603msircrl.js +1 -0
  609. package/web/.next/static/chunks/3srfjz42u14tx.js +1 -0
  610. package/web/.next/static/chunks/{3ceatffqhpgpu.js → 40j58bya72xh1.js} +1 -1
  611. package/web/.next/trace +1 -1
  612. package/web/.next/trace-build +1 -1
  613. package/web/.next/types/routes.d.ts +10 -6
  614. package/web/.next/types/validator.ts +108 -40
  615. package/web/public/wake-worker.js +4 -4
  616. package/dist/adapters/prisma/email-channels.d.ts +0 -4
  617. package/dist/adapters/prisma/email-channels.js +0 -14
  618. package/dist/adapters/prisma/email-channels.js.map +0 -1
  619. package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +0 -946
  620. package/dist/adapters/prisma/generated/models/EmailChannel.js +0 -2
  621. package/dist/adapters/prisma/generated/models/EmailChannel.js.map +0 -1
  622. package/dist/core/people/turn-email-channel.d.ts +0 -21
  623. package/dist/core/people/turn-email-channel.js +0 -22
  624. package/dist/core/people/turn-email-channel.js.map +0 -1
  625. package/dist/core/slack/show-all-in-slack.d.ts +0 -16
  626. package/dist/core/slack/show-all-in-slack.js +0 -18
  627. package/dist/core/slack/show-all-in-slack.js.map +0 -1
  628. package/web/.next/server/app/(console)/overview/changes/route/app-paths-manifest.json +0 -3
  629. package/web/.next/server/app/(console)/overview/changes/route.js +0 -8
  630. package/web/.next/server/app/(console)/overview/changes/route_client-reference-manifest.js +0 -3
  631. package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +0 -3
  632. package/web/.next/server/app/(console)/overview/focus/route.js +0 -8
  633. package/web/.next/server/app/(console)/overview/page/app-paths-manifest.json +0 -3
  634. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +0 -95
  635. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +0 -3
  636. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/app-paths-manifest.json +0 -3
  637. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +0 -25
  638. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +0 -3
  639. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +0 -3
  640. package/web/.next/server/chunks/1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js +0 -3
  641. package/web/.next/server/chunks/[root-of-the-server]__1tfyrijwfgqlk._.js.map +0 -1
  642. package/web/.next/server/chunks/_04is-uopj3op9._.js +0 -3
  643. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +0 -3
  644. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +0 -1
  645. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +0 -3
  646. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +0 -1
  647. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js +0 -4
  648. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js.map +0 -1
  649. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js +0 -3
  650. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js.map +0 -1
  651. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js +0 -3
  652. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js.map +0 -1
  653. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +0 -3
  654. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +0 -1
  655. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js +0 -3
  656. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js.map +0 -1
  657. package/web/.next/server/chunks/ssr/_1oy13966tft2_._.js +0 -3
  658. package/web/.next/server/chunks/ssr/_1oy13966tft2_._.js.map +0 -1
  659. package/web/.next/server/chunks/ssr/_1pf8x2exvfl1z._.js +0 -3
  660. package/web/.next/server/chunks/ssr/_1pf8x2exvfl1z._.js.map +0 -1
  661. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js +0 -3
  662. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js.map +0 -1
  663. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js +0 -3
  664. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js.map +0 -1
  665. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +0 -3
  666. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +0 -1
  667. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js +0 -3
  668. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js.map +0 -1
  669. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js.map +0 -1
  670. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +0 -1
  671. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js +0 -3
  672. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js.map +0 -1
  673. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js +0 -3
  674. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js.map +0 -1
  675. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js +0 -3
  676. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js.map +0 -1
  677. package/web/.next/server/chunks/ssr/web_1loiet18xbddu._.js +0 -3
  678. package/web/.next/server/chunks/ssr/web_1loiet18xbddu._.js.map +0 -1
  679. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +0 -3
  680. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +0 -1
  681. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_087e7ba8loavc._.js +0 -3
  682. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_087e7ba8loavc._.js.map +0 -1
  683. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js +0 -3
  684. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js.map +0 -1
  685. package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js +0 -3
  686. package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js.map +0 -1
  687. package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js +0 -3
  688. package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js.map +0 -1
  689. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js +0 -3
  690. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js.map +0 -1
  691. package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js +0 -3
  692. package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js.map +0 -1
  693. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js +0 -3
  694. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js.map +0 -1
  695. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +0 -3
  696. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +0 -1
  697. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js +0 -3
  698. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js.map +0 -1
  699. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +0 -3
  700. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +0 -1
  701. package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js +0 -3
  702. package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js.map +0 -1
  703. package/web/.next/static/chunks/0nhopjmnw_dqt.js +0 -1
  704. package/web/.next/static/chunks/0vlawcs6_kjs1.js +0 -1
  705. package/web/.next/static/chunks/1se0j0htjyep6.js +0 -1
  706. package/web/.next/static/chunks/26vlpatu47xtw.css +0 -3
  707. package/web/.next/static/chunks/287ofedoj_6xl.js +0 -1
  708. package/web/.next/static/chunks/2cd4e71s711ad.js +0 -1
  709. package/web/.next/static/chunks/2ewacyhp73due.js +0 -1
  710. package/web/.next/static/chunks/34kulpk3a-cka.js +0 -1
  711. package/web/.next/static/chunks/3fd167c0-ot3u.js +0 -1
  712. package/web/.next/static/chunks/3knqujtrdi225.js +0 -1
  713. package/web/.next/static/chunks/3rxg2mdhxd6yt.js +0 -1
  714. package/web/.next/static/chunks/3v6tr952p9dba.js +0 -1
  715. /package/web/.next/server/app/(console)/{overview → bridge/basket}/page/react-loadable-manifest.json +0 -0
  716. /package/web/.next/server/app/(console)/{overview → bridge/basket}/page.js.map +0 -0
  717. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route/build-manifest.json +0 -0
  718. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route/server-reference-manifest.json +0 -0
  719. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route.js.map +0 -0
  720. /package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/done}/page/react-loadable-manifest.json +0 -0
  721. /package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/done}/page.js.map +0 -0
  722. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route/build-manifest.json +0 -0
  723. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route/server-reference-manifest.json +0 -0
  724. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route.js.map +0 -0
  725. /package/web/.next/server/chunks/{0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js.map → 0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js.map} +0 -0
  726. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__179upda-y7uap._.js.map → [root-of-the-server]__0gnfxe62edx95._.js.map} +0 -0
  727. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__04_bc8g0oe4jt._.js.map → [root-of-the-server]__1yyaeeylnezpi._.js.map} +0 -0
  728. /package/web/.next/server/chunks/{1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js.map → web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js.map} +0 -0
  729. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → IMWKx2sJwt7EwwpStr8tb}/_buildManifest.js +0 -0
  730. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → IMWKx2sJwt7EwwpStr8tb}/_clientMiddlewareManifest.js +0 -0
  731. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → IMWKx2sJwt7EwwpStr8tb}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/bridge/hooks/read-bridge.ts","../../../../../web/features/bridge/state/live-refresh.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/bridge/state/live-refresh.tsx%22%20%7D","../../../../../web/features/bridge/ui/bridge-nav.tsx","../../../../../web/features/bridge/ui/bridge-skeleton.tsx","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/sign-in/ui/no-sign-in.tsx"],"sourcesContent":["/**\n * What Bridge's pages show, read through the gateway's API as the signed-in\n * account (docs/design/bridge; decision 0056): Bridge home, a page of the\n * record for Done, Bridge's settings: the requests to decide for an\n * approver and the requests they asked, and where things show: each job's\n * places, the channels that wake the person and their Slack link. A part the\n * API refuses the account (FORBIDDEN) is not theirs to see, so it is left\n * out.\n */\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { refusalCodeOf, refusalMessageOf } from '../../../lib/gateway-api/page-api';\nimport type { WakeChannels } from '../services/deliveries';\nimport type { BasketView } from '../services/basket';\nimport type { BridgeHome, RecordPage } from '../services/items';\nimport type { ShownRequest } from '../services/requests';\nimport type { RoutingView } from '../services/routing';\n\n/**\n * What Bridge read of the person ship: what it answered; none, for an account\n * with no person ship, on which nothing waits; or that the record cannot be\n * read now, saying why. Nothing was acknowledged then, so nothing is lost.\n */\nexport type BridgeRead<T> = { kind: 'read'; value: T } | { kind: 'none' } | { kind: 'unreadable'; message: string };\n\nexport interface BridgeSettingsParts {\n readonly toDecide: readonly ShownRequest[] | undefined;\n readonly mine: readonly ShownRequest[] | undefined;\n}\n\n/** Where things show (Bridge, section 8): each job's places, and the places' own state. */\nexport interface BridgeRoutingParts {\n readonly routing: RoutingView | undefined;\n /** The channels that can wake the person when something waits for their person ship (wake a person, W8). */\n readonly wakeChannels: WakeChannels | undefined;\n /** The person's Slack link (gateway scopes 9.6); none while the fleet's own bot is not in Slack. */\n readonly slackLink: SlackLink | null | undefined;\n}\n\n/** A person's Slack link as the gateway answers it: the workspace, and the Slack name linked, none while unlinked. */\nexport type SlackLink = NonNullable<Awaited<ReturnType<GatewayApi['slack']['link']['query']>>>;\n\nasync function unlessForbidden<T>(call: Promise<T>): Promise<T | undefined> {\n try {\n return await call;\n } catch (error) {\n if (refusalCodeOf(error) === 'FORBIDDEN') {\n return undefined;\n }\n throw error;\n }\n}\n\n/** A read of the person ship: a sign-in that ended is thrown on, so the page sends the person to sign in again. */\nasync function personRead<T>(call: Promise<T>): Promise<BridgeRead<T>> {\n try {\n return { kind: 'read', value: await call };\n } catch (error) {\n const code = refusalCodeOf(error);\n if (code === 'FORBIDDEN') {\n return { kind: 'none' };\n }\n if (code === 'UNAUTHORIZED') {\n throw error;\n }\n return { kind: 'unreadable', message: code === undefined ? 'The gateway did not answer.' : refusalMessageOf(error) };\n }\n}\n\nexport function readBridgeHome(api: GatewayApi): Promise<BridgeRead<BridgeHome>> {\n return personRead(api.people.home.query());\n}\n\nexport function readBasket(api: GatewayApi): Promise<BridgeRead<BasketView>> {\n return personRead(api.people.basket.query());\n}\n\n/** How many answers the basket holds, for the navigation: none for an account with no person ship, or while it cannot be read now. */\nexport async function readBasketCount(api: GatewayApi): Promise<number> {\n const read = await personRead(api.people.basketCount.query());\n return read.kind === 'read' ? read.value.count : 0;\n}\n\nexport function readRecordPage(api: GatewayApi, cursor: string | null): Promise<BridgeRead<RecordPage>> {\n return personRead(api.people.record.query({ cursor }));\n}\n\nexport async function readBridgeSettings(api: GatewayApi): Promise<BridgeSettingsParts> {\n const [toDecide, mine] = await Promise.all([unlessForbidden(api.requests.toDecide.query()), unlessForbidden(api.requests.mine.query())]);\n return { toDecide, mine };\n}\n\nexport async function readBridgeRouting(api: GatewayApi): Promise<BridgeRoutingParts> {\n const [routing, wakeChannels, slackLink] = await Promise.all([unlessForbidden(api.people.routing.query()), unlessForbidden(api.people.wakeChannels.query()), unlessForbidden(api.slack.link.query())]);\n return { routing, wakeChannels, slackLink };\n}\n\n/** One request to decide, undefined once it no longer waits, and the queue beside it. */\nexport async function readRequestToDecide(api: GatewayApi, requestId: string): Promise<{ request: ShownRequest | undefined; toDecide: readonly ShownRequest[] }> {\n const toDecide = (await unlessForbidden(api.requests.toDecide.query())) ?? [];\n return { request: toDecide.find((open) => open.requestId === requestId), toDecide };\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const LiveRefresh = registerClientReference(\n function() { throw new Error(\"Attempted to call LiveRefresh() from the server but LiveRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/bridge/state/live-refresh.tsx\",\n \"LiveRefresh\",\n);\n","import { inFleet } from '../../../lib/gateway-api/page-account';\nimport { BRIDGE_BASKET_PATH, BRIDGE_DONE_PATH, BRIDGE_PATH, BRIDGE_SETTINGS_PATH } from '../paths';\n\nconst PAGES = [\n { key: 'home', label: 'Waiting on you', path: BRIDGE_PATH },\n { key: 'basket', label: 'Basket', path: BRIDGE_BASKET_PATH },\n { key: 'done', label: 'Done', path: BRIDGE_DONE_PATH },\n { key: 'settings', label: 'Settings', path: BRIDGE_SETTINGS_PATH },\n] as const;\n\nexport type BridgePage = (typeof PAGES)[number]['key'];\n\n/**\n * Bridge's pages a person goes between: what waits on them, the basket with\n * its count while it holds any (section 9, rule 2), Done, and Bridge's\n * settings; the page shown current.\n */\nexport function BridgeNav({ fleetId, current, basketCount }: { fleetId: string; current: BridgePage; basketCount: number }) {\n return (\n <nav aria-label=\"Bridge\" className=\"flex min-w-0 items-center gap-1 overflow-x-auto border-b border-border pb-2\">\n {PAGES.filter(({ key }) => key !== 'basket' || basketCount > 0 || current === 'basket').map(({ key, label, path }) => (\n <a\n key={key}\n href={inFleet(path, fleetId)}\n data-testid={`bridge-nav-${key}`}\n aria-current={key === current ? 'page' : undefined}\n className={`whitespace-nowrap rounded-md px-2 py-1 text-sm ${key === current ? 'bg-accent font-semibold' : 'text-muted-foreground hover:bg-accent'}`}\n >\n {key === 'basket' ? `${label} ${String(basketCount)}` : label}\n </a>\n ))}\n </nav>\n );\n}\n","function Bar({ width }: { width: string }) {\n return <span className={`block h-4 animate-pulse rounded bg-muted ${width}`} />;\n}\n\n/** A page of Bridge's shape while it loads: the lead, then a list. */\nexport function BridgeSkeleton() {\n return (\n <div aria-busy=\"true\" aria-label=\"Loading Bridge\" className=\"grid gap-6\">\n <div className=\"flex items-center gap-4\">\n <span className=\"size-12 animate-pulse rounded-full bg-muted\" />\n <div className=\"grid flex-1 gap-2\">\n <Bar width=\"w-48\" />\n <Bar width=\"w-32\" />\n </div>\n </div>\n <div className=\"grid gap-2\">\n {['a', 'b', 'c'].map((row) => (\n <span key={row} className=\"block h-14 animate-pulse rounded-md bg-muted\" />\n ))}\n </div>\n </div>\n );\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","import { CARD } from '../../forms/ui/look';\n\n/** A gateway that is no app at pagasae signs no one in to its pages (header design H5). */\nexport function NoSignIn() {\n return (\n <section className={CARD} data-testid=\"no-sign-in\">\n <h2 className=\"text-heading font-semibold\">Nobody signs in here</h2>\n <p className=\"mt-2 text-muted-foreground\">This gateway signs no one in to its pages: it is no app at pagasae.</p>\n </section>\n );\n}\n"],"names":["unlessForbidden","call","error","undefined","personRead","kind","value","code","message","readBridgeHome","api","people","home","query","readBasket","basket","readBasketCount","read","basketCount","count","readRecordPage","cursor","record","readBridgeSettings","toDecide","mine","Promise","all","requests","readBridgeRouting","routing","wakeChannels","slackLink","slack","link","readRequestToDecide","requestId","request","find","open","LiveRefresh","Error","PAGES","key","label","path","BridgeNav","fleetId","current","className","filter","map","href","String","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","NoSignIn"],"mappings":"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","ignoreList":[1]}
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[53210,a=>{var b=a.i(5050);let c=(0,b.createServerReference)("60573c940559fe36ec3489b04906d9407ddf5822ef",b.callServer,void 0,b.findSourceMapURL,"removeFromBasket");a.s(["f",0,c])},91777,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(52779),e=a.i(25959),f=a.i(12712),g=a.i(96070),h=a.i(39098),i=a.i(44783),j=a.i(53210),k=a.i(16550),l=a.i(32043),m=a.i(10039);function n({inBasket:a,basketHref:c,isRemoving:d,isWorking:e,onRemove:f}){return(0,b.jsxs)("div",{"data-testid":"bridge-in-basket",className:"grid gap-2 rounded-md border border-border bg-muted p-3",children:[(0,b.jsxs)("span",{className:"font-medium",children:["In the basket: option ",a.option,", not sent"]}),null===a.note?null:(0,b.jsxs)("span",{className:"text-caption",children:["“",a.note,"”"]}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:"Pick another option to change it."}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)("a",{"data-testid":"bridge-basket-open",href:c,className:"inline-flex h-9 items-center rounded-md border border-border px-4 hover:bg-accent",children:"Open the basket"}),(0,b.jsx)(l.f,{"data-testid":"bridge-basket-remove",isPending:d,pendingLabel:"Removing...",disabled:e,onClick:f,children:"Remove"})]})]})}function o({question:a,chosen:c,isStale:d,onChoose:e}){return(0,b.jsxs)("fieldset",{className:`grid gap-2 ${d?"opacity-60":""}`,disabled:d,children:[(0,b.jsx)("legend",{className:"sr-only",children:"Options"}),a.options.map(f=>(0,b.jsxs)("label",{className:`flex items-start gap-3 rounded-md border p-3 ${f.key===c&&!d?"border-ring bg-accent":"border-border"}`,children:[(0,b.jsx)("input",{type:"radio",name:"option",value:f.key,checked:f.key===c&&!d,onChange:()=>{e(f.key)},className:"mt-1"}),(0,b.jsxs)("span",{className:"grid flex-1 gap-0.5",children:[(0,b.jsxs)("span",{className:"font-medium",children:[f.key,". ",f.label]}),""===f.detail?null:(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:f.detail})]}),f.key===a.pick.option?(0,b.jsx)("span",{className:"rounded-sm border border-border px-1.5 text-caption",children:"Their pick"}):null]},f.key))]})}function p({stale:a,from:c,onOpen:d}){let{replacementId:e}=a;return(0,b.jsxs)("div",{"data-testid":"bridge-stale",className:"grid gap-2 rounded-md border border-border bg-muted p-3",children:[(0,b.jsx)("span",{children:"withdrawn"===a.kind?`Withdrawn by ${c}. Nothing to answer: it is done.`:`Replaced by ${c}. Answer the new question.`}),null===e?null:(0,b.jsx)(l.f,{"data-testid":"bridge-replacement",className:"justify-self-start",isPending:!1,pendingLabel:"Opening...",onClick:()=>{d(e)},children:"Open the new question"})]})}function q({step:a}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"whitespace-pre-wrap",children:a.why}),void 0===a.link?null:(0,b.jsxs)("a",{"data-testid":"bridge-step-link",href:a.link.href,target:"_blank",rel:"noopener noreferrer",className:"inline-flex h-9 items-center justify-self-start rounded-md border border-border px-4 hover:bg-accent",children:["Open on ",a.link.host]})]})}function r({from:a,note:c,working:d,failure:e,onNoteChange:f,onFinish:g}){let h=void 0!==d;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Note"}),(0,b.jsx)("textarea",{"data-testid":"bridge-note",rows:2,value:c,onChange:a=>{f(a.target.value)},placeholder:"Optional, goes with Done or Cannot",className:"rounded-md border border-input bg-background p-2"})]}),void 0===e?null:(0,b.jsx)(m.f,{message:e,isFailure:!0}),(0,b.jsxs)("div",{className:"grid gap-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(l.f,{"data-testid":"bridge-step-done",variant:"primary",isPending:d?.kind==="done",pendingLabel:"Sending...",disabled:h,onClick:()=>{g("done")},children:"Done"}),(0,b.jsx)(l.f,{"data-testid":"bridge-step-cannot",isPending:d?.kind==="cannot",pendingLabel:"Sending...",disabled:h,onClick:()=>{g("cannot")},children:"Cannot"})]}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:[a," is told at once, with your note."]})]})]})}function s({delivery:a,isDoneOnSeeing:d,meetingHref:e,basketHref:f,inBasket:g,note:h,working:i,failure:j,onNoteChange:k,onAnswer:t,onPut:u,onRemove:v,onDone:w,onFinishStep:x,onOpen:y,onBack:z}){let{question:A,step:B,stale:C}=a,[D,E]=(0,c.useState)(g?.option??A?.pick.option),F=void 0!==i;return(0,b.jsxs)("section",{"data-testid":"bridge-delivery",className:"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm",children:[(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:[a.from," · ",new Date(a.sentAt).toUTCString()]}),(0,b.jsx)("h2",{className:"text-heading font-semibold",children:A?.title??a.title}),void 0===e?null:(0,b.jsx)("a",{"data-testid":"bridge-meeting",href:e,className:"inline-flex h-9 items-center justify-self-start rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Go to the meeting"}),void 0!==B?(0,b.jsx)(q,{step:B}):void 0===A?(0,b.jsx)("pre",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-caption",children:a.body}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"whitespace-pre-wrap",children:A.context}),(0,b.jsx)(o,{question:A,chosen:D,isStale:null!==C,onChoose:E}),(0,b.jsxs)("p",{className:"text-caption text-muted-foreground",children:[a.from," picks ",A.pick.option,": ",A.pick.why]})]}),null===C?null:(0,b.jsx)(p,{stale:C,from:a.from,onOpen:y}),null===g||null!==C?null:(0,b.jsx)(n,{inBasket:g,basketHref:f,isRemoving:i?.kind==="remove",isWorking:F,onRemove:v}),d?(0,b.jsx)("p",{"data-testid":"bridge-seen-done",className:"text-muted-foreground",children:"Seen now, so done: it asks nothing more."}):null!==C?null:void 0!==B?(0,b.jsx)(r,{from:a.from,note:h,working:i,failure:j,onNoteChange:k,onFinish:x}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:void 0===A?"Your answer":"Note"}),(0,b.jsx)("textarea",{"data-testid":"bridge-note",rows:2,value:h,onChange:a=>{k(a.target.value)},placeholder:void 0===A?"":"Optional, goes with the answer",className:"rounded-md border border-input bg-background p-2"})]}),void 0===j?null:(0,b.jsx)(m.f,{message:j,isFailure:!0}),void 0===A?(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(l.f,{"data-testid":"bridge-answer",variant:"primary",isPending:i?.kind==="note",pendingLabel:"Sending...",disabled:F,onClick:()=>{t(void 0)},children:"Answer"}),(0,b.jsx)(l.f,{"data-testid":"bridge-done",isPending:i?.kind==="done",pendingLabel:"Marking done...",disabled:F,onClick:w,children:"Done"})]}):void 0===D?null:(0,b.jsxs)("div",{className:"grid gap-1",children:[(0,b.jsxs)(l.f,{"data-testid":"bridge-put-in-basket",variant:"primary",className:"justify-self-start",isPending:i?.kind==="option",pendingLabel:"Putting in the basket...",disabled:F,onClick:()=>{u(D)},children:["Put option ",D," in the basket"]}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:["Nothing is sent yet. ",a.from," receives this answer when you send the basket."]})]})]}),(0,b.jsx)("div",{className:"flex flex-wrap gap-2",children:(0,b.jsx)("button",{type:"button",onClick:z,disabled:F,className:"inline-flex h-9 items-center rounded-md px-4 text-muted-foreground hover:bg-accent disabled:opacity-70",children:"Back"})})]})}a.s(["f",0,function({fleetId:a,children:l}){let[n,o]=(0,c.useState)(),[p,q]=(0,c.useState)(""),[r,t]=(0,c.useState)(),[u,v]=(0,c.useState)(),[w,x]=(0,c.useState)(),[y,z]=(0,c.useState)(),[A,B]=(0,c.useState)(),[,C]=(0,c.useTransition)(),D=b=>{t(b.deliveryId),x(void 0),B(void 0),C(async()=>{let c=await (0,h.f)(a,b.deliveryId);if(t(void 0),c.isOk){let a=b.inBasket??null;o({delivery:c.value,isDoneOnSeeing:"stay-aware"===b.job,inBasket:a}),q(a?.note??""),z(void 0)}else x({deliveryId:b.deliveryId,message:c.message})})},E=({control:a,action:b,said:c})=>{v(a),z(void 0),C(async()=>{let a=await b();v(void 0),a.isOk?(o(void 0),B(c)):z(a.message)})};if(void 0!==n){let{delivery:c,inBasket:h}=n,l=c.question?.id;return(0,b.jsx)(s,{delivery:c,isDoneOnSeeing:n.isDoneOnSeeing,meetingHref:void 0===c.meetingId?void 0:(0,d.f)({fleetId:a,meetingId:c.meetingId}),basketHref:(0,e.f)(k.H,a),inBasket:h,note:p,working:u,failure:y,onNoteChange:q,onAnswer:b=>{E({control:void 0===b?{kind:"note"}:{kind:"option",option:b},action:()=>(0,f.f)({fleet:a,deliveryId:c.deliveryId,input:{questionId:c.question?.id,option:b,note:p}}),said:`Your answer went to ${c.from}.`})},onPut:b=>{E({control:{kind:"option",option:b},action:()=>(0,i.f)({fleet:a,deliveryId:c.deliveryId,option:b,note:p}),said:`Option ${String(b)} is in the basket, not sent: ${c.from} receives it when you send the basket.`})},onRemove:()=>{void 0!==l&&E({control:{kind:"remove"},action:()=>(0,j.f)(a,l),said:`Your answer to “${c.title}” is out of the basket; the question still waits on you.`})},onDone:()=>{E({control:{kind:"done"},action:()=>(0,g.f)({fleet:a,deliveryId:c.deliveryId}),said:`Done with “${c.title}”.`})},onFinishStep:b=>{E({control:{kind:b},action:()=>(0,g.f)({fleet:a,deliveryId:c.deliveryId,step:{outcome:b,note:p}}),said:"done"===b?`Done: ${c.from} is told “${c.title}” is done.`:`Cannot: ${c.from} is told you cannot do “${c.title}”.`})},onOpen:a=>{D({deliveryId:a,job:"decide"})},onBack:()=>{o(void 0)}},c.deliveryId)}return(0,b.jsxs)("div",{className:"grid gap-4",children:[void 0===A?null:(0,b.jsx)(m.f,{message:A,isFailure:!1}),l({open:D,openingId:r,failure:w})]})}],91777)},21938,a=>{var b=a.i(87924),c=a.i(50944),d=a.i(72131);a.s(["RecordUnreadable",0,function({message:a}){let e=(0,c.useRouter)();return(0,d.useEffect)(()=>{let a=setInterval(()=>{e.refresh()},1e4);return()=>{clearInterval(a)}},[e]),(0,b.jsxs)("section",{role:"alert","data-testid":"bridge-unreadable",className:"flex flex-wrap items-center gap-3 rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:[(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"font-semibold",children:"The record cannot be read now"}),(0,b.jsxs)("span",{className:"text-caption",children:[a," Nothing was opened or answered, so nothing is lost: Bridge tries again in 10 s."]})]}),(0,b.jsx)("button",{type:"button","data-testid":"bridge-try-now",onClick:()=>{e.refresh()},className:"inline-flex h-9 items-center rounded-md border border-border bg-card px-4 text-card-foreground hover:bg-accent",children:"Try now"})]})}])},52779,12712,96070,39098,44783,a=>{a.s(["f",0,function(a){let b=new URLSearchParams({fleet:a.fleetId,...void 0===a.cursor?{}:{cursor:a.cursor}});return`/meetings/${encodeURIComponent(a.meetingId)}?${b.toString()}`}],52779);var b=a.i(5050);let c=(0,b.createServerReference)("40edad5bc6caa482ec57bdf504a9545c453e286344",b.callServer,void 0,b.findSourceMapURL,"answerDelivery");a.s(["f",0,c],12712);let d=(0,b.createServerReference)("409343274cfb1997696f97d13e70128feeaadc81b0",b.callServer,void 0,b.findSourceMapURL,"doneDelivery");a.s(["f",0,d],96070);let e=(0,b.createServerReference)("6013ebd954e4b9b9c2c4a85c94c4fc1f4786952324",b.callServer,void 0,b.findSourceMapURL,"openDelivery");a.s(["f",0,e],39098);let f=(0,b.createServerReference)("408a5fadf58977f6b55557119e3557d884605ebbcf",b.callServer,void 0,b.findSourceMapURL,"putInBasket");a.s(["f",0,f],44783)}]})();
2
+
3
+ //# sourceMappingURL=web_features_1je122n6carea._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/bridge/hooks/data%3A295c5e%20%3Ctext/javascript%3E","../../../../../web/features/bridge/state/item-focus.tsx","../../../../../web/features/bridge/ui/delivery-card.tsx","../../../../../web/features/bridge/state/record-unreadable.tsx","../../../../../web/features/meeting/paths.ts","../../../../../web/features/bridge/hooks/data%3Ae3e416%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A65d48d%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A78203e%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3Aeb01f1%20%3Ctext/javascript%3E"],"sourcesContent":["/* __next_internal_action_entry_do_not_use__ [{\"60573c940559fe36ec3489b04906d9407ddf5822ef\":{\"name\":\"removeFromBasket\"}},\"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_4=/*#__PURE__*/createServerReference(\"60573c940559fe36ec3489b04906d9407ddf5822ef\",callServer,void 0,findSourceMapURL,\"removeFromBasket\");export{$$RSC_SERVER_ACTION_4 as removeFromBasket};","'use client';\n\nimport { useState, useTransition, type ReactNode } from 'react';\n\nimport { meetingPathOf } from '../../meeting/paths';\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { answerDelivery, doneDelivery, openDelivery, putInBasket, removeFromBasket, type ActionOutcome } from '../hooks/bridge-actions';\nimport { BRIDGE_BASKET_PATH } from '../paths';\nimport type { FocusedDelivery } from '../services/deliveries';\nimport type { HomeItem } from '../services/items';\nimport { DeliveryCard, type DeliveryControl, type InBasket } from '../ui/delivery-card';\nimport { Notice } from '../ui/notice';\n\n/** An item to open: by its delivery, with its job, and the answer to it in the basket, if any. */\nexport interface ToOpen {\n readonly deliveryId: string;\n readonly job: HomeItem['job'];\n readonly inBasket?: InBasket | null;\n}\n\n/** What a list of items gets to open one: the press, the one opening, and why one could not be opened. */\nexport interface ItemOpening {\n readonly open: (item: ToOpen) => void;\n readonly openingId: string | undefined;\n readonly failure: { deliveryId: string; message: string } | undefined;\n}\n\n/**\n * A list of Bridge's items with one in focus at a time. Opening is the\n * person's own act, so it is a press, never a link: the gateway acknowledges\n * the item for them, and it is shown whole. An alert or a notice seen is\n * done at once (CC16), so it shows with no answer to give, as does a\n * question its asker withdrew or replaced; a replaced one opens its\n * replacement. A step ends done or cannot with the note, sent at once,\n * never through the basket (CC23). A question's answer goes in the basket (CC24), and comes\n * out of it there. Answering, being done or putting in the basket says so\n * in place, and the page reads itself again.\n */\nexport function ItemFocus({ fleetId, children }: { fleetId: string; children: (opening: ItemOpening) => ReactNode }) {\n const [focus, setFocus] = useState<{ delivery: FocusedDelivery; isDoneOnSeeing: boolean; inBasket: InBasket | null } | undefined>();\n const [note, setNote] = useState('');\n const [openingId, setOpeningId] = useState<string | undefined>();\n const [working, setWorking] = useState<DeliveryControl | undefined>();\n const [openFailure, setOpenFailure] = useState<{ deliveryId: string; message: string } | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [done, setDone] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n\n const open = (item: ToOpen) => {\n setOpeningId(item.deliveryId);\n setOpenFailure(undefined);\n setDone(undefined);\n startTransition(async () => {\n const outcome = await openDelivery(fleetId, item.deliveryId);\n setOpeningId(undefined);\n if (outcome.isOk) {\n const inBasket = item.inBasket ?? null;\n setFocus({ delivery: outcome.value, isDoneOnSeeing: item.job === 'stay-aware', inBasket });\n setNote(inBasket?.note ?? '');\n setFailure(undefined);\n } else {\n setOpenFailure({ deliveryId: item.deliveryId, message: outcome.message });\n }\n });\n };\n\n const settle = ({ control, action, said }: { control: DeliveryControl; action: () => Promise<ActionOutcome<undefined>>; said: string }) => {\n setWorking(control);\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await action();\n setWorking(undefined);\n if (outcome.isOk) {\n setFocus(undefined);\n setDone(said);\n } else {\n setFailure(outcome.message);\n }\n });\n };\n\n if (focus !== undefined) {\n const { delivery, inBasket } = focus;\n const questionId = delivery.question?.id;\n return (\n <DeliveryCard\n key={delivery.deliveryId}\n delivery={delivery}\n isDoneOnSeeing={focus.isDoneOnSeeing}\n meetingHref={delivery.meetingId === undefined ? undefined : meetingPathOf({ fleetId, meetingId: delivery.meetingId })}\n basketHref={inFleet(BRIDGE_BASKET_PATH, fleetId)}\n inBasket={inBasket}\n note={note}\n working={working}\n failure={failure}\n onNoteChange={setNote}\n onAnswer={(option) => { settle({ control: option === undefined ? { kind: 'note' } : { kind: 'option', option }, action: () => answerDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId, input: { questionId: delivery.question?.id, option, note } }), said: `Your answer went to ${delivery.from}.` }); }\n }\n onPut={(option) => { settle({ control: { kind: 'option', option }, action: () => putInBasket({ fleet: fleetId, deliveryId: delivery.deliveryId, option, note }), said: `Option ${String(option)} is in the basket, not sent: ${delivery.from} receives it when you send the basket.` }); }}\n onRemove={() => {\n if (questionId !== undefined) {\n settle({ control: { kind: 'remove' }, action: () => removeFromBasket(fleetId, questionId), said: `Your answer to “${delivery.title}” is out of the basket; the question still waits on you.` });\n }\n }}\n onDone={() => { settle({ control: { kind: 'done' }, action: () => doneDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId }), said: `Done with “${delivery.title}”.` }); }}\n onFinishStep={(outcome) => {\n settle({\n control: { kind: outcome },\n action: () => doneDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId, step: { outcome, note } }),\n said: outcome === 'done' ? `Done: ${delivery.from} is told “${delivery.title}” is done.` : `Cannot: ${delivery.from} is told you cannot do “${delivery.title}”.`,\n });\n }}\n onOpen={(deliveryId) => { open({ deliveryId, job: 'decide' }); }}\n onBack={() => { setFocus(undefined); }}\n />\n );\n }\n return (\n <div className=\"grid gap-4\">\n {done === undefined ? null : <Notice message={done} isFailure={false} />}\n {children({ open, openingId, failure: openFailure })}\n </div>\n );\n}\n","import { useState } from 'react';\n\nimport type { Question } from '@aeolus-fleet/common';\n\nimport type { FocusedDelivery, Stale, StepView } from '../services/deliveries';\nimport { ActionButton } from './action-button';\nimport { Notice } from './notice';\n\n/** Which of the card's controls is working: an option of the question put in the basket, its entry removed, the note alone, done, or a step's cannot. */\nexport type DeliveryControl = { kind: 'option'; option: number } | { kind: 'remove' } | { kind: 'note' } | { kind: 'done' } | { kind: 'cannot' };\n\n/** How the person ends a step: they did it, or cannot. */\nexport type StepOutcome = 'done' | 'cannot';\n\n/** The answer to a question in the basket (Bridge, section 9): its option and its note, none when the person wrote none. */\nexport interface InBasket {\n readonly option: number;\n readonly note: string | null;\n}\n\n/** What a question in the basket says: in it, not sent, with its note; picking another option changes it. */\nfunction InBasketNotice({ inBasket, basketHref, isRemoving, isWorking, onRemove }: { inBasket: InBasket; basketHref: string; isRemoving: boolean; isWorking: boolean; onRemove: () => void }) {\n return (\n <div data-testid=\"bridge-in-basket\" className=\"grid gap-2 rounded-md border border-border bg-muted p-3\">\n <span className=\"font-medium\">In the basket: option {inBasket.option}, not sent</span>\n {inBasket.note === null ? null : <span className=\"text-caption\">“{inBasket.note}”</span>}\n <span className=\"text-caption text-muted-foreground\">Pick another option to change it.</span>\n <div className=\"flex flex-wrap gap-2\">\n <a data-testid=\"bridge-basket-open\" href={basketHref} className=\"inline-flex h-9 items-center rounded-md border border-border px-4 hover:bg-accent\">\n Open the basket\n </a>\n <ActionButton data-testid=\"bridge-basket-remove\" isPending={isRemoving} pendingLabel=\"Removing...\" disabled={isWorking} onClick={onRemove}>\n Remove\n </ActionButton>\n </div>\n </div>\n );\n}\n\n/** The options of a question, one to choose, the asker's pick marked; none to choose once it is stale. */\nfunction QuestionOptions({ question, chosen, isStale, onChoose }: { question: Question; chosen: number | undefined; isStale: boolean; onChoose: (option: number) => void }) {\n return (\n <fieldset className={`grid gap-2 ${isStale ? 'opacity-60' : ''}`} disabled={isStale}>\n <legend className=\"sr-only\">Options</legend>\n {question.options.map((option) => (\n <label key={option.key} className={`flex items-start gap-3 rounded-md border p-3 ${option.key === chosen && !isStale ? 'border-ring bg-accent' : 'border-border'}`}>\n <input type=\"radio\" name=\"option\" value={option.key} checked={option.key === chosen && !isStale} onChange={() => { onChoose(option.key); }} className=\"mt-1\" />\n <span className=\"grid flex-1 gap-0.5\">\n <span className=\"font-medium\">\n {option.key}. {option.label}\n </span>\n {option.detail === '' ? null : <span className=\"text-caption text-muted-foreground\">{option.detail}</span>}\n </span>\n {option.key === question.pick.option ? <span className=\"rounded-sm border border-border px-1.5 text-caption\">Their pick</span> : null}\n </label>\n ))}\n </fieldset>\n );\n}\n\n/** What a stale question says: withdrawn, done; or replaced, with the replacement to open. */\nfunction StaleNotice({ stale, from, onOpen }: { stale: Stale; from: string; onOpen: (deliveryId: string) => void }) {\n const { replacementId } = stale;\n return (\n <div data-testid=\"bridge-stale\" className=\"grid gap-2 rounded-md border border-border bg-muted p-3\">\n <span>{stale.kind === 'withdrawn' ? `Withdrawn by ${from}. Nothing to answer: it is done.` : `Replaced by ${from}. Answer the new question.`}</span>\n {replacementId === null ? null : (\n <ActionButton data-testid=\"bridge-replacement\" className=\"justify-self-start\" isPending={false} pendingLabel=\"Opening...\" onClick={() => { onOpen(replacementId); }}>\n Open the new question\n </ActionButton>\n )}\n </div>\n );\n}\n\n/** What a step asks: why, and the link where it is done, shown with its host and opened only by the person's own press (Bridge, section 9). */\nfunction StepAsked({ step }: { step: StepView }) {\n return (\n <>\n <p className=\"whitespace-pre-wrap\">{step.why}</p>\n {step.link === undefined ? null : (\n <a data-testid=\"bridge-step-link\" href={step.link.href} target=\"_blank\" rel=\"noopener noreferrer\" className=\"inline-flex h-9 items-center justify-self-start rounded-md border border-border px-4 hover:bg-accent\">\n Open on {step.link.host}\n </a>\n )}\n </>\n );\n}\n\n/** A step's note field, shown before Done or Cannot is pressed, and the two: the outcome goes to the asker at once, with the note (CC14, CC23). */\nfunction StepControls({ from, note, working, failure, onNoteChange, onFinish }: { from: string; note: string; working: DeliveryControl | undefined; failure: string | undefined; onNoteChange: (note: string) => void; onFinish: (outcome: StepOutcome) => void }) {\n const isWorking = working !== undefined;\n return (\n <>\n <label className=\"grid gap-1\">\n <span>Note</span>\n <textarea\n data-testid=\"bridge-note\"\n rows={2}\n value={note}\n onChange={(event) => { onNoteChange(event.target.value); }}\n placeholder=\"Optional, goes with Done or Cannot\"\n className=\"rounded-md border border-input bg-background p-2\"\n />\n </label>\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n <div className=\"grid gap-1\">\n <div className=\"flex flex-wrap gap-2\">\n <ActionButton data-testid=\"bridge-step-done\" variant=\"primary\" isPending={working?.kind === 'done'} pendingLabel=\"Sending...\" disabled={isWorking} onClick={() => { onFinish('done'); }}>\n Done\n </ActionButton>\n <ActionButton data-testid=\"bridge-step-cannot\" isPending={working?.kind === 'cannot'} pendingLabel=\"Sending...\" disabled={isWorking} onClick={() => { onFinish('cannot'); }}>\n Cannot\n </ActionButton>\n </div>\n <span className=\"text-caption text-muted-foreground\">{from} is told at once, with your note.</span>\n </div>\n </>\n );\n}\n\n/**\n * One item in focus (design B, Signal). A question opens with the asker's\n * pick chosen (CC11), or the option in the basket; its one button puts that\n * option in the basket with the note, if any, and sends nothing (CC24): the\n * person sends the basket. A step (CC14) shows why and its link, then its\n * note field before Done and Cannot, each sending its outcome at once with\n * the note. Any other item may get a note as its answer, and may\n * be done with; one of a meeting leads to the meeting. An alert or a notice\n * is done once seen (Bridge, CC16): it asks nothing more. So is a question\n * its asker withdrew or replaced: stale, nothing to send, a replaced one\n * leading to its replacement.\n */\nexport function DeliveryCard({\n delivery,\n isDoneOnSeeing,\n meetingHref,\n basketHref,\n inBasket,\n note,\n working,\n failure,\n onNoteChange,\n onAnswer,\n onPut,\n onRemove,\n onDone,\n onFinishStep,\n onOpen,\n onBack,\n}: {\n delivery: FocusedDelivery;\n /** Whether seeing it was all it asked, so it is done: an alert or a notice. */\n isDoneOnSeeing: boolean;\n /** The page of the meeting it belongs to, if it belongs to one. */\n meetingHref: string | undefined;\n /** Bridge's basket. */\n basketHref: string;\n /** The answer to the question in the basket, if any. */\n inBasket: InBasket | null;\n note: string;\n working: DeliveryControl | undefined;\n failure: string | undefined;\n onNoteChange: (note: string) => void;\n /** Answers any item but a question with the note. */\n onAnswer: (option: number | undefined) => void;\n /** Puts the option chosen of a question in the basket, with the note. */\n onPut: (option: number) => void;\n /** Takes the question's answer out of the basket. */\n onRemove: () => void;\n onDone: () => void;\n /** Ends a step done or cannot, with the note. */\n onFinishStep: (outcome: StepOutcome) => void;\n /** Opens another item: a replaced question's replacement. */\n onOpen: (deliveryId: string) => void;\n onBack: () => void;\n}) {\n const { question, step, stale } = delivery;\n const [chosen, setChosen] = useState(inBasket?.option ?? question?.pick.option);\n const isWorking = working !== undefined;\n return (\n <section data-testid=\"bridge-delivery\" className=\"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm\">\n <span className=\"text-caption text-muted-foreground\">\n {delivery.from} · {new Date(delivery.sentAt).toUTCString()}\n </span>\n <h2 className=\"text-heading font-semibold\">{question?.title ?? delivery.title}</h2>\n {meetingHref === undefined ? null : (\n <a data-testid=\"bridge-meeting\" href={meetingHref} className=\"inline-flex h-9 items-center justify-self-start rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover\">\n Go to the meeting\n </a>\n )}\n {step !== undefined ? (\n <StepAsked step={step} />\n ) : question === undefined ? (\n <pre className=\"whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-caption\">{delivery.body}</pre>\n ) : (\n <>\n <p className=\"whitespace-pre-wrap\">{question.context}</p>\n <QuestionOptions question={question} chosen={chosen} isStale={stale !== null} onChoose={setChosen} />\n <p className=\"text-caption text-muted-foreground\">\n {delivery.from} picks {question.pick.option}: {question.pick.why}\n </p>\n </>\n )}\n {stale === null ? null : <StaleNotice stale={stale} from={delivery.from} onOpen={onOpen} />}\n {inBasket === null || stale !== null ? null : <InBasketNotice inBasket={inBasket} basketHref={basketHref} isRemoving={working?.kind === 'remove'} isWorking={isWorking} onRemove={onRemove} />}\n {isDoneOnSeeing ? (\n <p data-testid=\"bridge-seen-done\" className=\"text-muted-foreground\">\n Seen now, so done: it asks nothing more.\n </p>\n ) : stale !== null ? null : step !== undefined ? (\n <StepControls from={delivery.from} note={note} working={working} failure={failure} onNoteChange={onNoteChange} onFinish={onFinishStep} />\n ) : (\n <>\n <label className=\"grid gap-1\">\n <span>{question === undefined ? 'Your answer' : 'Note'}</span>\n <textarea\n data-testid=\"bridge-note\"\n rows={2}\n value={note}\n onChange={(event) => { onNoteChange(event.target.value); }}\n placeholder={question === undefined ? '' : 'Optional, goes with the answer'}\n className=\"rounded-md border border-input bg-background p-2\"\n />\n </label>\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n {question === undefined ? (\n <div className=\"flex flex-wrap gap-2\">\n <ActionButton data-testid=\"bridge-answer\" variant=\"primary\" isPending={working?.kind === 'note'} pendingLabel=\"Sending...\" disabled={isWorking} onClick={() => { onAnswer(undefined); }}>\n Answer\n </ActionButton>\n <ActionButton data-testid=\"bridge-done\" isPending={working?.kind === 'done'} pendingLabel=\"Marking done...\" disabled={isWorking} onClick={onDone}>\n Done\n </ActionButton>\n </div>\n ) : chosen === undefined ? null : (\n <div className=\"grid gap-1\">\n <ActionButton data-testid=\"bridge-put-in-basket\" variant=\"primary\" className=\"justify-self-start\" isPending={working?.kind === 'option'} pendingLabel=\"Putting in the basket...\" disabled={isWorking} onClick={() => { onPut(chosen); }}>\n Put option {chosen} in the basket\n </ActionButton>\n <span className=\"text-caption text-muted-foreground\">Nothing is sent yet. {delivery.from} receives this answer when you send the basket.</span>\n </div>\n )}\n </>\n )}\n <div className=\"flex flex-wrap gap-2\">\n <button type=\"button\" onClick={onBack} disabled={isWorking} className=\"inline-flex h-9 items-center rounded-md px-4 text-muted-foreground hover:bg-accent disabled:opacity-70\">\n Back\n </button>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** How long Bridge waits before it reads the record again by itself. */\nconst TRY_AGAIN_MS = 10_000;\n\n/**\n * The record cannot be read now (Bridge, section 9: core does not answer):\n * why, that nothing is lost, since nothing was acknowledged, and the page\n * reads itself again every 10 seconds, or at once on Try now.\n */\nexport function RecordUnreadable({ message }: { message: string }) {\n const router = useRouter();\n useEffect(() => {\n const again = setInterval(() => {\n router.refresh();\n }, TRY_AGAIN_MS);\n return () => {\n clearInterval(again);\n };\n }, [router]);\n return (\n <section role=\"alert\" data-testid=\"bridge-unreadable\" className=\"flex flex-wrap items-center gap-3 rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"font-semibold\">The record cannot be read now</span>\n <span className=\"text-caption\">\n {message} Nothing was opened or answered, so nothing is lost: Bridge tries again in 10 s.\n </span>\n </span>\n <button type=\"button\" data-testid=\"bridge-try-now\" onClick={() => { router.refresh(); }} className=\"inline-flex h-9 items-center rounded-md border border-border bg-card px-4 text-card-foreground hover:bg-accent\">\n Try now\n </button>\n </section>\n );\n}\n","/** Where a meeting's page is, for server and client code alike. */\n\n/** The meeting page's address, before the meeting's id. */\nexport const MEETINGS_PATH = '/meetings';\n\n/** The address of a meeting's page in a fleet, at the page of contributions after the cursor, if one is given. */\nexport function meetingPathOf(meeting: { fleetId: string; meetingId: string; cursor?: string }): string {\n const query = new URLSearchParams({ fleet: meeting.fleetId, ...(meeting.cursor === undefined ? {} : { cursor: meeting.cursor }) });\n return `${MEETINGS_PATH}/${encodeURIComponent(meeting.meetingId)}?${query.toString()}`;\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40edad5bc6caa482ec57bdf504a9545c453e286344\":{\"name\":\"answerDelivery\"}},\"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_2=/*#__PURE__*/createServerReference(\"40edad5bc6caa482ec57bdf504a9545c453e286344\",callServer,void 0,findSourceMapURL,\"answerDelivery\");export{$$RSC_SERVER_ACTION_2 as answerDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"409343274cfb1997696f97d13e70128feeaadc81b0\":{\"name\":\"doneDelivery\"}},\"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_6=/*#__PURE__*/createServerReference(\"409343274cfb1997696f97d13e70128feeaadc81b0\",callServer,void 0,findSourceMapURL,\"doneDelivery\");export{$$RSC_SERVER_ACTION_6 as doneDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"6013ebd954e4b9b9c2c4a85c94c4fc1f4786952324\":{\"name\":\"openDelivery\"}},\"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_1=/*#__PURE__*/createServerReference(\"6013ebd954e4b9b9c2c4a85c94c4fc1f4786952324\",callServer,void 0,findSourceMapURL,\"openDelivery\");export{$$RSC_SERVER_ACTION_1 as openDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"408a5fadf58977f6b55557119e3557d884605ebbcf\":{\"name\":\"putInBasket\"}},\"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_3=/*#__PURE__*/createServerReference(\"408a5fadf58977f6b55557119e3557d884605ebbcf\",callServer,void 0,findSourceMapURL,\"putInBasket\");export{$$RSC_SERVER_ACTION_3 as putInBasket};"],"names":["$$RSC_SERVER_ACTION_4","InBasketNotice","inBasket","basketHref","isRemoving","isWorking","onRemove","className","option","note","href","isPending","pendingLabel","disabled","onClick","QuestionOptions","question","chosen","isStale","onChoose","options","map","key","type","name","value","checked","onChange","label","detail","pick","StaleNotice","stale","from","onOpen","replacementId","kind","StepAsked","step","why","link","undefined","target","rel","host","StepControls","working","failure","onNoteChange","onFinish","rows","event","placeholder","message","isFailure","variant","DeliveryCard","delivery","isDoneOnSeeing","meetingHref","onAnswer","onPut","onDone","onFinishStep","onBack","setChosen","Date","sentAt","toUTCString","title","body","context","TRY_AGAIN_MS","RecordUnreadable","router","again","setInterval","refresh","clearInterval","role","MEETINGS_PATH","meetingPathOf","meeting","query","URLSearchParams","fleet","fleetId","cursor","encodeURIComponent","meetingId","toString"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[88276,a=>{var b=a.i(66283);async function c(a){try{return await a}catch(a){if("FORBIDDEN"===(0,b.U)(a))return;throw a}}async function d(a){try{return{kind:"read",value:await a}}catch(c){let a=(0,b.U)(c);if("FORBIDDEN"===a)return{kind:"none"};if("UNAUTHORIZED"===a)throw c;return{kind:"unreadable",message:void 0===a?"The gateway did not answer.":(0,b.s)(c)}}}async function e(a){let b=await d(a.people.basketCount.query());return"read"===b.kind?b.value.count:0}async function f(a){let[b,d]=await Promise.all([c(a.requests.toDecide.query()),c(a.requests.mine.query())]);return{toDecide:b,mine:d}}async function g(a){let[b,d,e]=await Promise.all([c(a.people.routing.query()),c(a.people.wakeChannels.query()),c(a.slack.link.query())]);return{routing:b,wakeChannels:d,slackLink:e}}async function h(a,b){let d=await c(a.requests.toDecide.query())??[];return{request:d.find(a=>a.requestId===b),toDecide:d}}a.s(["M",0,function(a){return d(a.people.basket.query())},"W",0,e,"I",0,function(a){return d(a.people.home.query())},"X",0,g,"n",0,f,"x",0,function(a,b){return d(a.people.record.query({cursor:b}))},"F",0,h])},31780,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveRefresh() from the server but LiveRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/bridge/state/live-refresh.tsx","LiveRefresh");a.s(["LiveRefresh",0,b])},60947,a=>{var b=a.i(31780);a.n(b)},18734,a=>{var b=a.i(7997),c=a.i(94705);let d={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"};function e({status:a}){return(0,b.jsx)("span",{className:`inline-flex shrink-0 items-center rounded-full border px-2 py-0.5 text-caption ${d[a.tone]}`,children:a.label})}function f({name:a}){return(0,b.jsx)("span",{"aria-hidden":"true",className:"inline-flex size-8 shrink-0 items-center justify-center rounded-md bg-secondary font-semibold text-secondary-foreground",children:a.slice(0,1).toUpperCase()})}function g({request:a,now:d}){let h=(0,c.M)(a);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f,{name:h}),(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"truncate",children:h}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:(0,c.E)(a)})]}),(0,b.jsx)(e,{status:(0,c.T)(a,d)})]})}a.s(["f",0,function({title:a,requests:c,now:d,hrefOf:e,currentId:f}){return(0,b.jsxs)("section",{className:"grid gap-2",children:[(0,b.jsxs)("h2",{className:"text-section font-semibold",children:[a," · ",c.length]}),c.map(a=>void 0===e?(0,b.jsx)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:(0,b.jsx)(g,{request:a,now:d})},a.requestId):(0,b.jsx)("a",{href:e(a),"aria-current":a.requestId===f?"true":void 0,"data-testid":"bridge-request",className:"flex items-center gap-3 rounded-md border border-border bg-card p-3 hover:bg-accent aria-[current=true]:border-ring",children:(0,b.jsx)(g,{request:a,now:d})},a.requestId))]})}],18734)},49144,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"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"])},22126,a=>{var b=a.i(7997),c=a.i(49144);a.s(["f",0,function(){return(0,b.jsxs)("section",{className:c.r,"data-testid":"no-sign-in",children:[(0,b.jsx)("h2",{className:"text-heading font-semibold",children:"Nobody signs in here"}),(0,b.jsx)("p",{className:"mt-2 text-muted-foreground",children:"This gateway signs no one in to its pages: it is no app at pagasae."})]})}])}]})();
2
+
3
+ //# sourceMappingURL=web_features_1n1hy3nwha2vi._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/bridge/hooks/read-bridge.ts","../../../../../web/features/bridge/state/live-refresh.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/bridge/state/live-refresh.tsx%22%20%7D","../../../../../web/features/bridge/ui/requests-list.tsx","../../../../../web/features/bridge/ui/status-badge.tsx","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/sign-in/ui/no-sign-in.tsx"],"sourcesContent":["/**\n * What Bridge's pages show, read through the gateway's API as the signed-in\n * account (docs/design/bridge; decision 0056): Bridge home, a page of the\n * record for Done, Bridge's settings: the requests to decide for an\n * approver and the requests they asked, and where things show: each job's\n * places, the channels that wake the person and their Slack link. A part the\n * API refuses the account (FORBIDDEN) is not theirs to see, so it is left\n * out.\n */\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { refusalCodeOf, refusalMessageOf } from '../../../lib/gateway-api/page-api';\nimport type { WakeChannels } from '../services/deliveries';\nimport type { BasketView } from '../services/basket';\nimport type { BridgeHome, RecordPage } from '../services/items';\nimport type { ShownRequest } from '../services/requests';\nimport type { RoutingView } from '../services/routing';\n\n/**\n * What Bridge read of the person ship: what it answered; none, for an account\n * with no person ship, on which nothing waits; or that the record cannot be\n * read now, saying why. Nothing was acknowledged then, so nothing is lost.\n */\nexport type BridgeRead<T> = { kind: 'read'; value: T } | { kind: 'none' } | { kind: 'unreadable'; message: string };\n\nexport interface BridgeSettingsParts {\n readonly toDecide: readonly ShownRequest[] | undefined;\n readonly mine: readonly ShownRequest[] | undefined;\n}\n\n/** Where things show (Bridge, section 8): each job's places, and the places' own state. */\nexport interface BridgeRoutingParts {\n readonly routing: RoutingView | undefined;\n /** The channels that can wake the person when something waits for their person ship (wake a person, W8). */\n readonly wakeChannels: WakeChannels | undefined;\n /** The person's Slack link (gateway scopes 9.6); none while the fleet's own bot is not in Slack. */\n readonly slackLink: SlackLink | null | undefined;\n}\n\n/** A person's Slack link as the gateway answers it: the workspace, and the Slack name linked, none while unlinked. */\nexport type SlackLink = NonNullable<Awaited<ReturnType<GatewayApi['slack']['link']['query']>>>;\n\nasync function unlessForbidden<T>(call: Promise<T>): Promise<T | undefined> {\n try {\n return await call;\n } catch (error) {\n if (refusalCodeOf(error) === 'FORBIDDEN') {\n return undefined;\n }\n throw error;\n }\n}\n\n/** A read of the person ship: a sign-in that ended is thrown on, so the page sends the person to sign in again. */\nasync function personRead<T>(call: Promise<T>): Promise<BridgeRead<T>> {\n try {\n return { kind: 'read', value: await call };\n } catch (error) {\n const code = refusalCodeOf(error);\n if (code === 'FORBIDDEN') {\n return { kind: 'none' };\n }\n if (code === 'UNAUTHORIZED') {\n throw error;\n }\n return { kind: 'unreadable', message: code === undefined ? 'The gateway did not answer.' : refusalMessageOf(error) };\n }\n}\n\nexport function readBridgeHome(api: GatewayApi): Promise<BridgeRead<BridgeHome>> {\n return personRead(api.people.home.query());\n}\n\nexport function readBasket(api: GatewayApi): Promise<BridgeRead<BasketView>> {\n return personRead(api.people.basket.query());\n}\n\n/** How many answers the basket holds, for the navigation: none for an account with no person ship, or while it cannot be read now. */\nexport async function readBasketCount(api: GatewayApi): Promise<number> {\n const read = await personRead(api.people.basketCount.query());\n return read.kind === 'read' ? read.value.count : 0;\n}\n\nexport function readRecordPage(api: GatewayApi, cursor: string | null): Promise<BridgeRead<RecordPage>> {\n return personRead(api.people.record.query({ cursor }));\n}\n\nexport async function readBridgeSettings(api: GatewayApi): Promise<BridgeSettingsParts> {\n const [toDecide, mine] = await Promise.all([unlessForbidden(api.requests.toDecide.query()), unlessForbidden(api.requests.mine.query())]);\n return { toDecide, mine };\n}\n\nexport async function readBridgeRouting(api: GatewayApi): Promise<BridgeRoutingParts> {\n const [routing, wakeChannels, slackLink] = await Promise.all([unlessForbidden(api.people.routing.query()), unlessForbidden(api.people.wakeChannels.query()), unlessForbidden(api.slack.link.query())]);\n return { routing, wakeChannels, slackLink };\n}\n\n/** One request to decide, undefined once it no longer waits, and the queue beside it. */\nexport async function readRequestToDecide(api: GatewayApi, requestId: string): Promise<{ request: ShownRequest | undefined; toDecide: readonly ShownRequest[] }> {\n const toDecide = (await unlessForbidden(api.requests.toDecide.query())) ?? [];\n return { request: toDecide.find((open) => open.requestId === requestId), toDecide };\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const LiveRefresh = registerClientReference(\n function() { throw new Error(\"Attempted to call LiveRefresh() from the server but LiveRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/bridge/state/live-refresh.tsx\",\n \"LiveRefresh\",\n);\n","import { requestStatus, subjectKind, subjectName, type ShownRequest } from '../services/requests';\nimport { StatusBadge } from './status-badge';\n\nfunction PartyMark({ name }: { name: string }) {\n return (\n <span aria-hidden=\"true\" className=\"inline-flex size-8 shrink-0 items-center justify-center rounded-md bg-secondary font-semibold text-secondary-foreground\">\n {name.slice(0, 1).toUpperCase()}\n </span>\n );\n}\n\nfunction RequestRow({ request, now }: { request: ShownRequest; now: Date }) {\n const name = subjectName(request);\n return (\n <>\n <PartyMark name={name} />\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate\">{name}</span>\n <span className=\"text-caption text-muted-foreground\">{subjectKind(request)}</span>\n </span>\n <StatusBadge status={requestStatus(request, now)} />\n </>\n );\n}\n\n/** Requests in a list: each a link to decide it, or, for the person's own, its state alone. */\nexport function RequestsList({ title, requests, now, hrefOf, currentId }: { title: string; requests: readonly ShownRequest[]; now: Date; hrefOf?: (request: ShownRequest) => string; currentId?: string }) {\n return (\n <section className=\"grid gap-2\">\n <h2 className=\"text-section font-semibold\">\n {title} · {requests.length}\n </h2>\n {requests.map((request) =>\n hrefOf === undefined ? (\n <div key={request.requestId} className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3\">\n <RequestRow request={request} now={now} />\n </div>\n ) : (\n <a\n key={request.requestId}\n href={hrefOf(request)}\n aria-current={request.requestId === currentId ? 'true' : undefined}\n data-testid=\"bridge-request\"\n className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3 hover:bg-accent aria-[current=true]:border-ring\"\n >\n <RequestRow request={request} now={now} />\n </a>\n ),\n )}\n </section>\n );\n}\n","import type { Status, Tone } from '../services/requests';\n\nconst TONES: Record<Tone, string> = {\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n active: 'border-tone-active-border bg-tone-active-bg text-tone-active-fg',\n ok: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n attention: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n ended: 'border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg',\n};\n\n/** A status in its tone, always with its words, so it never rests on colour alone. */\nexport function StatusBadge({ status }: { status: Status }) {\n return <span className={`inline-flex shrink-0 items-center rounded-full border px-2 py-0.5 text-caption ${TONES[status.tone]}`}>{status.label}</span>;\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","import { CARD } from '../../forms/ui/look';\n\n/** A gateway that is no app at pagasae signs no one in to its pages (header design H5). */\nexport function NoSignIn() {\n return (\n <section className={CARD} data-testid=\"no-sign-in\">\n <h2 className=\"text-heading font-semibold\">Nobody signs in here</h2>\n <p className=\"mt-2 text-muted-foreground\">This gateway signs no one in to its pages: it is no app at pagasae.</p>\n </section>\n );\n}\n"],"names":["unlessForbidden","call","error","undefined","personRead","kind","value","code","message","readBridgeHome","api","people","home","query","readBasket","basket","readBasketCount","read","basketCount","count","readRecordPage","cursor","record","readBridgeSettings","toDecide","mine","Promise","all","requests","readBridgeRouting","routing","wakeChannels","slackLink","slack","link","readRequestToDecide","requestId","request","find","open","LiveRefresh","Error","TONES","waiting","active","ok","attention","ended","StatusBadge","status","className","tone","label","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","NoSignIn"],"mappings":"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","ignoreList":[1]}
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[53210,a=>{var b=a.i(5050);let c=(0,b.createServerReference)("60573c940559fe36ec3489b04906d9407ddf5822ef",b.callServer,void 0,b.findSourceMapURL,"removeFromBasket");a.s(["f",0,c])},91777,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(52779),e=a.i(25959),f=a.i(12712),g=a.i(96070),h=a.i(39098),i=a.i(44783),j=a.i(53210),k=a.i(16550),l=a.i(32043),m=a.i(10039);function n({inBasket:a,basketHref:c,isRemoving:d,isWorking:e,onRemove:f}){return(0,b.jsxs)("div",{"data-testid":"bridge-in-basket",className:"grid gap-2 rounded-md border border-border bg-muted p-3",children:[(0,b.jsxs)("span",{className:"font-medium",children:["In the basket: option ",a.option,", not sent"]}),null===a.note?null:(0,b.jsxs)("span",{className:"text-caption",children:["“",a.note,"”"]}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:"Pick another option to change it."}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)("a",{"data-testid":"bridge-basket-open",href:c,className:"inline-flex h-9 items-center rounded-md border border-border px-4 hover:bg-accent",children:"Open the basket"}),(0,b.jsx)(l.f,{"data-testid":"bridge-basket-remove",isPending:d,pendingLabel:"Removing...",disabled:e,onClick:f,children:"Remove"})]})]})}function o({question:a,chosen:c,isStale:d,onChoose:e}){return(0,b.jsxs)("fieldset",{className:`grid gap-2 ${d?"opacity-60":""}`,disabled:d,children:[(0,b.jsx)("legend",{className:"sr-only",children:"Options"}),a.options.map(f=>(0,b.jsxs)("label",{className:`flex items-start gap-3 rounded-md border p-3 ${f.key===c&&!d?"border-ring bg-accent":"border-border"}`,children:[(0,b.jsx)("input",{type:"radio",name:"option",value:f.key,checked:f.key===c&&!d,onChange:()=>{e(f.key)},className:"mt-1"}),(0,b.jsxs)("span",{className:"grid flex-1 gap-0.5",children:[(0,b.jsxs)("span",{className:"font-medium",children:[f.key,". ",f.label]}),""===f.detail?null:(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:f.detail})]}),f.key===a.pick.option?(0,b.jsx)("span",{className:"rounded-sm border border-border px-1.5 text-caption",children:"Their pick"}):null]},f.key))]})}function p({stale:a,from:c,onOpen:d}){let{replacementId:e}=a;return(0,b.jsxs)("div",{"data-testid":"bridge-stale",className:"grid gap-2 rounded-md border border-border bg-muted p-3",children:[(0,b.jsx)("span",{children:"withdrawn"===a.kind?`Withdrawn by ${c}. Nothing to answer: it is done.`:`Replaced by ${c}. Answer the new question.`}),null===e?null:(0,b.jsx)(l.f,{"data-testid":"bridge-replacement",className:"justify-self-start",isPending:!1,pendingLabel:"Opening...",onClick:()=>{d(e)},children:"Open the new question"})]})}function q({step:a}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"whitespace-pre-wrap",children:a.why}),void 0===a.link?null:(0,b.jsxs)("a",{"data-testid":"bridge-step-link",href:a.link.href,target:"_blank",rel:"noopener noreferrer",className:"inline-flex h-9 items-center justify-self-start rounded-md border border-border px-4 hover:bg-accent",children:["Open on ",a.link.host]})]})}function r({from:a,note:c,working:d,failure:e,onNoteChange:f,onFinish:g}){let h=void 0!==d;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Note"}),(0,b.jsx)("textarea",{"data-testid":"bridge-note",rows:2,value:c,onChange:a=>{f(a.target.value)},placeholder:"Optional, goes with Done or Cannot",className:"rounded-md border border-input bg-background p-2"})]}),void 0===e?null:(0,b.jsx)(m.f,{message:e,isFailure:!0}),(0,b.jsxs)("div",{className:"grid gap-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(l.f,{"data-testid":"bridge-step-done",variant:"primary",isPending:d?.kind==="done",pendingLabel:"Sending...",disabled:h,onClick:()=>{g("done")},children:"Done"}),(0,b.jsx)(l.f,{"data-testid":"bridge-step-cannot",isPending:d?.kind==="cannot",pendingLabel:"Sending...",disabled:h,onClick:()=>{g("cannot")},children:"Cannot"})]}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:[a," is told at once, with your note."]})]})]})}function s({delivery:a,isDoneOnSeeing:d,meetingHref:e,basketHref:f,inBasket:g,note:h,working:i,failure:j,onNoteChange:k,onAnswer:t,onPut:u,onRemove:v,onDone:w,onFinishStep:x,onOpen:y,onBack:z}){let{question:A,step:B,stale:C}=a,[D,E]=(0,c.useState)(g?.option??A?.pick.option),F=void 0!==i;return(0,b.jsxs)("section",{"data-testid":"bridge-delivery",className:"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm",children:[(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:[a.from," · ",new Date(a.sentAt).toUTCString()]}),(0,b.jsx)("h2",{className:"text-heading font-semibold",children:A?.title??a.title}),void 0===e?null:(0,b.jsx)("a",{"data-testid":"bridge-meeting",href:e,className:"inline-flex h-9 items-center justify-self-start rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Go to the meeting"}),void 0!==B?(0,b.jsx)(q,{step:B}):void 0===A?(0,b.jsx)("pre",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-caption",children:a.body}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"whitespace-pre-wrap",children:A.context}),(0,b.jsx)(o,{question:A,chosen:D,isStale:null!==C,onChoose:E}),(0,b.jsxs)("p",{className:"text-caption text-muted-foreground",children:[a.from," picks ",A.pick.option,": ",A.pick.why]})]}),null===C?null:(0,b.jsx)(p,{stale:C,from:a.from,onOpen:y}),null===g||null!==C?null:(0,b.jsx)(n,{inBasket:g,basketHref:f,isRemoving:i?.kind==="remove",isWorking:F,onRemove:v}),d?(0,b.jsx)("p",{"data-testid":"bridge-seen-done",className:"text-muted-foreground",children:"Seen now, so done: it asks nothing more."}):null!==C?null:void 0!==B?(0,b.jsx)(r,{from:a.from,note:h,working:i,failure:j,onNoteChange:k,onFinish:x}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:void 0===A?"Your answer":"Note"}),(0,b.jsx)("textarea",{"data-testid":"bridge-note",rows:2,value:h,onChange:a=>{k(a.target.value)},placeholder:void 0===A?"":"Optional, goes with the answer",className:"rounded-md border border-input bg-background p-2"})]}),void 0===j?null:(0,b.jsx)(m.f,{message:j,isFailure:!0}),void 0===A?(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(l.f,{"data-testid":"bridge-answer",variant:"primary",isPending:i?.kind==="note",pendingLabel:"Sending...",disabled:F,onClick:()=>{t(void 0)},children:"Answer"}),(0,b.jsx)(l.f,{"data-testid":"bridge-done",isPending:i?.kind==="done",pendingLabel:"Marking done...",disabled:F,onClick:w,children:"Done"})]}):void 0===D?null:(0,b.jsxs)("div",{className:"grid gap-1",children:[(0,b.jsxs)(l.f,{"data-testid":"bridge-put-in-basket",variant:"primary",className:"justify-self-start",isPending:i?.kind==="option",pendingLabel:"Putting in the basket...",disabled:F,onClick:()=>{u(D)},children:["Put option ",D," in the basket"]}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:["Nothing is sent yet. ",a.from," receives this answer when you send the basket."]})]})]}),(0,b.jsx)("div",{className:"flex flex-wrap gap-2",children:(0,b.jsx)("button",{type:"button",onClick:z,disabled:F,className:"inline-flex h-9 items-center rounded-md px-4 text-muted-foreground hover:bg-accent disabled:opacity-70",children:"Back"})})]})}a.s(["f",0,function({fleetId:a,children:l}){let[n,o]=(0,c.useState)(),[p,q]=(0,c.useState)(""),[r,t]=(0,c.useState)(),[u,v]=(0,c.useState)(),[w,x]=(0,c.useState)(),[y,z]=(0,c.useState)(),[A,B]=(0,c.useState)(),[,C]=(0,c.useTransition)(),D=b=>{t(b.deliveryId),x(void 0),B(void 0),C(async()=>{let c=await (0,h.f)(a,b.deliveryId);if(t(void 0),c.isOk){let a=b.inBasket??null;o({delivery:c.value,isDoneOnSeeing:"stay-aware"===b.job,inBasket:a}),q(a?.note??""),z(void 0)}else x({deliveryId:b.deliveryId,message:c.message})})},E=({control:a,action:b,said:c})=>{v(a),z(void 0),C(async()=>{let a=await b();v(void 0),a.isOk?(o(void 0),B(c)):z(a.message)})};if(void 0!==n){let{delivery:c,inBasket:h}=n,l=c.question?.id;return(0,b.jsx)(s,{delivery:c,isDoneOnSeeing:n.isDoneOnSeeing,meetingHref:void 0===c.meetingId?void 0:(0,d.f)({fleetId:a,meetingId:c.meetingId}),basketHref:(0,e.f)(k.H,a),inBasket:h,note:p,working:u,failure:y,onNoteChange:q,onAnswer:b=>{E({control:void 0===b?{kind:"note"}:{kind:"option",option:b},action:()=>(0,f.f)({fleet:a,deliveryId:c.deliveryId,input:{questionId:c.question?.id,option:b,note:p}}),said:`Your answer went to ${c.from}.`})},onPut:b=>{E({control:{kind:"option",option:b},action:()=>(0,i.f)({fleet:a,deliveryId:c.deliveryId,option:b,note:p}),said:`Option ${String(b)} is in the basket, not sent: ${c.from} receives it when you send the basket.`})},onRemove:()=>{void 0!==l&&E({control:{kind:"remove"},action:()=>(0,j.f)(a,l),said:`Your answer to “${c.title}” is out of the basket; the question still waits on you.`})},onDone:()=>{E({control:{kind:"done"},action:()=>(0,g.f)({fleet:a,deliveryId:c.deliveryId}),said:`Done with “${c.title}”.`})},onFinishStep:b=>{E({control:{kind:b},action:()=>(0,g.f)({fleet:a,deliveryId:c.deliveryId,step:{outcome:b,note:p}}),said:"done"===b?`Done: ${c.from} is told “${c.title}” is done.`:`Cannot: ${c.from} is told you cannot do “${c.title}”.`})},onOpen:a=>{D({deliveryId:a,job:"decide"})},onBack:()=>{o(void 0)}},c.deliveryId)}return(0,b.jsxs)("div",{className:"grid gap-4",children:[void 0===A?null:(0,b.jsx)(m.f,{message:A,isFailure:!1}),l({open:D,openingId:r,failure:w})]})}],91777)},21938,a=>{var b=a.i(87924),c=a.i(50944),d=a.i(72131);a.s(["RecordUnreadable",0,function({message:a}){let e=(0,c.useRouter)();return(0,d.useEffect)(()=>{let a=setInterval(()=>{e.refresh()},1e4);return()=>{clearInterval(a)}},[e]),(0,b.jsxs)("section",{role:"alert","data-testid":"bridge-unreadable",className:"flex flex-wrap items-center gap-3 rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:[(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"font-semibold",children:"The record cannot be read now"}),(0,b.jsxs)("span",{className:"text-caption",children:[a," Nothing was opened or answered, so nothing is lost: Bridge tries again in 10 s."]})]}),(0,b.jsx)("button",{type:"button","data-testid":"bridge-try-now",onClick:()=>{e.refresh()},className:"inline-flex h-9 items-center rounded-md border border-border bg-card px-4 text-card-foreground hover:bg-accent",children:"Try now"})]})}])},52779,12712,96070,39098,44783,a=>{a.s(["f",0,function(a){let b=new URLSearchParams({fleet:a.fleetId,...void 0===a.cursor?{}:{cursor:a.cursor}});return`/meetings/${encodeURIComponent(a.meetingId)}?${b.toString()}`}],52779);var b=a.i(5050);let c=(0,b.createServerReference)("40edad5bc6caa482ec57bdf504a9545c453e286344",b.callServer,void 0,b.findSourceMapURL,"answerDelivery");a.s(["f",0,c],12712);let d=(0,b.createServerReference)("409343274cfb1997696f97d13e70128feeaadc81b0",b.callServer,void 0,b.findSourceMapURL,"doneDelivery");a.s(["f",0,d],96070);let e=(0,b.createServerReference)("6013ebd954e4b9b9c2c4a85c94c4fc1f4786952324",b.callServer,void 0,b.findSourceMapURL,"openDelivery");a.s(["f",0,e],39098);let f=(0,b.createServerReference)("408a5fadf58977f6b55557119e3557d884605ebbcf",b.callServer,void 0,b.findSourceMapURL,"putInBasket");a.s(["f",0,f],44783)}]})();
2
+
3
+ //# sourceMappingURL=web_features_1nrnskep6p8ci._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/bridge/hooks/data%3A295c5e%20%3Ctext/javascript%3E","../../../../../web/features/bridge/state/item-focus.tsx","../../../../../web/features/bridge/ui/delivery-card.tsx","../../../../../web/features/bridge/state/record-unreadable.tsx","../../../../../web/features/meeting/paths.ts","../../../../../web/features/bridge/hooks/data%3Ae3e416%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A65d48d%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A78203e%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3Aeb01f1%20%3Ctext/javascript%3E"],"sourcesContent":["/* __next_internal_action_entry_do_not_use__ [{\"60573c940559fe36ec3489b04906d9407ddf5822ef\":{\"name\":\"removeFromBasket\"}},\"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_4=/*#__PURE__*/createServerReference(\"60573c940559fe36ec3489b04906d9407ddf5822ef\",callServer,void 0,findSourceMapURL,\"removeFromBasket\");export{$$RSC_SERVER_ACTION_4 as removeFromBasket};","'use client';\n\nimport { useState, useTransition, type ReactNode } from 'react';\n\nimport { meetingPathOf } from '../../meeting/paths';\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { answerDelivery, doneDelivery, openDelivery, putInBasket, removeFromBasket, type ActionOutcome } from '../hooks/bridge-actions';\nimport { BRIDGE_BASKET_PATH } from '../paths';\nimport type { FocusedDelivery } from '../services/deliveries';\nimport type { HomeItem } from '../services/items';\nimport { DeliveryCard, type DeliveryControl, type InBasket } from '../ui/delivery-card';\nimport { Notice } from '../ui/notice';\n\n/** An item to open: by its delivery, with its job, and the answer to it in the basket, if any. */\nexport interface ToOpen {\n readonly deliveryId: string;\n readonly job: HomeItem['job'];\n readonly inBasket?: InBasket | null;\n}\n\n/** What a list of items gets to open one: the press, the one opening, and why one could not be opened. */\nexport interface ItemOpening {\n readonly open: (item: ToOpen) => void;\n readonly openingId: string | undefined;\n readonly failure: { deliveryId: string; message: string } | undefined;\n}\n\n/**\n * A list of Bridge's items with one in focus at a time. Opening is the\n * person's own act, so it is a press, never a link: the gateway acknowledges\n * the item for them, and it is shown whole. An alert or a notice seen is\n * done at once (CC16), so it shows with no answer to give, as does a\n * question its asker withdrew or replaced; a replaced one opens its\n * replacement. A step ends done or cannot with the note, sent at once,\n * never through the basket (CC23). A question's answer goes in the basket (CC24), and comes\n * out of it there. Answering, being done or putting in the basket says so\n * in place, and the page reads itself again.\n */\nexport function ItemFocus({ fleetId, children }: { fleetId: string; children: (opening: ItemOpening) => ReactNode }) {\n const [focus, setFocus] = useState<{ delivery: FocusedDelivery; isDoneOnSeeing: boolean; inBasket: InBasket | null } | undefined>();\n const [note, setNote] = useState('');\n const [openingId, setOpeningId] = useState<string | undefined>();\n const [working, setWorking] = useState<DeliveryControl | undefined>();\n const [openFailure, setOpenFailure] = useState<{ deliveryId: string; message: string } | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [done, setDone] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n\n const open = (item: ToOpen) => {\n setOpeningId(item.deliveryId);\n setOpenFailure(undefined);\n setDone(undefined);\n startTransition(async () => {\n const outcome = await openDelivery(fleetId, item.deliveryId);\n setOpeningId(undefined);\n if (outcome.isOk) {\n const inBasket = item.inBasket ?? null;\n setFocus({ delivery: outcome.value, isDoneOnSeeing: item.job === 'stay-aware', inBasket });\n setNote(inBasket?.note ?? '');\n setFailure(undefined);\n } else {\n setOpenFailure({ deliveryId: item.deliveryId, message: outcome.message });\n }\n });\n };\n\n const settle = ({ control, action, said }: { control: DeliveryControl; action: () => Promise<ActionOutcome<undefined>>; said: string }) => {\n setWorking(control);\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await action();\n setWorking(undefined);\n if (outcome.isOk) {\n setFocus(undefined);\n setDone(said);\n } else {\n setFailure(outcome.message);\n }\n });\n };\n\n if (focus !== undefined) {\n const { delivery, inBasket } = focus;\n const questionId = delivery.question?.id;\n return (\n <DeliveryCard\n key={delivery.deliveryId}\n delivery={delivery}\n isDoneOnSeeing={focus.isDoneOnSeeing}\n meetingHref={delivery.meetingId === undefined ? undefined : meetingPathOf({ fleetId, meetingId: delivery.meetingId })}\n basketHref={inFleet(BRIDGE_BASKET_PATH, fleetId)}\n inBasket={inBasket}\n note={note}\n working={working}\n failure={failure}\n onNoteChange={setNote}\n onAnswer={(option) => { settle({ control: option === undefined ? { kind: 'note' } : { kind: 'option', option }, action: () => answerDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId, input: { questionId: delivery.question?.id, option, note } }), said: `Your answer went to ${delivery.from}.` }); }\n }\n onPut={(option) => { settle({ control: { kind: 'option', option }, action: () => putInBasket({ fleet: fleetId, deliveryId: delivery.deliveryId, option, note }), said: `Option ${String(option)} is in the basket, not sent: ${delivery.from} receives it when you send the basket.` }); }}\n onRemove={() => {\n if (questionId !== undefined) {\n settle({ control: { kind: 'remove' }, action: () => removeFromBasket(fleetId, questionId), said: `Your answer to “${delivery.title}” is out of the basket; the question still waits on you.` });\n }\n }}\n onDone={() => { settle({ control: { kind: 'done' }, action: () => doneDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId }), said: `Done with “${delivery.title}”.` }); }}\n onFinishStep={(outcome) => {\n settle({\n control: { kind: outcome },\n action: () => doneDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId, step: { outcome, note } }),\n said: outcome === 'done' ? `Done: ${delivery.from} is told “${delivery.title}” is done.` : `Cannot: ${delivery.from} is told you cannot do “${delivery.title}”.`,\n });\n }}\n onOpen={(deliveryId) => { open({ deliveryId, job: 'decide' }); }}\n onBack={() => { setFocus(undefined); }}\n />\n );\n }\n return (\n <div className=\"grid gap-4\">\n {done === undefined ? null : <Notice message={done} isFailure={false} />}\n {children({ open, openingId, failure: openFailure })}\n </div>\n );\n}\n","import { useState } from 'react';\n\nimport type { Question } from '@aeolus-fleet/common';\n\nimport type { FocusedDelivery, Stale, StepView } from '../services/deliveries';\nimport { ActionButton } from './action-button';\nimport { Notice } from './notice';\n\n/** Which of the card's controls is working: an option of the question put in the basket, its entry removed, the note alone, done, or a step's cannot. */\nexport type DeliveryControl = { kind: 'option'; option: number } | { kind: 'remove' } | { kind: 'note' } | { kind: 'done' } | { kind: 'cannot' };\n\n/** How the person ends a step: they did it, or cannot. */\nexport type StepOutcome = 'done' | 'cannot';\n\n/** The answer to a question in the basket (Bridge, section 9): its option and its note, none when the person wrote none. */\nexport interface InBasket {\n readonly option: number;\n readonly note: string | null;\n}\n\n/** What a question in the basket says: in it, not sent, with its note; picking another option changes it. */\nfunction InBasketNotice({ inBasket, basketHref, isRemoving, isWorking, onRemove }: { inBasket: InBasket; basketHref: string; isRemoving: boolean; isWorking: boolean; onRemove: () => void }) {\n return (\n <div data-testid=\"bridge-in-basket\" className=\"grid gap-2 rounded-md border border-border bg-muted p-3\">\n <span className=\"font-medium\">In the basket: option {inBasket.option}, not sent</span>\n {inBasket.note === null ? null : <span className=\"text-caption\">“{inBasket.note}”</span>}\n <span className=\"text-caption text-muted-foreground\">Pick another option to change it.</span>\n <div className=\"flex flex-wrap gap-2\">\n <a data-testid=\"bridge-basket-open\" href={basketHref} className=\"inline-flex h-9 items-center rounded-md border border-border px-4 hover:bg-accent\">\n Open the basket\n </a>\n <ActionButton data-testid=\"bridge-basket-remove\" isPending={isRemoving} pendingLabel=\"Removing...\" disabled={isWorking} onClick={onRemove}>\n Remove\n </ActionButton>\n </div>\n </div>\n );\n}\n\n/** The options of a question, one to choose, the asker's pick marked; none to choose once it is stale. */\nfunction QuestionOptions({ question, chosen, isStale, onChoose }: { question: Question; chosen: number | undefined; isStale: boolean; onChoose: (option: number) => void }) {\n return (\n <fieldset className={`grid gap-2 ${isStale ? 'opacity-60' : ''}`} disabled={isStale}>\n <legend className=\"sr-only\">Options</legend>\n {question.options.map((option) => (\n <label key={option.key} className={`flex items-start gap-3 rounded-md border p-3 ${option.key === chosen && !isStale ? 'border-ring bg-accent' : 'border-border'}`}>\n <input type=\"radio\" name=\"option\" value={option.key} checked={option.key === chosen && !isStale} onChange={() => { onChoose(option.key); }} className=\"mt-1\" />\n <span className=\"grid flex-1 gap-0.5\">\n <span className=\"font-medium\">\n {option.key}. {option.label}\n </span>\n {option.detail === '' ? null : <span className=\"text-caption text-muted-foreground\">{option.detail}</span>}\n </span>\n {option.key === question.pick.option ? <span className=\"rounded-sm border border-border px-1.5 text-caption\">Their pick</span> : null}\n </label>\n ))}\n </fieldset>\n );\n}\n\n/** What a stale question says: withdrawn, done; or replaced, with the replacement to open. */\nfunction StaleNotice({ stale, from, onOpen }: { stale: Stale; from: string; onOpen: (deliveryId: string) => void }) {\n const { replacementId } = stale;\n return (\n <div data-testid=\"bridge-stale\" className=\"grid gap-2 rounded-md border border-border bg-muted p-3\">\n <span>{stale.kind === 'withdrawn' ? `Withdrawn by ${from}. Nothing to answer: it is done.` : `Replaced by ${from}. Answer the new question.`}</span>\n {replacementId === null ? null : (\n <ActionButton data-testid=\"bridge-replacement\" className=\"justify-self-start\" isPending={false} pendingLabel=\"Opening...\" onClick={() => { onOpen(replacementId); }}>\n Open the new question\n </ActionButton>\n )}\n </div>\n );\n}\n\n/** What a step asks: why, and the link where it is done, shown with its host and opened only by the person's own press (Bridge, section 9). */\nfunction StepAsked({ step }: { step: StepView }) {\n return (\n <>\n <p className=\"whitespace-pre-wrap\">{step.why}</p>\n {step.link === undefined ? null : (\n <a data-testid=\"bridge-step-link\" href={step.link.href} target=\"_blank\" rel=\"noopener noreferrer\" className=\"inline-flex h-9 items-center justify-self-start rounded-md border border-border px-4 hover:bg-accent\">\n Open on {step.link.host}\n </a>\n )}\n </>\n );\n}\n\n/** A step's note field, shown before Done or Cannot is pressed, and the two: the outcome goes to the asker at once, with the note (CC14, CC23). */\nfunction StepControls({ from, note, working, failure, onNoteChange, onFinish }: { from: string; note: string; working: DeliveryControl | undefined; failure: string | undefined; onNoteChange: (note: string) => void; onFinish: (outcome: StepOutcome) => void }) {\n const isWorking = working !== undefined;\n return (\n <>\n <label className=\"grid gap-1\">\n <span>Note</span>\n <textarea\n data-testid=\"bridge-note\"\n rows={2}\n value={note}\n onChange={(event) => { onNoteChange(event.target.value); }}\n placeholder=\"Optional, goes with Done or Cannot\"\n className=\"rounded-md border border-input bg-background p-2\"\n />\n </label>\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n <div className=\"grid gap-1\">\n <div className=\"flex flex-wrap gap-2\">\n <ActionButton data-testid=\"bridge-step-done\" variant=\"primary\" isPending={working?.kind === 'done'} pendingLabel=\"Sending...\" disabled={isWorking} onClick={() => { onFinish('done'); }}>\n Done\n </ActionButton>\n <ActionButton data-testid=\"bridge-step-cannot\" isPending={working?.kind === 'cannot'} pendingLabel=\"Sending...\" disabled={isWorking} onClick={() => { onFinish('cannot'); }}>\n Cannot\n </ActionButton>\n </div>\n <span className=\"text-caption text-muted-foreground\">{from} is told at once, with your note.</span>\n </div>\n </>\n );\n}\n\n/**\n * One item in focus (design B, Signal). A question opens with the asker's\n * pick chosen (CC11), or the option in the basket; its one button puts that\n * option in the basket with the note, if any, and sends nothing (CC24): the\n * person sends the basket. A step (CC14) shows why and its link, then its\n * note field before Done and Cannot, each sending its outcome at once with\n * the note. Any other item may get a note as its answer, and may\n * be done with; one of a meeting leads to the meeting. An alert or a notice\n * is done once seen (Bridge, CC16): it asks nothing more. So is a question\n * its asker withdrew or replaced: stale, nothing to send, a replaced one\n * leading to its replacement.\n */\nexport function DeliveryCard({\n delivery,\n isDoneOnSeeing,\n meetingHref,\n basketHref,\n inBasket,\n note,\n working,\n failure,\n onNoteChange,\n onAnswer,\n onPut,\n onRemove,\n onDone,\n onFinishStep,\n onOpen,\n onBack,\n}: {\n delivery: FocusedDelivery;\n /** Whether seeing it was all it asked, so it is done: an alert or a notice. */\n isDoneOnSeeing: boolean;\n /** The page of the meeting it belongs to, if it belongs to one. */\n meetingHref: string | undefined;\n /** Bridge's basket. */\n basketHref: string;\n /** The answer to the question in the basket, if any. */\n inBasket: InBasket | null;\n note: string;\n working: DeliveryControl | undefined;\n failure: string | undefined;\n onNoteChange: (note: string) => void;\n /** Answers any item but a question with the note. */\n onAnswer: (option: number | undefined) => void;\n /** Puts the option chosen of a question in the basket, with the note. */\n onPut: (option: number) => void;\n /** Takes the question's answer out of the basket. */\n onRemove: () => void;\n onDone: () => void;\n /** Ends a step done or cannot, with the note. */\n onFinishStep: (outcome: StepOutcome) => void;\n /** Opens another item: a replaced question's replacement. */\n onOpen: (deliveryId: string) => void;\n onBack: () => void;\n}) {\n const { question, step, stale } = delivery;\n const [chosen, setChosen] = useState(inBasket?.option ?? question?.pick.option);\n const isWorking = working !== undefined;\n return (\n <section data-testid=\"bridge-delivery\" className=\"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm\">\n <span className=\"text-caption text-muted-foreground\">\n {delivery.from} · {new Date(delivery.sentAt).toUTCString()}\n </span>\n <h2 className=\"text-heading font-semibold\">{question?.title ?? delivery.title}</h2>\n {meetingHref === undefined ? null : (\n <a data-testid=\"bridge-meeting\" href={meetingHref} className=\"inline-flex h-9 items-center justify-self-start rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover\">\n Go to the meeting\n </a>\n )}\n {step !== undefined ? (\n <StepAsked step={step} />\n ) : question === undefined ? (\n <pre className=\"whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-caption\">{delivery.body}</pre>\n ) : (\n <>\n <p className=\"whitespace-pre-wrap\">{question.context}</p>\n <QuestionOptions question={question} chosen={chosen} isStale={stale !== null} onChoose={setChosen} />\n <p className=\"text-caption text-muted-foreground\">\n {delivery.from} picks {question.pick.option}: {question.pick.why}\n </p>\n </>\n )}\n {stale === null ? null : <StaleNotice stale={stale} from={delivery.from} onOpen={onOpen} />}\n {inBasket === null || stale !== null ? null : <InBasketNotice inBasket={inBasket} basketHref={basketHref} isRemoving={working?.kind === 'remove'} isWorking={isWorking} onRemove={onRemove} />}\n {isDoneOnSeeing ? (\n <p data-testid=\"bridge-seen-done\" className=\"text-muted-foreground\">\n Seen now, so done: it asks nothing more.\n </p>\n ) : stale !== null ? null : step !== undefined ? (\n <StepControls from={delivery.from} note={note} working={working} failure={failure} onNoteChange={onNoteChange} onFinish={onFinishStep} />\n ) : (\n <>\n <label className=\"grid gap-1\">\n <span>{question === undefined ? 'Your answer' : 'Note'}</span>\n <textarea\n data-testid=\"bridge-note\"\n rows={2}\n value={note}\n onChange={(event) => { onNoteChange(event.target.value); }}\n placeholder={question === undefined ? '' : 'Optional, goes with the answer'}\n className=\"rounded-md border border-input bg-background p-2\"\n />\n </label>\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n {question === undefined ? (\n <div className=\"flex flex-wrap gap-2\">\n <ActionButton data-testid=\"bridge-answer\" variant=\"primary\" isPending={working?.kind === 'note'} pendingLabel=\"Sending...\" disabled={isWorking} onClick={() => { onAnswer(undefined); }}>\n Answer\n </ActionButton>\n <ActionButton data-testid=\"bridge-done\" isPending={working?.kind === 'done'} pendingLabel=\"Marking done...\" disabled={isWorking} onClick={onDone}>\n Done\n </ActionButton>\n </div>\n ) : chosen === undefined ? null : (\n <div className=\"grid gap-1\">\n <ActionButton data-testid=\"bridge-put-in-basket\" variant=\"primary\" className=\"justify-self-start\" isPending={working?.kind === 'option'} pendingLabel=\"Putting in the basket...\" disabled={isWorking} onClick={() => { onPut(chosen); }}>\n Put option {chosen} in the basket\n </ActionButton>\n <span className=\"text-caption text-muted-foreground\">Nothing is sent yet. {delivery.from} receives this answer when you send the basket.</span>\n </div>\n )}\n </>\n )}\n <div className=\"flex flex-wrap gap-2\">\n <button type=\"button\" onClick={onBack} disabled={isWorking} className=\"inline-flex h-9 items-center rounded-md px-4 text-muted-foreground hover:bg-accent disabled:opacity-70\">\n Back\n </button>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** How long Bridge waits before it reads the record again by itself. */\nconst TRY_AGAIN_MS = 10_000;\n\n/**\n * The record cannot be read now (Bridge, section 9: core does not answer):\n * why, that nothing is lost, since nothing was acknowledged, and the page\n * reads itself again every 10 seconds, or at once on Try now.\n */\nexport function RecordUnreadable({ message }: { message: string }) {\n const router = useRouter();\n useEffect(() => {\n const again = setInterval(() => {\n router.refresh();\n }, TRY_AGAIN_MS);\n return () => {\n clearInterval(again);\n };\n }, [router]);\n return (\n <section role=\"alert\" data-testid=\"bridge-unreadable\" className=\"flex flex-wrap items-center gap-3 rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"font-semibold\">The record cannot be read now</span>\n <span className=\"text-caption\">\n {message} Nothing was opened or answered, so nothing is lost: Bridge tries again in 10 s.\n </span>\n </span>\n <button type=\"button\" data-testid=\"bridge-try-now\" onClick={() => { router.refresh(); }} className=\"inline-flex h-9 items-center rounded-md border border-border bg-card px-4 text-card-foreground hover:bg-accent\">\n Try now\n </button>\n </section>\n );\n}\n","/** Where a meeting's page is, for server and client code alike. */\n\n/** The meeting page's address, before the meeting's id. */\nexport const MEETINGS_PATH = '/meetings';\n\n/** The address of a meeting's page in a fleet, at the page of contributions after the cursor, if one is given. */\nexport function meetingPathOf(meeting: { fleetId: string; meetingId: string; cursor?: string }): string {\n const query = new URLSearchParams({ fleet: meeting.fleetId, ...(meeting.cursor === undefined ? {} : { cursor: meeting.cursor }) });\n return `${MEETINGS_PATH}/${encodeURIComponent(meeting.meetingId)}?${query.toString()}`;\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40edad5bc6caa482ec57bdf504a9545c453e286344\":{\"name\":\"answerDelivery\"}},\"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_2=/*#__PURE__*/createServerReference(\"40edad5bc6caa482ec57bdf504a9545c453e286344\",callServer,void 0,findSourceMapURL,\"answerDelivery\");export{$$RSC_SERVER_ACTION_2 as answerDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"409343274cfb1997696f97d13e70128feeaadc81b0\":{\"name\":\"doneDelivery\"}},\"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_6=/*#__PURE__*/createServerReference(\"409343274cfb1997696f97d13e70128feeaadc81b0\",callServer,void 0,findSourceMapURL,\"doneDelivery\");export{$$RSC_SERVER_ACTION_6 as doneDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"6013ebd954e4b9b9c2c4a85c94c4fc1f4786952324\":{\"name\":\"openDelivery\"}},\"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_1=/*#__PURE__*/createServerReference(\"6013ebd954e4b9b9c2c4a85c94c4fc1f4786952324\",callServer,void 0,findSourceMapURL,\"openDelivery\");export{$$RSC_SERVER_ACTION_1 as openDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"408a5fadf58977f6b55557119e3557d884605ebbcf\":{\"name\":\"putInBasket\"}},\"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_3=/*#__PURE__*/createServerReference(\"408a5fadf58977f6b55557119e3557d884605ebbcf\",callServer,void 0,findSourceMapURL,\"putInBasket\");export{$$RSC_SERVER_ACTION_3 as putInBasket};"],"names":["$$RSC_SERVER_ACTION_4","InBasketNotice","inBasket","basketHref","isRemoving","isWorking","onRemove","className","option","note","href","isPending","pendingLabel","disabled","onClick","QuestionOptions","question","chosen","isStale","onChoose","options","map","key","type","name","value","checked","onChange","label","detail","pick","StaleNotice","stale","from","onOpen","replacementId","kind","StepAsked","step","why","link","undefined","target","rel","host","StepControls","working","failure","onNoteChange","onFinish","rows","event","placeholder","message","isFailure","variant","DeliveryCard","delivery","isDoneOnSeeing","meetingHref","onAnswer","onPut","onDone","onFinishStep","onBack","setChosen","Date","sentAt","toUTCString","title","body","context","TRY_AGAIN_MS","RecordUnreadable","router","again","setInterval","refresh","clearInterval","role","MEETINGS_PATH","meetingPathOf","meeting","query","URLSearchParams","fleet","fleetId","cursor","encodeURIComponent","meetingId","toString"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[96001,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(30587),e=a.i(60224),f=a.i(88412),g=a.i(36855),h=a.i(35149),i=a.i(77237),j=a.i(64943),k=a.i(5050);let l=(0,k.createServerReference)("608ad0d36a0cdd886e103d2759009ddc4187ee8568",k.callServer,void 0,k.findSourceMapURL,"addA2aAgent"),m={kind:"idle"};a.s(["A2aAgentForm",0,function({fleetId:a,requestId:k,owners:n,scopes:o}){let[p,q]=(0,c.useActionState)(l,m),r="refused"===p.kind?p.fields:{};return(0,b.jsxs)("form",{action:q,className:`${f.r} grid gap-3`,"data-testid":"add-a2a-agent-form",children:[(0,b.jsx)("input",{type:"hidden",name:d.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"requestId",value:k}),(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Add an A2A agent"}),(0,b.jsx)(g.f,{state:"refused"===p.kind?p:{kind:"idle"}}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Name, the proxy ship's"}),(0,b.jsx)("input",{className:f.w,name:"name",defaultValue:r.name??"",required:!0})]}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Card address"}),(0,b.jsx)("input",{className:f.w,type:"url",name:"cardUrl",defaultValue:r.cardUrl??"",placeholder:"https://agent.example.com/.well-known/agent-card.json",required:!0}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:"The gateway reads the card first: an agent whose card it cannot state is not added."})]}),(0,b.jsx)(e.f,{legend:"The agent's credential",fields:r,noneHelp:"The gateway sends no credential: for an agent that asks for none."}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Messages in flight at once"}),(0,b.jsx)("input",{className:f.w,type:"number",name:"concurrencyLimit",min:1,max:10,defaultValue:r.concurrencyLimit??"4"})]}),(0,b.jsx)(h.f,{choices:n.isOk?n.value:[],current:null,help:"A person ship or argo. It answers for this agent.",refusal:n.isOk?void 0:n.refusal}),0===o.length?null:(0,b.jsxs)("fieldset",{className:"grid gap-2",children:[(0,b.jsx)("legend",{className:"font-medium",children:"Scopes, beside sending and receiving"}),o.map(a=>(0,b.jsxs)("label",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",name:`${j.f}${a}`,defaultChecked:void 0!==r[`${j.f}${a}`]}),(0,b.jsx)("span",{className:"font-mono text-code",children:a})]},a))]}),(0,b.jsx)("div",{children:(0,b.jsx)(i.f,{pending:"Reading the card…",children:"Add"})})]})}],96001)}];
1
+ module.exports=[96001,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(30587),e=a.i(60224),f=a.i(88412),g=a.i(36855),h=a.i(35149),i=a.i(77237),j=a.i(64943),k=a.i(5050);let l=(0,k.createServerReference)("6076aa2e7bb55e2ef41915944adf76318c50c9d874",k.callServer,void 0,k.findSourceMapURL,"addA2aAgent"),m={kind:"idle"};a.s(["A2aAgentForm",0,function({fleetId:a,requestId:k,owners:n,scopes:o}){let[p,q]=(0,c.useActionState)(l,m),r="refused"===p.kind?p.fields:{};return(0,b.jsxs)("form",{action:q,className:`${f.r} grid gap-3`,"data-testid":"add-a2a-agent-form",children:[(0,b.jsx)("input",{type:"hidden",name:d.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"requestId",value:k}),(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Add an A2A agent"}),(0,b.jsx)(g.f,{state:"refused"===p.kind?p:{kind:"idle"}}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Name, the proxy ship's"}),(0,b.jsx)("input",{className:f.w,name:"name",defaultValue:r.name??"",required:!0})]}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Card address"}),(0,b.jsx)("input",{className:f.w,type:"url",name:"cardUrl",defaultValue:r.cardUrl??"",placeholder:"https://agent.example.com/.well-known/agent-card.json",required:!0}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:"The gateway reads the card first: an agent whose card it cannot state is not added."})]}),(0,b.jsx)(e.f,{legend:"The agent's credential",fields:r,noneHelp:"The gateway sends no credential: for an agent that asks for none."}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Messages in flight at once"}),(0,b.jsx)("input",{className:f.w,type:"number",name:"concurrencyLimit",min:1,max:10,defaultValue:r.concurrencyLimit??"4"})]}),(0,b.jsx)(h.f,{choices:n.isOk?n.value:[],current:null,help:"A person ship or argo. It answers for this agent.",refusal:n.isOk?void 0:n.refusal}),0===o.length?null:(0,b.jsxs)("fieldset",{className:"grid gap-2",children:[(0,b.jsx)("legend",{className:"font-medium",children:"Scopes, beside sending and receiving"}),o.map(a=>(0,b.jsxs)("label",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",name:`${j.f}${a}`,defaultChecked:void 0!==r[`${j.f}${a}`]}),(0,b.jsx)("span",{className:"font-mono text-code",children:a})]},a))]}),(0,b.jsx)("div",{children:(0,b.jsx)(i.f,{pending:"Reading the card…",children:"Add"})})]})}],96001)}];
2
2
 
3
3
  //# sourceMappingURL=web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../web/features/add-a2a-agent/ui/a2a-agent-form.tsx","../../../../../web/features/add-a2a-agent/data%3Ad97b5e%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useActionState } from 'react';\n\nimport { FLEET_FIELD } from '../../forms/form-state';\nimport { CredentialFields } from '../../forms/ui/credential-fields';\nimport { CARD, INPUT, LABEL } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { OwnerField, type OwnerChoices } from '../../forms/ui/owner-field';\nimport { SubmitButton } from '../../forms/ui/submit-button';\nimport { SCOPE_FIELD_PREFIX } from '../../outside-party/scope-changes';\nimport { addA2aAgent, type AddA2aAgentState } from '../actions';\n\nconst IDLE: AddA2aAgentState = { kind: 'idle' };\n\nconst CONCURRENCY_LIMIT_DEFAULT = '4';\n\n/** The form that adds an A2A agent: its name, card address, credential and calls at once, its owner and the approver's own scopes to tick. */\nexport function A2aAgentForm({ fleetId, requestId, owners, scopes }: { fleetId: string; requestId: string; owners: OwnerChoices; scopes: readonly string[] }) {\n const [state, action] = useActionState(addA2aAgent, IDLE);\n const fields = state.kind === 'refused' ? state.fields : {};\n return (\n <form action={action} className={`${CARD} grid gap-3`} data-testid=\"add-a2a-agent-form\">\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"requestId\" value={requestId} />\n <h1 className=\"text-title font-semibold\">Add an A2A agent</h1>\n <Outcome state={state.kind === 'refused' ? state : { kind: 'idle' }} />\n <label className={LABEL}>\n <span>Name, the proxy ship&apos;s</span>\n <input className={INPUT} name=\"name\" defaultValue={fields.name ?? ''} required />\n </label>\n <label className={LABEL}>\n <span>Card address</span>\n <input className={INPUT} type=\"url\" name=\"cardUrl\" defaultValue={fields.cardUrl ?? ''} placeholder=\"https://agent.example.com/.well-known/agent-card.json\" required />\n <span className=\"text-caption text-muted-foreground\">The gateway reads the card first: an agent whose card it cannot state is not added.</span>\n </label>\n <CredentialFields legend=\"The agent's credential\" fields={fields} noneHelp=\"The gateway sends no credential: for an agent that asks for none.\" />\n <label className={LABEL}>\n <span>Messages in flight at once</span>\n <input className={INPUT} type=\"number\" name=\"concurrencyLimit\" min={1} max={10} defaultValue={fields.concurrencyLimit ?? CONCURRENCY_LIMIT_DEFAULT} />\n </label>\n <OwnerField choices={owners.isOk ? owners.value : []} current={null} help=\"A person ship or argo. It answers for this agent.\" refusal={owners.isOk ? undefined : owners.refusal} />\n {scopes.length === 0 ? null : (\n <fieldset className=\"grid gap-2\">\n <legend className=\"font-medium\">Scopes, beside sending and receiving</legend>\n {scopes.map((scope) => (\n <label key={scope} className=\"flex items-center gap-2\">\n <input type=\"checkbox\" name={`${SCOPE_FIELD_PREFIX}${scope}`} defaultChecked={fields[`${SCOPE_FIELD_PREFIX}${scope}`] !== undefined} />\n <span className=\"font-mono text-code\">{scope}</span>\n </label>\n ))}\n </fieldset>\n )}\n <div>\n <SubmitButton pending=\"Reading the card…\">Add</SubmitButton>\n </div>\n </form>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"608ad0d36a0cdd886e103d2759009ddc4187ee8568\":{\"name\":\"addA2aAgent\"}},\"web/features/add-a2a-agent/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"608ad0d36a0cdd886e103d2759009ddc4187ee8568\",callServer,void 0,findSourceMapURL,\"addA2aAgent\");export{$$RSC_SERVER_ACTION_0 as addA2aAgent};"],"names":["$$RSC_SERVER_ACTION_0"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../web/features/add-a2a-agent/ui/a2a-agent-form.tsx","../../../../../web/features/add-a2a-agent/data%3Ad36bec%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useActionState } from 'react';\n\nimport { FLEET_FIELD } from '../../forms/form-state';\nimport { CredentialFields } from '../../forms/ui/credential-fields';\nimport { CARD, INPUT, LABEL } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { OwnerField, type OwnerChoices } from '../../forms/ui/owner-field';\nimport { SubmitButton } from '../../forms/ui/submit-button';\nimport { SCOPE_FIELD_PREFIX } from '../../outside-party/scope-changes';\nimport { addA2aAgent, type AddA2aAgentState } from '../actions';\n\nconst IDLE: AddA2aAgentState = { kind: 'idle' };\n\nconst CONCURRENCY_LIMIT_DEFAULT = '4';\n\n/** The form that adds an A2A agent: its name, card address, credential and calls at once, its owner and the approver's own scopes to tick. */\nexport function A2aAgentForm({ fleetId, requestId, owners, scopes }: { fleetId: string; requestId: string; owners: OwnerChoices; scopes: readonly string[] }) {\n const [state, action] = useActionState(addA2aAgent, IDLE);\n const fields = state.kind === 'refused' ? state.fields : {};\n return (\n <form action={action} className={`${CARD} grid gap-3`} data-testid=\"add-a2a-agent-form\">\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"requestId\" value={requestId} />\n <h1 className=\"text-title font-semibold\">Add an A2A agent</h1>\n <Outcome state={state.kind === 'refused' ? state : { kind: 'idle' }} />\n <label className={LABEL}>\n <span>Name, the proxy ship&apos;s</span>\n <input className={INPUT} name=\"name\" defaultValue={fields.name ?? ''} required />\n </label>\n <label className={LABEL}>\n <span>Card address</span>\n <input className={INPUT} type=\"url\" name=\"cardUrl\" defaultValue={fields.cardUrl ?? ''} placeholder=\"https://agent.example.com/.well-known/agent-card.json\" required />\n <span className=\"text-caption text-muted-foreground\">The gateway reads the card first: an agent whose card it cannot state is not added.</span>\n </label>\n <CredentialFields legend=\"The agent's credential\" fields={fields} noneHelp=\"The gateway sends no credential: for an agent that asks for none.\" />\n <label className={LABEL}>\n <span>Messages in flight at once</span>\n <input className={INPUT} type=\"number\" name=\"concurrencyLimit\" min={1} max={10} defaultValue={fields.concurrencyLimit ?? CONCURRENCY_LIMIT_DEFAULT} />\n </label>\n <OwnerField choices={owners.isOk ? owners.value : []} current={null} help=\"A person ship or argo. It answers for this agent.\" refusal={owners.isOk ? undefined : owners.refusal} />\n {scopes.length === 0 ? null : (\n <fieldset className=\"grid gap-2\">\n <legend className=\"font-medium\">Scopes, beside sending and receiving</legend>\n {scopes.map((scope) => (\n <label key={scope} className=\"flex items-center gap-2\">\n <input type=\"checkbox\" name={`${SCOPE_FIELD_PREFIX}${scope}`} defaultChecked={fields[`${SCOPE_FIELD_PREFIX}${scope}`] !== undefined} />\n <span className=\"font-mono text-code\">{scope}</span>\n </label>\n ))}\n </fieldset>\n )}\n <div>\n <SubmitButton pending=\"Reading the card…\">Add</SubmitButton>\n </div>\n </form>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"6076aa2e7bb55e2ef41915944adf76318c50c9d874\":{\"name\":\"addA2aAgent\"}},\"web/features/add-a2a-agent/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"6076aa2e7bb55e2ef41915944adf76318c50c9d874\",callServer,void 0,findSourceMapURL,\"addA2aAgent\");export{$$RSC_SERVER_ACTION_0 as addA2aAgent};"],"names":["$$RSC_SERVER_ACTION_0"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[90344,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(25959),e=a.i(30587),f=a.i(88412),g=a.i(36855),h=a.i(35149),i=a.i(77237),j=a.i(48242),k=a.i(64943),l=a.i(5050);let m=(0,l.createServerReference)("60c7eca121dbae1c124f74472d6836045817fe9b27",l.callServer,void 0,l.findSourceMapURL,"addA2aClient"),n={kind:"idle"};function o({name:a,bearer:c,fleetId:e}){return(0,b.jsxs)("section",{className:`${f.r} grid gap-3`,"data-testid":"add-a2a-client-added",children:[(0,b.jsxs)("h2",{className:"text-section font-semibold",children:[a," is added"]}),(0,b.jsx)("p",{children:"Hand its client this bearer now. It is shown only once: the gateway keeps no copy it can show again."}),(0,b.jsx)("code",{className:"break-all rounded-md border border-border bg-background px-3 py-2 font-mono text-code","data-testid":"add-a2a-client-bearer",children:c}),(0,b.jsx)("p",{children:(0,b.jsx)("a",{href:(0,d.f)((0,j.f)(a),e),className:"text-primary hover:underline",children:"Its card addresses"})})]})}a.s(["A2aClientForm",0,function({fleetId:a,requestId:d,owners:j,scopes:l}){let[p,q]=(0,c.useActionState)(m,n);return"added"===p.kind?(0,b.jsx)(o,{name:p.name,bearer:p.bearer,fleetId:a}):(0,b.jsxs)("form",{action:q,className:`${f.r} grid gap-3`,"data-testid":"add-a2a-client-form",children:[(0,b.jsx)("input",{type:"hidden",name:e.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"requestId",value:d}),(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Add an A2A client"}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Name, the proxy ship's"}),(0,b.jsx)("input",{className:f.w,name:"name",required:!0})]}),(0,b.jsx)(h.f,{choices:j.isOk?j.value:[],current:null,help:"A person ship or argo. It answers for this client.",refusal:j.isOk?void 0:j.refusal}),0===l.length?null:(0,b.jsxs)("fieldset",{className:"grid gap-2",children:[(0,b.jsx)("legend",{className:"font-medium",children:"Scopes, beside sending and receiving"}),l.map(a=>(0,b.jsxs)("label",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",name:`${k.f}${a}`}),(0,b.jsx)("span",{className:"font-mono text-code",children:a})]},a))]}),(0,b.jsx)("div",{children:(0,b.jsx)(i.f,{pending:"Adding…",children:"Add"})}),(0,b.jsx)(g.f,{state:"refused"===p.kind?p:{kind:"idle"}})]})}],90344)}];
1
+ module.exports=[90344,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(25959),e=a.i(30587),f=a.i(88412),g=a.i(36855),h=a.i(35149),i=a.i(77237),j=a.i(48242),k=a.i(64943),l=a.i(5050);let m=(0,l.createServerReference)("60273996ed174fc68ab891889576f8698711d3d38a",l.callServer,void 0,l.findSourceMapURL,"addA2aClient"),n={kind:"idle"};function o({name:a,bearer:c,fleetId:e}){return(0,b.jsxs)("section",{className:`${f.r} grid gap-3`,"data-testid":"add-a2a-client-added",children:[(0,b.jsxs)("h2",{className:"text-section font-semibold",children:[a," is added"]}),(0,b.jsx)("p",{children:"Hand its client this bearer now. It is shown only once: the gateway keeps no copy it can show again."}),(0,b.jsx)("code",{className:"break-all rounded-md border border-border bg-background px-3 py-2 font-mono text-code","data-testid":"add-a2a-client-bearer",children:c}),(0,b.jsx)("p",{children:(0,b.jsx)("a",{href:(0,d.f)((0,j.f)(a),e),className:"text-primary hover:underline",children:"Its card addresses"})})]})}a.s(["A2aClientForm",0,function({fleetId:a,requestId:d,owners:j,scopes:l}){let[p,q]=(0,c.useActionState)(m,n);return"added"===p.kind?(0,b.jsx)(o,{name:p.name,bearer:p.bearer,fleetId:a}):(0,b.jsxs)("form",{action:q,className:`${f.r} grid gap-3`,"data-testid":"add-a2a-client-form",children:[(0,b.jsx)("input",{type:"hidden",name:e.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"requestId",value:d}),(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Add an A2A client"}),(0,b.jsxs)("label",{className:f.z,children:[(0,b.jsx)("span",{children:"Name, the proxy ship's"}),(0,b.jsx)("input",{className:f.w,name:"name",required:!0})]}),(0,b.jsx)(h.f,{choices:j.isOk?j.value:[],current:null,help:"A person ship or argo. It answers for this client.",refusal:j.isOk?void 0:j.refusal}),0===l.length?null:(0,b.jsxs)("fieldset",{className:"grid gap-2",children:[(0,b.jsx)("legend",{className:"font-medium",children:"Scopes, beside sending and receiving"}),l.map(a=>(0,b.jsxs)("label",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",name:`${k.f}${a}`}),(0,b.jsx)("span",{className:"font-mono text-code",children:a})]},a))]}),(0,b.jsx)("div",{children:(0,b.jsx)(i.f,{pending:"Adding…",children:"Add"})}),(0,b.jsx)(g.f,{state:"refused"===p.kind?p:{kind:"idle"}})]})}],90344)}];
2
2
 
3
3
  //# sourceMappingURL=web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../web/features/add-a2a-client/ui/a2a-client-form.tsx","../../../../../web/features/add-a2a-client/data%3A36b682%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useActionState } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { FLEET_FIELD } from '../../forms/form-state';\nimport { CARD, INPUT, LABEL } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { OwnerField, type OwnerChoices } from '../../forms/ui/owner-field';\nimport { SubmitButton } from '../../forms/ui/submit-button';\nimport { partyPath } from '../../outside-parties/paths';\nimport { SCOPE_FIELD_PREFIX } from '../../outside-party/scope-changes';\nimport { addA2aClient, type AddA2aClientState } from '../actions';\n\nconst IDLE: AddA2aClientState = { kind: 'idle' };\n\n/** The bearer, shown this once: the gateway keeps only its hash. */\nfunction Added({ name, bearer, fleetId }: { name: string; bearer: string; fleetId: string }) {\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"add-a2a-client-added\">\n <h2 className=\"text-section font-semibold\">{name} is added</h2>\n <p>Hand its client this bearer now. It is shown only once: the gateway keeps no copy it can show again.</p>\n <code className=\"break-all rounded-md border border-border bg-background px-3 py-2 font-mono text-code\" data-testid=\"add-a2a-client-bearer\">\n {bearer}\n </code>\n <p>\n <a href={inFleet(partyPath(name), fleetId)} className=\"text-primary hover:underline\">\n Its card addresses\n </a>\n </p>\n </section>\n );\n}\n\n/** The form that adds an A2A client: its name, owner and the approver's own scopes to tick; then its bearer. */\nexport function A2aClientForm({ fleetId, requestId, owners, scopes }: { fleetId: string; requestId: string; owners: OwnerChoices; scopes: readonly string[] }) {\n const [state, action] = useActionState(addA2aClient, IDLE);\n if (state.kind === 'added') {\n return <Added name={state.name} bearer={state.bearer} fleetId={fleetId} />;\n }\n return (\n <form action={action} className={`${CARD} grid gap-3`} data-testid=\"add-a2a-client-form\">\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"requestId\" value={requestId} />\n <h1 className=\"text-title font-semibold\">Add an A2A client</h1>\n <label className={LABEL}>\n <span>Name, the proxy ship&apos;s</span>\n <input className={INPUT} name=\"name\" required />\n </label>\n <OwnerField choices={owners.isOk ? owners.value : []} current={null} help=\"A person ship or argo. It answers for this client.\" refusal={owners.isOk ? undefined : owners.refusal} />\n {scopes.length === 0 ? null : (\n <fieldset className=\"grid gap-2\">\n <legend className=\"font-medium\">Scopes, beside sending and receiving</legend>\n {scopes.map((scope) => (\n <label key={scope} className=\"flex items-center gap-2\">\n <input type=\"checkbox\" name={`${SCOPE_FIELD_PREFIX}${scope}`} />\n <span className=\"font-mono text-code\">{scope}</span>\n </label>\n ))}\n </fieldset>\n )}\n <div>\n <SubmitButton pending=\"Adding…\">Add</SubmitButton>\n </div>\n <Outcome state={state.kind === 'refused' ? state : { kind: 'idle' }} />\n </form>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"60c7eca121dbae1c124f74472d6836045817fe9b27\":{\"name\":\"addA2aClient\"}},\"web/features/add-a2a-client/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"60c7eca121dbae1c124f74472d6836045817fe9b27\",callServer,void 0,findSourceMapURL,\"addA2aClient\");export{$$RSC_SERVER_ACTION_0 as addA2aClient};"],"names":["$$RSC_SERVER_ACTION_0"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../web/features/add-a2a-client/ui/a2a-client-form.tsx","../../../../../web/features/add-a2a-client/data%3Aec2e31%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useActionState } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { FLEET_FIELD } from '../../forms/form-state';\nimport { CARD, INPUT, LABEL } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { OwnerField, type OwnerChoices } from '../../forms/ui/owner-field';\nimport { SubmitButton } from '../../forms/ui/submit-button';\nimport { partyPath } from '../../outside-parties/paths';\nimport { SCOPE_FIELD_PREFIX } from '../../outside-party/scope-changes';\nimport { addA2aClient, type AddA2aClientState } from '../actions';\n\nconst IDLE: AddA2aClientState = { kind: 'idle' };\n\n/** The bearer, shown this once: the gateway keeps only its hash. */\nfunction Added({ name, bearer, fleetId }: { name: string; bearer: string; fleetId: string }) {\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"add-a2a-client-added\">\n <h2 className=\"text-section font-semibold\">{name} is added</h2>\n <p>Hand its client this bearer now. It is shown only once: the gateway keeps no copy it can show again.</p>\n <code className=\"break-all rounded-md border border-border bg-background px-3 py-2 font-mono text-code\" data-testid=\"add-a2a-client-bearer\">\n {bearer}\n </code>\n <p>\n <a href={inFleet(partyPath(name), fleetId)} className=\"text-primary hover:underline\">\n Its card addresses\n </a>\n </p>\n </section>\n );\n}\n\n/** The form that adds an A2A client: its name, owner and the approver's own scopes to tick; then its bearer. */\nexport function A2aClientForm({ fleetId, requestId, owners, scopes }: { fleetId: string; requestId: string; owners: OwnerChoices; scopes: readonly string[] }) {\n const [state, action] = useActionState(addA2aClient, IDLE);\n if (state.kind === 'added') {\n return <Added name={state.name} bearer={state.bearer} fleetId={fleetId} />;\n }\n return (\n <form action={action} className={`${CARD} grid gap-3`} data-testid=\"add-a2a-client-form\">\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"requestId\" value={requestId} />\n <h1 className=\"text-title font-semibold\">Add an A2A client</h1>\n <label className={LABEL}>\n <span>Name, the proxy ship&apos;s</span>\n <input className={INPUT} name=\"name\" required />\n </label>\n <OwnerField choices={owners.isOk ? owners.value : []} current={null} help=\"A person ship or argo. It answers for this client.\" refusal={owners.isOk ? undefined : owners.refusal} />\n {scopes.length === 0 ? null : (\n <fieldset className=\"grid gap-2\">\n <legend className=\"font-medium\">Scopes, beside sending and receiving</legend>\n {scopes.map((scope) => (\n <label key={scope} className=\"flex items-center gap-2\">\n <input type=\"checkbox\" name={`${SCOPE_FIELD_PREFIX}${scope}`} />\n <span className=\"font-mono text-code\">{scope}</span>\n </label>\n ))}\n </fieldset>\n )}\n <div>\n <SubmitButton pending=\"Adding…\">Add</SubmitButton>\n </div>\n <Outcome state={state.kind === 'refused' ? state : { kind: 'idle' }} />\n </form>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"60273996ed174fc68ab891889576f8698711d3d38a\":{\"name\":\"addA2aClient\"}},\"web/features/add-a2a-client/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"60273996ed174fc68ab891889576f8698711d3d38a\",callServer,void 0,findSourceMapURL,\"addA2aClient\");export{$$RSC_SERVER_ACTION_0 as addA2aClient};"],"names":["$$RSC_SERVER_ACTION_0"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[29372,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("60677bc3f550873a6ee6a663c347d21258f73956e9",d.callServer,void 0,d.findSourceMapURL,"approveServer"),f=(0,d.createServerReference)("602aff8b5de3a8c13f117e6954eceef8b610d28ed1",d.callServer,void 0,d.findSourceMapURL,"checkServer");var g=a.i(30587),h=a.i(51636),i=a.i(60224),j=a.i(88412),k=a.i(77237);let l=["Address","Check","Owner"],m=["Address","Owner","Sign in"];var n=a.i(36855);function o({refusal:a}){return void 0===a?null:(0,b.jsx)(n.f,{state:{kind:"refused",message:a}})}function p({names:a,at:c}){return(0,b.jsx)("ol",{className:"flex gap-4",children:a.map((a,d)=>(0,b.jsxs)("li",{"aria-current":d===c?"step":void 0,className:d<=c?"font-medium":"text-muted-foreground",children:[d+1," ",a]},a))})}function q({state:a,action:d,fleetId:e}){let[f,n]=(0,c.useState)((0,h.G)(a.fields.credentialKind??"")),r=f===h.m.kind;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(p,{names:f===h.m.kind?m:l,at:0}),(0,b.jsxs)("form",{action:d,className:`${j.r} grid gap-3`,"data-testid":"add-server-address",children:[(0,b.jsx)("input",{type:"hidden",name:g.H,value:e}),(0,b.jsx)(o,{refusal:a.refusal}),(0,b.jsxs)("label",{className:j.z,children:[(0,b.jsx)("span",{children:"Streamable HTTP address"}),(0,b.jsx)("input",{className:j.w,type:"url",name:"url",defaultValue:a.fields.url??"",placeholder:"https://mcp.example.com/mcp",required:!0})]}),(0,b.jsx)(i.f,{legend:"The server's credential",fields:a.fields,noneHelp:"The gateway sends no credential: for a server reached only on a private network.",canEachPersonSignIn:!0,onKindChange:n}),(0,b.jsx)("div",{children:(0,b.jsx)(k.f,{pending:r?"Next…":"Checking the server…",testId:"add-server-check",children:r?"Next":"Check the server"})})]})]})}var r=a.i(35149),s=a.i(10020),t=a.i(47763);function u({tool:a,control:c,testId:d}){let{name:e,description:f,isReadOnly:g,isNew:h=!1}=a,i=void 0===f?"":f.split("\n").map(a=>a.trim()).find(a=>""!==a)??"",j=void 0!==f&&f.trim()!==i;return(0,b.jsxs)("li",{className:"grid gap-1 border-b border-border py-2 last:border-b-0","data-testid":d,children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,b.jsx)("span",{className:"font-mono",children:e}),g?(0,b.jsx)(t.E,{children:"reads only"}):null,h?(0,b.jsx)(t.T,{tone:"attention",label:"New"}):null]}),""===i?null:j?(0,b.jsxs)("details",{className:"text-muted-foreground",children:[(0,b.jsx)("summary",{className:"cursor-pointer",children:i}),(0,b.jsx)("p",{className:"mt-1 whitespace-pre-line",children:f})]}):(0,b.jsx)("p",{className:"text-muted-foreground",children:i})]})}function v({tools:a,canSwitch:d}){let[e,f]=(0,c.useState)(new Set),g=a.length-e.size;return(0,b.jsxs)("section",{className:"grid gap-2","data-testid":"add-server-tools",children:[(0,b.jsxs)("h2",{className:"flex flex-wrap justify-between gap-2 text-section font-semibold",children:[(0,b.jsxs)("span",{children:["The server answers: ",a.length," ",1===a.length?"tool":"tools"]}),d?(0,b.jsxs)("span",{role:"status",className:"font-normal text-muted-foreground","data-testid":"add-server-tools-on",children:[g," of ",a.length," on"]}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground",children:d?"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,b.jsx)("ul",{className:"grid",children:a.map(a=>{let c=!e.has(a.name);return(0,b.jsx)(u,{tool:a,testId:"add-server-tool",control:d?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{type:"hidden",name:"toolShown",value:a.name}),c?(0,b.jsx)("input",{type:"hidden",name:"toolOn",value:a.name}):null,(0,b.jsx)(s.f,{isOn:c,label:a.name,onClick:()=>{var b;b=a.name,f(a=>{let c=new Set(a);return c.delete(b)||c.add(b),c})}})]}):null},a.name)})})]})}let w=["url","credentialKind","token","clientId","clientSecret","issuer","scope"];function x({state:a,refused:d,action:e,onBack:f,fleetId:h,canSwitchTools:i}){let n,q="refused"===d.kind&&d.requestId===a.requestId,s=q?d.fields:a.fields,t=s.url??"",[u,y]=(0,c.useState)(s.name??function(a){if(!URL.canParse(a))return"";let{hostname:b}=new URL(a);return/^\d+(\.\d+){3}$/.test(b)||b.startsWith("[")?"":(b.split(".").filter(a=>"mcp"!==a&&"www"!==a)[0]??"").toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-+|-+$/g,"")}(t)),z=a.tools;return(0,b.jsxs)(b.Fragment,{children:[null===z?(0,b.jsx)(p,{names:m,at:1}):(0,b.jsx)(p,{names:l,at:2}),(0,b.jsxs)("form",{action:e,className:`${j.r} grid gap-3`,"data-testid":"add-server-owner",children:[null===z?null:(0,b.jsx)(v,{tools:z,canSwitch:i}),(0,b.jsx)("h2",{className:"text-section font-semibold",children:"Its owner"}),(0,b.jsx)(o,{refusal:q?d.message:void 0}),(0,b.jsx)("input",{type:"hidden",name:g.H,value:h}),(0,b.jsx)("input",{type:"hidden",name:"requestId",value:a.requestId}),w.map(a=>(0,b.jsx)("input",{type:"hidden",name:a,value:s[a]??""},a)),(0,b.jsx)("p",{className:"font-mono text-muted-foreground",children:t}),(0,b.jsxs)("label",{className:j.z,children:[(0,b.jsx)("span",{children:"Proxy ship's name"}),(0,b.jsx)("input",{className:j.w,type:"text",name:"name",value:u,onChange:a=>{y(a.target.value)},required:!0})]}),(0,b.jsx)(r.f,{choices:a.owners,current:a.owners.find(a=>a.shipId===s.ownerShipId)??null,help:"A person ship or argo. It answers for this server."}),(0,b.jsxs)("label",{className:j.z,children:[(0,b.jsx)("span",{children:"Calls at once"}),(0,b.jsx)("input",{className:j.w,type:"number",name:"concurrencyLimit",min:1,max:10,defaultValue:s.concurrencyLimit??"4"})]}),null===z?(0,b.jsx)("p",{className:"text-muted-foreground",children:"Its tools show once someone signs in."}):null,(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(k.f,{pending:null===z?"Checking the sign-in…":"Adding…",testId:"add-server-approve",children:""===(n=u.trim())?"Add as outside party":n.length>20?`Add ${n.slice(0,20)}…`:`Add ${n}`}),(0,b.jsx)("button",{type:"button",className:j.x.secondary,onClick:f,children:"Back to the address"})]})]})]})}var y=a.i(25959),z=a.i(48242),A=a.i(60247);function B({fleetId:a,name:d}){let[e,f]=(0,c.useActionState)(A.f,g.Q);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(p,{names:m,at:2}),(0,b.jsxs)("form",{action:f,className:`${j.r} grid gap-3`,"data-testid":"add-server-sign-in",children:[(0,b.jsx)(n.f,{state:{kind:"done",message:`${d} is added.`}}),(0,b.jsx)(n.f,{state:e}),(0,b.jsx)("input",{type:"hidden",name:g.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"name",value:d}),(0,b.jsxs)("p",{children:["Sign in to ",d," for yourself. Its tools show after the first sign-in."]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(k.f,{pending:`Opening ${d}…`,testId:"add-server-sign-in-start",children:["Sign in to ",d]}),(0,b.jsx)("a",{href:(0,y.f)((0,z.f)(d),a),className:j.x.secondary,children:"Later"})]})]})]})}a.s(["AddServer",0,function({fleetId:a,canSwitchTools:d}){let[g,h]=(0,c.useActionState)(f,{step:"address",fields:{}}),[i,j]=(0,c.useActionState)(e,{kind:"idle"}),[k,l]=(0,c.useState)(void 0),m="owner"===g.step&&k!==g.requestId?g:void 0;return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Add MCP server"}),"added"===i.kind?(0,b.jsx)(B,{fleetId:a,name:i.name}):void 0===m?(0,b.jsx)(q,{state:g,action:h,fleetId:a}):(0,b.jsx)(x,{state:m,refused:i,action:j,onBack:()=>{l(m.requestId)},fleetId:a,canSwitchTools:d})]})}],29372)}];
1
+ module.exports=[29372,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("6017da4704ef1e4dbcd358dccf1419a47cda9928b2",d.callServer,void 0,d.findSourceMapURL,"approveServer"),f=(0,d.createServerReference)("603323a3622f7b8700ab5fb0828fbd34c064b0ea9d",d.callServer,void 0,d.findSourceMapURL,"checkServer");var g=a.i(30587),h=a.i(51636),i=a.i(60224),j=a.i(88412),k=a.i(77237);let l=["Address","Check","Owner"],m=["Address","Owner","Sign in"];var n=a.i(36855);function o({refusal:a}){return void 0===a?null:(0,b.jsx)(n.f,{state:{kind:"refused",message:a}})}function p({names:a,at:c}){return(0,b.jsx)("ol",{className:"flex gap-4",children:a.map((a,d)=>(0,b.jsxs)("li",{"aria-current":d===c?"step":void 0,className:d<=c?"font-medium":"text-muted-foreground",children:[d+1," ",a]},a))})}function q({state:a,action:d,fleetId:e}){let[f,n]=(0,c.useState)((0,h.G)(a.fields.credentialKind??"")),r=f===h.m.kind;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(p,{names:f===h.m.kind?m:l,at:0}),(0,b.jsxs)("form",{action:d,className:`${j.r} grid gap-3`,"data-testid":"add-server-address",children:[(0,b.jsx)("input",{type:"hidden",name:g.H,value:e}),(0,b.jsx)(o,{refusal:a.refusal}),(0,b.jsxs)("label",{className:j.z,children:[(0,b.jsx)("span",{children:"Streamable HTTP address"}),(0,b.jsx)("input",{className:j.w,type:"url",name:"url",defaultValue:a.fields.url??"",placeholder:"https://mcp.example.com/mcp",required:!0})]}),(0,b.jsx)(i.f,{legend:"The server's credential",fields:a.fields,noneHelp:"The gateway sends no credential: for a server reached only on a private network.",canEachPersonSignIn:!0,onKindChange:n}),(0,b.jsx)("div",{children:(0,b.jsx)(k.f,{pending:r?"Next…":"Checking the server…",testId:"add-server-check",children:r?"Next":"Check the server"})})]})]})}var r=a.i(35149),s=a.i(10020),t=a.i(47763);function u({tool:a,control:c,testId:d}){let{name:e,description:f,isReadOnly:g,isNew:h=!1}=a,i=void 0===f?"":f.split("\n").map(a=>a.trim()).find(a=>""!==a)??"",j=void 0!==f&&f.trim()!==i;return(0,b.jsxs)("li",{className:"grid gap-1 border-b border-border py-2 last:border-b-0","data-testid":d,children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,b.jsx)("span",{className:"font-mono",children:e}),g?(0,b.jsx)(t.E,{children:"reads only"}):null,h?(0,b.jsx)(t.T,{tone:"attention",label:"New"}):null]}),""===i?null:j?(0,b.jsxs)("details",{className:"text-muted-foreground",children:[(0,b.jsx)("summary",{className:"cursor-pointer",children:i}),(0,b.jsx)("p",{className:"mt-1 whitespace-pre-line",children:f})]}):(0,b.jsx)("p",{className:"text-muted-foreground",children:i})]})}function v({tools:a,canSwitch:d}){let[e,f]=(0,c.useState)(new Set),g=a.length-e.size;return(0,b.jsxs)("section",{className:"grid gap-2","data-testid":"add-server-tools",children:[(0,b.jsxs)("h2",{className:"flex flex-wrap justify-between gap-2 text-section font-semibold",children:[(0,b.jsxs)("span",{children:["The server answers: ",a.length," ",1===a.length?"tool":"tools"]}),d?(0,b.jsxs)("span",{role:"status",className:"font-normal text-muted-foreground","data-testid":"add-server-tools-on",children:[g," of ",a.length," on"]}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground",children:d?"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,b.jsx)("ul",{className:"grid",children:a.map(a=>{let c=!e.has(a.name);return(0,b.jsx)(u,{tool:a,testId:"add-server-tool",control:d?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{type:"hidden",name:"toolShown",value:a.name}),c?(0,b.jsx)("input",{type:"hidden",name:"toolOn",value:a.name}):null,(0,b.jsx)(s.f,{isOn:c,label:a.name,onClick:()=>{var b;b=a.name,f(a=>{let c=new Set(a);return c.delete(b)||c.add(b),c})}})]}):null},a.name)})})]})}let w=["url","credentialKind","token","clientId","clientSecret","issuer","scope"];function x({state:a,refused:d,action:e,onBack:f,fleetId:h,canSwitchTools:i}){let n,q="refused"===d.kind&&d.requestId===a.requestId,s=q?d.fields:a.fields,t=s.url??"",[u,y]=(0,c.useState)(s.name??function(a){if(!URL.canParse(a))return"";let{hostname:b}=new URL(a);return/^\d+(\.\d+){3}$/.test(b)||b.startsWith("[")?"":(b.split(".").filter(a=>"mcp"!==a&&"www"!==a)[0]??"").toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-+|-+$/g,"")}(t)),z=a.tools;return(0,b.jsxs)(b.Fragment,{children:[null===z?(0,b.jsx)(p,{names:m,at:1}):(0,b.jsx)(p,{names:l,at:2}),(0,b.jsxs)("form",{action:e,className:`${j.r} grid gap-3`,"data-testid":"add-server-owner",children:[null===z?null:(0,b.jsx)(v,{tools:z,canSwitch:i}),(0,b.jsx)("h2",{className:"text-section font-semibold",children:"Its owner"}),(0,b.jsx)(o,{refusal:q?d.message:void 0}),(0,b.jsx)("input",{type:"hidden",name:g.H,value:h}),(0,b.jsx)("input",{type:"hidden",name:"requestId",value:a.requestId}),w.map(a=>(0,b.jsx)("input",{type:"hidden",name:a,value:s[a]??""},a)),(0,b.jsx)("p",{className:"font-mono text-muted-foreground",children:t}),(0,b.jsxs)("label",{className:j.z,children:[(0,b.jsx)("span",{children:"Proxy ship's name"}),(0,b.jsx)("input",{className:j.w,type:"text",name:"name",value:u,onChange:a=>{y(a.target.value)},required:!0})]}),(0,b.jsx)(r.f,{choices:a.owners,current:a.owners.find(a=>a.shipId===s.ownerShipId)??null,help:"A person ship or argo. It answers for this server."}),(0,b.jsxs)("label",{className:j.z,children:[(0,b.jsx)("span",{children:"Calls at once"}),(0,b.jsx)("input",{className:j.w,type:"number",name:"concurrencyLimit",min:1,max:10,defaultValue:s.concurrencyLimit??"4"})]}),null===z?(0,b.jsx)("p",{className:"text-muted-foreground",children:"Its tools show once someone signs in."}):null,(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(k.f,{pending:null===z?"Checking the sign-in…":"Adding…",testId:"add-server-approve",children:""===(n=u.trim())?"Add as outside party":n.length>20?`Add ${n.slice(0,20)}…`:`Add ${n}`}),(0,b.jsx)("button",{type:"button",className:j.x.secondary,onClick:f,children:"Back to the address"})]})]})]})}var y=a.i(25959),z=a.i(48242),A=a.i(43833);function B({fleetId:a,name:d}){let[e,f]=(0,c.useActionState)(A.f,g.Q);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(p,{names:m,at:2}),(0,b.jsxs)("form",{action:f,className:`${j.r} grid gap-3`,"data-testid":"add-server-sign-in",children:[(0,b.jsx)(n.f,{state:{kind:"done",message:`${d} is added.`}}),(0,b.jsx)(n.f,{state:e}),(0,b.jsx)("input",{type:"hidden",name:g.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"name",value:d}),(0,b.jsxs)("p",{children:["Sign in to ",d," for yourself. Its tools show after the first sign-in."]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(k.f,{pending:`Opening ${d}…`,testId:"add-server-sign-in-start",children:["Sign in to ",d]}),(0,b.jsx)("a",{href:(0,y.f)((0,z.f)(d),a),className:j.x.secondary,children:"Later"})]})]})]})}a.s(["AddServer",0,function({fleetId:a,canSwitchTools:d}){let[g,h]=(0,c.useActionState)(f,{step:"address",fields:{}}),[i,j]=(0,c.useActionState)(e,{kind:"idle"}),[k,l]=(0,c.useState)(void 0),m="owner"===g.step&&k!==g.requestId?g:void 0;return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Add MCP server"}),"added"===i.kind?(0,b.jsx)(B,{fleetId:a,name:i.name}):void 0===m?(0,b.jsx)(q,{state:g,action:h,fleetId:a}):(0,b.jsx)(x,{state:m,refused:i,action:j,onBack:()=>{l(m.requestId)},fleetId:a,canSwitchTools:d})]})}],29372)}];
2
2
 
3
3
  //# sourceMappingURL=web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map