@aeolus-fleet/gateway 0.37.1 → 0.37.3

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 (251) hide show
  1. package/dist/adapters/fleet/active-ships.js +24 -1
  2. package/dist/adapters/fleet/active-ships.js.map +1 -1
  3. package/dist/adapters/prisma/changes.d.ts +8 -3
  4. package/dist/adapters/prisma/changes.js +18 -2
  5. package/dist/adapters/prisma/changes.js.map +1 -1
  6. package/dist/app.js +19 -11
  7. package/dist/app.js.map +1 -1
  8. package/dist/core/people/held-deliveries.d.ts +30 -0
  9. package/dist/core/people/held-deliveries.js +42 -0
  10. package/dist/core/people/held-deliveries.js.map +1 -0
  11. package/dist/core/people/opened-of.d.ts +2 -0
  12. package/dist/core/people/opened-of.js.map +1 -1
  13. package/dist/core/people/ports.d.ts +8 -0
  14. package/dist/core/people/read-basket.d.ts +2 -0
  15. package/dist/core/people/read-basket.js.map +1 -1
  16. package/dist/core/people/read-bridge-home.d.ts +2 -0
  17. package/dist/core/people/read-bridge-home.js.map +1 -1
  18. package/dist/core/people/read-inbox.d.ts +16 -8
  19. package/dist/core/people/read-inbox.js +21 -10
  20. package/dist/core/people/read-inbox.js.map +1 -1
  21. package/dist/core/people/send-stored-answers.d.ts +2 -0
  22. package/dist/core/people/send-stored-answers.js +1 -1
  23. package/dist/core/people/send-stored-answers.js.map +1 -1
  24. package/package.json +1 -1
  25. package/web/.next/BUILD_ID +1 -1
  26. package/web/.next/build-manifest.json +3 -3
  27. package/web/.next/diagnostics/route-bundle-stats.json +75 -75
  28. package/web/.next/fallback-build-manifest.json +3 -3
  29. package/web/.next/prerender-manifest.json +3 -3
  30. package/web/.next/server/app/(bridge)/bridge/basket/page/server-reference-manifest.json +10 -10
  31. package/web/.next/server/app/(bridge)/bridge/basket/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(bridge)/bridge/basket/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(bridge)/bridge/done/page/server-reference-manifest.json +4 -4
  34. package/web/.next/server/app/(bridge)/bridge/done/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(bridge)/bridge/done/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(bridge)/bridge/fleet/page/server-reference-manifest.json +3 -3
  37. package/web/.next/server/app/(bridge)/bridge/fleet/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(bridge)/bridge/fleet/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(bridge)/bridge/page/server-reference-manifest.json +9 -9
  40. package/web/.next/server/app/(bridge)/bridge/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(bridge)/bridge/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/(bridge)/bridge/settings/page/server-reference-manifest.json +3 -3
  43. package/web/.next/server/app/(bridge)/bridge/settings/page.js.nft.json +1 -1
  44. package/web/.next/server/app/(bridge)/bridge/settings/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +4 -4
  46. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/server-reference-manifest.json +7 -7
  49. package/web/.next/server/app/(bridge)/bridge/settings/routing/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(bridge)/bridge/settings/routing/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/server-reference-manifest.json +9 -9
  52. package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(bridge)/bridge/stay-aware/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(bridge)/outside-parties/[name]/change/page/server-reference-manifest.json +18 -18
  55. package/web/.next/server/app/(bridge)/outside-parties/[name]/change/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(bridge)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(bridge)/outside-parties/[name]/page/server-reference-manifest.json +10 -10
  58. package/web/.next/server/app/(bridge)/outside-parties/[name]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(bridge)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(bridge)/outside-parties/[name]/retire/page/server-reference-manifest.json +18 -18
  61. package/web/.next/server/app/(bridge)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(bridge)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(bridge)/outside-parties/add/page/server-reference-manifest.json +12 -12
  64. package/web/.next/server/app/(bridge)/outside-parties/add/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(bridge)/outside-parties/add/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(bridge)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +4 -4
  67. package/web/.next/server/app/(bridge)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(bridge)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(bridge)/outside-parties/add-a2a-client/page/server-reference-manifest.json +4 -4
  70. package/web/.next/server/app/(bridge)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(bridge)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(bridge)/outside-parties/page/server-reference-manifest.json +4 -4
  73. package/web/.next/server/app/(bridge)/outside-parties/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(bridge)/outside-parties/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  76. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  79. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
  82. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  85. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  86. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +10 -10
  88. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
  89. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +10 -10
  91. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
  92. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +10 -10
  94. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  95. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +10 -10
  97. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  98. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/_global-error.html +1 -1
  100. package/web/.next/server/app/_global-error.rsc +1 -1
  101. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  102. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  103. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  104. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  105. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  106. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  108. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  109. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  111. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  112. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  114. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  115. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js +1 -1
  117. package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_settings_page_actions_0_te6h-2xxp7l.js +1 -1
  119. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_settings_page_actions_0_te6h-2xxp7l.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js +1 -1
  121. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js +1 -1
  123. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_[name]_change_page_actions_1is-kjq5bubl4.js +1 -1
  125. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_[name]_change_page_actions_1is-kjq5bubl4.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_[name]_page_actions_1mctxtlzsa7xi.js +1 -1
  127. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_[name]_page_actions_1mctxtlzsa7xi.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_[name]_retire_page_actions_0xh6ok1un7s9k.js +1 -1
  129. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_[name]_retire_page_actions_0xh6ok1un7s9k.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_add-a2a-agent_page_actions_1w1q5eavo_loo.js +1 -1
  131. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_add-a2a-agent_page_actions_1w1q5eavo_loo.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_add_page_actions_0urcbg_r0lo7j.js +1 -1
  133. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_outside-parties_add_page_actions_0urcbg_r0lo7j.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ipo8r1s1ntds._.js +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ovcg5tg3nh49._.js +1 -1
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ovcg5tg3nh49._.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ro-majrw7piv._.js +1 -1
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ro-majrw7piv._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__0xurmpdv5uqfl._.js +1 -1
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__0zz6fx0keti4r._.js +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__0zz6fx0keti4r._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__19p4g16n2nh0b._.js +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__19p4g16n2nh0b._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__1ncn4wx-1i09m._.js +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__1ncn4wx-1i09m._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  149. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/_0_nfv33ug5g31._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_0_nfv33ug5g31._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  153. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/{_0d9el5z4r07h8._.js → _0phqji_8-1g8r._.js} +2 -2
  155. package/web/.next/server/chunks/ssr/{_0nmqkf1y-qsc2._.js.map → _0phqji_8-1g8r._.js.map} +1 -1
  156. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  157. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  159. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/{_0nmqkf1y-qsc2._.js → _0yt_0nnqp7qsf._.js} +2 -2
  161. package/web/.next/server/chunks/ssr/{_0d9el5z4r07h8._.js.map → _0yt_0nnqp7qsf._.js.map} +1 -1
  162. package/web/.next/server/chunks/ssr/{_0msh_lv5ns4e9._.js → _12yl1q5vpvmnf._.js} +2 -2
  163. package/web/.next/server/chunks/ssr/{_1a-gh-psko_2f._.js.map → _12yl1q5vpvmnf._.js.map} +1 -1
  164. package/web/.next/server/chunks/ssr/{_1a-gh-psko_2f._.js → _15oq7v7za6xc0._.js} +2 -2
  165. package/web/.next/server/chunks/ssr/{_0msh_lv5ns4e9._.js.map → _15oq7v7za6xc0._.js.map} +1 -1
  166. package/web/.next/server/chunks/ssr/_19gyfcgdw7y22._.js +57 -0
  167. package/web/.next/server/chunks/ssr/_19gyfcgdw7y22._.js.map +1 -0
  168. package/web/.next/server/chunks/ssr/_1cs_0d0h7mhw0._.js +1 -1
  169. package/web/.next/server/chunks/ssr/_1cs_0d0h7mhw0._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  171. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  173. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/_1whn-m68y_cvc._.js +57 -0
  175. package/web/.next/server/chunks/ssr/_1whn-m68y_cvc._.js.map +1 -0
  176. package/web/.next/server/chunks/ssr/web_0a9n7acgjrk5c._.js +1 -1
  177. package/web/.next/server/chunks/ssr/web_0a9n7acgjrk5c._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/web_1vvrekkq5mirt._.js +1 -1
  179. package/web/.next/server/chunks/ssr/web_1vvrekkq5mirt._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js +1 -1
  181. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js +1 -1
  183. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_fleet_page_actions_19wmo6phgvqfk.js +1 -1
  185. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_fleet_page_actions_19wmo6phgvqfk.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js +1 -1
  187. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/{web_features_11rwm0rhf5957._.js → web_features_05tyk8t8uz71m._.js} +2 -2
  189. package/web/.next/server/chunks/ssr/{web_features_11rwm0rhf5957._.js.map → web_features_05tyk8t8uz71m._.js.map} +1 -1
  190. package/web/.next/server/chunks/ssr/{web_features_0cgvngtsgzu24._.js → web_features_0hnjtl8jg_qhq._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{web_features_0cgvngtsgzu24._.js.map → web_features_0hnjtl8jg_qhq._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/{web_features_1loqabdanp8wi._.js → web_features_1_648zpxn76jp._.js} +2 -2
  193. package/web/.next/server/chunks/ssr/{web_features_1loqabdanp8wi._.js.map → web_features_1_648zpxn76jp._.js.map} +1 -1
  194. package/web/.next/server/chunks/ssr/{web_features_1r2u065j-hgrq._.js → web_features_1uzz6jypukhkx._.js} +2 -2
  195. package/web/.next/server/chunks/ssr/{web_features_1r2u065j-hgrq._.js.map → web_features_1uzz6jypukhkx._.js.map} +1 -1
  196. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  197. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  199. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  201. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/{web_features_bridge_17dx2edv4zsex._.js → web_features_bridge_0ldot9q_-xh4o._.js} +2 -2
  203. package/web/.next/server/chunks/ssr/{web_features_bridge_17dx2edv4zsex._.js.map → web_features_bridge_0ldot9q_-xh4o._.js.map} +1 -1
  204. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +1 -1
  205. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +1 -1
  206. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +1 -1
  208. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +1 -1
  210. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  212. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  214. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js +1 -1
  216. package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  218. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  219. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  220. package/web/.next/server/middleware-build-manifest.js +3 -3
  221. package/web/.next/server/pages/500.html +1 -1
  222. package/web/.next/server/preview-props.json +3 -3
  223. package/web/.next/server/server-reference-manifest.js +1 -1
  224. package/web/.next/server/server-reference-manifest.json +49 -49
  225. package/web/.next/static/chunks/{3nqasvqr8d81s.js → 037n80h9g7uj9.js} +1 -1
  226. package/web/.next/static/chunks/{0klu03tcnjzsm.js → 07m-_glbqp-37.js} +1 -1
  227. package/web/.next/static/chunks/0aa4uzjjhyqka.js +1 -0
  228. package/web/.next/static/chunks/{3bvcgvk4m3hxh.js → 10irrhgnj6fen.js} +1 -1
  229. package/web/.next/static/chunks/{12kwix3z2z-fs.js → 13wwvyhf3sngt.js} +1 -1
  230. package/web/.next/static/chunks/15n0w5axo2pz9.js +1 -0
  231. package/web/.next/static/chunks/{1oipnf2j_m8oy.js → 1zz_y28tujbue.js} +1 -1
  232. package/web/.next/static/chunks/{2ztqsnh1sq5f9.js → 2bdw63_s9xtu_.js} +1 -1
  233. package/web/.next/static/chunks/{0d0fsf26a1ep_.js → 2v9rmbrsi3gic.js} +1 -1
  234. package/web/.next/static/chunks/{1az8wx3bt0tc-.js → 3-1jjh1cn7c8-.js} +1 -1
  235. package/web/.next/static/chunks/{3c2whoiify4hd.js → 37he-4csbzq66.js} +1 -1
  236. package/web/.next/static/chunks/{3q_d1vlm22cy0.js → 3ce0mcxr613x9.js} +1 -1
  237. package/web/.next/static/chunks/3q96u74uhyutq.js +1 -0
  238. package/web/.next/static/chunks/{3po7blcdi5_y6.js → 3qdxrlqdxsqgz.js} +1 -1
  239. package/web/.next/static/chunks/{0jqdvhip5x6im.js → 3tjpz6bq80t74.js} +1 -1
  240. package/web/.next/trace +1 -1
  241. package/web/.next/trace-build +1 -1
  242. package/web/.next/server/chunks/ssr/_1e720g1qty0xj._.js +0 -57
  243. package/web/.next/server/chunks/ssr/_1e720g1qty0xj._.js.map +0 -1
  244. package/web/.next/server/chunks/ssr/_1xjxj1ur-j87t._.js +0 -57
  245. package/web/.next/server/chunks/ssr/_1xjxj1ur-j87t._.js.map +0 -1
  246. package/web/.next/static/chunks/04r-53h_fb5rq.js +0 -1
  247. package/web/.next/static/chunks/2fjzmc7-5sf_m.js +0 -1
  248. package/web/.next/static/chunks/38w8690okopia.js +0 -1
  249. /package/web/.next/static/{waEyx88w-M7TBm3nu35s- → LxcgnSJuKSN0rA6kJgwr6}/_buildManifest.js +0 -0
  250. /package/web/.next/static/{waEyx88w-M7TBm3nu35s- → LxcgnSJuKSN0rA6kJgwr6}/_clientMiddlewareManifest.js +0 -0
  251. /package/web/.next/static/{waEyx88w-M7TBm3nu35s- → LxcgnSJuKSN0rA6kJgwr6}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../web/features/outside-party/tools-table/ui/agent-needs.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/tools-table/ui/agent-needs.tsx%22%20%7D","../../../../../web/features/outside-party/tools-table/ui/tools-table.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/tools-table/ui/tools-table.tsx%22%20%7D","../../../../../web/features/outside-party/ui/everyones-sign-ins-card.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/everyones-sign-ins-card.tsx%22%20%7D","../../../../../web/features/outside-party/ui/outside-party.tsx","../../../../../web/features/outside-parties/scope-words.ts","../../../../../web/features/outside-party/tools-table/table-tools.ts","../../../../../web/features/outside-party/tools-table/ui/tools-section.tsx","../../../../../web/features/outside-party/tools-table/ui/tools-skeleton.tsx","../../../../../web/features/outside-party/hooks/read-own-sign-in.ts","../../../../../web/features/forms/ui/outcome.tsx","../../../../../web/features/outside-party/ui/everyones-sign-ins.tsx","../../../../../web/features/outside-party/ui/everyones-sign-ins-section.tsx","../../../../../web/features/outside-party/ui/fact.tsx","../../../../../web/features/outside-party/ui/own-sign-in-card.tsx","../../../../../web/features/outside-party/ui/own-sign-in-forms.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/own-sign-in-forms.tsx%22%20%7D","../../../../../web/features/outside-party/ui/repeatable-switch.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/repeatable-switch.tsx%22%20%7D"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const AgentNeeds = registerClientReference(\n function() { throw new Error(\"Attempted to call AgentNeeds() from the server but AgentNeeds 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/outside-party/tools-table/ui/agent-needs.tsx\",\n \"AgentNeeds\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const ToolsTable = registerClientReference(\n function() { throw new Error(\"Attempted to call ToolsTable() from the server but ToolsTable 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/outside-party/tools-table/ui/tools-table.tsx\",\n \"ToolsTable\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const EveryonesSignInsCard = registerClientReference(\n function() { throw new Error(\"Attempted to call EveryonesSignInsCard() from the server but EveryonesSignInsCard 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/outside-party/ui/everyones-sign-ins-card.tsx\",\n \"EveryonesSignInsCard\",\n);\n","import { Suspense, type ReactNode } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { ADDED_CREDENTIAL_KINDS, SIGN_IN_CREDENTIAL } from '../../forms/server-credential';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { outsideAddressOf, PARTY_KINDS, PARTY_STATES, SIDES, type ListedParty } from '../../outside-parties/party-kinds';\nimport { OUTSIDE_PARTIES_PATH, partyPath } from '../../outside-parties/paths';\nimport { scopeWords } from '../../outside-parties/scope-words';\nimport { StatusBadge, Tag } from '../../outside-parties/ui/status-badge';\nimport { AgentNeeds } from '../tools-table/ui/agent-needs';\nimport { approvalOf, ToolsSection } from '../tools-table/ui/tools-section';\nimport { ToolsSkeleton } from '../tools-table/ui/tools-skeleton';\nimport { readOwnSignIn } from '../hooks/read-own-sign-in';\nimport type { SignInOutcome } from '../own-sign-in';\nimport { EveryonesSignInsSkeleton } from './everyones-sign-ins';\nimport { EveryonesSignInsSection } from './everyones-sign-ins-section';\nimport { Fact } from './fact';\nimport { OwnSignInCard } from './own-sign-in-card';\nimport { RepeatableSwitch } from './repeatable-switch';\n\n/** The scopes that change a party's owner, its scopes, and retire it (0056). */\nexport const OWNING_SCOPE = 'fleet:owner';\nexport const GRANTING_SCOPE = 'scopes:grant';\nexport const RETIRING_SCOPE = 'fleet:manage';\n\n/** The scope that switches a server's tools (aeolus-fleet#1151) and marks an A2A agent (A9). */\nexport const APPROVING_SCOPE = 'gateway:approve';\n\n/** The way back to the list, in the page's fleet. */\nexport function Back({ fleetId }: { fleetId: string }) {\n return (\n <a href={inFleet(OUTSIDE_PARTIES_PATH, fleetId)} className=\"text-muted-foreground hover:text-foreground\">\n ← Outside parties\n </a>\n );\n}\n\n/** Why the API refused: said in place of the page. */\nexport function Refusal({ children }: { children: ReactNode }) {\n return (\n <p role=\"alert\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {children}\n </p>\n );\n}\n\n/** What a party's outside address is called on its page. */\nconst ADDRESS_LABELS: Record<ListedParty['kind'], string> = { mcpServer: 'Address', mcpClient: 'Client id', a2aClient: 'Address', a2aAgent: 'Card address' };\n\nconst UNKNOWN = <span className=\"text-muted-foreground\">Not known</span>;\n\n/** The party's head: its name, protocol, side and state. */\nexport function PartyHead({ party }: { party: ListedParty }) {\n const { protocol, side } = PARTY_KINDS[party.kind];\n const state = PARTY_STATES[party.state];\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <h1 className=\"text-heading-touch font-semibold max-sm:sr-only\">{party.name}</h1>\n <Tag>{protocol}</Tag>\n <Tag>{SIDES[side].one}</Tag>\n <StatusBadge tone={state.tone} label={state.label} />\n </div>\n );\n}\n\n/**\n * One outside party (design B, screens 12 and 14): its proxy ship's state,\n * then its facts as the fleet holds them, and for an MCP server the tools\n * it lists now as a table, with the switch and the scopes each needs\n * (aeolus-fleet#1151, gateway scopes 4.3); for an A2A agent the scopes it\n * needs and its repeatable mark, a switch for an approver (A9). Each control shows only to an account holding\n * its scope; the API checks it again. A server where each person signs in\n * shows your own sign-in between its facts and its tools (decision 0067, M2),\n * and how a sign-in went when the browser comes back; below it, for an\n * account holding gateway:approve, everyone's sign-ins (M3).\n */\nexport async function OutsideParty({ page, name, outcome }: { page: SignedInPage; name: string; outcome: SignInOutcome | null }) {\n const { api, fleetId, scopes } = page;\n const read = await readOf(api.parties.get.query({ name }));\n if (!read.isOk) {\n return (\n <div className=\"grid gap-4\">\n <Refusal>{read.refusal}</Refusal>\n </div>\n );\n }\n const party = read.value;\n const address = outsideAddressOf(party);\n const isApprover = scopes.includes(APPROVING_SCOPE);\n const isSignIn = party.kind === 'mcpServer' && party.credentialKind === SIGN_IN_CREDENTIAL.kind;\n const [cards, agentNeeds, ownSignIn] = await Promise.all([\n party.kind === 'a2aClient' ? readOf(api.parties.cardAddresses.query({ name })) : undefined,\n party.kind === 'a2aAgent' ? Promise.all([readOf(api.parties.scopeRequirements.query({ name })), isApprover ? approvalOf({ api, name }) : { canChange: false, listed: null, reason: null }]) : undefined,\n isSignIn ? readOwnSignIn({ api, fleetId, name }) : undefined,\n ]);\n const change = (\n <a href={inFleet(partyPath(party.name, 'change'), fleetId)} className=\"text-primary hover:underline\" data-testid=\"outside-party-change\">\n Change\n </a>\n );\n return (\n <div className=\"grid gap-4\">\n <PartyHead party={party} />\n <dl className={`${CARD} grid gap-3`}>\n <Fact label=\"Proxy ship\">{party.proxyShipName ?? UNKNOWN}</Fact>\n <Fact label=\"Owner\">\n {party.ownerName ?? UNKNOWN}\n {scopes.includes(OWNING_SCOPE) ? change : null}\n </Fact>\n <Fact label=\"Scopes\">\n {party.scopes === null\n ? UNKNOWN\n : party.scopes.map((scope) => <Tag key={scope}>{scopeWords(scope)}</Tag>)}\n {scopes.includes(GRANTING_SCOPE) ? change : null}\n </Fact>\n {party.kind === 'mcpServer' || party.kind === 'a2aAgent' ? <Fact label=\"Credential\">{ADDED_CREDENTIAL_KINDS.find(({ kind }) => kind === party.credentialKind)?.label}</Fact> : null}\n {address === null ? null : (\n <Fact label={ADDRESS_LABELS[party.kind]}>\n <span className=\"font-mono\">{address}</span>\n </Fact>\n )}\n {party.kind === 'a2aAgent' ? (\n <>\n <Fact label=\"Messages at once\">{party.concurrencyLimit}</Fact>\n <Fact label=\"Needs\">\n {agentNeeds === undefined ? null : agentNeeds[0].isOk ? (\n <AgentNeeds fleetId={fleetId} party={party.name} version={agentNeeds[0].value.version} scopes={agentNeeds[0].value.party} listed={agentNeeds[1].listed} canChange={agentNeeds[1].canChange} />\n ) : (\n <span className=\"text-muted-foreground\">{agentNeeds[0].refusal}</span>\n )}\n </Fact>\n <Fact label=\"Repeatable\">\n {scopes.includes(APPROVING_SCOPE) ? <RepeatableSwitch fleetId={fleetId} party={party.name} isRepeatable={party.isRepeatable} /> : <Tag>{party.isRepeatable ? 'Repeatable' : 'Not repeatable'}</Tag>}\n </Fact>\n </>\n ) : null}\n </dl>\n {ownSignIn === undefined ? null : <OwnSignInCard fleetId={fleetId} party={party.name} read={ownSignIn} outcome={outcome} now={new Date()} />}\n {isSignIn && isApprover ? (\n <Suspense fallback={<EveryonesSignInsSkeleton party={party.name} />}>\n <EveryonesSignInsSection api={api} fleetId={fleetId} name={party.name} />\n </Suspense>\n ) : null}\n {party.kind === 'mcpServer' ? (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-party-tools\">\n <h2 className=\"text-section font-semibold\">Tools</h2>\n <p className=\"text-muted-foreground\">\n The fleet may call only the tools switched on, and a calling ship must hold every scope a tool needs; every ship that may reach {party.name} reaches the same tools. {isApprover ? null : 'Changing them needs gateway:approve.'}\n </p>\n <Suspense fallback={<ToolsSkeleton party={party.name} />}>\n <ToolsSection api={api} fleetId={fleetId} name={party.name} isApprover={isApprover} isSignIn={isSignIn} />\n </Suspense>\n </section>\n ) : null}\n {cards === undefined ? null : (\n <section className={`${CARD} grid gap-2`} data-testid=\"outside-party-cards\">\n <h2 className=\"flex justify-between text-section font-semibold\">\n <span>Card addresses</span>\n {cards.isOk ? <span>{cards.value.addresses.length}</span> : null}\n </h2>\n <p className=\"text-muted-foreground\">One per ship its proxy ship reaches now. Its owner hands them to the client.</p>\n {!cards.isOk ? (\n <p className=\"text-muted-foreground\">{cards.refusal}</p>\n ) : cards.value.addresses.length === 0 ? (\n <p className=\"text-muted-foreground\">It reaches no ship now.</p>\n ) : (\n <ul className=\"grid gap-1\">\n {cards.value.addresses.map((address) => (\n <li key={address} className=\"break-all font-mono text-code\">\n {address}\n </li>\n ))}\n </ul>\n )}\n </section>\n )}\n {scopes.includes(RETIRING_SCOPE) ? (\n <div>\n <a className={BUTTONS.secondary} href={inFleet(partyPath(party.name, 'retire'), fleetId)} data-testid=\"outside-party-retire\">\n Retire {party.name}…\n </a>\n </div>\n ) : null}\n </div>\n );\n}\n","import { CORE_SCOPE_DESCRIPTIONS, scopeSchema } from '@aeolus-fleet/common';\n\n/** A scope in plain words: what a core scope allows, as the fleet words it (decision 0046); a plugin's scope by its name. */\nexport function scopeWords(scope: string): string {\n const core = scopeSchema.safeParse(scope);\n return core.success ? CORE_SCOPE_DESCRIPTIONS[core.data] : scope;\n}\n","/**\n * The rows of an outside MCP server's tools table (gateway scopes 4.3):\n * each tool the server lists now, with its switch, the hints it gives and\n * the scopes it needs of its own; and the filters an approver narrows them by.\n */\nimport type { Read } from '../../../lib/gateway-api/page-api';\n\n/** A tool as the server lists it now, with its switch, as the API answers it. */\nexport interface ListedTool {\n name: string;\n description?: string | undefined;\n isReadOnly?: boolean | undefined;\n isDestructive?: boolean | undefined;\n isOn: boolean;\n isNew: boolean;\n}\n\n/** A party's required scopes as the API answers them. */\nexport interface PartyRequirements {\n version: number;\n party: string[];\n tools: { tool: string; scopes: string[] }[];\n}\n\n/** One row: the tool, its switch (unknown while the server does not answer), and the scopes it needs of its own. */\nexport interface TableTool {\n name: string;\n description?: string | undefined;\n isReadOnly?: boolean | undefined;\n isDestructive?: boolean | undefined;\n isOn: boolean | null;\n isNew: boolean;\n scopes: readonly string[];\n}\n\n/**\n * The rows: every tool the server lists with what it needs; while the server\n * does not answer, the requirements kept per tool name, so they can still be\n * read and changed.\n */\nexport function tableToolsOf({ read, requirements }: { read: Read<{ tools: ListedTool[] }>; requirements: PartyRequirements }): TableTool[] {\n const own = new Map(requirements.tools.map(({ tool, scopes }) => [tool, scopes]));\n if (!read.isOk) {\n return requirements.tools.map(({ tool, scopes }) => ({ name: tool, isOn: null, isNew: false, scopes }));\n }\n return read.value.tools.map((tool) => ({ ...tool, scopes: own.get(tool.name) ?? [] }));\n}\n\n/** The table's state filter. */\nexport const STATE_FILTERS = [\n { state: 'all', label: 'All' },\n { state: 'on', label: 'On' },\n { state: 'off', label: 'Off' },\n { state: 'new', label: 'New' },\n { state: 'needsNothing', label: 'Needs nothing' },\n] as const;\n\nexport type StateFilter = (typeof STATE_FILTERS)[number]['state'];\n\nfunction isInState(tool: TableTool, { state, partyScopes }: { state: StateFilter; partyScopes: readonly string[] }): boolean {\n switch (state) {\n case 'all':\n return true;\n case 'on':\n return tool.isOn === true;\n case 'off':\n return tool.isOn === false;\n case 'new':\n return tool.isNew;\n case 'needsNothing':\n return partyScopes.length === 0 && tool.scopes.length === 0;\n }\n}\n\n/** The tools whose name holds the text, in any case, and that are in the state picked. */\nexport function shownTools(tools: readonly TableTool[], filter: { name: string; state: StateFilter; partyScopes: readonly string[] }): TableTool[] {\n const name = filter.name.trim().toLowerCase();\n return tools.filter((tool) => tool.name.toLowerCase().includes(name) && isInState(tool, filter));\n}\n\n/** What the page kept since it read the rows: each changed tool's own scopes, and each switched tool's switch. */\nexport interface KeptChanges {\n scopes: ReadonlyMap<string, readonly string[]>;\n switches: ReadonlyMap<string, boolean>;\n}\n\n/** The rows with what was kept since they were read, so a change shows at once rather than when the page reads the server again. */\nexport function keptToolsOf(tools: readonly TableTool[], kept: KeptChanges): TableTool[] {\n return tools.map((tool) => ({ ...tool, scopes: kept.scopes.get(tool.name) ?? tool.scopes, isOn: tool.isOn === null ? null : (kept.switches.get(tool.name) ?? tool.isOn) }));\n}\n","import type { GatewayApi } from '../../../../lib/gateway-api/gateway-api';\nimport { readOf } from '../../../../lib/gateway-api/page-api';\nimport { tableToolsOf } from '../table-tools';\nimport { ToolsTable } from './tools-table';\n\n/** How the API refuses a sign-in server's tools while nobody holds a usable sign-in to it (src/adapters/trpc/router.ts, NOT_SIGNED_IN). */\nconst NOBODY_SIGNED_IN = 'PRECONDITION_FAILED';\n\n/** Whether the actor approves the party, and the scopes the fleet lists when it does: what the controls need. */\nexport async function approvalOf({ api, name }: { api: GatewayApi; name: string }) {\n const approving = await readOf(api.parties.approving.query({ name }));\n const canChange = approving.isOk && approving.value.isApproving;\n const listed = canChange ? await readOf(api.parties.listedScopes.query()) : undefined;\n return {\n canChange: canChange && listed?.isOk === true,\n listed: listed?.isOk === true ? listed.value.scopes : null,\n /** Why the controls are not shown, when the actor holds gateway:approve but may not use them now. */\n reason: approving.isOk ? (approving.value.isApproving ? (listed?.isOk === false ? listed.refusal : null) : approving.value.reason) : approving.refusal,\n };\n}\n\n/**\n * An outside MCP server's tools section (gateway scopes 4.3): the tools the\n * server lists now, the scopes each needs, and whether the actor may change\n * them, read side by side. It streams in behind skeleton rows, as the\n * server's tools/list may take a while. A server where each person signs in\n * lists none until someone holds a usable sign-in (decision 0067), and says so.\n */\nexport async function ToolsSection({ api, fleetId, name, isApprover, isSignIn }: { api: GatewayApi; fleetId: string; name: string; isApprover: boolean; isSignIn: boolean }) {\n const [read, requirements, approval] = await Promise.all([\n readOf(api.parties.tools.query({ name })),\n readOf(api.parties.scopeRequirements.query({ name })),\n isApprover ? approvalOf({ api, name }) : { canChange: false, listed: null, reason: null },\n ]);\n if (!requirements.isOk) {\n return <p className=\"text-muted-foreground\">{requirements.refusal}</p>;\n }\n if (isSignIn && !read.isOk && read.code === NOBODY_SIGNED_IN) {\n return <p className=\"text-muted-foreground\">{read.refusal}</p>;\n }\n return (\n <div className=\"grid gap-3\">\n {approval.reason === null ? null : (\n <p className=\"text-muted-foreground\" data-testid=\"tools-table-read-only-reason\">\n You see these read-only: {approval.reason}\n </p>\n )}\n <ToolsTable\n fleetId={fleetId}\n party={name}\n tools={tableToolsOf({ read, requirements: requirements.value })}\n version={requirements.value.version}\n partyScopes={requirements.value.party}\n listed={approval.listed}\n canChange={approval.canChange}\n serverRefusal={read.isOk ? null : read.refusal}\n />\n </div>\n );\n}\n","/** How many rows the table shows while the server's tools/list is read. */\nconst SKELETON_ROWS = 8;\n\n/** The tools table's shape while the server's tools/list is read (gateway scopes 4.3). */\nexport function ToolsSkeleton({ party }: { party: string }) {\n return (\n <div aria-busy=\"true\" aria-label={`Reading the tools ${party} lists`} className=\"grid gap-2\" data-testid=\"tools-table-skeleton\">\n <span className=\"block h-9 w-full animate-pulse rounded-md bg-muted\" />\n {Array.from({ length: SKELETON_ROWS }, (_, row) => (\n <span key={row} className=\"block h-10 animate-pulse rounded-md bg-muted\" />\n ))}\n </div>\n );\n}\n","/**\n * Your own sign-in to a server, as its page reads it through the API\n * (decision 0067, M2). The API refuses an account with no person ship in\n * the fleet (Q16): the page then names the fleet it needs one in.\n */\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { refusalCodeOf, refusalMessageOf } from '../../../lib/gateway-api/page-api';\nimport type { OwnSignInRead } from '../ui/own-sign-in-card';\n\n/** How the API refuses a person's own sign-in to an account with no person ship (src/adapters/trpc/router.ts, NOT_A_PERSON). */\nconst NOT_A_PERSON = 'FORBIDDEN';\n\n/** The fleet's name as pagasae lists it, or plain words when it does not answer. */\nasync function fleetNameOf(api: GatewayApi, fleetId: string): Promise<string> {\n try {\n return (await api.account.apps.query()).fleets.find(({ id }) => id === fleetId)?.name ?? 'this fleet';\n } catch (error) {\n if (refusalCodeOf(error) === undefined) {\n throw error;\n }\n return 'this fleet';\n }\n}\n\nexport async function readOwnSignIn({ api, fleetId, name }: { api: GatewayApi; fleetId: string; name: string }): Promise<OwnSignInRead> {\n try {\n return { kind: 'read', own: await api.parties.ownSignIn.query({ name }) };\n } catch (error) {\n if (refusalCodeOf(error) === NOT_A_PERSON) {\n return { kind: 'noPersonShip', fleetName: await fleetNameOf(api, fleetId) };\n }\n return { kind: 'refused', message: refusalMessageOf(error) };\n }\n}\n","import type { FormState } from '../form-state';\n\n/** How a form ended: what changed, or why it was refused. Nothing while it has not been sent. */\nexport function Outcome({ state, testId }: { state: FormState; testId?: string }) {\n switch (state.kind) {\n case 'idle':\n return null;\n case 'done':\n return (\n <p role=\"status\" data-testid={testId} className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {state.message}\n </p>\n );\n case 'refused':\n case 'openNetwork':\n return (\n <p role=\"alert\" data-testid={testId} className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {state.message}\n </p>\n );\n }\n}\n","import type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport type { FormState } from '../../forms/form-state';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport type { Tone } from '../../outside-parties/party-kinds';\nimport { StatusBadge } from '../../outside-parties/ui/status-badge';\nimport { whenWordsOf } from '../own-sign-in';\n\n/** A person's sign-in as the API answers it to an approver: never a token. */\nexport type PersonSignIn = inferRouterOutputs<GatewayRouter>['parties']['signIns']['grants'][number];\n\nconst BADGES: Record<PersonSignIn['state'], { tone: Tone; label: string }> = {\n signedIn: { tone: 'ok', label: 'Signed in' },\n lost: { tone: 'attention', label: 'Lost' },\n};\n\n/** How many rows the list shows while it is read. */\nconst SKELETON_ROWS = 3;\n\n/** The person a sign-in is of: their person ship's name, or its id where the fleet answered no name. */\nexport function personOf(signIn: PersonSignIn): string {\n return signIn.personName ?? signIn.personShipId;\n}\n\nfunction accountOf({ outsideAccount }: PersonSignIn) {\n return outsideAccount.name ?? outsideAccount.subject ?? <span className=\"text-muted-foreground\">Not known</span>;\n}\n\nfunction Heading({ count }: { count: number | null }) {\n return (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-section font-semibold\">Everyone&apos;s sign-ins</h2>\n {count === null ? null : <span className=\"text-muted-foreground\">{count}</span>}\n </div>\n );\n}\n\nfunction Head() {\n return (\n <thead className=\"max-sm:hidden\">\n <tr className=\"border-b border-border text-left text-muted-foreground\">\n <th className=\"h-10 px-2 font-medium\">Person</th>\n <th className=\"h-10 px-2 font-medium\">Account</th>\n <th className=\"h-10 px-2 font-medium\">State</th>\n <th className=\"h-10 px-2 font-medium\">Last used</th>\n <th className=\"h-10 px-2\">\n <span className=\"sr-only\">Remove</span>\n </th>\n </tr>\n </thead>\n );\n}\n\n/** Everyone's sign-ins while they are read: the heading and the table's shape. */\nexport function EveryonesSignInsSkeleton({ party }: { party: string }) {\n return (\n <section className={`${CARD} grid gap-3`} aria-busy=\"true\" aria-label={`Reading everyone's sign-ins to ${party}`} data-testid=\"outside-party-sign-ins-skeleton\">\n <Heading count={null} />\n <table className=\"w-full border-collapse max-sm:block\">\n <Head />\n <tbody className=\"max-sm:grid\">\n {Array.from({ length: SKELETON_ROWS }, (_, row) => (\n <tr key={row} className=\"border-b border-border last:border-b-0 max-sm:grid max-sm:gap-1 max-sm:py-3\">\n <td className=\"h-12 px-2 max-sm:h-auto max-sm:px-0\">\n <span className=\"block h-3.5 w-20 animate-pulse rounded-md bg-muted max-sm:w-2/5\" />\n </td>\n <td className=\"h-12 px-2 max-sm:h-auto max-sm:px-0\">\n <span className=\"block h-3.5 w-36 animate-pulse rounded-md bg-muted max-sm:w-3/4\" />\n </td>\n <td className=\"h-12 px-2 max-sm:hidden\">\n <span className=\"block h-3.5 w-16 animate-pulse rounded-md bg-muted\" />\n </td>\n <td className=\"h-12 px-2 max-sm:hidden\">\n <span className=\"block h-3.5 w-20 animate-pulse rounded-md bg-muted\" />\n </td>\n <td className=\"max-sm:hidden\" />\n </tr>\n ))}\n </tbody>\n </table>\n </section>\n );\n}\n\n/** What the card shows now, and what each press asks of the part that holds it. */\nexport interface SignInsCardProps {\n party: string;\n /** When the page was read, so every row says its times from the same moment. */\n now: string;\n rows: readonly PersonSignIn[];\n /** Why the API refused the list, said in place of it. */\n refusal: string | null;\n hasMore: boolean;\n isLoadingMore: boolean;\n /** The person ship whose removal waits for a confirm. */\n confirming: string | null;\n /** The person ship whose removal is on its way. */\n removing: string | null;\n outcome: FormState;\n onRemove: (personShipId: string) => void;\n onConfirm: (signIn: PersonSignIn) => void;\n onKeep: () => void;\n onMore: () => void;\n}\n\nfunction Confirm({ signIn, party, isRemoving, onConfirm, onKeep }: { signIn: PersonSignIn; party: string; isRemoving: boolean; onConfirm: () => void; onKeep: () => void }) {\n const person = personOf(signIn);\n return (\n <div className=\"grid gap-2 rounded-md bg-muted p-3\" data-testid=\"outside-party-sign-ins-confirm\">\n <p>\n Remove {person}&apos;s sign-in? Their ships&apos; calls to {party} are refused until they sign in again.\n </p>\n <div className=\"flex flex-wrap gap-2\">\n <button type=\"button\" className={BUTTONS.destructive} disabled={isRemoving} aria-busy={isRemoving} onClick={onConfirm} data-testid=\"outside-party-sign-ins-remove-confirmed\">\n {isRemoving ? 'Removing…' : `Remove ${person}'s sign-in`}\n </button>\n <button type=\"button\" className={BUTTONS.secondary} onClick={onKeep}>\n Keep\n </button>\n </div>\n </div>\n );\n}\n\n/**\n * Everyone's sign-ins to a server where each person signs in (decision 0067,\n * M3), for an account holding gateway:approve: each person, their outside\n * account, state and when last used, with Remove confirmed in place. A table\n * on a wide screen, a list on a phone, 20 a page with Show more.\n */\nexport function SignInsCard(props: SignInsCardProps) {\n const { party, now, rows, refusal, hasMore, isLoadingMore, confirming, removing, outcome } = props;\n const lastUsedOf = (signIn: PersonSignIn) => (signIn.lastUsedAt === null ? 'Not yet' : whenWordsOf(signIn.lastUsedAt, new Date(now)));\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-party-sign-ins\">\n <Heading count={refusal === null ? rows.length : null} />\n <Outcome state={outcome} />\n {refusal !== null ? (\n <Outcome state={{ kind: 'refused', message: refusal }} />\n ) : rows.length === 0 ? (\n <p className=\"text-muted-foreground\">Nobody has signed in yet.</p>\n ) : (\n <table className=\"w-full border-collapse max-sm:block\">\n <Head />\n <tbody className=\"max-sm:grid\">\n {rows.map((signIn) => {\n const badge = BADGES[signIn.state];\n const isConfirming = confirming === signIn.personShipId;\n const lastUsed = lastUsedOf(signIn);\n return [\n <tr key={signIn.personShipId} className={`border-b border-border max-sm:grid max-sm:grid-cols-[1fr_auto] max-sm:gap-1 max-sm:py-3 ${isConfirming ? 'border-b-0' : 'last:border-b-0'}`} data-testid=\"outside-party-sign-ins-row\">\n <td className=\"h-12 px-2 max-sm:col-start-1 max-sm:row-start-1 max-sm:h-auto max-sm:px-0 max-sm:font-medium\">\n {personOf(signIn)}\n {signIn.isYours ? <span className=\"font-normal text-muted-foreground\"> (you)</span> : null}\n </td>\n <td className=\"h-12 px-2 max-sm:col-span-2 max-sm:row-start-2 max-sm:h-auto max-sm:px-0 max-sm:text-muted-foreground\">\n {accountOf(signIn)}\n <span className=\"sm:hidden\"> · last used {signIn.lastUsedAt === null ? 'not yet' : lastUsed}</span>\n </td>\n <td className=\"h-12 px-2 max-sm:col-start-2 max-sm:row-start-1 max-sm:h-auto max-sm:px-0\">\n <StatusBadge tone={badge.tone} label={badge.label} />\n </td>\n <td className=\"h-12 px-2 text-muted-foreground max-sm:hidden\">{lastUsed}</td>\n <td className=\"h-12 px-2 text-right max-sm:col-span-2 max-sm:row-start-3 max-sm:h-auto max-sm:px-0 max-sm:text-left\">\n <button type=\"button\" className={`${BUTTONS.secondary} ${isConfirming ? 'max-sm:hidden' : ''}`} onClick={() => { props.onRemove(signIn.personShipId); }} data-testid=\"outside-party-sign-ins-remove\">\n Remove\n </button>\n </td>\n </tr>,\n isConfirming ? (\n <tr key={`${signIn.personShipId}-confirm`} className=\"border-b border-border last:border-b-0 max-sm:block max-sm:pb-3\">\n <td colSpan={5} className=\"pb-2 max-sm:block max-sm:pb-0\">\n <Confirm signIn={signIn} party={party} isRemoving={removing === signIn.personShipId} onConfirm={() => { props.onConfirm(signIn); }} onKeep={props.onKeep} />\n </td>\n </tr>\n ) : null,\n ];\n })}\n </tbody>\n </table>\n )}\n {refusal === null && hasMore ? (\n <div>\n <button type=\"button\" className={BUTTONS.secondary} disabled={isLoadingMore} aria-busy={isLoadingMore} onClick={props.onMore} data-testid=\"outside-party-sign-ins-more\">\n {isLoadingMore ? 'Showing more…' : 'Show more'}\n </button>\n </div>\n ) : null}\n </section>\n );\n}\n","import type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { readOf } from '../../../lib/gateway-api/page-api';\nimport { SignInsCard } from './everyones-sign-ins';\nimport { EveryonesSignInsCard } from './everyones-sign-ins-card';\n\nconst NOTHING = () => undefined;\n\n/**\n * Everyone's sign-ins to a server where each person signs in, for an account\n * holding gateway:approve (decision 0067, M3, Q12): the first page read as it\n * streams in behind skeleton rows, or why the API refused it. The API checks\n * the approver's manage reach of the proxy ship again.\n */\nexport async function EveryonesSignInsSection({ api, fleetId, name }: { api: GatewayApi; fleetId: string; name: string }) {\n const read = await readOf(api.parties.signIns.query({ name, after: null }));\n const now = new Date().toISOString();\n if (!read.isOk) {\n return <SignInsCard party={name} now={now} rows={[]} refusal={read.refusal} hasMore={false} isLoadingMore={false} confirming={null} removing={null} outcome={{ kind: 'idle' }} onRemove={NOTHING} onConfirm={NOTHING} onKeep={NOTHING} onMore={NOTHING} />;\n }\n return <EveryonesSignInsCard fleetId={fleetId} party={name} now={now} first={read.value} />;\n}\n","import type { ReactNode } from 'react';\n\n/** One fact of a party's page: its label beside it, above it on a phone. */\nexport function Fact({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div className=\"grid gap-1 sm:grid-cols-[10rem_1fr]\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd className=\"flex flex-wrap items-center gap-2\">{children}</dd>\n </div>\n );\n}\n","import type { inferRouterOutputs } from '@trpc/server';\nimport type { ReactNode } from 'react';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { CARD } from '../../forms/ui/look';\nimport type { Tone } from '../../outside-parties/party-kinds';\nimport { StatusBadge, Tag } from '../../outside-parties/ui/status-badge';\nimport { dayAndTimeOf, whenWordsOf, type SignInOutcome, type SignInOutcomeKind } from '../own-sign-in';\nimport { Fact } from './fact';\nimport { RemoveSignInForm, SignInForm } from './own-sign-in-forms';\n\ntype OwnSignIn = inferRouterOutputs<GatewayRouter>['parties']['ownSignIn'];\n\n/** Your sign-in as the page read it: the API's answer, no person ship in the fleet to sign in as, or why the API refused. */\nexport type OwnSignInRead = { kind: 'read'; own: OwnSignIn } | { kind: 'noPersonShip'; fleetName: string } | { kind: 'refused'; message: string };\n\nconst BADGES: Record<OwnSignIn['state'], { tone: Tone; label: string }> = {\n notSignedIn: { tone: 'ended', label: 'Not signed in' },\n signedIn: { tone: 'ok', label: 'Signed in' },\n lost: { tone: 'attention', label: 'Lost' },\n};\n\n/** How each outcome is said: its words and tone, and whether it is an alert. */\nfunction saidOf(kind: SignInOutcomeKind, party: string): { message: string; tone: Tone; isAlert: boolean } {\n switch (kind) {\n case 'signedIn':\n return { message: `You are signed in to ${party}.`, tone: 'ok', isAlert: false };\n case 'removed':\n return { message: `Your sign-in to ${party} is removed.`, tone: 'ok', isAlert: false };\n case 'failed':\n return { message: 'The sign-in did not finish: press Sign in again.', tone: 'attention', isAlert: true };\n case 'turnedAway':\n return { message: `That ${party} account is another person's sign-in in this fleet: sign in as your own.`, tone: 'attention', isAlert: true };\n case 'cancelled':\n return { message: `You are not signed in to ${party}: the sign-in was cancelled or refused there.`, tone: 'ended', isAlert: false };\n case 'unavailable':\n return { message: `${party}'s sign-in did not answer: try again in a moment.`, tone: 'attention', isAlert: true };\n }\n}\n\nconst NOTE_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/** How the sign-in went, with the authorization server's error code beside it where it answered one. */\nfunction Said({ outcome, party }: { outcome: SignInOutcome; party: string }) {\n const { message, tone, isAlert } = saidOf(outcome.kind, party);\n return (\n <>\n <p role={isAlert ? 'alert' : 'status'} className={`rounded-md border px-3 py-2 ${NOTE_TONES[tone]}`}>\n {message}\n </p>\n {outcome.serverError === null ? null : (\n <div>\n <Tag isMono>{outcome.serverError}</Tag>\n </div>\n )}\n </>\n );\n}\n\nfunction accountOf({ outsideAccount }: { outsideAccount: { subject: string | null; name: string | null } }): ReactNode {\n return outsideAccount.name ?? outsideAccount.subject ?? <span className=\"text-muted-foreground\">Not known</span>;\n}\n\nfunction OwnBody({ own, fleetId, party, now }: { own: OwnSignIn; fleetId: string; party: string; now: Date }) {\n switch (own.state) {\n case 'notSignedIn':\n return (\n <>\n <p className=\"text-muted-foreground\">Until you sign in, your ships&apos; calls to {party} are refused.</p>\n <SignInForm fleetId={fleetId} party={party} label=\"Sign in\" kind=\"primary\" />\n </>\n );\n case 'signedIn':\n return (\n <>\n <dl className=\"grid gap-3\">\n <Fact label=\"Account\">{accountOf(own)}</Fact>\n <Fact label=\"Signed in\">{whenWordsOf(own.signedInAt, now)}</Fact>\n <Fact label=\"Last used\">{own.lastUsedAt === null ? 'Not yet' : whenWordsOf(own.lastUsedAt, now)}</Fact>\n </dl>\n <div className=\"flex flex-wrap items-start gap-2\">\n <SignInForm fleetId={fleetId} party={party} label=\"Sign in again\" kind=\"secondary\" />\n <RemoveSignInForm fleetId={fleetId} party={party} />\n </div>\n </>\n );\n case 'lost':\n return (\n <>\n <p>\n {party} refused to refresh it on {dayAndTimeOf(own.lost.at)}: <span className=\"font-mono text-code\">{own.lost.why}</span>. Your ships&apos; calls to {party} are refused.\n </p>\n <dl className=\"grid gap-3\">\n <Fact label=\"Account\">{accountOf(own)}</Fact>\n <Fact label=\"Last used\">{own.lastUsedAt === null ? 'Not yet' : whenWordsOf(own.lastUsedAt, now)}</Fact>\n </dl>\n <SignInForm fleetId={fleetId} party={party} label=\"Sign in again\" kind=\"primary\" />\n </>\n );\n }\n}\n\n/**\n * Your own sign-in to a server where each person signs in (decision 0067,\n * M2), between the server's facts and its tools: not signed in, signed in\n * as an outside account, or lost; how a sign-in went when the browser comes\n * back. Every account of the fleet with a person ship sees it (Q16).\n */\nexport function OwnSignInCard({ fleetId, party, read, outcome, now }: { fleetId: string; party: string; read: OwnSignInRead; outcome: SignInOutcome | null; now: Date }) {\n const badge = read.kind === 'read' ? BADGES[read.own.state] : null;\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-party-sign-in\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-section font-semibold\">Your sign-in</h2>\n {badge === null ? null : <StatusBadge tone={badge.tone} label={badge.label} />}\n </div>\n {read.kind === 'read' && outcome !== null ? <Said outcome={outcome} party={party} /> : null}\n {read.kind === 'read' ? (\n <OwnBody own={read.own} fleetId={fleetId} party={party} now={now} />\n ) : read.kind === 'noPersonShip' ? (\n <p className=\"text-muted-foreground\">Signing in needs a person ship in {read.fleetName}.</p>\n ) : (\n <Outcome state={{ kind: 'refused', message: read.message }} />\n )}\n </section>\n );\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const RemoveSignInForm = registerClientReference(\n function() { throw new Error(\"Attempted to call RemoveSignInForm() from the server but RemoveSignInForm 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/outside-party/ui/own-sign-in-forms.tsx\",\n \"RemoveSignInForm\",\n);\nexport const SignInForm = registerClientReference(\n function() { throw new Error(\"Attempted to call SignInForm() from the server but SignInForm 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/outside-party/ui/own-sign-in-forms.tsx\",\n \"SignInForm\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const RepeatableSwitch = registerClientReference(\n function() { throw new Error(\"Attempted to call RepeatableSwitch() from the server but RepeatableSwitch 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/outside-party/ui/repeatable-switch.tsx\",\n \"RepeatableSwitch\",\n);\n"],"names":["AgentNeeds","Error","ToolsTable","EveryonesSignInsCard","scopeWords","scope","core","safeParse","success","data","RemoveSignInForm","SignInForm","RepeatableSwitch"],"mappings":"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","ignoreList":[0,1,2,14,15]}
1
+ {"version":3,"sources":["../../../../../web/features/outside-party/tools-table/ui/agent-needs.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/tools-table/ui/agent-needs.tsx%22%20%7D","../../../../../web/features/outside-party/tools-table/ui/tools-table.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/tools-table/ui/tools-table.tsx%22%20%7D","../../../../../web/features/outside-party/ui/everyones-sign-ins-card.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/everyones-sign-ins-card.tsx%22%20%7D","../../../../../web/features/outside-party/ui/outside-party.tsx","../../../../../web/features/outside-parties/scope-words.ts","../../../../../web/features/outside-party/tools-table/table-tools.ts","../../../../../web/features/outside-party/tools-table/ui/tools-section.tsx","../../../../../web/features/outside-party/tools-table/ui/tools-skeleton.tsx","../../../../../web/features/outside-party/hooks/read-own-sign-in.ts","../../../../../web/features/forms/ui/outcome.tsx","../../../../../web/features/outside-party/ui/everyones-sign-ins.tsx","../../../../../web/features/outside-party/ui/everyones-sign-ins-section.tsx","../../../../../web/features/outside-party/ui/fact.tsx","../../../../../web/features/outside-party/ui/own-sign-in-card.tsx","../../../../../web/features/outside-party/ui/own-sign-in-forms.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/own-sign-in-forms.tsx%22%20%7D","../../../../../web/features/outside-party/ui/repeatable-switch.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/repeatable-switch.tsx%22%20%7D"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const AgentNeeds = registerClientReference(\n function() { throw new Error(\"Attempted to call AgentNeeds() from the server but AgentNeeds 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/outside-party/tools-table/ui/agent-needs.tsx\",\n \"AgentNeeds\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const ToolsTable = registerClientReference(\n function() { throw new Error(\"Attempted to call ToolsTable() from the server but ToolsTable 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/outside-party/tools-table/ui/tools-table.tsx\",\n \"ToolsTable\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const EveryonesSignInsCard = registerClientReference(\n function() { throw new Error(\"Attempted to call EveryonesSignInsCard() from the server but EveryonesSignInsCard 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/outside-party/ui/everyones-sign-ins-card.tsx\",\n \"EveryonesSignInsCard\",\n);\n","import { Suspense, type ReactNode } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { ADDED_CREDENTIAL_KINDS, SIGN_IN_CREDENTIAL } from '../../forms/server-credential';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { outsideAddressOf, PARTY_KINDS, PARTY_STATES, SIDES, type ListedParty } from '../../outside-parties/party-kinds';\nimport { OUTSIDE_PARTIES_PATH, partyPath } from '../../outside-parties/paths';\nimport { scopeWords } from '../../outside-parties/scope-words';\nimport { StatusBadge, Tag } from '../../outside-parties/ui/status-badge';\nimport { AgentNeeds } from '../tools-table/ui/agent-needs';\nimport { approvalOf, ToolsSection } from '../tools-table/ui/tools-section';\nimport { ToolsSkeleton } from '../tools-table/ui/tools-skeleton';\nimport { readOwnSignIn } from '../hooks/read-own-sign-in';\nimport type { SignInOutcome } from '../own-sign-in';\nimport { EveryonesSignInsSkeleton } from './everyones-sign-ins';\nimport { EveryonesSignInsSection } from './everyones-sign-ins-section';\nimport { Fact } from './fact';\nimport { OwnSignInCard } from './own-sign-in-card';\nimport { RepeatableSwitch } from './repeatable-switch';\n\n/** The scopes that change a party's owner, its scopes, and retire it (0056). */\nexport const OWNING_SCOPE = 'fleet:owner';\nexport const GRANTING_SCOPE = 'scopes:grant';\nexport const RETIRING_SCOPE = 'fleet:manage';\n\n/** The scope that switches a server's tools (aeolus-fleet#1151) and marks an A2A agent (A9). */\nexport const APPROVING_SCOPE = 'gateway:approve';\n\n/** The way back to the list, in the page's fleet. */\nexport function Back({ fleetId }: { fleetId: string }) {\n return (\n <a href={inFleet(OUTSIDE_PARTIES_PATH, fleetId)} className=\"text-muted-foreground hover:text-foreground\">\n ← Outside parties\n </a>\n );\n}\n\n/** Why the API refused: said in place of the page. */\nexport function Refusal({ children }: { children: ReactNode }) {\n return (\n <p role=\"alert\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {children}\n </p>\n );\n}\n\n/** What a party's outside address is called on its page. */\nconst ADDRESS_LABELS: Record<ListedParty['kind'], string> = { mcpServer: 'Address', mcpClient: 'Client id', a2aClient: 'Address', a2aAgent: 'Card address' };\n\nconst UNKNOWN = <span className=\"text-muted-foreground\">Not known</span>;\n\n/** The party's head: its name, protocol, side and state. */\nexport function PartyHead({ party }: { party: ListedParty }) {\n const { protocol, side } = PARTY_KINDS[party.kind];\n const state = PARTY_STATES[party.state];\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <h1 className=\"text-heading-touch font-semibold max-sm:sr-only\">{party.name}</h1>\n <Tag>{protocol}</Tag>\n <Tag>{SIDES[side].one}</Tag>\n <StatusBadge tone={state.tone} label={state.label} />\n </div>\n );\n}\n\n/**\n * One outside party (design B, screens 12 and 14): its proxy ship's state,\n * then its facts as the fleet holds them, and for an MCP server the tools\n * it lists now as a table, with the switch and the scopes each needs\n * (aeolus-fleet#1151, gateway scopes 4.3); for an A2A agent the scopes it\n * needs and its repeatable mark, a switch for an approver (A9). Each control shows only to an account holding\n * its scope; the API checks it again. A server where each person signs in\n * shows your own sign-in between its facts and its tools (decision 0067, M2),\n * and how a sign-in went when the browser comes back; below it, for an\n * account holding gateway:approve, everyone's sign-ins (M3).\n */\nexport async function OutsideParty({ page, name, outcome }: { page: SignedInPage; name: string; outcome: SignInOutcome | null }) {\n const { api, fleetId, scopes } = page;\n const read = await readOf(api.parties.get.query({ name }));\n if (!read.isOk) {\n return (\n <div className=\"grid gap-4\">\n <Refusal>{read.refusal}</Refusal>\n </div>\n );\n }\n const party = read.value;\n const address = outsideAddressOf(party);\n const isApprover = scopes.includes(APPROVING_SCOPE);\n const isSignIn = party.kind === 'mcpServer' && party.credentialKind === SIGN_IN_CREDENTIAL.kind;\n const [cards, agentNeeds, ownSignIn] = await Promise.all([\n party.kind === 'a2aClient' ? readOf(api.parties.cardAddresses.query({ name })) : undefined,\n party.kind === 'a2aAgent' ? Promise.all([readOf(api.parties.scopeRequirements.query({ name })), isApprover ? approvalOf({ api, name }) : { canChange: false, listed: null, reason: null }]) : undefined,\n isSignIn ? readOwnSignIn({ api, fleetId, name }) : undefined,\n ]);\n const change = (\n <a href={inFleet(partyPath(party.name, 'change'), fleetId)} className=\"text-primary hover:underline\" data-testid=\"outside-party-change\">\n Change\n </a>\n );\n return (\n <div className=\"grid gap-4\">\n <PartyHead party={party} />\n <dl className={`${CARD} grid gap-3`}>\n <Fact label=\"Proxy ship\">{party.proxyShipName ?? UNKNOWN}</Fact>\n <Fact label=\"Owner\">\n {party.ownerName ?? UNKNOWN}\n {scopes.includes(OWNING_SCOPE) ? change : null}\n </Fact>\n <Fact label=\"Scopes\">\n {party.scopes === null\n ? UNKNOWN\n : party.scopes.map((scope) => <Tag key={scope}>{scopeWords(scope)}</Tag>)}\n {scopes.includes(GRANTING_SCOPE) ? change : null}\n </Fact>\n {party.kind === 'mcpServer' || party.kind === 'a2aAgent' ? <Fact label=\"Credential\">{ADDED_CREDENTIAL_KINDS.find(({ kind }) => kind === party.credentialKind)?.label}</Fact> : null}\n {address === null ? null : (\n <Fact label={ADDRESS_LABELS[party.kind]}>\n <span className=\"font-mono\">{address}</span>\n </Fact>\n )}\n {party.kind === 'a2aAgent' ? (\n <>\n <Fact label=\"Messages at once\">{party.concurrencyLimit}</Fact>\n <Fact label=\"Needs\">\n {agentNeeds === undefined ? null : agentNeeds[0].isOk ? (\n <AgentNeeds fleetId={fleetId} party={party.name} version={agentNeeds[0].value.version} scopes={agentNeeds[0].value.party} listed={agentNeeds[1].listed} canChange={agentNeeds[1].canChange} />\n ) : (\n <span className=\"text-muted-foreground\">{agentNeeds[0].refusal}</span>\n )}\n </Fact>\n <Fact label=\"Repeatable\">\n {scopes.includes(APPROVING_SCOPE) ? <RepeatableSwitch fleetId={fleetId} party={party.name} isRepeatable={party.isRepeatable} /> : <Tag>{party.isRepeatable ? 'Repeatable' : 'Not repeatable'}</Tag>}\n </Fact>\n </>\n ) : null}\n </dl>\n {ownSignIn === undefined ? null : <OwnSignInCard fleetId={fleetId} party={party.name} read={ownSignIn} outcome={outcome} now={new Date()} />}\n {isSignIn && isApprover ? (\n <Suspense fallback={<EveryonesSignInsSkeleton party={party.name} />}>\n <EveryonesSignInsSection api={api} fleetId={fleetId} name={party.name} />\n </Suspense>\n ) : null}\n {party.kind === 'mcpServer' ? (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-party-tools\">\n <h2 className=\"text-section font-semibold\">Tools</h2>\n <p className=\"text-muted-foreground\">\n The fleet may call only the tools switched on, and a calling ship must hold every scope a tool needs; every ship that may reach {party.name} reaches the same tools. {isApprover ? null : 'Changing them needs gateway:approve.'}\n </p>\n <Suspense fallback={<ToolsSkeleton party={party.name} />}>\n <ToolsSection api={api} fleetId={fleetId} name={party.name} isApprover={isApprover} isSignIn={isSignIn} />\n </Suspense>\n </section>\n ) : null}\n {cards === undefined ? null : (\n <section className={`${CARD} grid gap-2`} data-testid=\"outside-party-cards\">\n <h2 className=\"flex justify-between text-section font-semibold\">\n <span>Card addresses</span>\n {cards.isOk ? <span>{cards.value.addresses.length}</span> : null}\n </h2>\n <p className=\"text-muted-foreground\">One per ship its proxy ship reaches now. Its owner hands them to the client.</p>\n {!cards.isOk ? (\n <p className=\"text-muted-foreground\">{cards.refusal}</p>\n ) : cards.value.addresses.length === 0 ? (\n <p className=\"text-muted-foreground\">It reaches no ship now.</p>\n ) : (\n <ul className=\"grid gap-1\">\n {cards.value.addresses.map((address) => (\n <li key={address} className=\"break-all font-mono text-code\">\n {address}\n </li>\n ))}\n </ul>\n )}\n </section>\n )}\n {scopes.includes(RETIRING_SCOPE) ? (\n <div>\n <a className={BUTTONS.secondary} href={inFleet(partyPath(party.name, 'retire'), fleetId)} data-testid=\"outside-party-retire\">\n Retire {party.name}…\n </a>\n </div>\n ) : null}\n </div>\n );\n}\n","import { CORE_SCOPE_DESCRIPTIONS, scopeSchema } from '@aeolus-fleet/common';\n\n/** A scope in plain words: what a core scope allows, as the fleet words it (decision 0046); a plugin's scope by its name. */\nexport function scopeWords(scope: string): string {\n const core = scopeSchema.safeParse(scope);\n return core.success ? CORE_SCOPE_DESCRIPTIONS[core.data] : scope;\n}\n","/**\n * The rows of an outside MCP server's tools table (gateway scopes 4.3):\n * each tool the server lists now, with its switch, the hints it gives and\n * the scopes it needs of its own; and the filters an approver narrows them by.\n */\nimport type { Read } from '../../../lib/gateway-api/page-api';\n\n/** A tool as the server lists it now, with its switch, as the API answers it. */\nexport interface ListedTool {\n name: string;\n description?: string | undefined;\n isReadOnly?: boolean | undefined;\n isDestructive?: boolean | undefined;\n isOn: boolean;\n isNew: boolean;\n}\n\n/** A party's required scopes as the API answers them. */\nexport interface PartyRequirements {\n version: number;\n party: string[];\n tools: { tool: string; scopes: string[] }[];\n}\n\n/** One row: the tool, its switch (unknown while the server does not answer), and the scopes it needs of its own. */\nexport interface TableTool {\n name: string;\n description?: string | undefined;\n isReadOnly?: boolean | undefined;\n isDestructive?: boolean | undefined;\n isOn: boolean | null;\n isNew: boolean;\n scopes: readonly string[];\n}\n\n/**\n * The rows: every tool the server lists with what it needs; while the server\n * does not answer, the requirements kept per tool name, so they can still be\n * read and changed.\n */\nexport function tableToolsOf({ read, requirements }: { read: Read<{ tools: ListedTool[] }>; requirements: PartyRequirements }): TableTool[] {\n const own = new Map(requirements.tools.map(({ tool, scopes }) => [tool, scopes]));\n if (!read.isOk) {\n return requirements.tools.map(({ tool, scopes }) => ({ name: tool, isOn: null, isNew: false, scopes }));\n }\n return read.value.tools.map((tool) => ({ ...tool, scopes: own.get(tool.name) ?? [] }));\n}\n\n/** The table's state filter. */\nexport const STATE_FILTERS = [\n { state: 'all', label: 'All' },\n { state: 'on', label: 'On' },\n { state: 'off', label: 'Off' },\n { state: 'new', label: 'New' },\n { state: 'needsNothing', label: 'Needs nothing' },\n] as const;\n\nexport type StateFilter = (typeof STATE_FILTERS)[number]['state'];\n\nfunction isInState(tool: TableTool, { state, partyScopes }: { state: StateFilter; partyScopes: readonly string[] }): boolean {\n switch (state) {\n case 'all':\n return true;\n case 'on':\n return tool.isOn === true;\n case 'off':\n return tool.isOn === false;\n case 'new':\n return tool.isNew;\n case 'needsNothing':\n return partyScopes.length === 0 && tool.scopes.length === 0;\n }\n}\n\n/** The tools whose name holds the text, in any case, and that are in the state picked. */\nexport function shownTools(tools: readonly TableTool[], filter: { name: string; state: StateFilter; partyScopes: readonly string[] }): TableTool[] {\n const name = filter.name.trim().toLowerCase();\n return tools.filter((tool) => tool.name.toLowerCase().includes(name) && isInState(tool, filter));\n}\n\n/** What the page kept since it read the rows: each changed tool's own scopes, and each switched tool's switch. */\nexport interface KeptChanges {\n scopes: ReadonlyMap<string, readonly string[]>;\n switches: ReadonlyMap<string, boolean>;\n}\n\n/** The rows with what was kept since they were read, so a change shows at once rather than when the page reads the server again. */\nexport function keptToolsOf(tools: readonly TableTool[], kept: KeptChanges): TableTool[] {\n return tools.map((tool) => ({ ...tool, scopes: kept.scopes.get(tool.name) ?? tool.scopes, isOn: tool.isOn === null ? null : (kept.switches.get(tool.name) ?? tool.isOn) }));\n}\n","import type { GatewayApi } from '../../../../lib/gateway-api/gateway-api';\nimport { readOf } from '../../../../lib/gateway-api/page-api';\nimport { tableToolsOf } from '../table-tools';\nimport { ToolsTable } from './tools-table';\n\n/** How the API refuses a sign-in server's tools while nobody holds a usable sign-in to it (src/adapters/trpc/router.ts, NOT_SIGNED_IN). */\nconst NOBODY_SIGNED_IN = 'PRECONDITION_FAILED';\n\n/** Whether the actor approves the party, and the scopes the fleet lists when it does: what the controls need. */\nexport async function approvalOf({ api, name }: { api: GatewayApi; name: string }) {\n const approving = await readOf(api.parties.approving.query({ name }));\n const canChange = approving.isOk && approving.value.isApproving;\n const listed = canChange ? await readOf(api.parties.listedScopes.query()) : undefined;\n return {\n canChange: canChange && listed?.isOk === true,\n listed: listed?.isOk === true ? listed.value.scopes : null,\n /** Why the controls are not shown, when the actor holds gateway:approve but may not use them now. */\n reason: approving.isOk ? (approving.value.isApproving ? (listed?.isOk === false ? listed.refusal : null) : approving.value.reason) : approving.refusal,\n };\n}\n\n/**\n * An outside MCP server's tools section (gateway scopes 4.3): the tools the\n * server lists now, the scopes each needs, and whether the actor may change\n * them, read side by side. It streams in behind skeleton rows, as the\n * server's tools/list may take a while. A server where each person signs in\n * lists none until someone holds a usable sign-in (decision 0067), and says so.\n */\nexport async function ToolsSection({ api, fleetId, name, isApprover, isSignIn }: { api: GatewayApi; fleetId: string; name: string; isApprover: boolean; isSignIn: boolean }) {\n const [read, requirements, approval] = await Promise.all([\n readOf(api.parties.tools.query({ name })),\n readOf(api.parties.scopeRequirements.query({ name })),\n isApprover ? approvalOf({ api, name }) : { canChange: false, listed: null, reason: null },\n ]);\n if (!requirements.isOk) {\n return <p className=\"text-muted-foreground\">{requirements.refusal}</p>;\n }\n if (isSignIn && !read.isOk && read.code === NOBODY_SIGNED_IN) {\n return <p className=\"text-muted-foreground\">{read.refusal}</p>;\n }\n return (\n <div className=\"grid gap-3\">\n {approval.reason === null ? null : (\n <p className=\"text-muted-foreground\" data-testid=\"tools-table-read-only-reason\">\n You see these read-only: {approval.reason}\n </p>\n )}\n <ToolsTable\n fleetId={fleetId}\n party={name}\n tools={tableToolsOf({ read, requirements: requirements.value })}\n version={requirements.value.version}\n partyScopes={requirements.value.party}\n listed={approval.listed}\n canChange={approval.canChange}\n serverRefusal={read.isOk ? null : read.refusal}\n />\n </div>\n );\n}\n","/** How many rows the table shows while the server's tools/list is read. */\nconst SKELETON_ROWS = 8;\n\n/** The tools table's shape while the server's tools/list is read (gateway scopes 4.3). */\nexport function ToolsSkeleton({ party }: { party: string }) {\n return (\n <div aria-busy=\"true\" aria-label={`Reading the tools ${party} lists`} className=\"grid gap-2\" data-testid=\"tools-table-skeleton\">\n <span className=\"block h-9 w-full animate-pulse rounded-md bg-muted\" />\n {Array.from({ length: SKELETON_ROWS }, (_, row) => (\n <span key={row} className=\"block h-10 animate-pulse rounded-md bg-muted\" />\n ))}\n </div>\n );\n}\n","/**\n * Your own sign-in to a server, as its page reads it through the API\n * (decision 0067, M2). The API refuses an account with no person ship in\n * the fleet (Q16): the page then names the fleet it needs one in.\n */\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { refusalCodeOf, refusalMessageOf } from '../../../lib/gateway-api/page-api';\nimport type { OwnSignInRead } from '../ui/own-sign-in-card';\n\n/** How the API refuses a person's own sign-in to an account with no person ship (src/adapters/trpc/router.ts, NOT_A_PERSON). */\nconst NOT_A_PERSON = 'FORBIDDEN';\n\n/** The fleet's name as pagasae lists it, or plain words when it does not answer. */\nasync function fleetNameOf(api: GatewayApi, fleetId: string): Promise<string> {\n try {\n return (await api.account.apps.query()).fleets.find(({ id }) => id === fleetId)?.name ?? 'this fleet';\n } catch (error) {\n if (refusalCodeOf(error) === undefined) {\n throw error;\n }\n return 'this fleet';\n }\n}\n\nexport async function readOwnSignIn({ api, fleetId, name }: { api: GatewayApi; fleetId: string; name: string }): Promise<OwnSignInRead> {\n try {\n return { kind: 'read', own: await api.parties.ownSignIn.query({ name }) };\n } catch (error) {\n if (refusalCodeOf(error) === NOT_A_PERSON) {\n return { kind: 'noPersonShip', fleetName: await fleetNameOf(api, fleetId) };\n }\n return { kind: 'refused', message: refusalMessageOf(error) };\n }\n}\n","import type { FormState } from '../form-state';\n\n/** How a form ended: what changed, or why it was refused. Nothing while it has not been sent. */\nexport function Outcome({ state, testId }: { state: FormState; testId?: string }) {\n switch (state.kind) {\n case 'idle':\n return null;\n case 'done':\n return (\n <p role=\"status\" data-testid={testId} className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {state.message}\n </p>\n );\n case 'refused':\n case 'openNetwork':\n return (\n <p role=\"alert\" data-testid={testId} className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {state.message}\n </p>\n );\n }\n}\n","import type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport type { FormState } from '../../forms/form-state';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport type { Tone } from '../../outside-parties/party-kinds';\nimport { StatusBadge } from '../../outside-parties/ui/status-badge';\nimport { whenWordsOf } from '../own-sign-in';\n\n/** A person's sign-in as the API answers it to an approver: never a token. */\nexport type PersonSignIn = inferRouterOutputs<GatewayRouter>['parties']['signIns']['grants'][number];\n\nconst BADGES: Record<PersonSignIn['state'], { tone: Tone; label: string }> = {\n signedIn: { tone: 'ok', label: 'Signed in' },\n lost: { tone: 'attention', label: 'Lost' },\n};\n\n/** How many rows the list shows while it is read. */\nconst SKELETON_ROWS = 3;\n\n/** The person a sign-in is of: their person ship's name, or its id where the fleet answered no name. */\nexport function personOf(signIn: PersonSignIn): string {\n return signIn.personName ?? signIn.personShipId;\n}\n\nfunction accountOf({ outsideAccount }: PersonSignIn) {\n return outsideAccount.name ?? outsideAccount.subject ?? <span className=\"text-muted-foreground\">Not known</span>;\n}\n\nfunction Heading({ count }: { count: number | null }) {\n return (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-section font-semibold\">Everyone&apos;s sign-ins</h2>\n {count === null ? null : <span className=\"text-muted-foreground\">{count}</span>}\n </div>\n );\n}\n\nfunction Head() {\n return (\n <thead className=\"max-sm:hidden\">\n <tr className=\"border-b border-border text-left text-muted-foreground\">\n <th className=\"h-10 px-2 font-medium\">Person</th>\n <th className=\"h-10 px-2 font-medium\">Account</th>\n <th className=\"h-10 px-2 font-medium\">State</th>\n <th className=\"h-10 px-2 font-medium\">Last used</th>\n <th className=\"h-10 px-2\">\n <span className=\"sr-only\">Remove</span>\n </th>\n </tr>\n </thead>\n );\n}\n\n/** Everyone's sign-ins while they are read: the heading and the table's shape. */\nexport function EveryonesSignInsSkeleton({ party }: { party: string }) {\n return (\n <section className={`${CARD} grid gap-3`} aria-busy=\"true\" aria-label={`Reading everyone's sign-ins to ${party}`} data-testid=\"outside-party-sign-ins-skeleton\">\n <Heading count={null} />\n <table className=\"w-full border-collapse max-sm:block\">\n <Head />\n <tbody className=\"max-sm:grid\">\n {Array.from({ length: SKELETON_ROWS }, (_, row) => (\n <tr key={row} className=\"border-b border-border last:border-b-0 max-sm:grid max-sm:gap-1 max-sm:py-3\">\n <td className=\"h-12 px-2 max-sm:h-auto max-sm:px-0\">\n <span className=\"block h-3.5 w-20 animate-pulse rounded-md bg-muted max-sm:w-2/5\" />\n </td>\n <td className=\"h-12 px-2 max-sm:h-auto max-sm:px-0\">\n <span className=\"block h-3.5 w-36 animate-pulse rounded-md bg-muted max-sm:w-3/4\" />\n </td>\n <td className=\"h-12 px-2 max-sm:hidden\">\n <span className=\"block h-3.5 w-16 animate-pulse rounded-md bg-muted\" />\n </td>\n <td className=\"h-12 px-2 max-sm:hidden\">\n <span className=\"block h-3.5 w-20 animate-pulse rounded-md bg-muted\" />\n </td>\n <td className=\"max-sm:hidden\" />\n </tr>\n ))}\n </tbody>\n </table>\n </section>\n );\n}\n\n/** What the card shows now, and what each press asks of the part that holds it. */\nexport interface SignInsCardProps {\n party: string;\n /** When the page was read, so every row says its times from the same moment. */\n now: string;\n rows: readonly PersonSignIn[];\n /** Why the API refused the list, said in place of it. */\n refusal: string | null;\n hasMore: boolean;\n isLoadingMore: boolean;\n /** The person ship whose removal waits for a confirm. */\n confirming: string | null;\n /** The person ship whose removal is on its way. */\n removing: string | null;\n outcome: FormState;\n onRemove: (personShipId: string) => void;\n onConfirm: (signIn: PersonSignIn) => void;\n onKeep: () => void;\n onMore: () => void;\n}\n\nfunction Confirm({ signIn, party, isRemoving, onConfirm, onKeep }: { signIn: PersonSignIn; party: string; isRemoving: boolean; onConfirm: () => void; onKeep: () => void }) {\n const person = personOf(signIn);\n return (\n <div className=\"grid gap-2 rounded-md bg-muted p-3\" data-testid=\"outside-party-sign-ins-confirm\">\n <p>\n Remove {person}&apos;s sign-in? Their ships&apos; calls to {party} are refused until they sign in again.\n </p>\n <div className=\"flex flex-wrap gap-2\">\n <button type=\"button\" className={BUTTONS.destructive} disabled={isRemoving} aria-busy={isRemoving} onClick={onConfirm} data-testid=\"outside-party-sign-ins-remove-confirmed\">\n {isRemoving ? 'Removing…' : `Remove ${person}'s sign-in`}\n </button>\n <button type=\"button\" className={BUTTONS.secondary} onClick={onKeep}>\n Keep\n </button>\n </div>\n </div>\n );\n}\n\n/**\n * Everyone's sign-ins to a server where each person signs in (decision 0067,\n * M3), for an account holding gateway:approve: each person, their outside\n * account, state and when last used, with Remove confirmed in place. A table\n * on a wide screen, a list on a phone, 20 a page with Show more.\n */\nexport function SignInsCard(props: SignInsCardProps) {\n const { party, now, rows, refusal, hasMore, isLoadingMore, confirming, removing, outcome } = props;\n const lastUsedOf = (signIn: PersonSignIn) => (signIn.lastUsedAt === null ? 'Not yet' : whenWordsOf(signIn.lastUsedAt, new Date(now)));\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-party-sign-ins\">\n <Heading count={refusal === null ? rows.length : null} />\n <Outcome state={outcome} />\n {refusal !== null ? (\n <Outcome state={{ kind: 'refused', message: refusal }} />\n ) : rows.length === 0 ? (\n <p className=\"text-muted-foreground\">Nobody has signed in yet.</p>\n ) : (\n <table className=\"w-full border-collapse max-sm:block\">\n <Head />\n <tbody className=\"max-sm:grid\">\n {rows.map((signIn) => {\n const badge = BADGES[signIn.state];\n const isConfirming = confirming === signIn.personShipId;\n const lastUsed = lastUsedOf(signIn);\n return [\n <tr key={signIn.personShipId} className={`border-b border-border max-sm:grid max-sm:grid-cols-[1fr_auto] max-sm:gap-1 max-sm:py-3 ${isConfirming ? 'border-b-0' : 'last:border-b-0'}`} data-testid=\"outside-party-sign-ins-row\">\n <td className=\"h-12 px-2 max-sm:col-start-1 max-sm:row-start-1 max-sm:h-auto max-sm:px-0 max-sm:font-medium\">\n {personOf(signIn)}\n {signIn.isYours ? <span className=\"font-normal text-muted-foreground\"> (you)</span> : null}\n </td>\n <td className=\"h-12 px-2 max-sm:col-span-2 max-sm:row-start-2 max-sm:h-auto max-sm:px-0 max-sm:text-muted-foreground\">\n {accountOf(signIn)}\n <span className=\"sm:hidden\"> · last used {signIn.lastUsedAt === null ? 'not yet' : lastUsed}</span>\n </td>\n <td className=\"h-12 px-2 max-sm:col-start-2 max-sm:row-start-1 max-sm:h-auto max-sm:px-0\">\n <StatusBadge tone={badge.tone} label={badge.label} />\n </td>\n <td className=\"h-12 px-2 text-muted-foreground max-sm:hidden\">{lastUsed}</td>\n <td className=\"h-12 px-2 text-right max-sm:col-span-2 max-sm:row-start-3 max-sm:h-auto max-sm:px-0 max-sm:text-left\">\n <button type=\"button\" className={`${BUTTONS.secondary} ${isConfirming ? 'max-sm:hidden' : ''}`} onClick={() => { props.onRemove(signIn.personShipId); }} data-testid=\"outside-party-sign-ins-remove\">\n Remove\n </button>\n </td>\n </tr>,\n isConfirming ? (\n <tr key={`${signIn.personShipId}-confirm`} className=\"border-b border-border last:border-b-0 max-sm:block max-sm:pb-3\">\n <td colSpan={5} className=\"pb-2 max-sm:block max-sm:pb-0\">\n <Confirm signIn={signIn} party={party} isRemoving={removing === signIn.personShipId} onConfirm={() => { props.onConfirm(signIn); }} onKeep={props.onKeep} />\n </td>\n </tr>\n ) : null,\n ];\n })}\n </tbody>\n </table>\n )}\n {refusal === null && hasMore ? (\n <div>\n <button type=\"button\" className={BUTTONS.secondary} disabled={isLoadingMore} aria-busy={isLoadingMore} onClick={props.onMore} data-testid=\"outside-party-sign-ins-more\">\n {isLoadingMore ? 'Showing more…' : 'Show more'}\n </button>\n </div>\n ) : null}\n </section>\n );\n}\n","import type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { readOf } from '../../../lib/gateway-api/page-api';\nimport { SignInsCard } from './everyones-sign-ins';\nimport { EveryonesSignInsCard } from './everyones-sign-ins-card';\n\nconst NOTHING = () => undefined;\n\n/**\n * Everyone's sign-ins to a server where each person signs in, for an account\n * holding gateway:approve (decision 0067, M3, Q12): the first page read as it\n * streams in behind skeleton rows, or why the API refused it. The API checks\n * the approver's manage reach of the proxy ship again.\n */\nexport async function EveryonesSignInsSection({ api, fleetId, name }: { api: GatewayApi; fleetId: string; name: string }) {\n const read = await readOf(api.parties.signIns.query({ name, after: null }));\n const now = new Date().toISOString();\n if (!read.isOk) {\n return <SignInsCard party={name} now={now} rows={[]} refusal={read.refusal} hasMore={false} isLoadingMore={false} confirming={null} removing={null} outcome={{ kind: 'idle' }} onRemove={NOTHING} onConfirm={NOTHING} onKeep={NOTHING} onMore={NOTHING} />;\n }\n return <EveryonesSignInsCard fleetId={fleetId} party={name} now={now} first={read.value} />;\n}\n","import type { ReactNode } from 'react';\n\n/** One fact of a party's page: its label beside it, above it on a phone. */\nexport function Fact({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div className=\"grid gap-1 sm:grid-cols-[10rem_1fr]\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd className=\"flex flex-wrap items-center gap-2\">{children}</dd>\n </div>\n );\n}\n","import type { inferRouterOutputs } from '@trpc/server';\nimport type { ReactNode } from 'react';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { CARD } from '../../forms/ui/look';\nimport type { Tone } from '../../outside-parties/party-kinds';\nimport { StatusBadge, Tag } from '../../outside-parties/ui/status-badge';\nimport { dayAndTimeOf, whenWordsOf, type SignInOutcome, type SignInOutcomeKind } from '../own-sign-in';\nimport { Fact } from './fact';\nimport { RemoveSignInForm, SignInForm } from './own-sign-in-forms';\n\ntype OwnSignIn = inferRouterOutputs<GatewayRouter>['parties']['ownSignIn'];\n\n/** Your sign-in as the page read it: the API's answer, no person ship in the fleet to sign in as, or why the API refused. */\nexport type OwnSignInRead = { kind: 'read'; own: OwnSignIn } | { kind: 'noPersonShip'; fleetName: string } | { kind: 'refused'; message: string };\n\nconst BADGES: Record<OwnSignIn['state'], { tone: Tone; label: string }> = {\n notSignedIn: { tone: 'ended', label: 'Not signed in' },\n signedIn: { tone: 'ok', label: 'Signed in' },\n lost: { tone: 'attention', label: 'Lost' },\n};\n\n/** How each outcome is said: its words and tone, and whether it is an alert. */\nfunction saidOf(kind: SignInOutcomeKind, party: string): { message: string; tone: Tone; isAlert: boolean } {\n switch (kind) {\n case 'signedIn':\n return { message: `You are signed in to ${party}.`, tone: 'ok', isAlert: false };\n case 'removed':\n return { message: `Your sign-in to ${party} is removed.`, tone: 'ok', isAlert: false };\n case 'failed':\n return { message: 'The sign-in did not finish: press Sign in again.', tone: 'attention', isAlert: true };\n case 'turnedAway':\n return { message: `That ${party} account is another person's sign-in in this fleet: sign in as your own.`, tone: 'attention', isAlert: true };\n case 'cancelled':\n return { message: `You are not signed in to ${party}: the sign-in was cancelled or refused there.`, tone: 'ended', isAlert: false };\n case 'unavailable':\n return { message: `${party}'s sign-in did not answer: try again in a moment.`, tone: 'attention', isAlert: true };\n }\n}\n\nconst NOTE_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/** How the sign-in went, with the authorization server's error code beside it where it answered one. */\nfunction Said({ outcome, party }: { outcome: SignInOutcome; party: string }) {\n const { message, tone, isAlert } = saidOf(outcome.kind, party);\n return (\n <>\n <p role={isAlert ? 'alert' : 'status'} className={`rounded-md border px-3 py-2 ${NOTE_TONES[tone]}`}>\n {message}\n </p>\n {outcome.serverError === null ? null : (\n <div>\n <Tag isMono>{outcome.serverError}</Tag>\n </div>\n )}\n </>\n );\n}\n\nfunction accountOf({ outsideAccount }: { outsideAccount: { subject: string | null; name: string | null } }): ReactNode {\n return outsideAccount.name ?? outsideAccount.subject ?? <span className=\"text-muted-foreground\">Not known</span>;\n}\n\nfunction OwnBody({ own, fleetId, party, now }: { own: OwnSignIn; fleetId: string; party: string; now: Date }) {\n switch (own.state) {\n case 'notSignedIn':\n return (\n <>\n <p className=\"text-muted-foreground\">Until you sign in, your ships&apos; calls to {party} are refused.</p>\n <SignInForm fleetId={fleetId} party={party} label=\"Sign in\" kind=\"primary\" />\n </>\n );\n case 'signedIn':\n return (\n <>\n <dl className=\"grid gap-3\">\n <Fact label=\"Account\">{accountOf(own)}</Fact>\n <Fact label=\"Signed in\">{whenWordsOf(own.signedInAt, now)}</Fact>\n <Fact label=\"Last used\">{own.lastUsedAt === null ? 'Not yet' : whenWordsOf(own.lastUsedAt, now)}</Fact>\n </dl>\n <div className=\"flex flex-wrap items-start gap-2\">\n <SignInForm fleetId={fleetId} party={party} label=\"Sign in again\" kind=\"secondary\" />\n <RemoveSignInForm fleetId={fleetId} party={party} />\n </div>\n </>\n );\n case 'lost':\n return (\n <>\n <p>\n {party} refused to refresh it on {dayAndTimeOf(own.lost.at)}: <span className=\"font-mono text-code\">{own.lost.why}</span>. Your ships&apos; calls to {party} are refused.\n </p>\n <dl className=\"grid gap-3\">\n <Fact label=\"Account\">{accountOf(own)}</Fact>\n <Fact label=\"Last used\">{own.lastUsedAt === null ? 'Not yet' : whenWordsOf(own.lastUsedAt, now)}</Fact>\n </dl>\n <SignInForm fleetId={fleetId} party={party} label=\"Sign in again\" kind=\"primary\" />\n </>\n );\n }\n}\n\n/**\n * Your own sign-in to a server where each person signs in (decision 0067,\n * M2), between the server's facts and its tools: not signed in, signed in\n * as an outside account, or lost; how a sign-in went when the browser comes\n * back. Every account of the fleet with a person ship sees it (Q16).\n */\nexport function OwnSignInCard({ fleetId, party, read, outcome, now }: { fleetId: string; party: string; read: OwnSignInRead; outcome: SignInOutcome | null; now: Date }) {\n const badge = read.kind === 'read' ? BADGES[read.own.state] : null;\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-party-sign-in\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-section font-semibold\">Your sign-in</h2>\n {badge === null ? null : <StatusBadge tone={badge.tone} label={badge.label} />}\n </div>\n {read.kind === 'read' && outcome !== null ? <Said outcome={outcome} party={party} /> : null}\n {read.kind === 'read' ? (\n <OwnBody own={read.own} fleetId={fleetId} party={party} now={now} />\n ) : read.kind === 'noPersonShip' ? (\n <p className=\"text-muted-foreground\">Signing in needs a person ship in {read.fleetName}.</p>\n ) : (\n <Outcome state={{ kind: 'refused', message: read.message }} />\n )}\n </section>\n );\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const RemoveSignInForm = registerClientReference(\n function() { throw new Error(\"Attempted to call RemoveSignInForm() from the server but RemoveSignInForm 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/outside-party/ui/own-sign-in-forms.tsx\",\n \"RemoveSignInForm\",\n);\nexport const SignInForm = registerClientReference(\n function() { throw new Error(\"Attempted to call SignInForm() from the server but SignInForm 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/outside-party/ui/own-sign-in-forms.tsx\",\n \"SignInForm\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const RepeatableSwitch = registerClientReference(\n function() { throw new Error(\"Attempted to call RepeatableSwitch() from the server but RepeatableSwitch 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/outside-party/ui/repeatable-switch.tsx\",\n \"RepeatableSwitch\",\n);\n"],"names":["AgentNeeds","Error","ToolsTable","EveryonesSignInsCard","scopeWords","scope","core","safeParse","success","data","RemoveSignInForm","SignInForm","RepeatableSwitch"],"mappings":"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","ignoreList":[0,1,2,14,15]}
@@ -1,3 +1,3 @@
1
- module.exports=[43496,a=>{"use strict";var b=a.i(37936),c=a.i(18558);a.i(70396);var d=a.i(73727),e=a.i(55476),f=a.i(66283),g=a.i(1324),h=a.i(72913),i=a.i(18379),j=a.i(60960),k=a.i(13095);let l="name";async function m(a,b){let c=(0,g.v)(b,g.H),j=(0,g.v)(b,l),k=await (0,f.z)(c);try{let[a,c]=await Promise.all([k.parties.get.query({name:j}),k.account.inView.query()]),d=(0,i.t)(a,{form:(0,g.O)(b),scopes:"signedIn"===c.kind?c.scopes:[]});if("refused"===d.kind)return d;void 0!==d.ownerShipId&&await k.parties.changeOwner.mutate({name:j,ownerShipId:d.ownerShipId}),(d.grant.length>0||d.revoke.length>0)&&await k.parties.changeScopes.mutate({name:j,grant:d.grant,revoke:d.revoke})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)((0,h.N)(j),c))}function n(a){return{isOk:!1,message:(0,f.s)(a),isConflict:"CONFLICT"===(0,f.U)(a)}}async function o(a){let{fleetId:b,...d}=a,e=await (0,f.z)(b);try{let{version:a,statementRefusal:b}=await e.parties.setScopeRequirements.mutate(d);return(0,c.revalidatePath)((0,h.N)(d.name)),{isOk:!0,version:a,statementRefusal:b}}catch(a){return n(a)}}async function p(a){let{fleetId:b,...d}=a,e=await (0,f.z)(b);try{let{statementRefusal:a}=await e.parties.switchTools.mutate(d);return(0,c.revalidatePath)((0,h.N)(d.name)),{isOk:!0,version:null,statementRefusal:a}}catch(a){return n(a)}}async function q(a,b){let d=(0,g.v)(b,g.H),e=(0,g.v)(b,l),i=await (0,f.z)(d);try{let{isRepeatable:a,statementRefusal:d}=await i.parties.markA2aAgent.mutate({name:e,isRepeatable:"true"===(0,g.v)(b,"isRepeatable")});return(0,c.revalidatePath)((0,h.N)(e)),{kind:"marked",isRepeatable:a,message:function({name:a,isRepeatable:b,statementRefusal:c}){let d=`${a} is ${b?"repeatable":"not repeatable"}`;return null!==c?`${d}; the fleet sees it at the proxy ship's next statement: ${c}`:b?`${d}: a message that died before it confirmed it is handed again.`:`${d}: a message that died before it confirmed it is not handed again, as it may have run.`}({name:e,isRepeatable:a,statementRefusal:d})}}catch(a){return{kind:"refused",message:(0,f.s)(a)}}}async function r(a,b){let c,e=await (0,f.z)((0,g.v)(b,g.H));try{({url:c}=await e.parties.startSignIn.mutate({name:(0,g.v)(b,l)}))}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)(c)}async function s(a,b){let c=(0,g.v)(b,g.H),i=(0,g.v)(b,l),k=await (0,f.z)(c);try{await k.parties.removeOwnSignIn.mutate({name:i})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)(`${(0,h.N)(i)}?${new URLSearchParams({[j.M]:j.v}).toString()}`,c))}async function t(a){let{fleetId:b,...d}=a,e=await (0,f.z)(b);try{let{isRevoked:a}=await e.parties.removeSignIn.mutate(d);return(0,c.revalidatePath)((0,h.N)(d.name)),{isOk:!0,isRevoked:a}}catch(a){return{isOk:!1,message:(0,f.s)(a)}}}async function u(a){let{fleetId:b,...c}=a,d=await (0,f.z)(b);try{return{isOk:!0,...await d.parties.signIns.query(c)}}catch(a){return{isOk:!1,message:(0,f.s)(a)}}}async function v(a,b){let c=(0,g.v)(b,g.H),i=await (0,f.z)(c);try{await i.parties.retire.mutate({name:(0,g.v)(b,l)})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)(h.$,c))}(0,k.ensureServerEntryExports)([m,o,p,q,r,s,t,u,v]),(0,b.registerServerReference)(m,"60b4db8bf58321b318446fc15698734ca838a7906b",null),(0,b.registerServerReference)(o,"4055624bd11ca2ade15b378b28829dee0ac23423c1",null),(0,b.registerServerReference)(p,"408b7585197882a44a3cc8c0b1c3280e3806171563",null),(0,b.registerServerReference)(q,"60fc44c5251aea4e8cf6a11329208266754ef56a78",null),(0,b.registerServerReference)(r,"60c6954ee32ef0da770b4a80d316382eb6c0a4c980",null),(0,b.registerServerReference)(s,"60f6ca9b179e3a54d5ed0f11cdb52aaa1f537bc553",null),(0,b.registerServerReference)(t,"4004ce1d46e14c5c2150455347d2c7a8d5d86a444d",null),(0,b.registerServerReference)(u,"40a9ad5c4ced811b2e1b944591f45e2bdec3885949",null),(0,b.registerServerReference)(v,"60194c52a3feb09ed7ebbe91b39cb96893bd0878f5",null),a.s(["v",0,m,"o",0,q,"p",0,u,"N",0,s,"M",0,t,"t",0,v,"L",0,o,"Q",0,r,"O",0,p],43496)}];
1
+ module.exports=[43496,a=>{"use strict";var b=a.i(37936),c=a.i(18558);a.i(70396);var d=a.i(73727),e=a.i(55476),f=a.i(66283),g=a.i(1324),h=a.i(72913),i=a.i(18379),j=a.i(60960),k=a.i(13095);let l="name";async function m(a,b){let c=(0,g.v)(b,g.H),j=(0,g.v)(b,l),k=await (0,f.z)(c);try{let[a,c]=await Promise.all([k.parties.get.query({name:j}),k.account.inView.query()]),d=(0,i.t)(a,{form:(0,g.O)(b),scopes:"signedIn"===c.kind?c.scopes:[]});if("refused"===d.kind)return d;void 0!==d.ownerShipId&&await k.parties.changeOwner.mutate({name:j,ownerShipId:d.ownerShipId}),(d.grant.length>0||d.revoke.length>0)&&await k.parties.changeScopes.mutate({name:j,grant:d.grant,revoke:d.revoke})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)((0,h.N)(j),c))}function n(a){return{isOk:!1,message:(0,f.s)(a),isConflict:"CONFLICT"===(0,f.U)(a)}}async function o(a){let{fleetId:b,...d}=a,e=await (0,f.z)(b);try{let{version:a,statementRefusal:b}=await e.parties.setScopeRequirements.mutate(d);return(0,c.revalidatePath)((0,h.N)(d.name)),{isOk:!0,version:a,statementRefusal:b}}catch(a){return n(a)}}async function p(a){let{fleetId:b,...d}=a,e=await (0,f.z)(b);try{let{statementRefusal:a}=await e.parties.switchTools.mutate(d);return(0,c.revalidatePath)((0,h.N)(d.name)),{isOk:!0,version:null,statementRefusal:a}}catch(a){return n(a)}}async function q(a,b){let d=(0,g.v)(b,g.H),e=(0,g.v)(b,l),i=await (0,f.z)(d);try{let{isRepeatable:a,statementRefusal:d}=await i.parties.markA2aAgent.mutate({name:e,isRepeatable:"true"===(0,g.v)(b,"isRepeatable")});return(0,c.revalidatePath)((0,h.N)(e)),{kind:"marked",isRepeatable:a,message:function({name:a,isRepeatable:b,statementRefusal:c}){let d=`${a} is ${b?"repeatable":"not repeatable"}`;return null!==c?`${d}; the fleet sees it at the proxy ship's next statement: ${c}`:b?`${d}: a message that died before it confirmed it is handed again.`:`${d}: a message that died before it confirmed it is not handed again, as it may have run.`}({name:e,isRepeatable:a,statementRefusal:d})}}catch(a){return{kind:"refused",message:(0,f.s)(a)}}}async function r(a,b){let c,e=await (0,f.z)((0,g.v)(b,g.H));try{({url:c}=await e.parties.startSignIn.mutate({name:(0,g.v)(b,l)}))}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)(c)}async function s(a,b){let c=(0,g.v)(b,g.H),i=(0,g.v)(b,l),k=await (0,f.z)(c);try{await k.parties.removeOwnSignIn.mutate({name:i})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)(`${(0,h.N)(i)}?${new URLSearchParams({[j.M]:j.v}).toString()}`,c))}async function t(a){let{fleetId:b,...d}=a,e=await (0,f.z)(b);try{let{isRevoked:a}=await e.parties.removeSignIn.mutate(d);return(0,c.revalidatePath)((0,h.N)(d.name)),{isOk:!0,isRevoked:a}}catch(a){return{isOk:!1,message:(0,f.s)(a)}}}async function u(a){let{fleetId:b,...c}=a,d=await (0,f.z)(b);try{return{isOk:!0,...await d.parties.signIns.query(c)}}catch(a){return{isOk:!1,message:(0,f.s)(a)}}}async function v(a,b){let c=(0,g.v)(b,g.H),i=await (0,f.z)(c);try{await i.parties.retire.mutate({name:(0,g.v)(b,l)})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)(h.$,c))}(0,k.ensureServerEntryExports)([m,o,p,q,r,s,t,u,v]),(0,b.registerServerReference)(m,"60be6ee725e4c56654f86de6240811a6b07eaf85ee",null),(0,b.registerServerReference)(o,"401284c106092aed666ad781af234d01577ff2b95e",null),(0,b.registerServerReference)(p,"40c18db91023b8f8bfeedd193b1b60a0bdaa9f8dbe",null),(0,b.registerServerReference)(q,"604043d009b1b0f58f8fe209d3f0ea9e38582341c8",null),(0,b.registerServerReference)(r,"60a17908e3b22eb1b4a494def6f12126d6cf55c66d",null),(0,b.registerServerReference)(s,"604dd8193dbf8404c214de2b04259fef11650543b4",null),(0,b.registerServerReference)(t,"40094ca59cc39534e76a0c0ec939f97c2759b691cd",null),(0,b.registerServerReference)(u,"40453b580ccdd09578e88f323f0a6362beb9d7d45d",null),(0,b.registerServerReference)(v,"6003bc5f4902d54aaef444fea5f529b972eef545a0",null),a.s(["v",0,m,"o",0,q,"p",0,u,"N",0,s,"M",0,t,"t",0,v,"L",0,o,"Q",0,r,"O",0,p],43496)}];
2
2
 
3
3
  //# sourceMappingURL=web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[5901,33621,a=>{"use strict";var b=a.i(37936),c=a.i(29517),d=a.i(18558),e=a.i(66283),f=a.i(1324),g=a.i(29493);let h="/parties";async function i(a,b){let c,g=await (0,e.z)((0,f.v)(a,f.H));try{c=await b(g)}catch(a){return{kind:"refused",message:(0,e.s)(a)}}return(0,d.revalidatePath)(h),{kind:"done",message:c}}async function j(a,b){let d=(0,c.f)("ship").safeParse((0,f.v)(b,"ownerShipId"));if(!d.success)return{kind:"refused",message:"The owner's ship id is not a ship id (shp_...)"};let e=(0,f.v)(b,"scope");return i(b,async a=>{let c=await a.parties.approve.mutate({requestId:(0,f.v)(b,"requestId"),name:(0,f.v)(b,"name"),url:(0,f.v)(b,"url"),credential:(0,g.y)({credentialKind:(0,f.v)(b,"credentialKind"),token:(0,f.v)(b,"token"),clientId:(0,f.v)(b,"clientId"),clientSecret:(0,f.v)(b,"clientSecret"),issuer:(0,f.v)(b,"issuer"),scope:e}),ownerShipId:d.data,concurrencyLimit:Number((0,f.v)(b,"concurrencyLimit"))});return`${c.name} is approved`})}async function k(a,b){return i(b,async a=>{let c=await a.parties.crew.mutate({name:(0,f.v)(b,"name"),secret:(0,f.v)(b,"secret")});return`${c.name} is crewed`})}async function l(a,b){let c=(0,f.v)(b,"name");return i(b,async a=>(await a.parties.state.mutate({name:c}),`${c}'s tools are stated`))}async function m(a,b){let c=(0,f.v)(b,"tool");return i(b,async a=>(await a.parties.markTool.mutate({name:(0,f.v)(b,"name"),tool:c,isRepeatable:"on"===(0,f.v)(b,"isRepeatable")}),`${c} is marked`))}a.s(["f",0,h],33621),(0,a.i(13095).ensureServerEntryExports)([j,k,l,m]),(0,b.registerServerReference)(j,"609be0620464a1f1da78a0376e6f7fd4cf96d65bb9",null),(0,b.registerServerReference)(k,"6066fe0687821d9902fd5121a6b96a094c3b32b731",null),(0,b.registerServerReference)(l,"6026a50117d3dc0b04b2ec0ed6d9317c3343480b26",null),(0,b.registerServerReference)(m,"60986f92c0b5f178ced5c92b8634ce6117473ad34e",null),a.s(["L",0,j,"P",0,k,"p",0,m,"g",0,l],5901)}];
1
+ module.exports=[5901,33621,a=>{"use strict";var b=a.i(37936),c=a.i(29517),d=a.i(18558),e=a.i(66283),f=a.i(1324),g=a.i(29493);let h="/parties";async function i(a,b){let c,g=await (0,e.z)((0,f.v)(a,f.H));try{c=await b(g)}catch(a){return{kind:"refused",message:(0,e.s)(a)}}return(0,d.revalidatePath)(h),{kind:"done",message:c}}async function j(a,b){let d=(0,c.f)("ship").safeParse((0,f.v)(b,"ownerShipId"));if(!d.success)return{kind:"refused",message:"The owner's ship id is not a ship id (shp_...)"};let e=(0,f.v)(b,"scope");return i(b,async a=>{let c=await a.parties.approve.mutate({requestId:(0,f.v)(b,"requestId"),name:(0,f.v)(b,"name"),url:(0,f.v)(b,"url"),credential:(0,g.y)({credentialKind:(0,f.v)(b,"credentialKind"),token:(0,f.v)(b,"token"),clientId:(0,f.v)(b,"clientId"),clientSecret:(0,f.v)(b,"clientSecret"),issuer:(0,f.v)(b,"issuer"),scope:e}),ownerShipId:d.data,concurrencyLimit:Number((0,f.v)(b,"concurrencyLimit"))});return`${c.name} is approved`})}async function k(a,b){return i(b,async a=>{let c=await a.parties.crew.mutate({name:(0,f.v)(b,"name"),secret:(0,f.v)(b,"secret")});return`${c.name} is crewed`})}async function l(a,b){let c=(0,f.v)(b,"name");return i(b,async a=>(await a.parties.state.mutate({name:c}),`${c}'s tools are stated`))}async function m(a,b){let c=(0,f.v)(b,"tool");return i(b,async a=>(await a.parties.markTool.mutate({name:(0,f.v)(b,"name"),tool:c,isRepeatable:"on"===(0,f.v)(b,"isRepeatable")}),`${c} is marked`))}a.s(["f",0,h],33621),(0,a.i(13095).ensureServerEntryExports)([j,k,l,m]),(0,b.registerServerReference)(j,"608eb43413b6dcc7d1292fb41018ecc5776c5f2854",null),(0,b.registerServerReference)(k,"60ce1352441d94840e494a24562e9f9720ab0e1c4c",null),(0,b.registerServerReference)(l,"6065ff1db872e492d1821dd43f6eafd397534413f6",null),(0,b.registerServerReference)(m,"60fcc2b5c486d749b474cd42583cc4dced8e834006",null),a.s(["L",0,j,"P",0,k,"p",0,m,"g",0,l],5901)}];
2
2
 
3
3
  //# sourceMappingURL=web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[434,76890,a=>{"use strict";var b=a.i(37936),c=a.i(29517),d=a.i(18558);a.i(70396);var e=a.i(73727),f=a.i(55476),g=a.i(66283),h=a.i(1324);let i="/slack",j=`${i}/disconnect`,k=`${i}/expose`;async function l(a,b){let c,e=await (0,g.z)((0,h.v)(b,h.H));try{({isGatewayBotMade:c}=await e.slack.connect.mutate({refreshToken:(0,h.v)(b,"refreshToken")}))}catch(a){return{kind:"refused",message:(0,g.s)(a)}}return(0,d.revalidatePath)(i),{kind:"done",message:c?"Slack is connected, and the gateway's bot is made: install it":"Slack is connected; Slack did not make the gateway's bot yet: press Install"}}async function m(a,b){let c,d=await (0,g.z)((0,h.v)(b,h.H)),f=(0,h.v)(b,"appId");try{({url:c}=await d.slack.install.mutate(""===f?{}:{appId:f}))}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)(c)}async function n(a,b){let c=(0,h.v)(b,h.H),d=await (0,g.z)(c);try{await d.slack.disconnect.mutate()}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)((0,f.i)(i,c))}async function o(a,b){let d=(0,h.v)(b,h.H),j=await (0,g.z)(d),k=(0,c.f)("ship").safeParse((0,h.v)(b,"shipId"));if(!k.success)return{kind:"refused",message:"Pick a ship to expose"};try{await j.slack.expose.mutate({shipId:k.data})}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)((0,f.i)(i,d))}async function p(a,b){let c=(0,h.v)(b,h.H),d=await (0,g.z)(c);try{await d.slack.remove.mutate({appId:(0,h.v)(b,"appId")})}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)((0,f.i)(i,c))}a.s(["Q",0,j,"K",0,k,"E",0,i,"b",0,function(a){return`${i}/remove?${new URLSearchParams({app:a}).toString()}`}],76890),(0,a.i(13095).ensureServerEntryExports)([l,m,n,o,p]),(0,b.registerServerReference)(l,"6011da3b2e4cdd3c29740af7d05628bf2889f24a62",null),(0,b.registerServerReference)(m,"60569783d111fa326962fdb6f126c8e88fa8cea357",null),(0,b.registerServerReference)(n,"6060488714c5097943c526002121fb8c046776b6bb",null),(0,b.registerServerReference)(o,"600675ca8896a56f02cd4dcb8176a9ec373315ba97",null),(0,b.registerServerReference)(p,"605c5373a097bfe79b16d8cdd7d5adbdffa9100f32",null),a.s(["N",0,l,"c",0,n,"K",0,o,"M",0,m,"d",0,p],434)}];
1
+ module.exports=[434,76890,a=>{"use strict";var b=a.i(37936),c=a.i(29517),d=a.i(18558);a.i(70396);var e=a.i(73727),f=a.i(55476),g=a.i(66283),h=a.i(1324);let i="/slack",j=`${i}/disconnect`,k=`${i}/expose`;async function l(a,b){let c,e=await (0,g.z)((0,h.v)(b,h.H));try{({isGatewayBotMade:c}=await e.slack.connect.mutate({refreshToken:(0,h.v)(b,"refreshToken")}))}catch(a){return{kind:"refused",message:(0,g.s)(a)}}return(0,d.revalidatePath)(i),{kind:"done",message:c?"Slack is connected, and the gateway's bot is made: install it":"Slack is connected; Slack did not make the gateway's bot yet: press Install"}}async function m(a,b){let c,d=await (0,g.z)((0,h.v)(b,h.H)),f=(0,h.v)(b,"appId");try{({url:c}=await d.slack.install.mutate(""===f?{}:{appId:f}))}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)(c)}async function n(a,b){let c=(0,h.v)(b,h.H),d=await (0,g.z)(c);try{await d.slack.disconnect.mutate()}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)((0,f.i)(i,c))}async function o(a,b){let d=(0,h.v)(b,h.H),j=await (0,g.z)(d),k=(0,c.f)("ship").safeParse((0,h.v)(b,"shipId"));if(!k.success)return{kind:"refused",message:"Pick a ship to expose"};try{await j.slack.expose.mutate({shipId:k.data})}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)((0,f.i)(i,d))}async function p(a,b){let c=(0,h.v)(b,h.H),d=await (0,g.z)(c);try{await d.slack.remove.mutate({appId:(0,h.v)(b,"appId")})}catch(a){return{kind:"refused",message:(0,g.s)(a)}}(0,e.redirect)((0,f.i)(i,c))}a.s(["Q",0,j,"K",0,k,"E",0,i,"b",0,function(a){return`${i}/remove?${new URLSearchParams({app:a}).toString()}`}],76890),(0,a.i(13095).ensureServerEntryExports)([l,m,n,o,p]),(0,b.registerServerReference)(l,"60ff95b485a7e78a160dda50844dce06ca5ee8ad5c",null),(0,b.registerServerReference)(m,"605f767dc338f214376a3487166bd7750ea02aae7b",null),(0,b.registerServerReference)(n,"60193849d75d68c4eebfcc031f47505e0872597228",null),(0,b.registerServerReference)(o,"607190a9647c4da3ed3070220fc5d167d3a218f5ef",null),(0,b.registerServerReference)(p,"60f52e5cb4fb33a5d7957558bf5378b92c175cf4af",null),a.s(["N",0,l,"c",0,n,"K",0,o,"M",0,m,"d",0,p],434)}];
2
2
 
3
3
  //# sourceMappingURL=web_features_slack_actions_ts_1l3yg9vl20_vu._.js.map
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/0cz1d0mv5g_q7.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/waEyx88w-M7TBm3nu35s-/_buildManifest.js",
11
- "static/waEyx88w-M7TBm3nu35s-/_ssgManifest.js",
12
- "static/waEyx88w-M7TBm3nu35s-/_clientMiddlewareManifest.js"
10
+ "static/LxcgnSJuKSN0rA6kJgwr6/_buildManifest.js",
11
+ "static/LxcgnSJuKSN0rA6kJgwr6/_ssgManifest.js",
12
+ "static/LxcgnSJuKSN0rA6kJgwr6/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/3333gs1h_w689.js",
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/3333gs1h_w689.js"/><script src="/_next/static/chunks/14tzp9zyiydj9.js" async=""></script><script src="/_next/static/chunks/3zhaqdsq15d1e.js" async=""></script><script src="/_next/static/chunks/41rcj9-d-7p_4.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/0umf92h1sb77c.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/3333gs1h_w689.js","static/chunks/14tzp9zyiydj9.js","static/chunks/3zhaqdsq15d1e.js","static/chunks/41rcj9-d-7p_4.js"],"runtimeModuleIds":[94553]});</script><script src="/_next/static/chunks/3333gs1h_w689.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/0umf92h1sb77c.js\"\n3:I[39756,[\"$2\"],\"default\"]\n4:I[37457,[\"$2\"],\"default\"]\n7:I[97367,[\"$2\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:\"ViewportBoundary\"\nb:I[97367,[\"$2\"],\"$a\"]\nd:\"MetadataBoundary\"\ne:I[97367,[\"$2\"],\"$d\"]\n10:I[68027,[\"$2\"],\"default\",1]\n5:X\n"])</script><script>self.__next_f.push([1,"6:[[\"children\",{\"s\":\"__PAGE__\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],\"p\":false,\"v\":null}}]]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$5\"},\"c\":\"$Q6\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"waEyx88w-M7TBm3nu35s-\"}\n"])</script><script>self.__next_f.push([1,"5:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"9:null\nf:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/3333gs1h_w689.js"/><script src="/_next/static/chunks/14tzp9zyiydj9.js" async=""></script><script src="/_next/static/chunks/3zhaqdsq15d1e.js" async=""></script><script src="/_next/static/chunks/41rcj9-d-7p_4.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/0umf92h1sb77c.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/3333gs1h_w689.js","static/chunks/14tzp9zyiydj9.js","static/chunks/3zhaqdsq15d1e.js","static/chunks/41rcj9-d-7p_4.js"],"runtimeModuleIds":[94553]});</script><script src="/_next/static/chunks/3333gs1h_w689.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/0umf92h1sb77c.js\"\n3:I[39756,[\"$2\"],\"default\"]\n4:I[37457,[\"$2\"],\"default\"]\n7:I[97367,[\"$2\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:\"ViewportBoundary\"\nb:I[97367,[\"$2\"],\"$a\"]\nd:\"MetadataBoundary\"\ne:I[97367,[\"$2\"],\"$d\"]\n10:I[68027,[\"$2\"],\"default\",1]\n5:X\n"])</script><script>self.__next_f.push([1,"6:[[\"children\",{\"s\":\"__PAGE__\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],\"p\":false,\"v\":null}}]]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$5\"},\"c\":\"$Q6\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"LxcgnSJuKSN0rA6kJgwr6\"}\n"])</script><script>self.__next_f.push([1,"5:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"9:null\nf:[]\n"])</script></body></html>
@@ -1,5 +1,5 @@
1
1
  {
2
- "previewModeId": "4f5e075c2c1c25be9d4bc0cb3993703f",
3
- "previewModeSigningKey": "5b13a1dcd9285a6a52e6a2d28f8eba1b028ad9283fef65669af44f74fb8d7076",
4
- "previewModeEncryptionKey": "20d2870a0faf0975d538493550dfabfe07a80c176e38d3247cd2070316a006d5"
2
+ "previewModeId": "42a7addc8d705c443ee0fdff28421a2c",
3
+ "previewModeSigningKey": "b9af7308d3a881a5f22291a447c2376a3be43ba69a0636ef5b435aa1a0ee454d",
4
+ "previewModeEncryptionKey": "61e21bd3e3f31298884eed384e29f987ffe7c75a71d7c7e006325d98a10c0ead"
5
5
  }