@aeolus-fleet/gateway 0.29.1 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (923) hide show
  1. package/README.md +11 -3
  2. package/dist/adapters/a2a/a2a-agents.d.ts +6 -0
  3. package/dist/adapters/a2a/a2a-agents.js +238 -0
  4. package/dist/adapters/a2a/a2a-agents.js.map +1 -0
  5. package/dist/adapters/a2a/agent-cards.d.ts +4 -0
  6. package/dist/adapters/a2a/agent-cards.js +90 -0
  7. package/dist/adapters/a2a/agent-cards.js.map +1 -0
  8. package/dist/adapters/crypto/agent-keys.d.ts +3 -0
  9. package/dist/adapters/crypto/agent-keys.js +13 -0
  10. package/dist/adapters/crypto/agent-keys.js.map +1 -0
  11. package/dist/adapters/crypto/call-keys.js +2 -0
  12. package/dist/adapters/crypto/call-keys.js.map +1 -1
  13. package/dist/adapters/fleet/console-sessions.js +10 -6
  14. package/dist/adapters/fleet/console-sessions.js.map +1 -1
  15. package/dist/adapters/fleet/core-version.d.ts +1 -1
  16. package/dist/adapters/fleet/core-version.js +1 -1
  17. package/dist/adapters/fleet/fleet-ships.d.ts +3 -1
  18. package/dist/adapters/fleet/fleet-ships.js +19 -10
  19. package/dist/adapters/fleet/fleet-ships.js.map +1 -1
  20. package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -2
  21. package/dist/adapters/fleet/rest-fleet-door.js +29 -5
  22. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  23. package/dist/adapters/http/a2a-cards.d.ts +24 -0
  24. package/dist/adapters/http/a2a-cards.js +62 -0
  25. package/dist/adapters/http/a2a-cards.js.map +1 -0
  26. package/dist/adapters/http/a2a-endpoint.d.ts +28 -0
  27. package/dist/adapters/http/a2a-endpoint.js +424 -0
  28. package/dist/adapters/http/a2a-endpoint.js.map +1 -0
  29. package/dist/adapters/http/a2a-streams.d.ts +28 -0
  30. package/dist/adapters/http/a2a-streams.js +74 -0
  31. package/dist/adapters/http/a2a-streams.js.map +1 -0
  32. package/dist/adapters/http/a2a-tasks.d.ts +18 -0
  33. package/dist/adapters/http/a2a-tasks.js +117 -0
  34. package/dist/adapters/http/a2a-tasks.js.map +1 -0
  35. package/dist/adapters/http/front-door.js +8 -4
  36. package/dist/adapters/http/front-door.js.map +1 -1
  37. package/dist/adapters/http/live.d.ts +3 -1
  38. package/dist/adapters/http/live.js +6 -2
  39. package/dist/adapters/http/live.js.map +1 -1
  40. package/dist/adapters/http/oauth-routes.d.ts +1 -1
  41. package/dist/adapters/http/oauth-routes.js +16 -3
  42. package/dist/adapters/http/oauth-routes.js.map +1 -1
  43. package/dist/adapters/mcp/mcp-servers.js +2 -0
  44. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  45. package/dist/adapters/pagasae/email-channel.d.ts +8 -0
  46. package/dist/adapters/pagasae/email-channel.js +37 -0
  47. package/dist/adapters/pagasae/email-channel.js.map +1 -0
  48. package/dist/adapters/pagasae/pagasae-client.js +6 -2
  49. package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
  50. package/dist/adapters/prisma/agent-calls.d.ts +3 -0
  51. package/dist/adapters/prisma/agent-calls.js +49 -0
  52. package/dist/adapters/prisma/agent-calls.js.map +1 -0
  53. package/dist/adapters/prisma/changes.d.ts +17 -8
  54. package/dist/adapters/prisma/changes.js +18 -5
  55. package/dist/adapters/prisma/changes.js.map +1 -1
  56. package/dist/adapters/prisma/client-calls.d.ts +1 -1
  57. package/dist/adapters/prisma/client-calls.js +83 -21
  58. package/dist/adapters/prisma/client-calls.js.map +1 -1
  59. package/dist/adapters/prisma/email-channels.d.ts +4 -0
  60. package/dist/adapters/prisma/email-channels.js +14 -0
  61. package/dist/adapters/prisma/email-channels.js.map +1 -0
  62. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  63. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  64. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  65. package/dist/adapters/prisma/focused-pages.d.ts +4 -0
  66. package/dist/adapters/prisma/focused-pages.js +13 -0
  67. package/dist/adapters/prisma/focused-pages.js.map +1 -0
  68. package/dist/adapters/prisma/generated/browser.d.ts +45 -0
  69. package/dist/adapters/prisma/generated/client.d.ts +45 -0
  70. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +54 -54
  71. package/dist/adapters/prisma/generated/internal/class.d.ts +99 -0
  72. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  73. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  74. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +783 -1
  75. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +101 -3
  76. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  77. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +107 -0
  78. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +101 -3
  79. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  80. package/dist/adapters/prisma/generated/models/A2aAgentCall.d.ts +1203 -0
  81. package/dist/adapters/prisma/generated/models/A2aAgentCall.js +2 -0
  82. package/dist/adapters/prisma/generated/models/A2aAgentCall.js.map +1 -0
  83. package/dist/adapters/prisma/generated/models/A2aAgentReply.d.ts +1003 -0
  84. package/dist/adapters/prisma/generated/models/A2aAgentReply.js +2 -0
  85. package/dist/adapters/prisma/generated/models/A2aAgentReply.js.map +1 -0
  86. package/dist/adapters/prisma/generated/models/A2aPush.d.ts +1413 -0
  87. package/dist/adapters/prisma/generated/models/A2aPush.js +2 -0
  88. package/dist/adapters/prisma/generated/models/A2aPush.js.map +1 -0
  89. package/dist/adapters/prisma/generated/models/A2aPushConfig.d.ts +1322 -0
  90. package/dist/adapters/prisma/generated/models/A2aPushConfig.js +2 -0
  91. package/dist/adapters/prisma/generated/models/A2aPushConfig.js.map +1 -0
  92. package/dist/adapters/prisma/generated/models/A2aTask.d.ts +1002 -0
  93. package/dist/adapters/prisma/generated/models/A2aTask.js +2 -0
  94. package/dist/adapters/prisma/generated/models/A2aTask.js.map +1 -0
  95. package/dist/adapters/prisma/generated/models/ClientCall.d.ts +136 -15
  96. package/dist/adapters/prisma/generated/models/ClientCallReply.d.ts +0 -7
  97. package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +946 -0
  98. package/dist/adapters/prisma/generated/models/EmailChannel.js +2 -0
  99. package/dist/adapters/prisma/generated/models/EmailChannel.js.map +1 -0
  100. package/dist/adapters/prisma/generated/models/FocusedPage.d.ts +974 -0
  101. package/dist/adapters/prisma/generated/models/FocusedPage.js +2 -0
  102. package/dist/adapters/prisma/generated/models/FocusedPage.js.map +1 -0
  103. package/dist/adapters/prisma/generated/models/IssuedToken.d.ts +47 -41
  104. package/dist/adapters/prisma/generated/models/OAuthClient.d.ts +32 -8
  105. package/dist/adapters/prisma/generated/models/Party.d.ts +90 -3
  106. package/dist/adapters/prisma/generated/models/WakeSent.d.ts +975 -0
  107. package/dist/adapters/prisma/generated/models/WakeSent.js +2 -0
  108. package/dist/adapters/prisma/generated/models/WakeSent.js.map +1 -0
  109. package/dist/adapters/prisma/generated/models/WebPushSubscription.d.ts +1115 -0
  110. package/dist/adapters/prisma/generated/models/WebPushSubscription.js +2 -0
  111. package/dist/adapters/prisma/generated/models/WebPushSubscription.js.map +1 -0
  112. package/dist/adapters/prisma/generated/models.d.ts +9 -0
  113. package/dist/adapters/prisma/oauth-stores.js +3 -2
  114. package/dist/adapters/prisma/oauth-stores.js.map +1 -1
  115. package/dist/adapters/prisma/party-store.js +35 -6
  116. package/dist/adapters/prisma/party-store.js.map +1 -1
  117. package/dist/adapters/prisma/person-crews.js +9 -0
  118. package/dist/adapters/prisma/person-crews.js.map +1 -1
  119. package/dist/adapters/prisma/push-store.d.ts +3 -0
  120. package/dist/adapters/prisma/push-store.js +102 -0
  121. package/dist/adapters/prisma/push-store.js.map +1 -0
  122. package/dist/adapters/prisma/waiter-locks.d.ts +4 -0
  123. package/dist/adapters/prisma/waiter-locks.js +72 -0
  124. package/dist/adapters/prisma/waiter-locks.js.map +1 -0
  125. package/dist/adapters/prisma/wakes-sent.d.ts +4 -0
  126. package/dist/adapters/prisma/wakes-sent.js +10 -0
  127. package/dist/adapters/prisma/wakes-sent.js.map +1 -0
  128. package/dist/adapters/prisma/web-push-subscriptions.d.ts +3 -0
  129. package/dist/adapters/prisma/web-push-subscriptions.js +33 -0
  130. package/dist/adapters/prisma/web-push-subscriptions.js.map +1 -0
  131. package/dist/adapters/trpc/router.d.ts +397 -9
  132. package/dist/adapters/trpc/router.js +247 -16
  133. package/dist/adapters/trpc/router.js.map +1 -1
  134. package/dist/adapters/web-push/web-push.d.ts +9 -0
  135. package/dist/adapters/web-push/web-push.js +70 -0
  136. package/dist/adapters/web-push/web-push.js.map +1 -0
  137. package/dist/adapters/webhooks/allowed-lookup.d.ts +14 -0
  138. package/dist/adapters/webhooks/allowed-lookup.js +28 -0
  139. package/dist/adapters/webhooks/allowed-lookup.js.map +1 -0
  140. package/dist/adapters/webhooks/host-resolver.d.ts +3 -0
  141. package/dist/adapters/webhooks/host-resolver.js +13 -0
  142. package/dist/adapters/webhooks/host-resolver.js.map +1 -0
  143. package/dist/adapters/webhooks/webhook-poster.d.ts +6 -0
  144. package/dist/adapters/webhooks/webhook-poster.js +67 -0
  145. package/dist/adapters/webhooks/webhook-poster.js.map +1 -0
  146. package/dist/app.d.ts +12 -0
  147. package/dist/app.js +273 -14
  148. package/dist/app.js.map +1 -1
  149. package/dist/bin/aeolus-gateway.js +3 -0
  150. package/dist/bin/aeolus-gateway.js.map +1 -1
  151. package/dist/config.d.ts +14 -0
  152. package/dist/config.js +24 -0
  153. package/dist/config.js.map +1 -1
  154. package/dist/core/a2a-in/authenticate-a2a-client.d.ts +23 -0
  155. package/dist/core/a2a-in/authenticate-a2a-client.js +21 -0
  156. package/dist/core/a2a-in/authenticate-a2a-client.js.map +1 -0
  157. package/dist/core/a2a-in/deliver-pushes.d.ts +24 -0
  158. package/dist/core/a2a-in/deliver-pushes.js +48 -0
  159. package/dist/core/a2a-in/deliver-pushes.js.map +1 -0
  160. package/dist/core/a2a-in/find-reached-ship.d.ts +18 -0
  161. package/dist/core/a2a-in/find-reached-ship.js +20 -0
  162. package/dist/core/a2a-in/find-reached-ship.js.map +1 -0
  163. package/dist/core/a2a-in/follow-a2a-task.d.ts +25 -0
  164. package/dist/core/a2a-in/follow-a2a-task.js +23 -0
  165. package/dist/core/a2a-in/follow-a2a-task.js.map +1 -0
  166. package/dist/core/a2a-in/inbound-message.d.ts +30 -0
  167. package/dist/core/a2a-in/inbound-message.js +33 -0
  168. package/dist/core/a2a-in/inbound-message.js.map +1 -0
  169. package/dist/core/a2a-in/list-a2a-tasks.d.ts +18 -0
  170. package/dist/core/a2a-in/list-a2a-tasks.js +14 -0
  171. package/dist/core/a2a-in/list-a2a-tasks.js.map +1 -0
  172. package/dist/core/a2a-in/list-push-configs.d.ts +20 -0
  173. package/dist/core/a2a-in/list-push-configs.js +18 -0
  174. package/dist/core/a2a-in/list-push-configs.js.map +1 -0
  175. package/dist/core/a2a-in/list-reached-ships.d.ts +25 -0
  176. package/dist/core/a2a-in/list-reached-ships.js +22 -0
  177. package/dist/core/a2a-in/list-reached-ships.js.map +1 -0
  178. package/dist/core/a2a-in/notice-task-changes.d.ts +19 -0
  179. package/dist/core/a2a-in/notice-task-changes.js +17 -0
  180. package/dist/core/a2a-in/notice-task-changes.js.map +1 -0
  181. package/dist/core/a2a-in/ports.d.ts +124 -0
  182. package/dist/core/a2a-in/ports.js +2 -0
  183. package/dist/core/a2a-in/ports.js.map +1 -0
  184. package/dist/core/a2a-in/push-config-view.d.ts +8 -0
  185. package/dist/core/a2a-in/push-config-view.js +2 -0
  186. package/dist/core/a2a-in/push-config-view.js.map +1 -0
  187. package/dist/core/a2a-in/push-to-webhooks.d.ts +19 -0
  188. package/dist/core/a2a-in/push-to-webhooks.js +19 -0
  189. package/dist/core/a2a-in/push-to-webhooks.js.map +1 -0
  190. package/dist/core/a2a-in/read-a2a-task.d.ts +12 -0
  191. package/dist/core/a2a-in/read-a2a-task.js +11 -0
  192. package/dist/core/a2a-in/read-a2a-task.js.map +1 -0
  193. package/dist/core/a2a-in/read-push-config.d.ts +16 -0
  194. package/dist/core/a2a-in/read-push-config.js +14 -0
  195. package/dist/core/a2a-in/read-push-config.js.map +1 -0
  196. package/dist/core/a2a-in/remove-push-config.d.ts +15 -0
  197. package/dist/core/a2a-in/remove-push-config.js +13 -0
  198. package/dist/core/a2a-in/remove-push-config.js.map +1 -0
  199. package/dist/core/a2a-in/send-a2a-message.d.ts +34 -0
  200. package/dist/core/a2a-in/send-a2a-message.js +106 -0
  201. package/dist/core/a2a-in/send-a2a-message.js.map +1 -0
  202. package/dist/core/a2a-in/set-push-config.d.ts +30 -0
  203. package/dist/core/a2a-in/set-push-config.js +27 -0
  204. package/dist/core/a2a-in/set-push-config.js.map +1 -0
  205. package/dist/core/a2a-in/subscribe-to-a2a-task.d.ts +18 -0
  206. package/dist/core/a2a-in/subscribe-to-a2a-task.js +17 -0
  207. package/dist/core/a2a-in/subscribe-to-a2a-task.js.map +1 -0
  208. package/dist/core/a2a-in/task-view.d.ts +51 -0
  209. package/dist/core/a2a-in/task-view.js +49 -0
  210. package/dist/core/a2a-in/task-view.js.map +1 -0
  211. package/dist/core/a2a-in/webhook-address.d.ts +7 -0
  212. package/dist/core/a2a-in/webhook-address.js +17 -0
  213. package/dist/core/a2a-in/webhook-address.js.map +1 -0
  214. package/dist/core/a2a-in/webhook.d.ts +6 -0
  215. package/dist/core/a2a-in/webhook.js +80 -0
  216. package/dist/core/a2a-in/webhook.js.map +1 -0
  217. package/dist/core/a2a-out/agent-endpoint.d.ts +10 -0
  218. package/dist/core/a2a-out/agent-endpoint.js +10 -0
  219. package/dist/core/a2a-out/agent-endpoint.js.map +1 -0
  220. package/dist/core/a2a-out/agent-event.d.ts +41 -0
  221. package/dist/core/a2a-out/agent-event.js +64 -0
  222. package/dist/core/a2a-out/agent-event.js.map +1 -0
  223. package/dist/core/a2a-out/agent-message.d.ts +36 -0
  224. package/dist/core/a2a-out/agent-message.js +36 -0
  225. package/dist/core/a2a-out/agent-message.js.map +1 -0
  226. package/dist/core/a2a-out/agent-statement.d.ts +10 -0
  227. package/dist/core/a2a-out/agent-statement.js +45 -0
  228. package/dist/core/a2a-out/agent-statement.js.map +1 -0
  229. package/dist/core/a2a-out/follow-agent-task.d.ts +40 -0
  230. package/dist/core/a2a-out/follow-agent-task.js +125 -0
  231. package/dist/core/a2a-out/follow-agent-task.js.map +1 -0
  232. package/dist/core/a2a-out/hand-a2a-message.d.ts +36 -0
  233. package/dist/core/a2a-out/hand-a2a-message.js +132 -0
  234. package/dist/core/a2a-out/hand-a2a-message.js.map +1 -0
  235. package/dist/core/a2a-out/mark-a2a-agent.d.ts +24 -0
  236. package/dist/core/a2a-out/mark-a2a-agent.js +24 -0
  237. package/dist/core/a2a-out/mark-a2a-agent.js.map +1 -0
  238. package/dist/core/a2a-out/ports.d.ts +200 -0
  239. package/dist/core/a2a-out/ports.js +2 -0
  240. package/dist/core/a2a-out/ports.js.map +1 -0
  241. package/dist/core/a2a-out/read-agent-statement.d.ts +13 -0
  242. package/dist/core/a2a-out/read-agent-statement.js +13 -0
  243. package/dist/core/a2a-out/read-agent-statement.js.map +1 -0
  244. package/dist/core/a2a-out/run-a2a-agent.d.ts +26 -0
  245. package/dist/core/a2a-out/run-a2a-agent.js +46 -0
  246. package/dist/core/a2a-out/run-a2a-agent.js.map +1 -0
  247. package/dist/core/a2a-out/state-a2a-agent.d.ts +26 -0
  248. package/dist/core/a2a-out/state-a2a-agent.js +31 -0
  249. package/dist/core/a2a-out/state-a2a-agent.js.map +1 -0
  250. package/dist/core/actors/authenticate-actor.d.ts +11 -5
  251. package/dist/core/actors/authenticate-actor.js +7 -3
  252. package/dist/core/actors/authenticate-actor.js.map +1 -1
  253. package/dist/core/actors/credential-of.d.ts +3 -2
  254. package/dist/core/actors/credential-of.js +4 -3
  255. package/dist/core/actors/credential-of.js.map +1 -1
  256. package/dist/core/mcp-in/call-tool.js +2 -0
  257. package/dist/core/mcp-in/call-tool.js.map +1 -1
  258. package/dist/core/mcp-in/client-call.d.ts +35 -4
  259. package/dist/core/mcp-in/client-call.js +57 -10
  260. package/dist/core/mcp-in/client-call.js.map +1 -1
  261. package/dist/core/mcp-in/collect-replies.d.ts +4 -3
  262. package/dist/core/mcp-in/collect-replies.js +4 -0
  263. package/dist/core/mcp-in/collect-replies.js.map +1 -1
  264. package/dist/core/mcp-in/ports.d.ts +52 -3
  265. package/dist/core/mcp-out/hand-call.d.ts +5 -1
  266. package/dist/core/mcp-out/hand-call.js +9 -1
  267. package/dist/core/mcp-out/hand-call.js.map +1 -1
  268. package/dist/core/mcp-out/run-party.d.ts +29 -7
  269. package/dist/core/mcp-out/run-party.js +14 -6
  270. package/dist/core/mcp-out/run-party.js.map +1 -1
  271. package/dist/core/mcp-out/state-party.d.ts +4 -2
  272. package/dist/core/mcp-out/state-party.js +10 -3
  273. package/dist/core/mcp-out/state-party.js.map +1 -1
  274. package/dist/core/mcp-out/statement.d.ts +2 -1
  275. package/dist/core/mcp-out/statement.js.map +1 -1
  276. package/dist/core/oauth/exchange-id-jag.d.ts +28 -0
  277. package/dist/core/oauth/exchange-id-jag.js +66 -0
  278. package/dist/core/oauth/exchange-id-jag.js.map +1 -0
  279. package/dist/core/oauth/exchange-token.d.ts +25 -11
  280. package/dist/core/oauth/exchange-token.js +50 -3
  281. package/dist/core/oauth/exchange-token.js.map +1 -1
  282. package/dist/core/oauth/ports.d.ts +17 -6
  283. package/dist/core/oauth/register-client.js +1 -1
  284. package/dist/core/oauth/register-client.js.map +1 -1
  285. package/dist/core/operator/authenticate-operator.d.ts +5 -9
  286. package/dist/core/operator/authenticate-operator.js +4 -4
  287. package/dist/core/operator/authenticate-operator.js.map +1 -1
  288. package/dist/core/operator/ports.d.ts +15 -9
  289. package/dist/core/parties/add-a2a-agent.d.ts +34 -0
  290. package/dist/core/parties/add-a2a-agent.js +45 -0
  291. package/dist/core/parties/add-a2a-agent.js.map +1 -0
  292. package/dist/core/parties/add-a2a-client.d.ts +30 -0
  293. package/dist/core/parties/add-a2a-client.js +47 -0
  294. package/dist/core/parties/add-a2a-client.js.map +1 -0
  295. package/dist/core/parties/add-client-party.d.ts +38 -0
  296. package/dist/core/parties/add-client-party.js +40 -0
  297. package/dist/core/parties/add-client-party.js.map +1 -0
  298. package/dist/core/parties/approve-party.d.ts +43 -2
  299. package/dist/core/parties/approve-party.js +9 -5
  300. package/dist/core/parties/approve-party.js.map +1 -1
  301. package/dist/core/parties/approver.d.ts +7 -0
  302. package/dist/core/parties/approver.js +9 -0
  303. package/dist/core/parties/approver.js.map +1 -0
  304. package/dist/core/parties/check-server.d.ts +2 -1
  305. package/dist/core/parties/check-server.js +1 -1
  306. package/dist/core/parties/check-server.js.map +1 -1
  307. package/dist/core/parties/crew-party.d.ts +18 -4
  308. package/dist/core/parties/crew-party.js +36 -4
  309. package/dist/core/parties/crew-party.js.map +1 -1
  310. package/dist/core/parties/party.d.ts +23 -1
  311. package/dist/core/parties/party.js +17 -4
  312. package/dist/core/parties/party.js.map +1 -1
  313. package/dist/core/parties/ports.d.ts +16 -0
  314. package/dist/core/parties/read-party-tools.d.ts +4 -3
  315. package/dist/core/parties/read-party-tools.js +4 -2
  316. package/dist/core/parties/read-party-tools.js.map +1 -1
  317. package/dist/core/parties/shown-party.d.ts +8 -0
  318. package/dist/core/parties/shown-party.js +4 -0
  319. package/dist/core/parties/shown-party.js.map +1 -1
  320. package/dist/core/parties/switch-tool.d.ts +29 -0
  321. package/dist/core/parties/switch-tool.js +33 -0
  322. package/dist/core/parties/switch-tool.js.map +1 -0
  323. package/dist/core/parties/tool-switches.d.ts +27 -0
  324. package/dist/core/parties/tool-switches.js +17 -0
  325. package/dist/core/parties/tool-switches.js.map +1 -0
  326. package/dist/core/people/answer-delivery.d.ts +2 -1
  327. package/dist/core/people/answer-delivery.js.map +1 -1
  328. package/dist/core/people/done-delivery.d.ts +2 -1
  329. package/dist/core/people/done-delivery.js.map +1 -1
  330. package/dist/core/people/focus-page.d.ts +18 -0
  331. package/dist/core/people/focus-page.js +20 -0
  332. package/dist/core/people/focus-page.js.map +1 -0
  333. package/dist/core/people/open-delivery.d.ts +3 -1
  334. package/dist/core/people/open-delivery.js +2 -0
  335. package/dist/core/people/open-delivery.js.map +1 -1
  336. package/dist/core/people/opened-of.d.ts +7 -2
  337. package/dist/core/people/opened-of.js +6 -1
  338. package/dist/core/people/opened-of.js.map +1 -1
  339. package/dist/core/people/person-crew.d.ts +2 -0
  340. package/dist/core/people/person-crew.js +6 -2
  341. package/dist/core/people/person-crew.js.map +1 -1
  342. package/dist/core/people/ports.d.ts +151 -3
  343. package/dist/core/people/read-wake-channels.d.ts +42 -0
  344. package/dist/core/people/read-wake-channels.js +21 -0
  345. package/dist/core/people/read-wake-channels.js.map +1 -0
  346. package/dist/core/people/turn-email-channel.d.ts +21 -0
  347. package/dist/core/people/turn-email-channel.js +22 -0
  348. package/dist/core/people/turn-email-channel.js.map +1 -0
  349. package/dist/core/people/turn-off-web-push.d.ts +13 -0
  350. package/dist/core/people/turn-off-web-push.js +14 -0
  351. package/dist/core/people/turn-off-web-push.js.map +1 -0
  352. package/dist/core/people/turn-on-web-push.d.ts +35 -0
  353. package/dist/core/people/turn-on-web-push.js +49 -0
  354. package/dist/core/people/turn-on-web-push.js.map +1 -0
  355. package/dist/core/people/wait-on-person-ship.d.ts +44 -0
  356. package/dist/core/people/wait-on-person-ship.js +92 -0
  357. package/dist/core/people/wait-on-person-ship.js.map +1 -0
  358. package/dist/core/people/wake-person.d.ts +40 -0
  359. package/dist/core/people/wake-person.js +74 -0
  360. package/dist/core/people/wake-person.js.map +1 -0
  361. package/dist/core/people/web-push-channel.d.ts +17 -0
  362. package/dist/core/people/web-push-channel.js +35 -0
  363. package/dist/core/people/web-push-channel.js.map +1 -0
  364. package/dist/core/requests/decide-request.d.ts +0 -2
  365. package/dist/core/requests/decide-request.js +3 -6
  366. package/dist/core/requests/decide-request.js.map +1 -1
  367. package/dist/core/requests/list-to-decide.js +1 -1
  368. package/dist/core/requests/list-to-decide.js.map +1 -1
  369. package/dist/core/shared/errors.d.ts +1 -1
  370. package/dist/core/shared/errors.js.map +1 -1
  371. package/dist/core/sign-in/ports.d.ts +13 -0
  372. package/dist/core/vault/credential.d.ts +6 -2
  373. package/dist/party-workers.d.ts +9 -1
  374. package/dist/party-workers.js +37 -5
  375. package/dist/party-workers.js.map +1 -1
  376. package/dist/person-waiters.d.ts +30 -0
  377. package/dist/person-waiters.js +89 -0
  378. package/dist/person-waiters.js.map +1 -0
  379. package/package.json +7 -3
  380. package/src/adapters/prisma/migrations/20261023120000_party_bearer_hash/migration.sql +4 -0
  381. package/src/adapters/prisma/migrations/20261023130000_client_credentials/migration.sql +5 -0
  382. package/src/adapters/prisma/migrations/20261023200000_a2a_tasks/migration.sql +20 -0
  383. package/src/adapters/prisma/migrations/20261023210000_tool_switches/migration.sql +2 -0
  384. package/src/adapters/prisma/migrations/20261024090000_a2a_pushes/migration.sql +37 -0
  385. package/src/adapters/prisma/migrations/20261024100000_party_is_repeatable/migration.sql +2 -0
  386. package/src/adapters/prisma/migrations/20261024110000_a2a_agent_calls/migration.sql +29 -0
  387. package/src/adapters/prisma/migrations/20261024115000_wakes/migration.sql +17 -0
  388. package/src/adapters/prisma/migrations/20261024120000_focused_pages/migration.sql +11 -0
  389. package/src/adapters/prisma/migrations/20261024130000_web_push_subscriptions/migration.sql +14 -0
  390. package/src/adapters/prisma/schema.prisma +159 -5
  391. package/web/.next/BUILD_ID +1 -1
  392. package/web/.next/app-path-routes-manifest.json +14 -11
  393. package/web/.next/build-manifest.json +39 -15
  394. package/web/.next/diagnostics/route-bundle-stats.json +107 -58
  395. package/web/.next/fallback-build-manifest.json +3 -3
  396. package/web/.next/next-minimal-server.js.nft.json +1 -1
  397. package/web/.next/next-server.js.nft.json +1 -1
  398. package/web/.next/prerender-manifest.json +3 -3
  399. package/web/.next/routes-manifest.json +18 -0
  400. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/app-paths-manifest.json +3 -0
  401. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +23 -0
  402. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/next-font-manifest.json +11 -0
  403. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +55 -0
  404. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +25 -0
  405. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -0
  406. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +3 -0
  407. package/web/.next/server/app/(console)/outside-parties/[name]/page/app-paths-manifest.json +3 -0
  408. package/web/.next/server/app/{outside-parties/[name]/retire → (console)/outside-parties/[name]}/page/build-manifest.json +1 -1
  409. package/web/.next/server/app/{outside-parties/[name]/retire → (console)/outside-parties/[name]}/page/next-font-manifest.json +1 -1
  410. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +35 -0
  411. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +24 -0
  412. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -0
  413. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +3 -0
  414. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/app-paths-manifest.json +3 -0
  415. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +23 -0
  416. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/next-font-manifest.json +11 -0
  417. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +55 -0
  418. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +25 -0
  419. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -0
  420. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +3 -0
  421. package/web/.next/server/app/(console)/outside-parties/add/page/app-paths-manifest.json +3 -0
  422. package/web/.next/server/app/{outside-parties/[name]/change → (console)/outside-parties/add}/page/build-manifest.json +1 -1
  423. package/web/.next/server/app/{outside-parties/[name]/change → (console)/outside-parties/add}/page/next-font-manifest.json +1 -1
  424. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +55 -0
  425. package/web/.next/server/app/(console)/outside-parties/add/page.js +25 -0
  426. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -0
  427. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +3 -0
  428. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/app-paths-manifest.json +3 -0
  429. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +23 -0
  430. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/next-font-manifest.json +11 -0
  431. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +25 -0
  432. package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page.js +14 -13
  433. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -0
  434. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +3 -0
  435. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/app-paths-manifest.json +3 -0
  436. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +23 -0
  437. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/next-font-manifest.json +11 -0
  438. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +25 -0
  439. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +21 -0
  440. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -0
  441. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +3 -0
  442. package/web/.next/server/app/(console)/outside-parties/page/app-paths-manifest.json +3 -0
  443. package/web/.next/server/app/{outside-parties/[name] → (console)/outside-parties}/page/build-manifest.json +1 -1
  444. package/web/.next/server/app/{outside-parties/add → (console)/outside-parties}/page/next-font-manifest.json +1 -1
  445. package/web/.next/server/app/{outside-parties → (console)/outside-parties}/page/server-reference-manifest.json +6 -6
  446. package/web/.next/server/app/{outside-parties → (console)/outside-parties}/page.js +13 -12
  447. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -0
  448. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +3 -0
  449. package/web/.next/server/app/(console)/overview/changes/route/app-paths-manifest.json +3 -0
  450. package/web/.next/server/app/(console)/overview/changes/route.js +7 -0
  451. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -0
  452. package/web/.next/server/app/(console)/overview/changes/route_client-reference-manifest.js +3 -0
  453. package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +3 -0
  454. package/web/.next/server/app/(console)/overview/focus/route/build-manifest.json +12 -0
  455. package/web/.next/server/app/(console)/overview/focus/route/server-reference-manifest.json +4 -0
  456. package/web/.next/server/app/(console)/overview/focus/route.js +7 -0
  457. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -0
  458. package/web/.next/server/app/(console)/overview/focus/route_client-reference-manifest.js +3 -0
  459. package/web/.next/server/app/(console)/overview/page/app-paths-manifest.json +3 -0
  460. package/web/.next/server/app/{sign-in/failed → (console)/overview}/page/build-manifest.json +1 -1
  461. package/web/.next/server/app/{parties → (console)/overview}/page/next-font-manifest.json +1 -1
  462. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +75 -0
  463. package/web/.next/server/app/{overview/requests/[requestId] → (console)/overview}/page.js +15 -14
  464. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -0
  465. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +3 -0
  466. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/app-paths-manifest.json +3 -0
  467. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/build-manifest.json +23 -0
  468. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/next-font-manifest.json +11 -0
  469. package/web/.next/server/app/{overview → (console)/overview}/requests/[requestId]/page/server-reference-manifest.json +6 -6
  470. package/web/.next/server/app/{overview → (console)/overview/requests/[requestId]}/page.js +15 -14
  471. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.map +5 -0
  472. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -0
  473. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +3 -0
  474. package/web/.next/server/app/(console)/parties/page/app-paths-manifest.json +3 -0
  475. package/web/.next/server/app/{outside-parties → (console)/parties}/page/build-manifest.json +1 -1
  476. package/web/.next/server/app/{outside-parties → (console)/parties}/page/next-font-manifest.json +1 -1
  477. package/web/.next/server/app/(console)/parties/page/react-loadable-manifest.json +1 -0
  478. package/web/.next/server/app/{parties → (console)/parties}/page/server-reference-manifest.json +18 -18
  479. package/web/.next/server/app/{parties → (console)/parties}/page.js +12 -11
  480. package/web/.next/server/app/(console)/parties/page.js.map +5 -0
  481. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -0
  482. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +3 -0
  483. package/web/.next/server/app/(console)/sign-in/failed/page/app-paths-manifest.json +3 -0
  484. package/web/.next/server/app/{outside-parties/add → (console)/sign-in/failed}/page/build-manifest.json +1 -1
  485. package/web/.next/server/app/{outside-parties/[name] → (console)/sign-in/failed}/page/next-font-manifest.json +1 -1
  486. package/web/.next/server/app/(console)/sign-in/failed/page/react-loadable-manifest.json +1 -0
  487. package/web/.next/server/app/{sign-in → (console)/sign-in}/failed/page/server-reference-manifest.json +3 -3
  488. package/web/.next/server/app/{sign-in → (console)/sign-in}/failed/page.js +13 -12
  489. package/web/.next/server/app/(console)/sign-in/failed/page.js.map +5 -0
  490. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -0
  491. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +3 -0
  492. package/web/.next/server/app/_global-error/page.js +3 -3
  493. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  494. package/web/.next/server/app/_global-error.html +1 -1
  495. package/web/.next/server/app/_global-error.rsc +1 -1
  496. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  497. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  498. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  499. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  500. package/web/.next/server/app/_not-found/page.js +7 -7
  501. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  502. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  503. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  504. package/web/.next/server/app/authorize/failed/page.js +11 -9
  505. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  506. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  507. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  508. package/web/.next/server/app/authorize/pick/page.js +12 -10
  509. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  510. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  511. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  512. package/web/.next/server/app/authorize/waiting/approval/page.js +11 -9
  513. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  514. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  515. package/web/.next/server/app-paths-manifest.json +14 -11
  516. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +3 -0
  517. package/web/.next/server/chunks/1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js +3 -0
  518. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js +3 -0
  519. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js.map +1 -0
  520. package/web/.next/server/chunks/{[root-of-the-server]__00bbah0fbuex2._.js → [root-of-the-server]__0ykc8bq_c06a1._.js} +22 -22
  521. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -0
  522. package/web/.next/server/chunks/_04is-uopj3op9._.js +3 -0
  523. package/web/.next/server/chunks/_04is-uopj3op9._.js.map +1 -0
  524. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +3 -0
  525. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +1 -0
  526. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +3 -0
  527. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -0
  528. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +3 -0
  529. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -0
  530. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +3 -0
  531. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -0
  532. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +3 -0
  533. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -0
  534. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +3 -0
  535. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -0
  536. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +3 -0
  537. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -0
  538. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1qpk1uw97id0a._.js → [root-of-the-server]__0-og0bl8lr2xq._.js} +2 -2
  539. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js.map +1 -0
  540. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +3 -0
  541. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js.map +1 -0
  542. package/web/.next/server/chunks/ssr/{[root-of-the-server]__197il4swfpq1a._.js → [root-of-the-server]__0a68v9ynev4q6._.js} +2 -2
  543. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js.map +1 -0
  544. package/web/.next/server/chunks/ssr/[root-of-the-server]__0grpi5wnl9ppf._.js +10 -0
  545. package/web/.next/server/chunks/ssr/[root-of-the-server]__0grpi5wnl9ppf._.js.map +1 -0
  546. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +4 -0
  547. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -0
  548. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +3 -0
  549. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1vkw2kvzx6fpw._.js.map → [root-of-the-server]__0l2_dk9d4o01n._.js.map} +1 -1
  550. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +3 -0
  551. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +1 -0
  552. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +4 -0
  553. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +1 -0
  554. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +3 -0
  555. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js.map +1 -0
  556. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +1 -1
  557. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -1
  558. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js +3 -0
  559. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +1 -0
  560. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0ntyo9p3x-w6a._.js → [root-of-the-server]__179upda-y7uap._.js} +2 -2
  561. package/web/.next/server/chunks/ssr/[root-of-the-server]__179upda-y7uap._.js.map +1 -0
  562. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +4 -0
  563. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +1 -0
  564. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js +3 -0
  565. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js.map +1 -0
  566. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +3 -0
  567. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +1 -0
  568. package/web/.next/server/chunks/ssr/[root-of-the-server]__1m9atpy0vkbmj._.js +3 -0
  569. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0dywrno7zb0r_._.js.map → [root-of-the-server]__1m9atpy0vkbmj._.js.map} +1 -1
  570. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +3 -0
  571. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +1 -0
  572. package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js +3 -0
  573. package/web/.next/server/chunks/ssr/{[root-of-the-server]__216xd8otb96uo._.js.map → [root-of-the-server]__1w5swo8gmjyx6._.js.map} +1 -1
  574. package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +1 -1
  575. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +3 -0
  576. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +1 -0
  577. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +3 -0
  578. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -0
  579. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  580. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  581. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +4 -0
  582. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js.map +1 -0
  583. package/web/.next/server/chunks/ssr/{_13qzwpag13tvy._.js → _0pyd1_y7w8ngp._.js} +2 -2
  584. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -0
  585. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  586. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  587. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +3 -0
  588. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js.map +1 -0
  589. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +4 -0
  590. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js.map +1 -0
  591. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js +3 -0
  592. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +1 -0
  593. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  594. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  595. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  596. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  597. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js +3 -0
  598. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js.map +1 -0
  599. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js +3 -0
  600. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js.map +1 -0
  601. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js +3 -0
  602. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js.map +1 -0
  603. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js +3 -0
  604. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js.map +1 -0
  605. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js +3 -0
  606. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +1 -0
  607. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +1 -1
  608. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1datokkgym0.js +3 -0
  609. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1datokkgym0.js.map +1 -0
  610. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js +3 -0
  611. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js.map +1 -0
  612. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +3 -0
  613. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +1 -0
  614. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js +3 -0
  615. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js.map +1 -0
  616. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +3 -0
  617. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +1 -0
  618. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +3 -0
  619. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +1 -0
  620. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js +3 -0
  621. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js.map +1 -0
  622. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js +3 -0
  623. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js.map +1 -0
  624. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js +3 -0
  625. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js.map +1 -0
  626. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js +3 -0
  627. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js.map +1 -0
  628. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js +3 -0
  629. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js.map +1 -0
  630. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +3 -0
  631. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +1 -0
  632. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js +3 -0
  633. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js.map +1 -0
  634. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +3 -0
  635. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +1 -0
  636. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js +3 -0
  637. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js.map +1 -0
  638. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +3 -0
  639. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +1 -0
  640. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +3 -0
  641. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js.map +1 -0
  642. package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js.map +1 -1
  643. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +3 -0
  644. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -0
  645. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js +3 -0
  646. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js.map +1 -0
  647. package/web/.next/server/chunks/ssr/{web_1nqu01kfi0u66._.js → web_1loiet18xbddu._.js} +2 -2
  648. package/web/.next/server/chunks/ssr/web_1loiet18xbddu._.js.map +1 -0
  649. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +3 -0
  650. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -0
  651. package/web/.next/server/chunks/ssr/web_app_(console)_layout_tsx_1t-5g79yb9xtl._.js +3 -0
  652. package/web/.next/server/chunks/ssr/web_app_(console)_layout_tsx_1t-5g79yb9xtl._.js.map +1 -0
  653. package/web/.next/server/chunks/ssr/{web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js → web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js} +2 -2
  654. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js.map +1 -0
  655. package/web/.next/server/chunks/ssr/{web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js → web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js} +2 -2
  656. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js.map +1 -0
  657. package/web/.next/server/chunks/ssr/{web_app_overview_error_tsx_17_cklg40kzxe._.js → web_app_(console)_overview_error_tsx_087e7ba8loavc._.js} +2 -2
  658. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_087e7ba8loavc._.js.map +1 -0
  659. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js +3 -0
  660. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js.map +1 -0
  661. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +3 -0
  662. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js.map +1 -0
  663. package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js +3 -0
  664. package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js.map +1 -0
  665. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +1 -1
  666. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -1
  667. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js +3 -0
  668. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js.map +1 -0
  669. package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js +1 -1
  670. package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js.map +1 -1
  671. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +3 -0
  672. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +1 -0
  673. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +3 -0
  674. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +1 -0
  675. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +3 -0
  676. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +1 -0
  677. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +3 -0
  678. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js.map +1 -0
  679. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +3 -0
  680. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +1 -0
  681. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +3 -0
  682. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +1 -0
  683. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +3 -0
  684. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -0
  685. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +3 -0
  686. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -0
  687. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  688. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  689. package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js +3 -0
  690. package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js.map +1 -0
  691. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js +3 -0
  692. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js.map +1 -0
  693. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +3 -0
  694. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +1 -0
  695. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +3 -0
  696. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -0
  697. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +3 -0
  698. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -0
  699. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +3 -0
  700. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -0
  701. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  702. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  703. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  704. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  705. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +3 -0
  706. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +1 -0
  707. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +1 -1
  708. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -1
  709. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  710. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
  711. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +3 -0
  712. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -0
  713. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  714. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  715. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  716. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -1
  717. package/web/.next/server/middleware-build-manifest.js +39 -15
  718. package/web/.next/server/next-font-manifest.js +1 -1
  719. package/web/.next/server/next-font-manifest.json +21 -13
  720. package/web/.next/server/pages/500.html +1 -1
  721. package/web/.next/server/preview-props.json +3 -3
  722. package/web/.next/server/server-reference-manifest.js +1 -1
  723. package/web/.next/server/server-reference-manifest.json +176 -74
  724. package/web/.next/static/chunks/00njqo86bx2kb.js +1 -0
  725. package/web/.next/static/chunks/047i2x2j--shk.css +3 -0
  726. package/web/.next/static/chunks/07j7jnfe13wx6.js +1 -0
  727. package/web/.next/static/chunks/0g4cpamshfwmn.js +1 -0
  728. package/web/.next/static/chunks/0j84uiid6fsim.js +1 -0
  729. package/web/.next/static/chunks/0p_kl57bddsiy.js +1 -0
  730. package/web/.next/static/chunks/1aa1d23q1vokr.js +1 -0
  731. package/web/.next/static/chunks/1ca21kggixrjz.js +1 -0
  732. package/web/.next/static/chunks/1jvae6c-4jwji.js +1 -0
  733. package/web/.next/static/chunks/23ud2e13dn8f4.js +1 -0
  734. package/web/.next/static/chunks/2_41h3v090ur9.js +1 -0
  735. package/web/.next/static/chunks/2x00o45pdbkok.js +1 -0
  736. package/web/.next/static/chunks/31vy122d9fvme.js +1 -0
  737. package/web/.next/static/chunks/3apnqdh48__yw.js +1 -0
  738. package/web/.next/static/chunks/3okm5g88ig1l3.js +1 -0
  739. package/web/.next/static/chunks/{0a1vw3r93lh06.js → 3v6tr952p9dba.js} +1 -1
  740. package/web/.next/trace +1 -1
  741. package/web/.next/trace-build +1 -1
  742. package/web/.next/types/routes.d.ts +8 -3
  743. package/web/.next/types/validator.ts +128 -50
  744. package/web/public/wake-worker.js +17 -0
  745. package/web/.next/server/app/outside-parties/[name]/change/page/app-paths-manifest.json +0 -3
  746. package/web/.next/server/app/outside-parties/[name]/change/page/server-reference-manifest.json +0 -35
  747. package/web/.next/server/app/outside-parties/[name]/change/page.js +0 -22
  748. package/web/.next/server/app/outside-parties/[name]/change/page.js.nft.json +0 -1
  749. package/web/.next/server/app/outside-parties/[name]/change/page_client-reference-manifest.js +0 -3
  750. package/web/.next/server/app/outside-parties/[name]/page/app-paths-manifest.json +0 -3
  751. package/web/.next/server/app/outside-parties/[name]/page/server-reference-manifest.json +0 -15
  752. package/web/.next/server/app/outside-parties/[name]/page.js +0 -20
  753. package/web/.next/server/app/outside-parties/[name]/page.js.nft.json +0 -1
  754. package/web/.next/server/app/outside-parties/[name]/page_client-reference-manifest.js +0 -3
  755. package/web/.next/server/app/outside-parties/[name]/retire/page/app-paths-manifest.json +0 -3
  756. package/web/.next/server/app/outside-parties/[name]/retire/page/server-reference-manifest.json +0 -35
  757. package/web/.next/server/app/outside-parties/[name]/retire/page.js +0 -21
  758. package/web/.next/server/app/outside-parties/[name]/retire/page.js.nft.json +0 -1
  759. package/web/.next/server/app/outside-parties/[name]/retire/page_client-reference-manifest.js +0 -3
  760. package/web/.next/server/app/outside-parties/add/page/app-paths-manifest.json +0 -3
  761. package/web/.next/server/app/outside-parties/add/page/server-reference-manifest.json +0 -35
  762. package/web/.next/server/app/outside-parties/add/page.js.nft.json +0 -1
  763. package/web/.next/server/app/outside-parties/add/page_client-reference-manifest.js +0 -3
  764. package/web/.next/server/app/outside-parties/page/app-paths-manifest.json +0 -3
  765. package/web/.next/server/app/outside-parties/page.js.nft.json +0 -1
  766. package/web/.next/server/app/outside-parties/page_client-reference-manifest.js +0 -3
  767. package/web/.next/server/app/overview/changes/route/app-paths-manifest.json +0 -3
  768. package/web/.next/server/app/overview/changes/route.js +0 -6
  769. package/web/.next/server/app/overview/changes/route.js.nft.json +0 -1
  770. package/web/.next/server/app/overview/changes/route_client-reference-manifest.js +0 -3
  771. package/web/.next/server/app/overview/page/app-paths-manifest.json +0 -3
  772. package/web/.next/server/app/overview/page/build-manifest.json +0 -23
  773. package/web/.next/server/app/overview/page/next-font-manifest.json +0 -11
  774. package/web/.next/server/app/overview/page/server-reference-manifest.json +0 -45
  775. package/web/.next/server/app/overview/page.js.nft.json +0 -1
  776. package/web/.next/server/app/overview/page_client-reference-manifest.js +0 -3
  777. package/web/.next/server/app/overview/requests/[requestId]/page/app-paths-manifest.json +0 -3
  778. package/web/.next/server/app/overview/requests/[requestId]/page/build-manifest.json +0 -23
  779. package/web/.next/server/app/overview/requests/[requestId]/page/next-font-manifest.json +0 -11
  780. package/web/.next/server/app/overview/requests/[requestId]/page.js.nft.json +0 -1
  781. package/web/.next/server/app/overview/requests/[requestId]/page_client-reference-manifest.js +0 -3
  782. package/web/.next/server/app/parties/page/app-paths-manifest.json +0 -3
  783. package/web/.next/server/app/parties/page/build-manifest.json +0 -23
  784. package/web/.next/server/app/parties/page.js.nft.json +0 -1
  785. package/web/.next/server/app/parties/page_client-reference-manifest.js +0 -3
  786. package/web/.next/server/app/sign-in/failed/page/app-paths-manifest.json +0 -3
  787. package/web/.next/server/app/sign-in/failed/page/next-font-manifest.json +0 -11
  788. package/web/.next/server/app/sign-in/failed/page.js.nft.json +0 -1
  789. package/web/.next/server/app/sign-in/failed/page_client-reference-manifest.js +0 -3
  790. package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +0 -3
  791. package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js.map +0 -1
  792. package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js +0 -3
  793. package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js.map +0 -1
  794. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +0 -4
  795. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +0 -1
  796. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +0 -3
  797. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +0 -3
  798. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +0 -1
  799. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js.map +0 -1
  800. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js +0 -3
  801. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js.map +0 -1
  802. package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js +0 -3
  803. package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js.map +0 -1
  804. package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js +0 -4
  805. package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js.map +0 -1
  806. package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js.map +0 -1
  807. package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js +0 -3
  808. package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js.map +0 -1
  809. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js.map +0 -1
  810. package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +0 -3
  811. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +0 -4
  812. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +0 -1
  813. package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +0 -3
  814. package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js +0 -4
  815. package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js.map +0 -1
  816. package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js +0 -4
  817. package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js.map +0 -1
  818. package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js.map +0 -1
  819. package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js +0 -4
  820. package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js.map +0 -1
  821. package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js +0 -3
  822. package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js.map +0 -1
  823. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +0 -3
  824. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +0 -1
  825. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js +0 -3
  826. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js.map +0 -1
  827. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js +0 -3
  828. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js.map +0 -1
  829. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js +0 -3
  830. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js.map +0 -1
  831. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js +0 -3
  832. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js.map +0 -1
  833. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js +0 -3
  834. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js.map +0 -1
  835. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js +0 -3
  836. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js.map +0 -1
  837. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js +0 -3
  838. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js.map +0 -1
  839. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js +0 -3
  840. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js.map +0 -1
  841. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js +0 -3
  842. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js.map +0 -1
  843. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js +0 -3
  844. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js.map +0 -1
  845. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js +0 -3
  846. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js.map +0 -1
  847. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js +0 -3
  848. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js.map +0 -1
  849. package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js +0 -3
  850. package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js.map +0 -1
  851. package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js +0 -3
  852. package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js.map +0 -1
  853. package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js +0 -3
  854. package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js.map +0 -1
  855. package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js.map +0 -1
  856. package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js +0 -3
  857. package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js.map +0 -1
  858. package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js +0 -10
  859. package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js.map +0 -1
  860. package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js +0 -3
  861. package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js.map +0 -1
  862. package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js +0 -3
  863. package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js.map +0 -1
  864. package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js +0 -3
  865. package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js.map +0 -1
  866. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js.map +0 -1
  867. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js.map +0 -1
  868. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js +0 -3
  869. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js.map +0 -1
  870. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js.map +0 -1
  871. package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js +0 -3
  872. package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js.map +0 -1
  873. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +0 -3
  874. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +0 -1
  875. package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js +0 -3
  876. package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js.map +0 -1
  877. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +0 -3
  878. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +0 -1
  879. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +0 -3
  880. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +0 -1
  881. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +0 -3
  882. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +0 -1
  883. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +0 -3
  884. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +0 -1
  885. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +0 -3
  886. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +0 -1
  887. package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js +0 -3
  888. package/web/.next/static/chunks/0214opd1iq3ld.js +0 -1
  889. package/web/.next/static/chunks/0hobzrlhklo3e.js +0 -1
  890. package/web/.next/static/chunks/1ma7v1viiz247.js +0 -1
  891. package/web/.next/static/chunks/1sgi4p93eayf4.js +0 -1
  892. package/web/.next/static/chunks/22u81hd6kxqsx.js +0 -1
  893. package/web/.next/static/chunks/2qpupho1jn-iy.js +0 -1
  894. package/web/.next/static/chunks/2rap-vrom5-zw.css +0 -3
  895. package/web/.next/static/chunks/3jr0srcv_-pfa.js +0 -1
  896. package/web/.next/static/chunks/3l_1gcuoe8bfn.js +0 -1
  897. package/web/.next/static/chunks/3sv0_hjr9t4cp.js +0 -1
  898. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/change/page/react-loadable-manifest.json +0 -0
  899. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/change/page.js.map +0 -0
  900. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/page/react-loadable-manifest.json +0 -0
  901. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/page.js.map +0 -0
  902. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/retire/page/react-loadable-manifest.json +0 -0
  903. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/retire/page.js.map +0 -0
  904. /package/web/.next/server/app/{overview → (console)/outside-parties/add}/page/react-loadable-manifest.json +0 -0
  905. /package/web/.next/server/app/{overview → (console)/outside-parties/add}/page.js.map +0 -0
  906. /package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page/react-loadable-manifest.json +0 -0
  907. /package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page.js.map +0 -0
  908. /package/web/.next/server/app/{outside-parties → (console)/outside-parties/add-a2a-client}/page/react-loadable-manifest.json +0 -0
  909. /package/web/.next/server/app/{outside-parties → (console)/outside-parties/add-a2a-client}/page.js.map +0 -0
  910. /package/web/.next/server/app/{overview/requests/[requestId] → (console)/outside-parties}/page/react-loadable-manifest.json +0 -0
  911. /package/web/.next/server/app/{overview/requests/[requestId] → (console)/outside-parties}/page.js.map +0 -0
  912. /package/web/.next/server/app/{overview → (console)/overview}/changes/route/build-manifest.json +0 -0
  913. /package/web/.next/server/app/{overview → (console)/overview}/changes/route/server-reference-manifest.json +0 -0
  914. /package/web/.next/server/app/{overview → (console)/overview}/changes/route.js.map +0 -0
  915. /package/web/.next/server/app/{parties/page.js.map → (console)/overview/focus/route.js.map} +0 -0
  916. /package/web/.next/server/app/{parties → (console)/overview}/page/react-loadable-manifest.json +0 -0
  917. /package/web/.next/server/app/{sign-in/failed → (console)/overview}/page.js.map +0 -0
  918. /package/web/.next/server/app/{sign-in/failed → (console)/overview/requests/[requestId]}/page/react-loadable-manifest.json +0 -0
  919. /package/web/.next/server/chunks/{[externals]__12s2uxrv8n30f._.js.map → 0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js.map} +0 -0
  920. /package/web/.next/server/chunks/{web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js.map → 1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js.map} +0 -0
  921. /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_buildManifest.js +0 -0
  922. /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_clientMiddlewareManifest.js +0 -0
  923. /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../node_modules/next/dist/esm/build/templates/app-page.js%3Fpage%3D/outside-parties/page"],"sourcesContent":["import { instrumentModuleGetter } from \"next/dist/server/app-render/module-loading/instrument-module-getter\";\nconst __TURBOPACK__layout__$23$0__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_0\"));\nconst __TURBOPACK__not$2d$found__$23$1__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_1\"));\nconst __TURBOPACK__forbidden__$23$2__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_2\"));\nconst __TURBOPACK__unauthorized__$23$3__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_3\"));\nconst __TURBOPACK__global$2d$error__$23$4__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_4\"));\nconst __TURBOPACK__page__$23$5__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_5\"));\nimport { createAppPageEntrypoint } from \"next/dist/esm/build/templates/app-page-runtime\";\nimport { interopDefault } from \"next/dist/esm/server/app-render/interop-default\" with {\n 'turbopack-transition': 'next-server-utility'\n};\nconst tree = [\"\", {\n\"children\": [\"outside-parties\", {\n\"children\": [\"__PAGE__\", {\n}, {\n metadata: { }, \"page\": [__TURBOPACK__page__$23$5__, \"[project]/web/app/outside-parties/page.tsx\"],\n}, []],\n}, {\n metadata: { },}, []],\n}, {\n \"layout\": [__TURBOPACK__layout__$23$0__, \"[project]/web/app/layout.tsx\"],\n \"not-found\": [__TURBOPACK__not$2d$found__$23$1__, \"[project]/web/app/not-found.tsx\"],\n \"forbidden\": [__TURBOPACK__forbidden__$23$2__, \"[project]/node_modules/next/dist/client/components/builtin/forbidden.js\"],\n \"unauthorized\": [__TURBOPACK__unauthorized__$23$3__, \"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js\"],\n \"global-error\": [__TURBOPACK__global$2d$error__$23$4__, \"[project]/node_modules/next/dist/client/components/builtin/global-error.js\"],\n}, []]\nconst __next_app_require__ = __turbopack_context__.r.bind(__turbopack_context__)\nconst __next_app_load_chunk__ = __turbopack_context__.l.bind(__turbopack_context__)\nconst entrypoint = createAppPageEntrypoint({\n tree,\n page: \"/outside-parties/page\",\n pathname: \"/outside-parties\",\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__,\n interopDefault\n});\nexport const __next_app__ = entrypoint.__next_app__;\nexport const routeModule = entrypoint.routeModule;\nexport const handler = entrypoint.handler;\nexport * from \"next/dist/esm/server/app-render/entry-base\" with {\n 'turbopack-transition': 'next-server-utility'\n};\n\n//# sourceMappingURL=app-page.js.map\n"],"names":["layout #0","not-found #1","forbidden #2","unauthorized #3","global-error #4","page #5","tree","metadata","__next_app_require__","__turbopack_context__","r","bind","__next_app_load_chunk__","l","entrypoint","page","pathname","require","loadChunk","interopDefault","__next_app__","routeModule","handler"],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OAOA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OA+BA,EAAA,CAAA,CAAA,OAtCA,IAAMA,EAA+B,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACtDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAkC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACzDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAwC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAM/DE,EAAO,CAAC,GAAI,CAClB,SAAY,CAAC,kBAAmB,CAChC,SAAY,CAAC,WAAY,CACzB,EAAG,CACDC,SAAU,CAAG,EAAI,KAAQ,CATQ,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QASF,6CAA6C,AACrG,EAAG,EAAE,CAAC,AACN,EAAG,CACDA,SAAU,CAAG,CAAE,EAAG,EAAE,CAAC,AACvB,EAAG,CACD,OAAU,CAACP,EAA8B,+BAA+B,CACxE,YAAa,CAACC,EAAoC,kCAAkC,CACpF,UAAa,CAACC,EAAiC,0EAA0E,CACzH,aAAgB,CAACC,EAAoC,6EAA6E,CAClI,eAAgB,CAACC,EAAuC,6EAA6E,AACvI,EAAG,EAAE,CAAC,CACAI,EAAuBC,EAAsBC,CAAC,CAACC,IAAI,CAACF,GACpDG,EAA0BH,EAAsBI,CAAC,CAACF,IAAI,CAACF,GACvDK,EAAa,CAAA,EAAA,EAAA,CAAA,AAAuB,EAAC,MACvCR,EACAS,KAAM,wBACNC,SAAU,mBACVC,QAAST,EACTU,UAAWN,EACXO,eAAAA,EAAAA,cAAc,AAClB,GACaC,EAAeN,EAAWM,YAAY,CACtCC,EAAcP,EAAWO,WAAW,CACpCC,EAAUR,EAAWQ,OAAO","ignoreList":[0]}
@@ -1,3 +0,0 @@
1
- module.exports=[[27219,a=>{var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(49144),f=a.i(65253),g=a.i(72913),h=a.i(98323),i=a.i(53925);function j({party:a,fleetId:d}){let{protocol:i,side:k}=f.G[a.kind],l="mcpServer"===a.kind?a.url:a.clientId,m=f.Y[a.state];return(0,b.jsxs)("a",{href:(0,c.i)((0,g.N)(a.name),d),className:`${e.r} grid gap-2 hover:bg-accent`,"data-testid":"outside-parties-party",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)("strong",{children:a.name})," ",(0,b.jsx)(h.E,{children:i})," ",(0,b.jsx)(h.E,{children:`${i} ${f.N[k].one}`})]}),(0,b.jsx)("span",{className:"truncate font-mono text-code",title:l,children:l}),(0,b.jsxs)("span",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(h.T,{tone:m.tone,label:m.label}),null===a.ownerName?null:(0,b.jsx)(h.E,{children:a.ownerName})]})]})}async function k({page:a,side:h}){let{api:l,fleetId:m,scopes:n}=a,[o,p]=await Promise.all([(0,d.F)(l.outsideParties.status.query()),(0,d.F)(l.parties.list.query())]),q=p.isOk?p.value:[],r=(0,f.R)(q),s=void 0===h?q:q.filter(a=>f.G[a.kind].side===h),t=[{label:"All",href:g.$,isCurrent:void 0===h},{label:"Servers",href:`${g.$}?kind=server`,isCurrent:"server"===h},{label:"Clients",href:`${g.$}?kind=client`,isCurrent:"client"===h}];return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-end justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Outside parties"}),(0,b.jsx)("p",{className:"text-muted-foreground","data-testid":"outside-parties-counts",children:[`${String(r.sides.server)} ${1===r.sides.server?f.N.server.one:f.N.server.many}`,`${String(r.sides.client)} ${1===r.sides.client?f.N.client.one:f.N.client.many}`,...r.protocols.map(({protocol:a,count:b})=>`${a} ${String(b)}`)].join(" · ")})]}),n.includes("fleet:manage")?(0,b.jsx)("a",{className:e.x.primary,href:(0,c.i)(g.y,m),"data-testid":"outside-parties-add",children:"Add server"}):null]}),o.isOk?(0,b.jsx)(i.SwitchCard,{isOn:o.value.isOn,canSwitch:n.includes("fleet:network"),fleetId:m}):(0,b.jsx)("p",{role:"alert",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:o.refusal}),(0,b.jsx)("nav",{"aria-label":"Show",className:"flex gap-2",children:t.map(a=>(0,b.jsx)("a",{href:(0,c.i)(a.href,m),"aria-current":a.isCurrent?"page":void 0,className:a.isCurrent?e.x.secondary:`${e.x.secondary} border-transparent`,children:a.label},a.label))}),p.isOk?0===s.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"No outside party yet."}):(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2",children:s.map(a=>(0,b.jsx)(j,{party:a,fleetId:m},a.name))}):(0,b.jsx)("p",{role:"alert",className:"text-tone-attention-fg",children:p.refusal})]})}var l=a.i(22126);async function m({searchParams:a}){let c=await a,e=await (0,d._)({path:g.$,searchParams:c});if("noSignIn"===e.kind)return(0,b.jsx)(l.f,{});let f="server"===c.kind||"client"===c.kind?c.kind:void 0;return(0,b.jsx)(k,{page:e,side:f})}a.s(["default",0,m,"metadata",0,{title:"Outside parties"}],27219)},1236,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call SwitchCard() from the server but SwitchCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/outside-parties/ui/switch-card.tsx","SwitchCard");a.s(["SwitchCard",0,b])},53925,a=>{var b=a.i(1236);a.n(b)}],32296,function(a){a.n(a.i(27219))}];
2
-
3
- //# sourceMappingURL=web_0vot73dagfg_x._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/outside-parties/ui/outside-parties.tsx","../../../../../web/app/outside-parties/page.tsx","../../../../../web/features/outside-parties/ui/switch-card.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-parties/ui/switch-card.tsx%22%20%7D"],"sourcesContent":["import { inFleet } from '../../../lib/gateway-api/page-account';\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { countsOf, PARTY_KINDS, PARTY_STATES, SIDES, type ListedParty, type Side } from '../party-kinds';\nimport { ADD_SERVER_PATH, OUTSIDE_PARTIES_PATH, partyPath } from '../paths';\nimport { StatusBadge, Tag } from './status-badge';\nimport { SwitchCard } from './switch-card';\n\n/** The scopes that turn outside parties on or off, and that add an outside MCP server (0056). */\nconst SWITCHING_SCOPE = 'fleet:network';\nconst ADDING_SCOPE = 'fleet:manage';\n\nfunction PartyCard({ party, fleetId }: { party: ListedParty; fleetId: string }) {\n const { protocol, side } = PARTY_KINDS[party.kind];\n const where = party.kind === 'mcpServer' ? party.url : party.clientId;\n const state = PARTY_STATES[party.state];\n return (\n <a href={inFleet(partyPath(party.name), fleetId)} className={`${CARD} grid gap-2 hover:bg-accent`} data-testid=\"outside-parties-party\">\n <span className=\"flex items-center gap-2\">\n <strong>{party.name}</strong> <Tag>{protocol}</Tag> <Tag>{`${protocol} ${SIDES[side].one}`}</Tag>\n </span>\n <span className=\"truncate font-mono text-code\" title={where}>\n {where}\n </span>\n <span className=\"flex flex-wrap items-center gap-2\">\n <StatusBadge tone={state.tone} label={state.label} />\n {party.ownerName === null ? null : <Tag>{party.ownerName}</Tag>}\n </span>\n </a>\n );\n}\n\n/**\n * The Outside parties page: how many the fleet has, whether they are on,\n * and each party, for every side or one. What the API refuses is said in\n * place of what it would show.\n */\nexport async function OutsideParties({ page, side }: { page: SignedInPage; side: Side | undefined }) {\n const { api, fleetId, scopes } = page;\n const [status, parties] = await Promise.all([readOf(api.outsideParties.status.query()), readOf(api.parties.list.query())]);\n const listed = parties.isOk ? parties.value : [];\n const counts = countsOf(listed);\n const shown = side === undefined ? listed : listed.filter((party) => PARTY_KINDS[party.kind].side === side);\n const filters = [\n { label: 'All', href: OUTSIDE_PARTIES_PATH, isCurrent: side === undefined },\n { label: 'Servers', href: `${OUTSIDE_PARTIES_PATH}?kind=server`, isCurrent: side === 'server' },\n { label: 'Clients', href: `${OUTSIDE_PARTIES_PATH}?kind=client`, isCurrent: side === 'client' },\n ];\n return (\n <div className=\"grid gap-4\">\n <div className=\"flex flex-wrap items-end justify-between gap-3\">\n <div>\n <h1 className=\"text-title font-semibold\">Outside parties</h1>\n <p className=\"text-muted-foreground\" data-testid=\"outside-parties-counts\">\n {[\n `${String(counts.sides.server)} ${counts.sides.server === 1 ? SIDES.server.one : SIDES.server.many}`,\n `${String(counts.sides.client)} ${counts.sides.client === 1 ? SIDES.client.one : SIDES.client.many}`,\n ...counts.protocols.map(({ protocol, count }) => `${protocol} ${String(count)}`),\n ].join(' · ')}\n </p>\n </div>\n {scopes.includes(ADDING_SCOPE) ? (\n <a className={BUTTONS.primary} href={inFleet(ADD_SERVER_PATH, fleetId)} data-testid=\"outside-parties-add\">\n Add server\n </a>\n ) : null}\n </div>\n {status.isOk ? (\n <SwitchCard isOn={status.value.isOn} canSwitch={scopes.includes(SWITCHING_SCOPE)} fleetId={fleetId} />\n ) : (\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 {status.refusal}\n </p>\n )}\n <nav aria-label=\"Show\" className=\"flex gap-2\">\n {filters.map((filter) => (\n <a key={filter.label} href={inFleet(filter.href, fleetId)} aria-current={filter.isCurrent ? 'page' : undefined} className={filter.isCurrent ? BUTTONS.secondary : `${BUTTONS.secondary} border-transparent`}>\n {filter.label}\n </a>\n ))}\n </nav>\n {!parties.isOk ? (\n <p role=\"alert\" className=\"text-tone-attention-fg\">\n {parties.refusal}\n </p>\n ) : shown.length === 0 ? (\n <p className=\"text-muted-foreground\">No outside party yet.</p>\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2\">\n {shown.map((party) => (\n <PartyCard key={party.name} party={party} fleetId={fleetId} />\n ))}\n </div>\n )}\n </div>\n );\n}\n","import type { Metadata } from 'next';\n\nimport { OutsideParties } from '../../features/outside-parties/ui/outside-parties';\nimport { OUTSIDE_PARTIES_PATH } from '../../features/outside-parties/paths';\nimport { NoSignIn } from '../../features/sign-in/ui/no-sign-in';\nimport { signedInPage, type SearchParams } from '../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Outside parties' };\n\nexport default async function OutsidePartiesPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n const parameters = await searchParams;\n const page = await signedInPage({ path: OUTSIDE_PARTIES_PATH, searchParams: parameters });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n const side = parameters.kind === 'server' || parameters.kind === 'client' ? parameters.kind : undefined;\n return <OutsideParties page={page} side={side} />;\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const SwitchCard = registerClientReference(\n function() { throw new Error(\"Attempted to call SwitchCard() from the server but SwitchCard 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-parties/ui/switch-card.tsx\",\n \"SwitchCard\",\n);\n"],"names":["SWITCHING_SCOPE","ADDING_SCOPE","PartyCard","party","fleetId","protocol","side","kind","where","url","clientId","state","href","name","className","one","title","tone","label","ownerName","OutsideParties","page","api","scopes","status","parties","Promise","all","outsideParties","query","list","listed","isOk","value","counts","shown","undefined","filter","filters","isCurrent","String","sides","server","many","client","protocols","map","count","join","includes","primary","isOn","canSwitch","role","refusal","secondary","length","SwitchCard","Error"],"mappings":"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","ignoreList":[2]}
@@ -1,3 +0,0 @@
1
- module.exports=[[32534,a=>{var b=a.i(7997),c=a.i(717),d=a.i(66283),e=a.i(10351),f=a.i(22126);function g({message:a,isFailure:c}){return c?(0,b.jsx)("p",{role:"alert","data-testid":"overview-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a}):(0,b.jsx)("p",{role:"status","data-testid":"overview-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a})}function h({waiting:a,toDecide:c}){if(void 0===a&&void 0===c)return(0,b.jsx)("h1",{className:"text-heading font-semibold",children:"Nothing waits on you"});let d=(a??0)+(c??0),e=[void 0===a?void 0:`${String(a)} for you`,void 0===c?void 0:`${String(c)} to decide`].filter(a=>void 0!==a);return(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("span",{"data-testid":"overview-total",className:"inline-flex size-12 items-center justify-center rounded-full border-4 border-tone-waiting-border text-section font-semibold",children:d}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-heading font-semibold",children:0===d?"Nothing waits on you":"Waits on you"}),(0,b.jsx)("p",{className:"text-muted-foreground",children:e.join(" · ")})]})]})}function i({width:a}){return(0,b.jsx)("span",{className:`block h-4 animate-pulse rounded bg-muted ${a}`})}function j(){return(0,b.jsxs)("div",{"aria-busy":"true","aria-label":"Loading the Overview",className:"grid gap-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("span",{className:"size-12 animate-pulse rounded-full bg-muted"}),(0,b.jsxs)("div",{className:"grid flex-1 gap-2",children:[(0,b.jsx)(i,{width:"w-48"}),(0,b.jsx)(i,{width:"w-32"})]})]}),(0,b.jsx)("div",{className:"grid gap-2",children:["a","b","c"].map(a=>(0,b.jsx)("span",{className:"block h-14 animate-pulse rounded-md bg-muted"},a))})]})}var k=a.i(65044),l=a.i(78942),m=a.i(20285);let n={approve:"You approved the request.",deny:"You denied the request."};async function o({api:a,fleetId:c}){let{inbox:d,toDecide:f,mine:g}=await (0,e.m)(a),i=new Date;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h,{waiting:d?.waiting,toDecide:f?.length}),void 0===d?null:(0,b.jsx)(l.InboxPanel,{fleetId:c,inbox:d}),void 0===f?null:0===f.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"No request waits for a decision."}):(0,b.jsx)(k.f,{title:"To decide",requests:f,now:i,hrefOf:a=>`/overview/requests/${encodeURIComponent(a.requestId)}?fleet=${encodeURIComponent(c)}`}),void 0===g||0===g.length?null:(0,b.jsx)(k.f,{title:"Your requests",requests:g,now:i})]})}async function p({searchParams:a}){let h=await (0,d._)({path:e.K,searchParams:a});if("noSignIn"===h.kind)return(0,b.jsx)(f.f,{});let{decided:i}=a,k="string"==typeof i?n[i]:void 0;return(0,b.jsxs)("div",{className:"grid gap-6",children:[(0,b.jsx)(m.LiveRefresh,{fleetId:h.fleetId}),void 0===k?null:(0,b.jsx)(g,{message:k,isFailure:!1}),(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)(j,{}),children:(0,b.jsx)(o,{api:h.api,fleetId:h.fleetId})})]})}async function q({searchParams:a}){return(0,b.jsx)(p,{searchParams:await a})}a.s(["default",0,q,"metadata",0,{title:"Overview"}],32534)},73315,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call InboxPanel() from the server but InboxPanel is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/overview/state/inbox-panel.tsx","InboxPanel");a.s(["InboxPanel",0,b])},78942,a=>{var b=a.i(73315);a.n(b)}],62033,function(a){a.n(a.i(32534))}];
2
-
3
- //# sourceMappingURL=web_17c7_dhsf-sjp._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/overview/state/overview.tsx","../../../../../web/features/overview/ui/notice.tsx","../../../../../web/features/overview/ui/overview-lead.tsx","../../../../../web/features/overview/ui/overview-skeleton.tsx","../../../../../web/app/overview/page.tsx","../../../../../web/features/overview/state/inbox-panel.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/overview/state/inbox-panel.tsx%22%20%7D"],"sourcesContent":["import { Suspense } from 'react';\n\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { signedInPage, type SearchParams } from '../../../lib/gateway-api/page-api';\nimport { OVERVIEW_PATH, readOverview } from '../hooks/read-overview';\nimport { NoSignIn } from '../../sign-in/ui/no-sign-in';\nimport { Notice } from '../ui/notice';\nimport { OverviewLead } from '../ui/overview-lead';\nimport { OverviewSkeleton } from '../ui/overview-skeleton';\nimport { RequestsList } from '../ui/requests-list';\nimport { InboxPanel } from './inbox-panel';\nimport { LiveRefresh } from './live-refresh';\n\n/** What a decision the person just made came to, said once they are back. */\nconst DECIDED: Record<string, string> = {\n approve: 'You approved the request.',\n deny: 'You denied the request.',\n};\n\nasync function OverviewParts({ api, fleetId }: { api: GatewayApi; fleetId: string }) {\n const { inbox, toDecide, mine } = await readOverview(api);\n const now = new Date();\n return (\n <>\n <OverviewLead waiting={inbox?.waiting} toDecide={toDecide?.length} />\n {inbox === undefined ? null : <InboxPanel fleetId={fleetId} inbox={inbox} />}\n {toDecide === undefined ? null : toDecide.length === 0 ? (\n <p className=\"text-muted-foreground\">No request waits for a decision.</p>\n ) : (\n <RequestsList title=\"To decide\" requests={toDecide} now={now} hrefOf={(request) => `/overview/requests/${encodeURIComponent(request.requestId)}?fleet=${encodeURIComponent(fleetId)}`} />\n )}\n {mine === undefined || mine.length === 0 ? null : <RequestsList title=\"Your requests\" requests={mine} now={now} />}\n </>\n );\n}\n\n/**\n * The Overview (design B, Signal): what waits on the person, their inbox,\n * the requests to decide for an approver, oldest first, and the requests\n * they asked. Signed out, the browser goes to sign in before anything shows;\n * signed in, the shape shows while the parts load. It reads itself again\n * whenever the fleet's requests change.\n */\nexport async function Overview({ searchParams }: { searchParams: SearchParams }) {\n const page = await signedInPage({ path: OVERVIEW_PATH, searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n const { decided } = searchParams;\n const said = typeof decided === 'string' ? DECIDED[decided] : undefined;\n return (\n <div className=\"grid gap-6\">\n <LiveRefresh fleetId={page.fleetId} />\n {said === undefined ? null : <Notice message={said} isFailure={false} />}\n <Suspense fallback={<OverviewSkeleton />}>\n <OverviewParts api={page.api} fleetId={page.fleetId} />\n </Suspense>\n </div>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <p role=\"alert\" data-testid=\"overview-failure\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {message}\n </p>\n ) : (\n <p role=\"status\" data-testid=\"overview-success\" className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {message}\n </p>\n );\n}\n","/**\n * What waits on the person, counted: deliveries for them and requests to\n * decide. A count they have no part in is left out; with neither, nothing\n * waits on them.\n */\nexport function OverviewLead({ waiting, toDecide }: { waiting: number | undefined; toDecide: number | undefined }) {\n if (waiting === undefined && toDecide === undefined) {\n return <h1 className=\"text-heading font-semibold\">Nothing waits on you</h1>;\n }\n const total = (waiting ?? 0) + (toDecide ?? 0);\n const counts = [waiting === undefined ? undefined : `${String(waiting)} for you`, toDecide === undefined ? undefined : `${String(toDecide)} to decide`].filter((count) => count !== undefined);\n return (\n <div className=\"flex items-center gap-4\">\n <span data-testid=\"overview-total\" className=\"inline-flex size-12 items-center justify-center rounded-full border-4 border-tone-waiting-border text-section font-semibold\">\n {total}\n </span>\n <div>\n <h1 className=\"text-heading font-semibold\">{total === 0 ? 'Nothing waits on you' : 'Waits on you'}</h1>\n <p className=\"text-muted-foreground\">{counts.join(' · ')}</p>\n </div>\n </div>\n );\n}\n","function Bar({ width }: { width: string }) {\n return <span className={`block h-4 animate-pulse rounded bg-muted ${width}`} />;\n}\n\n/** The Overview's shape while it loads: the lead, then a list. */\nexport function OverviewSkeleton() {\n return (\n <div aria-busy=\"true\" aria-label=\"Loading the Overview\" className=\"grid gap-6\">\n <div className=\"flex items-center gap-4\">\n <span className=\"size-12 animate-pulse rounded-full bg-muted\" />\n <div className=\"grid flex-1 gap-2\">\n <Bar width=\"w-48\" />\n <Bar width=\"w-32\" />\n </div>\n </div>\n <div className=\"grid gap-2\">\n {['a', 'b', 'c'].map((row) => (\n <span key={row} className=\"block h-14 animate-pulse rounded-md bg-muted\" />\n ))}\n </div>\n </div>\n );\n}\n","import type { Metadata } from 'next';\n\nimport { Overview } from '../../features/overview/state/overview';\nimport type { SearchParams } from '../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Overview' };\n\nexport default async function OverviewPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n return <Overview searchParams={await searchParams} />;\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const InboxPanel = registerClientReference(\n function() { throw new Error(\"Attempted to call InboxPanel() from the server but InboxPanel 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/overview/state/inbox-panel.tsx\",\n \"InboxPanel\",\n);\n"],"names":["Notice","message","isFailure","role","className","InboxPanel","Error"],"mappings":"2CAAA,EAAA,EAAA,CAAA,CAAA,KAGA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCJO,SAASA,EAAO,SAAEC,CAAO,WAAEC,CAAS,CAA2C,EACpF,OAAOA,EACL,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEC,KAAK,QAAQ,cAAY,mBAAmBC,UAAU,gHACtDH,IAGH,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEE,KAAK,SAAS,cAAY,mBAAmBC,UAAU,2FACvDH,GAGP,CCNO,SAAS,EAAa,SAAEC,CAAO,UAAE,CAAQ,CAAiE,EAC/G,GAAgB,SAAZ,QAAsC,IAAb,EAC3B,KADmD,CAC5C,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,sCAA6B,yBAEpD,IAAM,EAAQ,CAAC,GAAW,CAAC,GAAK,CAAD,GAAa,CAAC,CACvC,EAAS,MAAa,IAAZ,OAAwB,EAAY,CAAA,EAAG,OAAO,GAAS,QAAQ,CAAC,CAAE,AAAa,WAAY,OAAY,CAAA,EAAG,OAAO,GAAU,UAAU,CAAC,CAAC,CAAC,MAAM,CAAE,AAAD,GAAqB,SAAV,GAC1K,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,cAAY,iBAAiB,UAAU,uIAC1C,IAEH,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,sCAAwC,IAAV,EAAc,uBAAyB,iBACnF,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iCAAyB,EAAO,IAAI,CAAC,cAI1D,CCtBA,SAAS,EAAI,OAAE,CAAK,CAAqB,EACvC,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAW,CAAC,yCAAyC,EAAE,EAAA,CAAO,EAC7E,CAGO,SAAS,IACd,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,YAAU,OAAO,aAAW,uBAAuB,UAAU,uBAChE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKD,UAAU,gDAChB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8BACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAI,MAAM,SACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAI,MAAM,eAGf,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sBACZ,CAAC,IAAK,IAAK,IAAI,CAAC,GAAG,CAAE,AAAD,GACnB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAe,UAAU,gDAAf,QAKrB,CHbA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAGA,IAAM,EAAkC,CACtC,QAAS,4BACT,KAAM,yBACR,EAEA,eAAe,EAAc,KAAE,CAAG,SAAE,CAAO,CAAwC,EACjF,GAAM,OAAE,CAAK,UAAE,CAAQ,MAAE,CAAI,CAAE,CAAG,MAAM,CAAA,EAAA,EAAA,CAAA,AAAY,EAAC,GAC/C,EAAM,IAAI,KAChB,MACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,QAAS,GAAO,QAAS,SAAU,GAAU,cAChD,IAAV,EAAsB,KAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,QAAS,EAAS,MAAO,IAClE,KAAa,MAAY,KAA2B,IAApB,EAAS,MAAM,CAC9C,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iCAAwB,qCAErC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAAC,MAAM,YAAY,SAAU,EAAU,IAAK,EAAK,OAAQ,AAAC,GAAY,CAAC,mBAAmB,EAAE,mBAAmB,EAAQ,SAAS,EAAE,OAAO,EAAE,mBAAmB,GAAA,CAAU,QAE7K,IAAT,GAAsC,IAAhB,EAAK,MAAM,CAAS,KAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAAC,MAAM,gBAAgB,SAAU,EAAM,IAAK,MAGjH,CASO,eAAe,EAAS,CAAE,cAAY,CAAkC,EAC7E,IAAM,EAAO,MAAM,CAAA,EAAA,EAAA,CAAA,AAAY,EAAC,CAAE,KAAM,EAAA,CAAa,cAAE,CAAa,GACpE,GAAkB,YAAY,CAA1B,EAAK,IAAI,CACX,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,CAAA,CAAA,GAElB,GAAM,SAAE,CAAO,CAAE,CAAG,EACd,EAA0B,UAAnB,OAAO,EAAuB,CAAO,CAAC,EAAQ,MAAG,EAC9D,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,QAAS,EAAK,OAAO,QACxB,IAAT,EAAqB,KAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,QAAS,EAAM,WAAW,IAC/D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,SAAU,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAA,YACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAc,IAAK,EAAK,GAAG,CAAE,QAAS,EAAK,OAAO,OAI3D,CIpDe,eAAe,EAAa,cAAE,CAAY,CAA2C,EAClG,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,aAAc,MAAM,GACvC,iCAJkC,CAAE,MAAO,UAAW,qBCH/C,IAAMI,EAAa,CAAA,EAD1B,AAC0B,EAD1B,CAAA,CAAA,OAC0B,uBAAA,AAAuB,EAC7C,WAAa,MAAM,AAAIC,MAAM,kOAAoO,EACjQ,wDACA","ignoreList":[5]}
@@ -1,3 +0,0 @@
1
- module.exports=[[58685,a=>{var b=a.i(7997);a.i(70396);var c=a.i(73727),d=a.i(14725),e=a.i(24571),f=a.i(49144),g=a.i(69953);function h({client:a,fields:c}){return(0,b.jsxs)("section",{className:"grid gap-4","data-testid":"authorize-pick",children:[(0,b.jsx)("h1",{className:"text-heading font-semibold",children:"Connect an MCP client"}),(0,b.jsxs)("p",{children:[(0,b.jsx)("strong",{children:a.clientName})," asks to call your fleet's ships through the gateway."]}),(0,b.jsx)(g.PickHolder,{fields:c}),(0,b.jsxs)("p",{className:`${f.r} text-muted-foreground`,children:["Client ",(0,b.jsx)("span",{className:"font-mono",children:a.clientId}),", sent back to ",(0,b.jsx)("span",{className:"font-mono",children:a.redirectUri}),"."]})]})}async function i({searchParams:a}){let f=(0,e.Q)(await a),g=await (0,d.W)(f);return"failed"===g.kind&&(0,c.redirect)((0,d.P)(g.reason)),(0,b.jsx)(h,{client:g.client,fields:f})}a.s(["default",0,i,"metadata",0,{title:"Connect an MCP client"}],58685)},14725,a=>{var b=a.i(5246),c=a.i(59847),d=a.i(66283);async function e(a){let b=await (0,d.z)(void 0);try{return{kind:"client",client:await b.oauth.authorization.query(Object.fromEntries(a))}}catch(b){let a=(0,d.T)(b);if("BAD_REQUEST"===a)return{kind:"failed",reason:"invalidClient"};if("NOT_FOUND"===a)return{kind:"failed",reason:"noSignIn"};throw b}}async function f(a){let e=(await (0,b.cookies)()).get("aeolus_waiting")?.value;return(0,c.f)({url:(0,d.o)(),cookie:(await (0,b.headers)()).get("cookie")??void 0,fleetId:void 0,...void 0===e?{}:{waitingSecret:e}}).oauth.waiting.query({waiting:a})}a.s(["P",0,function(a){return`/authorize/failed?${new URLSearchParams({reason:a}).toString()}`},"W",0,e,"b",0,f])},24571,a=>{let b="Start again from your MCP client.",c={invalidClient:`The gateway does not know this MCP client, or the address it asks to be sent back to. ${b}`,noPick:"Pick on the page whether to sign in as yourself or to ask for access for the client.",unknownSignIn:`This sign-in is unknown, or took over 10 minutes. ${b}`,otherBrowser:`This sign-in was started in another browser, so it is not yours to finish. ${b}`,fleetNotServed:"This gateway does not serve the fleet you signed in to.",outsidePartiesOff:"Your fleet's outside parties are off, so no MCP client can ask for access. Sign in as yourself instead, or ask whoever runs your fleet.",pagasaeRefused:`The sign-in service did not sign you in. ${b}`,unknownWaiting:`This request is unknown, or ended long ago. ${b}`,otherBrowserWaiting:`This request was made in another browser, so it is not yours to follow. ${b}`,noSignIn:"This gateway signs no one in, so no MCP client can connect to it: its operator sets pagasae first."},d=`The connection did not go through. ${b}`;a.s(["e",0,"/authorize/waiting","U",0,function(a){return(void 0===a?void 0:c[a])??d},"Q",0,function(a){return Object.entries(a).flatMap(([a,b])=>"string"==typeof b&&"holder"!==a?[[a,b]]:[])}])},61418,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call PickHolder() from the server but PickHolder is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/authorize/ui/pick-holder.tsx","PickHolder");a.s(["PickHolder",0,b])},69953,a=>{var b=a.i(61418);a.n(b)},49144,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])}],49292,function(a){a.n(a.i(58685))}];
2
-
3
- //# sourceMappingURL=web_1j5yjwqkgyeve._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/app/authorize/pick/page.tsx","../../../../../web/features/authorize/ui/connect-client.tsx","../../../../../web/features/authorize/hooks/read-authorize.ts","../../../../../web/features/authorize/services/authorize.ts","../../../../../web/features/authorize/ui/pick-holder.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/authorize/ui/pick-holder.tsx%22%20%7D","../../../../../web/features/forms/ui/look.ts"],"sourcesContent":["import type { Metadata } from 'next';\nimport { redirect } from 'next/navigation';\n\nimport { failedPage, readClient } from '../../../features/authorize/hooks/read-authorize';\nimport { pickFieldsOf } from '../../../features/authorize/services/authorize';\nimport { ConnectClient } from '../../../features/authorize/ui/connect-client';\nimport type { SearchParams } from '../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Connect an MCP client' };\n\nexport default async function PickPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n const fields = pickFieldsOf(await searchParams);\n const read = await readClient(fields);\n if (read.kind === 'failed') {\n redirect(failedPage(read.reason));\n }\n return <ConnectClient client={read.client} fields={fields} />;\n}\n","import { CARD } from '../../forms/ui/look';\nimport { PickHolder } from './pick-holder';\n\n/** The page at /authorize: the client asking, and the two picks. */\nexport function ConnectClient({ client, fields }: { client: { clientId: string; clientName: string; redirectUri: string }; fields: readonly [string, string][] }) {\n return (\n <section className=\"grid gap-4\" data-testid=\"authorize-pick\">\n <h1 className=\"text-heading font-semibold\">Connect an MCP client</h1>\n <p>\n <strong>{client.clientName}</strong> asks to call your fleet&apos;s ships through the gateway.\n </p>\n <PickHolder fields={fields} />\n <p className={`${CARD} text-muted-foreground`}>\n Client <span className=\"font-mono\">{client.clientId}</span>, sent back to <span className=\"font-mono\">{client.redirectUri}</span>.\n </p>\n </section>\n );\n}\n","/**\n * What the authorize pages read through the gateway's API, as the browser\n * that asked: the client an authorization request is for, and a client\n * waiting for approval, by the waiting cookie the browser sent.\n */\nimport { cookies, headers } from 'next/headers';\n\nimport { gatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { apiUrl, refusalCodeOf, requestApi } from '../../../lib/gateway-api/page-api';\n\n/** The cookie the gateway's waiting address set: the browser's secret for its request. */\nconst WAITING_COOKIE = 'aeolus_waiting';\n\nconst FAILED_PAGE = '/authorize/failed';\n\nexport function failedPage(reason: string): string {\n return `${FAILED_PAGE}?${new URLSearchParams({ reason }).toString()}`;\n}\n\n/** The client a request is for; a request the gateway would not serve, or a gateway that signs no one in, fails. */\nexport async function readClient(fields: readonly [string, string][]): Promise<{ kind: 'client'; client: { clientId: string; clientName: string; redirectUri: string } } | { kind: 'failed'; reason: 'invalidClient' | 'noSignIn' }> {\n const api = await requestApi(undefined);\n try {\n return { kind: 'client', client: await api.oauth.authorization.query(Object.fromEntries(fields)) };\n } catch (error) {\n const code = refusalCodeOf(error);\n if (code === 'BAD_REQUEST') {\n return { kind: 'failed', reason: 'invalidClient' };\n }\n if (code === 'NOT_FOUND') {\n return { kind: 'failed', reason: 'noSignIn' };\n }\n throw error;\n }\n}\n\n/** A client waiting for approval, or goOn once its request no longer waits. */\nexport async function readWaiting(waiting: string): Promise<{ kind: 'waiting'; clientName: string; expiresAt: string } | { kind: 'goOn' }> {\n const browserSecret = (await cookies()).get(WAITING_COOKIE)?.value;\n // The secret goes beside the call, never in its input, which travels in the address the gateway logs.\n const api = gatewayApi({ url: apiUrl(), cookie: (await headers()).get('cookie') ?? undefined, fleetId: undefined, ...(browserSecret === undefined ? {} : { waitingSecret: browserSecret }) });\n return api.oauth.waiting.query({ waiting });\n}\n","/**\n * What the authorize pages work out: the time a request waiting for\n * approval has left, why a browser got nowhere connecting an MCP client,\n * and the authorization request the pick page carries on to the sign-in.\n */\nimport type { SearchParams } from '../../../lib/gateway-api/page-api';\n\nconst MS_PER_HOUR = 3_600_000;\nconst HOURS_PER_DAY = 24;\n\n/** The time a request has left, in days and hours, as the waiting page's ring shows it. */\nexport function timeLeft(expiresAt: Date, now: Date): string {\n const hours = Math.max(0, Math.floor((expiresAt.getTime() - now.getTime()) / MS_PER_HOUR));\n return `${String(Math.floor(hours / HOURS_PER_DAY))} d ${String(hours % HOURS_PER_DAY)} h`;\n}\n\nconst START_AGAIN = 'Start again from your MCP client.';\n\n/** Why a browser got nowhere, as the gateway's authorize doors name it (src/adapters/http/oauth-routes.ts). */\nconst REASONS: Record<string, string> = {\n invalidClient: `The gateway does not know this MCP client, or the address it asks to be sent back to. ${START_AGAIN}`,\n noPick: 'Pick on the page whether to sign in as yourself or to ask for access for the client.',\n unknownSignIn: `This sign-in is unknown, or took over 10 minutes. ${START_AGAIN}`,\n otherBrowser: `This sign-in was started in another browser, so it is not yours to finish. ${START_AGAIN}`,\n fleetNotServed: 'This gateway does not serve the fleet you signed in to.',\n outsidePartiesOff: \"Your fleet's outside parties are off, so no MCP client can ask for access. Sign in as yourself instead, or ask whoever runs your fleet.\",\n pagasaeRefused: `The sign-in service did not sign you in. ${START_AGAIN}`,\n unknownWaiting: `This request is unknown, or ended long ago. ${START_AGAIN}`,\n otherBrowserWaiting: `This request was made in another browser, so it is not yours to follow. ${START_AGAIN}`,\n noSignIn: 'This gateway signs no one in, so no MCP client can connect to it: its operator sets pagasae first.',\n};\n\nconst UNKNOWN_REASON = `The connection did not go through. ${START_AGAIN}`;\n\nexport function failedReasonText(reason: string | undefined): string {\n return (reason === undefined ? undefined : REASONS[reason]) ?? UNKNOWN_REASON;\n}\n\n/** The gateway's waiting address, which sends the browser on once its request no longer waits. */\nexport const WAITING_DOOR = '/authorize/waiting';\n\n/** The pick the page adds to the request, as the sign-in door reads it. */\nexport const HOLDER_FIELD = 'holder';\n\n/** The request's parameters the browser sent once each, without a pick: the page adds its own. */\nexport function pickFieldsOf(searchParams: SearchParams): [string, string][] {\n return Object.entries(searchParams).flatMap(([name, value]) => (typeof value === 'string' && name !== HOLDER_FIELD ? [[name, value]] : []));\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const PickHolder = registerClientReference(\n function() { throw new Error(\"Attempted to call PickHolder() from the server but PickHolder 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/authorize/ui/pick-holder.tsx\",\n \"PickHolder\",\n);\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n"],"names":["ConnectClient","client","fields","className","clientName","clientId","redirectUri","WAITING_COOKIE","FAILED_PAGE","failedPage","reason","URLSearchParams","toString","readClient","api","undefined","kind","oauth","authorization","query","Object","fromEntries","error","code","readWaiting","waiting","browserSecret","get","value","url","cookie","fleetId","waitingSecret","MS_PER_HOUR","HOURS_PER_DAY","timeLeft","expiresAt","now","hours","Math","max","floor","getTime","String","START_AGAIN","REASONS","invalidClient","noPick","unknownSignIn","otherBrowser","fleetNotServed","outsidePartiesOff","pagasaeRefused","unknownWaiting","otherBrowserWaiting","noSignIn","UNKNOWN_REASON","failedReasonText","WAITING_DOOR","HOLDER_FIELD","pickFieldsOf","searchParams","entries","flatMap","name","PickHolder","Error","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL"],"mappings":"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","ignoreList":[4]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/overview/state/request-to-decide.tsx","../../../../../web/app/overview/requests/%5BrequestId%5D/page.tsx","../../../../../web/features/overview/state/decision-panel.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/overview/state/decision-panel.tsx%22%20%7D"],"sourcesContent":["import { readOf, signedInPage, type SearchParams } from '../../../lib/gateway-api/page-api';\nimport { OVERVIEW_PATH, readRequestToDecide } from '../hooks/read-overview';\nimport { NoSignIn } from '../../sign-in/ui/no-sign-in';\nimport { subjectKind, subjectName } from '../services/requests';\nimport { RequestsList } from '../ui/requests-list';\nimport { DecisionPanel } from './decision-panel';\nimport { LiveRefresh } from './live-refresh';\n\n/**\n * One request to decide, with its decision beside the queue (decision\n * 0056). The queue stays live; a request decided elsewhere meanwhile no\n * longer waits here.\n */\nexport async function RequestToDecide({ requestId, searchParams }: { requestId: string; searchParams: SearchParams }) {\n const page = await signedInPage({ path: `${OVERVIEW_PATH}/requests/${encodeURIComponent(requestId)}`, searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n const { fleetId, scopes } = page;\n const { request, toDecide } = await readRequestToDecide(page.api, requestId);\n const overview = `/overview?fleet=${encodeURIComponent(fleetId)}`;\n const queue = (\n <RequestsList title=\"Queue\" requests={toDecide} now={new Date()} currentId={requestId} hrefOf={(other) => `/overview/requests/${encodeURIComponent(other.requestId)}?fleet=${encodeURIComponent(fleetId)}`} />\n );\n if (request === undefined) {\n return (\n <div className=\"grid gap-6\">\n <LiveRefresh fleetId={fleetId} />\n <section data-testid=\"overview-no-longer-waits\" className=\"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm\">\n <h2 className=\"text-heading font-semibold\">This request no longer waits for a decision</h2>\n <div className=\"mt-4\">\n <a href={overview} className=\"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover\">\n Back to the Overview\n </a>\n </div>\n </section>\n </div>\n );\n }\n const owners = await readOf(page.api.parties.ownerChoices.query());\n const requesters = request.requesters.length;\n return (\n <div className=\"grid gap-6\">\n <LiveRefresh fleetId={fleetId} />\n <h1 className=\"text-heading font-semibold\">To decide</h1>\n <div className=\"grid gap-6 md:grid-cols-[1fr_18rem]\">\n <div className=\"grid content-start gap-4\">\n <section className=\"grid justify-items-center gap-1 rounded-lg border border-border bg-card p-6 text-center\">\n <span className=\"text-section font-semibold\">{subjectName(request)}</span>\n <span className=\"text-caption text-muted-foreground\">\n {subjectKind(request)} · {requesters} {requesters === 1 ? 'requester' : 'requesters'}\n </span>\n </section>\n <DecisionPanel fleetId={fleetId} request={request} heldScopes={scopes} owners={owners} />\n </div>\n <aside>{queue}</aside>\n </div>\n </div>\n );\n}\n","import type { Metadata } from 'next';\n\nimport { RequestToDecide } from '../../../../features/overview/state/request-to-decide';\nimport type { SearchParams } from '../../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'To decide' };\n\nexport default async function RequestToDecidePage({ params, searchParams }: { params: Promise<{ requestId: string }>; searchParams: Promise<SearchParams> }) {\n const [{ requestId }, query] = await Promise.all([params, searchParams]);\n return <RequestToDecide requestId={requestId} searchParams={query} />;\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const DecisionPanel = registerClientReference(\n function() { throw new Error(\"Attempted to call DecisionPanel() from the server but DecisionPanel 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/overview/state/decision-panel.tsx\",\n \"DecisionPanel\",\n);\n"],"names":["RequestToDecide","requestId","searchParams","page","path","encodeURIComponent","kind","fleetId","scopes","request","toDecide","api","overview","queue","title","requests","now","Date","currentId","hrefOf","other","undefined","className","href","owners","parties","ownerChoices","query","requesters","length","heldScopes","DecisionPanel","Error"],"mappings":"2CAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OAOO,eAAeA,EAAgB,WAAEC,CAAS,cAAEC,CAAY,CAAqD,EAClH,IAAMC,EAAO,MAAM,CAAA,EAAA,EAAA,CAAA,AAAY,EAAC,CAAEC,KAAM,CAAA,EAAG,EAAA,CAAa,CAAC,UAAU,EAAEC,mBAAmBJ,GAAAA,CAAY,cAAEC,CAAa,GACnH,GAAkB,YAAY,CAA1BC,EAAKG,IAAI,CACX,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,CAAA,CAAA,GAElB,GAAM,SAAEC,CAAO,CAAEC,QAAM,CAAE,CAAGL,EACtB,SAAEM,CAAO,UAAEC,CAAQ,CAAE,CAAG,MAAM,CAAA,EAAA,EAAA,CAAA,AAAmB,EAACP,EAAKQ,GAAG,CAAEV,GAC5DW,EAAW,CAAC,gBAAgB,EAAEP,mBAAmBE,GAAAA,CAAU,CAC3DM,EACJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAACC,MAAM,QAAQC,SAAUL,EAAUM,IAAK,IAAIC,KAAQC,UAAWjB,EAAWkB,OAAQ,AAACC,GAAU,CAAC,mBAAmB,EAAEf,mBAAmBe,EAAMnB,SAAS,EAAE,OAAO,EAAEI,mBAAmBE,GAAAA,CAAU,GAE5M,GAAIE,AAAYY,WAAW,AACzB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIC,UAAU,uBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAACf,QAASA,IACtB,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,cAAY,2BAA2Be,UAAU,uFACxD,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,sCAA6B,gDAC3C,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,gBACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEC,KAAMX,EAAUU,UAAU,kHAAyG,iCAQhJ,IAAME,EAAS,MAAM,CAAA,EAAA,EAAA,CAAA,AAAM,EAACrB,EAAKQ,GAAG,CAACc,OAAO,CAACC,YAAY,CAACC,KAAK,IACzDC,EAAanB,EAAQmB,UAAU,CAACC,MAAM,CAC5C,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIP,UAAU,uBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAACf,QAASA,IACtB,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGe,UAAU,sCAA6B,cAC3C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,gDACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,qCACb,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQA,UAAU,oGACjB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,sCAA8B,CAAA,EAAA,EAAA,CAAA,AAAW,EAACb,KAC1D,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKa,UAAU,+CACb,CAAA,EAAA,EAAA,CAAA,AAAW,EAACb,GAAS,MAAImB,EAAW,IAAiB,IAAfA,EAAmB,YAAc,mBAG5E,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAACrB,QAASA,EAASE,QAASA,EAASqB,WAAYtB,EAAQgB,OAAQA,OAEjF,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,UAAOX,SAIhB,CCpDe,eAAe,EAAoB,QAAE,CAAM,cAAE,CAAY,CAAmF,EACzJ,GAAM,CAAC,WAAE,CAAS,CAAE,CAAE,EAAM,CAAG,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAQ,EAAa,EACvE,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAgB,UAAW,EAAW,aAAc,GAC9D,iCALkC,CAAE,MAAO,WAAY,qBCHhD,IAAMkB,EAAgB,CAAA,EAD7B,AAC6B,EAD7B,CAAA,CAAA,OAC6B,uBAAA,AAAuB,EAChD,WAAa,MAAM,AAAIC,MAAM,wOAA0O,EACvQ,2DACA","ignoreList":[2]}
@@ -1,3 +0,0 @@
1
- module.exports=[[5327,a=>{var b=a.i(7997),c=a.i(9181),d=a.i(72913),e=a.i(22126),f=a.i(66283);async function g({params:a,searchParams:h}){let{name:i}=await a,j=await (0,f._)({path:(0,d.N)(i),searchParams:await h});return"noSignIn"===j.kind?(0,b.jsx)(e.f,{}):(0,b.jsx)(c.b,{page:j,name:i})}a.s(["default",0,g,"metadata",0,{title:"Outside parties"}])},49144,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},65253,98323,a=>{let b={mcpServer:{protocol:"MCP",side:"server"},mcpClient:{protocol:"MCP",side:"client"}};a.s(["G",0,b,"Y",0,{commissioning:{tone:"active",label:"Commissioning"},awaitingCrew:{tone:"waiting",label:"Awaiting crew"},crewed:{tone:"ok",label:"Crewed"}},"N",0,{server:{one:"server",many:"servers"},client:{one:"client",many:"clients"}},"R",0,function(a){let c=a.map(a=>b[a.kind]),d=[...new Set(c.map(a=>a.protocol))];return{total:a.length,sides:{server:c.filter(a=>"server"===a.side).length,client:c.filter(a=>"client"===a.side).length},protocols:d.map(a=>({protocol:a,count:c.filter(b=>b.protocol===a).length}))}}],65253);var c=a.i(7997);let d={waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",active:"border-tone-active-border bg-tone-active-bg text-tone-active-fg",ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",ended:"border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg"};a.s(["T",0,function({tone:a,label:b}){return(0,c.jsx)("span",{className:`inline-flex items-center rounded-full border px-2 text-caption ${d[a]}`,children:b})},"E",0,function({children:a,isMono:b=!1}){return(0,c.jsx)("span",{className:`inline-flex items-center rounded-md border border-border px-2 text-caption ${b?"font-mono":""}`,children:a})}],98323)},72913,a=>{let b="/outside-parties",c=`${b}/add`;a.s(["y",0,c,"$",0,b,"N",0,function(a,c){return`${b}/${encodeURIComponent(a)}${void 0===c?"":`/${c}`}`}])},22126,a=>{var b=a.i(7997),c=a.i(49144);a.s(["f",0,function(){return(0,b.jsxs)("section",{className:c.r,"data-testid":"no-sign-in",children:[(0,b.jsx)("h2",{className:"text-heading font-semibold",children:"Nobody signs in here"}),(0,b.jsx)("p",{className:"mt-2 text-muted-foreground",children:"This gateway signs no one in to its pages: it is no app at pagasae."})]})}])}],43260,function(a){a.n(a.i(5327))}];
2
-
3
- //# sourceMappingURL=web_1zd285_dq60z5._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/app/outside-parties/%5Bname%5D/page.tsx","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/outside-parties/party-kinds.ts","../../../../../web/features/outside-parties/ui/status-badge.tsx","../../../../../web/features/outside-parties/paths.ts","../../../../../web/features/sign-in/ui/no-sign-in.tsx"],"sourcesContent":["import type { Metadata } from 'next';\n\nimport { OutsideParty } from '../../../features/outside-party/ui/outside-party';\nimport { partyPath } from '../../../features/outside-parties/paths';\nimport { NoSignIn } from '../../../features/sign-in/ui/no-sign-in';\nimport { signedInPage, type SearchParams } from '../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Outside parties' };\n\nexport default async function OutsidePartyPage({ params, searchParams }: { params: Promise<{ name: string }>; searchParams: Promise<SearchParams> }) {\n const { name } = await params;\n const page = await signedInPage({ path: partyPath(name), searchParams: await searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n return <OutsideParty page={page} name={name} />;\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","/**\n * An outside party is a party and its protocol (design B, How A2A slots\n * in): the protocol is a tag on every card and the list counts per\n * protocol, so an A2A agent joins as one more kind here.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../src/adapters/trpc/router.js';\n\n/** An outside party as the API lists it. */\nexport type ListedParty = inferRouterOutputs<GatewayRouter>['parties']['list'][number];\n\n/** Which side an outside party is on: a server the fleet's ships call, or a client that calls them. */\nexport type Side = 'server' | 'client';\n\nexport const PARTY_KINDS: Record<ListedParty['kind'], { protocol: string; side: Side }> = {\n mcpServer: { protocol: 'MCP', side: 'server' },\n mcpClient: { protocol: 'MCP', side: 'client' },\n};\n\nexport const SIDES: Record<Side, { one: string; many: string }> = {\n server: { one: 'server', many: 'servers' },\n client: { one: 'client', many: 'clients' },\n};\n\n/** The tones the design tokens colour a status by. */\nexport type Tone = 'waiting' | 'active' | 'ok' | 'attention' | 'ended';\n\n/** A proxy ship's state as the console shows a status. */\nexport const PARTY_STATES: Record<ListedParty['state'], { tone: Tone; label: string }> = {\n commissioning: { tone: 'active', label: 'Commissioning' },\n awaitingCrew: { tone: 'waiting', label: 'Awaiting crew' },\n crewed: { tone: 'ok', label: 'Crewed' },\n};\n\nexport interface Counts {\n total: number;\n sides: Record<Side, number>;\n protocols: { protocol: string; count: number }[];\n}\n\n/** How many outside parties the fleet has, per side and per protocol. */\nexport function countsOf(parties: readonly Pick<ListedParty, 'kind'>[]): Counts {\n const kinds = parties.map((party) => PARTY_KINDS[party.kind]);\n const protocols = [...new Set(kinds.map((kind) => kind.protocol))];\n return {\n total: parties.length,\n sides: { server: kinds.filter((kind) => kind.side === 'server').length, client: kinds.filter((kind) => kind.side === 'client').length },\n protocols: protocols.map((protocol) => ({ protocol, count: kinds.filter((kind) => kind.protocol === protocol).length })),\n };\n}\n","import type { Tone } from '../party-kinds';\n\nconst TONES: Record<Tone, string> = {\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n active: 'border-tone-active-border bg-tone-active-bg text-tone-active-fg',\n ok: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n attention: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n ended: 'border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg',\n};\n\n/** A status in its tone, as the console shows one. */\nexport function StatusBadge({ tone, label }: { tone: Tone; label: string }) {\n return <span className={`inline-flex items-center rounded-full border px-2 text-caption ${TONES[tone]}`}>{label}</span>;\n}\n\n/** A plain tag: a protocol, a side, an id. */\nexport function Tag({ children, isMono = false }: { children: React.ReactNode; isMono?: boolean }) {\n return <span className={`inline-flex items-center rounded-md border border-border px-2 text-caption ${isMono ? 'font-mono' : ''}`}>{children}</span>;\n}\n","/** The outside parties' pages. */\nexport const OUTSIDE_PARTIES_PATH = '/outside-parties';\n\nexport const ADD_SERVER_PATH = `${OUTSIDE_PARTIES_PATH}/add`;\n\n/** One outside party's page, or one of its own: changing it, retiring it. */\nexport function partyPath(name: string, action?: 'change' | 'retire'): string {\n return `${OUTSIDE_PARTIES_PATH}/${encodeURIComponent(name)}${action === undefined ? '' : `/${action}`}`;\n}\n","import { CARD } from '../../forms/ui/look';\n\n/** A gateway that is no app at pagasae signs no one in to its pages (header design H5). */\nexport function NoSignIn() {\n return (\n <section className={CARD} data-testid=\"no-sign-in\">\n <h2 className=\"text-heading font-semibold\">Nobody signs in here</h2>\n <p className=\"mt-2 text-muted-foreground\">This gateway signs no one in to its pages: it is no app at pagasae.</p>\n </section>\n );\n}\n"],"names":["metadata","title","OutsidePartyPage","params","searchParams","name","page","path","kind","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","PARTY_KINDS","mcpServer","protocol","side","mcpClient","SIDES","server","one","many","client","PARTY_STATES","commissioning","tone","label","awaitingCrew","crewed","countsOf","parties","kinds","map","party","protocols","Set","total","length","sides","filter","count","OUTSIDE_PARTIES_PATH","ADD_SERVER_PATH","partyPath","action","encodeURIComponent","undefined","NoSignIn","className"],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- module.exports=[[74762,a=>{var b=a.i(7997),c=a.i(5246),d=a.i(717),e=a.i(66283);async function f(){try{return await (await (0,e.z)(void 0)).account.apps.query()}catch(a){if(void 0!==(0,e.T)(a))return;throw a}}var g=a.i(75416),h=a.i(49310),i=a.i(26972),j=a.i(54757),j=j,k=a.i(27221),l=a.i(89963),m=a.i(83931),n=a.i(29517);let o=h.z.enum(["console","gateway","account","admin"]),p=i.z.object({app:o,url:j.httpUrl()});i.z.object({account:i.z.object({id:g.s,email:k.z.string()}),apps:l.z.array(p),fleets:l.z.array(i.z.object({id:(0,n.f)("fleet"),name:k.z.string(),argo:m.z.boolean(),apps:l.z.array(p)}))});let q={console:"Console",gateway:"Gateway",account:"Account",admin:"Admin"};function r(a,b){let c=new URL(a);return c.searchParams.set("fleet",b),c.toString()}let s=(0,n.f)("fleet");function t(a){return a.flatMap(({app:a,url:b})=>{let c=o.safeParse(a);return c.success?[{app:c.data,url:b}]:[]})}var u=a.i(73952);function v(){return(0,b.jsx)("header",{"data-testid":"plain-header",className:"flex h-14 items-center border-b border-border px-4",children:(0,b.jsx)("a",{href:"/overview",className:"text-section font-semibold",children:"Aeolus"})})}async function w({theme:a}){let c=await f(),e=void 0===c?[]:function(a){let b=g.s.safeParse(a.account.id),c=a.fleets.map(a=>s.safeParse(a.id));if(!b.success||c.some(a=>!a.success))return[];let d={account:{id:b.data,email:a.account.email},apps:t(a.apps),fleets:a.fleets.flatMap((a,b)=>{let d=c[b];return d?.success===!0?[{id:d.data,name:a.name,argo:!1,apps:t(a.apps)}]:[]})};return d.fleets.map(({id:a,name:b})=>(function(a){let{list:b,fleet:c,app:d}=a,e=q[d];if(void 0===b)return{fleet:c,appLabel:e,fleets:[{...c,url:"",isCurrent:!0}],apps:[{app:d,label:e,url:"",isCurrent:!0}],canSwitch:!1};let f=b.apps.find(a=>"account"===a.app)?.url,g=b.fleets.flatMap(a=>{let b=a.apps.find(a=>a.app===d)??a.apps[0],e=void 0===b?f:r(b.url,a.id);return void 0===e?[]:[{id:a.id,name:a.name,url:e,isCurrent:a.id===c.id}]}),h=[...(b.fleets.find(a=>a.id===c.id)?.apps??[]).map(a=>({...a,url:r(a.url,c.id)})),...b.apps].map(a=>({app:a.app,label:q[a.app],url:a.url,isCurrent:a.app===d}));return{fleet:c,appLabel:e,fleets:g,apps:h,canSwitch:g.length>1||h.length>1}})({list:d,fleet:{id:a,name:b},app:"gateway"}))}(c);return void 0===c||0===e.length?(0,b.jsx)(v,{}):(0,b.jsx)(d.Suspense,{fallback:(0,b.jsx)(v,{}),children:(0,b.jsx)(u.GatewayHeader,{switchers:e,email:c.account.email,accountUrl:c.apps.find(({app:a})=>"account"===a)?.url,theme:a})})}var x=a.i(67591);function y({header:a,children:c}){return(0,b.jsxs)("div",{className:"flex min-h-dvh flex-col",children:[(0,b.jsx)("div",{"data-testid":"frame-header",className:"contents",children:a}),(0,b.jsx)("main",{className:"mx-auto w-full max-w-5xl flex-1 px-4 py-6",children:c})]})}var z=a.i(30168);let A={className:z.default.className,style:{fontFamily:"'geistSans', 'geistSans Fallback'"}};null!=z.default.variable&&(A.variable=z.default.variable);var B=a.i(97897);let C={className:B.default.className,style:{fontFamily:"'geistMono', 'geistMono Fallback'"}};async function D({children:a}){let d=(0,x.n)((await (0,c.cookies)()).get(x.g)?.value);return(0,b.jsxs)("html",{lang:"en",className:`${A.variable} ${C.variable}`,suppressHydrationWarning:!0,children:[(0,b.jsx)("head",{children:(0,b.jsx)("script",{dangerouslySetInnerHTML:{__html:`(() => {
2
- const root = document.documentElement;
3
- const query = window.matchMedia('(prefers-color-scheme: dark)');
4
- const apply = () => root.classList.toggle('dark', root.dataset.theme === 'dark' || (root.dataset.theme === 'system' && query.matches));
5
- root.dataset.theme = ${JSON.stringify(d)};
6
- apply();
7
- query.addEventListener('change', apply);
8
- })();`}})}),(0,b.jsx)("body",{children:(0,b.jsx)(y,{header:(0,b.jsx)(w,{theme:d}),children:a})})]})}null!=B.default.variable&&(C.variable=B.default.variable),a.s(["default",0,D,"metadata",0,{title:"Aeolus",robots:{index:!1,follow:!1}}],74762)},56397,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call GatewayHeader() from the server but GatewayHeader is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/frame/ui/gateway-header.tsx","GatewayHeader");a.s(["GatewayHeader",0,b])},73952,a=>{var b=a.i(56397);a.n(b)}],97897,a=>{a.v({className:"oS6g6q_className",variable:"oS6g6q_variable"})},30168,a=>{a.v({className:"FBhtWW_className",variable:"FBhtWW_variable"})},98556,function(a){a.n(a.i(74762))}];
9
-
10
- //# sourceMappingURL=web_207u8paamz3z-._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/frame/services/header-switchers.ts","../../../../../web/features/frame/hooks/read-header.ts","../../../../../web/app/geistsans_54fa7e7.js","../../../../../web/app/geistmono_85c0638a.js","../../../../../web/features/frame/state/header.tsx","../../../../../web/features/frame/ui/plain-header.tsx","../../../../../web/app/layout.tsx","../../../../../web/features/frame/ui/frame.tsx","../../../../../node_modules/%40aeolus-fleet/common/src/header/apps.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/apps-list.ts","../../../../../web/features/frame/ui/gateway-header.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/frame/ui/gateway-header.tsx%22%20%7D","turbopack:///[project]/web/app/geistmono_85c0638a.module.css [app-rsc] (css module)","turbopack:///[project]/web/app/geistsans_54fa7e7.module.css [app-rsc] (css module)"],"sourcesContent":["/*\n * The switcher in the title of the header the gateway's pages show\n * (aeolus-fleet, header design H1, H9), from the apps and fleets the account\n * may open as the gateway's API answers them. The fleet in view is the one\n * the page's address names; a layout cannot read the address, so the server\n * offers one switcher per listed fleet and the header picks by the address.\n */\nimport { accountIdSchema, headerAppSchema, idSchema, type AppLink, type AppsList } from '@aeolus-fleet/common';\nimport { appSwitcherOf, type AppSwitcherModel } from '@aeolus-fleet/common/header';\n\n/** The apps and fleets the account may open, as the API's account.apps answers them. */\nexport interface AccountApps {\n account: { id: string; email: string };\n apps: readonly { app: string; url: string }[];\n fleets: readonly { id: string; name: string; apps: readonly { app: string; url: string }[] }[];\n}\n\nconst fleetIdSchema = idSchema('fleet');\n\n/** The apps the header knows (H12), the others left out; the addresses as the API answers them. */\nfunction headerAppsOf(apps: AccountApps['apps']): AppLink[] {\n return apps.flatMap(({ app, url }) => {\n const known = headerAppSchema.safeParse(app);\n return known.success ? [{ app: known.data, url }] : [];\n });\n}\n\n/** The switchers for the gateway, one per listed fleet with it in view; none for an answer with a malformed id. */\nexport function headerSwitchersOf(answer: AccountApps): AppSwitcherModel[] {\n const accountId = accountIdSchema.safeParse(answer.account.id);\n const fleetIds = answer.fleets.map((fleet) => fleetIdSchema.safeParse(fleet.id));\n if (!accountId.success || fleetIds.some((fleetId) => !fleetId.success)) {\n return [];\n }\n const list: AppsList = {\n account: { id: accountId.data, email: answer.account.email },\n apps: headerAppsOf(answer.apps),\n // Whether the account may sign in as argo is the console's alone: the gateway's header never shows it.\n fleets: answer.fleets.flatMap((fleet, index) => {\n const fleetId = fleetIds[index];\n return fleetId?.success === true ? [{ id: fleetId.data, name: fleet.name, argo: false, apps: headerAppsOf(fleet.apps) }] : [];\n }),\n };\n return list.fleets.map(({ id, name }) => appSwitcherOf({ list, fleet: { id, name }, app: 'gateway' }));\n}\n","/**\n * What the header shows, read through the gateway's API by the browser's\n * shared sign-in (header design H1): the account and the apps and fleets it\n * may open. A browser signed in to no account, a gateway that signs no one\n * in to its pages, or pagasae not answering, shows the plain bar: the page\n * itself says what to do.\n */\nimport { refusalCodeOf, requestApi } from '../../../lib/gateway-api/page-api';\nimport type { AccountApps } from '../services/header-switchers';\n\nexport async function readHeader(): Promise<AccountApps | undefined> {\n try {\n return await (await requestApi(undefined)).account.apps.query();\n } catch (error) {\n if (refusalCodeOf(error) !== undefined) {\n return undefined;\n }\n throw error;\n }\n}\n","import cssModule from \"@vercel/turbopack-next/internal/font/local/cssmodule.module.css?{%22path%22:%22fonts.ts%22,%22import%22:%22%22,%22arguments%22:[{%22src%22:%22./fonts/geist-variable.woff2%22,%22variable%22:%22--font-geist-sans%22,%22weight%22:%22100%20900%22}],%22variableName%22:%22geistSans%22}\";\nconst fontData = {\n className: cssModule.className,\n style: {\n fontFamily: \"'geistSans', 'geistSans Fallback'\",\n \n },\n};\n\nif (cssModule.variable != null) {\n fontData.variable = cssModule.variable;\n}\n\nexport default fontData;\n","import cssModule from \"@vercel/turbopack-next/internal/font/local/cssmodule.module.css?{%22path%22:%22fonts.ts%22,%22import%22:%22%22,%22arguments%22:[{%22src%22:%22./fonts/geist-mono-variable.woff2%22,%22variable%22:%22--font-geist-mono%22,%22weight%22:%22100%20900%22}],%22variableName%22:%22geistMono%22}\";\nconst fontData = {\n className: cssModule.className,\n style: {\n fontFamily: \"'geistMono', 'geistMono Fallback'\",\n \n },\n};\n\nif (cssModule.variable != null) {\n fontData.variable = cssModule.variable;\n}\n\nexport default fontData;\n","import type { Theme } from '@aeolus-fleet/common';\nimport { Suspense } from 'react';\n\nimport { readHeader } from '../hooks/read-header';\nimport { headerSwitchersOf } from '../services/header-switchers';\nimport { GatewayHeader } from '../ui/gateway-header';\nimport { PlainHeader } from '../ui/plain-header';\n\n/** The header for the account signed in, or the plain bar for no account (or one that may open no fleet here, or an answer it cannot read). */\nexport async function Header({ theme }: { theme: Theme }) {\n const answer = await readHeader();\n const switchers = answer === undefined ? [] : headerSwitchersOf(answer);\n if (answer === undefined || switchers.length === 0) {\n return <PlainHeader />;\n }\n return (\n // The header reads the fleet in view from the address.\n <Suspense fallback={<PlainHeader />}>\n <GatewayHeader switchers={switchers} email={answer.account.email} accountUrl={answer.apps.find(({ app }) => app === 'account')?.url} theme={theme} />\n </Suspense>\n );\n}\n","/** The bar of a page shown to no account signed in: the sign-in pages, and a gateway that signs no one in to its pages. */\nexport function PlainHeader() {\n return (\n <header data-testid=\"plain-header\" className=\"flex h-14 items-center border-b border-border px-4\">\n <a href=\"/overview\" className=\"text-section font-semibold\">\n Aeolus\n </a>\n </header>\n );\n}\n","import type { Theme } from '@aeolus-fleet/common';\nimport type { Metadata } from 'next';\nimport { cookies } from 'next/headers';\nimport type { ReactNode } from 'react';\n\nimport { Header } from '../features/frame/state/header';\nimport { THEME_COOKIE, themeFrom } from '../features/frame/theme';\nimport { Frame } from '../features/frame/ui/frame';\nimport { geistMono, geistSans } from './fonts';\nimport './globals.css';\n\nexport const metadata: Metadata = {\n title: 'Aeolus',\n robots: { index: false, follow: false },\n};\n\n/**\n * Sets the theme this browser chose before the first paint: System follows\n * the browser's setting and keeps in step while <html> says system.\n */\nfunction themeScript(theme: Theme): string {\n return `(() => {\n const root = document.documentElement;\n const query = window.matchMedia('(prefers-color-scheme: dark)');\n const apply = () => root.classList.toggle('dark', root.dataset.theme === 'dark' || (root.dataset.theme === 'system' && query.matches));\n root.dataset.theme = ${JSON.stringify(theme)};\n apply();\n query.addEventListener('change', apply);\n})();`;\n}\n\nexport default async function RootLayout({ children }: { children: ReactNode }) {\n const theme = themeFrom((await cookies()).get(THEME_COOKIE)?.value);\n return (\n <html lang=\"en\" className={`${geistSans.variable} ${geistMono.variable}`} suppressHydrationWarning>\n <head>\n <script dangerouslySetInnerHTML={{ __html: themeScript(theme) }} />\n </head>\n <body>\n <Frame header={<Header theme={theme} />}>{children}</Frame>\n </body>\n </html>\n );\n}\n","import type { ReactNode } from 'react';\n\n/**\n * Every page of the gateway's web app: the header on top, the page below.\n * The header is the one every Aeolus app shows (@aeolus-fleet/common/header,\n * header design H2) for an account signed in, else a plain bar.\n */\nexport function Frame({ header, children }: { header: ReactNode; children: ReactNode }) {\n return (\n <div className=\"flex min-h-dvh flex-col\">\n <div data-testid=\"frame-header\" className=\"contents\">\n {header}\n </div>\n <main className=\"mx-auto w-full max-w-5xl flex-1 px-4 py-6\">{children}</main>\n </div>\n );\n}\n","unable to read source [project]/node_modules/@aeolus-fleet/common/src/header/apps.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/apps-list.ts","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const GatewayHeader = registerClientReference(\n function() { throw new Error(\"Attempted to call GatewayHeader() from the server but GatewayHeader 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/frame/ui/gateway-header.tsx\",\n \"GatewayHeader\",\n);\n","__turbopack_context__.v({\n \"className\": \"oS6g6q_className\",\n \"variable\": \"oS6g6q_variable\",\n});\n","__turbopack_context__.v({\n \"className\": \"FBhtWW_className\",\n \"variable\": \"FBhtWW_variable\",\n});\n"],"names":["readHeader","undefined","account","apps","query","error","GatewayHeader","Error"],"mappings":"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","ignoreList":[8,9,10]}
@@ -1,3 +0,0 @@
1
- module.exports=[85653,a=>{"use strict";var b=a.i(70043),c=a.i(37936),d=a.i(66680),e=a.i(29517);a.i(70396);var f=a.i(73727),g=a.i(55476),h=a.i(66283),i=a.i(1324),j=a.i(72913);function k(a){if("clientCredentials"===(0,i.v)(a,"credentialKind")){let b=(0,i.v)(a,"scope");return{kind:"clientCredentials",clientId:(0,i.v)(a,"clientId"),clientSecret:(0,i.v)(a,"clientSecret"),issuer:(0,i.v)(a,"issuer"),...""===b?{}:{scope:b}}}return{kind:"bearer",token:(0,i.v)(a,"token")}}async function l(a,b){let c=(0,i.O)(b),e=await (0,h.z)((0,i.v)(b,i.H));try{let{tools:a}=await e.parties.check.mutate({url:(0,i.v)(b,"url"),credential:k(b)}),f=await e.parties.ownerChoices.query();return{step:"owner",fields:c,tools:a,owners:f,requestId:(0,d.randomUUID)()}}catch(a){return{step:"address",fields:c,refusal:(0,h.s)(a)}}}async function m(a,b){let c,d=(0,i.v)(b,i.H),l=(0,i.O)(b),m=(0,i.v)(b,"requestId"),n=(0,e.f)("ship").safeParse((0,i.v)(b,"ownerShipId").trim());if(!n.success)return{kind:"refused",requestId:m,fields:l,message:"The owner's ship id is not a ship id (shp_...)"};let o=await (0,h.z)(d);try{c=(await o.parties.approve.mutate({requestId:m,name:(0,i.v)(b,"name"),url:(0,i.v)(b,"url"),credential:k(b),ownerShipId:n.data,concurrencyLimit:Number((0,i.v)(b,"concurrencyLimit"))})).name}catch(a){return{kind:"refused",requestId:m,fields:l,message:(0,h.s)(a)}}(0,f.redirect)((0,g.i)((0,j.N)(c),d))}(0,a.i(13095).ensureServerEntryExports)([l,m]),(0,c.registerServerReference)(l,"604cd683600419224d72cce16001d6551c38501acd",null),(0,c.registerServerReference)(m,"6019f8ccbb153920d3407417fa13ae2f68dbae4425",null),a.s(["4081cbcd58a3dd3de149e94261778971a7c42ce220",()=>b.f,"6019f8ccbb153920d3407417fa13ae2f68dbae4425",0,m,"604cd683600419224d72cce16001d6551c38501acd",0,l],85653)}];
2
-
3
- //# sourceMappingURL=web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/.next-internal/server/app/outside-parties/add/page/actions.js%20%28server%20actions%20loader%29","../../../../../web/features/add-server/actions.ts"],"sourcesContent":["export {setTheme as '4081cbcd58a3dd3de149e94261778971a7c42ce220'} from 'ACTIONS_MODULE0'\nexport {approveServer as '6019f8ccbb153920d3407417fa13ae2f68dbae4425'} from 'ACTIONS_MODULE1'\nexport {checkServer as '604cd683600419224d72cce16001d6551c38501acd'} from 'ACTIONS_MODULE1'\n","'use server';\n\n/**\n * Adding an outside MCP server (design B, screen 7; flow F10), as the\n * account signed in: the gateway's check of the tools it answers with,\n * which keeps nothing, then approving it with its owner. Each step asks the\n * API, which checks the account holds fleet:manage.\n */\nimport { randomUUID } from 'node:crypto';\n\nimport { idSchema } from '@aeolus-fleet/common';\nimport { redirect } from 'next/navigation';\n\nimport { inFleet } from '../../lib/gateway-api/page-account';\nimport { refusalMessageOf, requestApi } from '../../lib/gateway-api/page-api';\nimport { FLEET_FIELD, fieldOf, fieldsOf } from '../forms/form-state';\nimport type { OwnerChoice } from '../forms/ui/owner-field';\nimport { partyPath } from '../outside-parties/paths';\n\n/** The tools a server answered the check with. */\nexport interface CheckedTool {\n name: string;\n description?: string | undefined;\n}\n\n/**\n * Where adding a server stands: the address step, or the owner step after\n * the check answered its tools, with the ships its owner may be picked\n * from. The address and credential travel on in the fields, as the browser\n * sent them.\n */\nexport type AddServerState =\n | { step: 'address'; fields: Record<string, string>; refusal?: string }\n | { step: 'owner'; fields: Record<string, string>; tools: CheckedTool[]; owners: OwnerChoice[]; requestId: string };\n\nfunction credentialOf(form: FormData) {\n if (fieldOf(form, 'credentialKind') === 'clientCredentials') {\n const scope = fieldOf(form, 'scope');\n return { kind: 'clientCredentials' as const, clientId: fieldOf(form, 'clientId'), clientSecret: fieldOf(form, 'clientSecret'), issuer: fieldOf(form, 'issuer'), ...(scope === '' ? {} : { scope }) };\n }\n return { kind: 'bearer' as const, token: fieldOf(form, 'token') };\n}\n\nexport async function checkServer(_previous: AddServerState, form: FormData): Promise<AddServerState> {\n const fields = fieldsOf(form);\n const api = await requestApi(fieldOf(form, FLEET_FIELD));\n try {\n const { tools } = await api.parties.check.mutate({ url: fieldOf(form, 'url'), credential: credentialOf(form) });\n const owners = await api.parties.ownerChoices.query();\n return { step: 'owner', fields, tools, owners, requestId: randomUUID() };\n } catch (error) {\n return { step: 'address', fields, refusal: refusalMessageOf(error) };\n }\n}\n\n/** An approval refused, for the owner step of the check it came from, with what the browser sent. */\nexport type ApproveState = { kind: 'idle' } | { kind: 'refused'; requestId: string; fields: Record<string, string>; message: string };\n\nexport async function approveServer(_previous: ApproveState, form: FormData): Promise<ApproveState> {\n const fleetId = fieldOf(form, FLEET_FIELD);\n const fields = fieldsOf(form);\n const requestId = fieldOf(form, 'requestId');\n const ownerShipId = idSchema('ship').safeParse(fieldOf(form, 'ownerShipId').trim());\n if (!ownerShipId.success) {\n return { kind: 'refused', requestId, fields, message: \"The owner's ship id is not a ship id (shp_...)\" };\n }\n const api = await requestApi(fleetId);\n let name: string;\n try {\n const approved = await api.parties.approve.mutate({\n requestId,\n name: fieldOf(form, 'name'),\n url: fieldOf(form, 'url'),\n credential: credentialOf(form),\n ownerShipId: ownerShipId.data,\n concurrencyLimit: Number(fieldOf(form, 'concurrencyLimit')),\n });\n name = approved.name;\n } catch (error) {\n return { kind: 'refused', requestId, fields, message: refusalMessageOf(error) };\n }\n redirect(inFleet(partyPath(name), fleetId));\n}\n"],"names":["credentialOf","form","scope","kind","clientId","clientSecret","issuer","token","checkServer","_previous","fields","api","tools","parties","check","mutate","url","credential","owners","ownerChoices","query","step","requestId","error","refusal","approveServer","fleetId","ownerShipId","safeParse","trim","success","message","name","approved","approve","data","concurrencyLimit","Number"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- module.exports=[28375,a=>{"use strict";var b=a.i(70043),c=a.i(4757);a.S([b,"4081cbcd58a3dd3de149e94261778971a7c42ce220,f",0,c,"4022bb53cb5aed469521ce90b009331cc9e4aa85f6,q,60d491137132aa96b6833d08eedae6145705a64f9a,v,60f8242e7db2415e3a5de081e5326b1d609e9fce61,G"],28375)}];
2
-
3
- //# sourceMappingURL=web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/.next-internal/server/app/overview/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {setTheme as '4081cbcd58a3dd3de149e94261778971a7c42ce220'} from 'ACTIONS_MODULE0'\nexport {answerDelivery as '4022bb53cb5aed469521ce90b009331cc9e4aa85f6'} from 'ACTIONS_MODULE1'\nexport {doneDelivery as '60f8242e7db2415e3a5de081e5326b1d609e9fce61'} from 'ACTIONS_MODULE1'\nexport {openDelivery as '60d491137132aa96b6833d08eedae6145705a64f9a'} from 'ACTIONS_MODULE1'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +0,0 @@
1
- module.exports=[83857,a=>{"use strict";var b=a.i(7997);a.s(["default",0,function(){return(0,b.jsxs)("section",{className:"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm",children:[(0,b.jsx)("h2",{className:"text-heading font-semibold",children:"This page does not exist"}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)("a",{href:"/overview","data-testid":"not-found-overview",className:"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Go to the Overview"})})]})},"metadata",0,{title:"Not found"}])},92528,function(a){a.n(a.i(83857))}];
2
-
3
- //# sourceMappingURL=web_app_not-found_tsx_1miwllm8xrp2a._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/app/not-found.tsx"],"sourcesContent":["import type { Metadata } from 'next';\n\nexport const metadata: Metadata = { title: 'Not found' };\n\n/** An address with no page: said so, with the way to the Overview. */\nexport default function NotFound() {\n return (\n <section className=\"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm\">\n <h2 className=\"text-heading font-semibold\">This page does not exist</h2>\n <div className=\"mt-4\">\n <a href=\"/overview\" data-testid=\"not-found-overview\" className=\"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover\">\n Go to the Overview\n </a>\n </div>\n </section>\n );\n}\n"],"names":["metadata","title","NotFound","className","href"],"mappings":"wEAKe,SAASE,EACtB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQC,UAAU,uFACjB,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,sCAA6B,6BAC3C,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,gBACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEC,KAAK,YAAY,cAAY,qBAAqBD,UAAU,kHAAyG,2BAMhL,eAdkC,CAAEF,MAAO,WAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/outside-party/ui/change-party.tsx","../../../../../web/app/outside-parties/%5Bname%5D/change/page.tsx"],"sourcesContent":["import { inFleet } from '../../../lib/gateway-api/page-account';\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { ActionForm } from '../../forms/ui/action-form';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { OwnerField } from '../../forms/ui/owner-field';\nimport { partyPath } from '../../outside-parties/paths';\nimport { changeParty } from '../actions';\nimport { EVERY_APP_SHIP_SCOPES, SCOPE_FIELD_PREFIX, SCOPES_SHOWN_FIELD } from '../scope-changes';\nimport { Back, GRANTING_SCOPE, OWNING_SCOPE, Refusal } from './outside-party';\n\n/** A scope's plain label, beside the scope itself. */\nconst SCOPE_LABELS: Record<string, string> = {\n 'messages:send': 'Send',\n 'messages:receive': 'Receive',\n 'fleet:read': 'Read the fleet',\n};\n\n/** One scope row: a locked row shows the scope ticked or not and sends nothing. */\nfunction ScopeRow({ scope, isLocked = false, isChecked = false }: { scope: string; isLocked?: boolean; isChecked?: boolean }) {\n return (\n <label className=\"flex items-center gap-2\">\n <input type=\"checkbox\" defaultChecked={isLocked ? true : isChecked} disabled={isLocked} {...(isLocked ? {} : { name: `${SCOPE_FIELD_PREFIX}${scope}` })} />\n <span>{SCOPE_LABELS[scope] ?? scope}</span>\n <span className=\"font-mono text-code text-muted-foreground\">{scope}</span>\n {isLocked ? <span className=\"text-muted-foreground\">(locked)</span> : null}\n </label>\n );\n}\n\n/**\n * Changing a party's owner (fleet:owner) and its scopes (scopes:grant):\n * every app ship's scopes locked on, the account's own to tick, and what\n * the party holds beyond them locked as it is.\n */\nexport async function ChangeParty({ page, name }: { page: SignedInPage; name: string }) {\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 <Back fleetId={fleetId} />\n <Refusal>{read.refusal}</Refusal>\n </div>\n );\n }\n const party = read.value;\n const owners = scopes.includes(OWNING_SCOPE) ? await readOf(api.parties.ownerChoices.query()) : undefined;\n const held = party.scopes;\n const own = scopes.filter((scope) => !EVERY_APP_SHIP_SCOPES.includes(scope));\n const beyond = held === null ? [] : held.filter((scope) => !EVERY_APP_SHIP_SCOPES.includes(scope) && !own.includes(scope));\n return (\n <div className=\"grid gap-4\">\n <Back fleetId={fleetId} />\n <section className={`${CARD} grid gap-3`}>\n <h2 className=\"text-section font-semibold\">{party.name}: owner and scopes</h2>\n <ActionForm action={changeParty} fleetId={fleetId} submit={{ label: 'Save', pending: 'Saving…' }} testId=\"outside-party-change-form\">\n <input type=\"hidden\" name=\"name\" value={party.name} />\n {owners === undefined ? null : owners.isOk ? (\n <OwnerField\n choices={owners.value}\n current={party.ownerShipId === null ? null : { shipId: party.ownerShipId, name: party.ownerName ?? party.ownerShipId }}\n help=\"A person ship or argo. It answers for this party.\"\n />\n ) : (\n <Refusal>{owners.refusal}</Refusal>\n )}\n {scopes.includes(GRANTING_SCOPE) && held !== null ? (\n <fieldset className=\"grid gap-2\">\n <legend className=\"font-medium\">Scopes</legend>\n <input type=\"hidden\" name={SCOPES_SHOWN_FIELD} value=\"true\" />\n {EVERY_APP_SHIP_SCOPES.map((scope) => (\n <ScopeRow key={scope} scope={scope} isLocked />\n ))}\n {own.map((scope) => (\n <ScopeRow key={scope} scope={scope} isChecked={held.includes(scope)} />\n ))}\n {beyond.map((scope) => (\n <ScopeRow key={scope} scope={scope} isLocked />\n ))}\n </fieldset>\n ) : null}\n </ActionForm>\n <div>\n <a className={BUTTONS.secondary} href={inFleet(partyPath(party.name), fleetId)}>\n Cancel\n </a>\n </div>\n </section>\n </div>\n );\n}\n","import type { Metadata } from 'next';\n\nimport { ChangeParty } from '../../../../features/outside-party/ui/change-party';\nimport { partyPath } from '../../../../features/outside-parties/paths';\nimport { NoSignIn } from '../../../../features/sign-in/ui/no-sign-in';\nimport { signedInPage, type SearchParams } from '../../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Outside parties' };\n\nexport default async function ChangePartyPage({ params, searchParams }: { params: Promise<{ name: string }>; searchParams: Promise<SearchParams> }) {\n const { name } = await params;\n const page = await signedInPage({ path: partyPath(name, 'change'), searchParams: await searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n return <ChangeParty page={page} name={name} />;\n}\n"],"names":["SCOPE_LABELS","ScopeRow","scope","isLocked","isChecked","className","type","defaultChecked","disabled","name","ChangeParty","page","api","fleetId","scopes","read","parties","get","query","isOk","refusal","party","value","owners","includes","ownerChoices","undefined","held","own","filter","beyond","action","submit","label","pending","testId","choices","current","ownerShipId","shipId","ownerName","help","map","secondary","href"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/outside-party/ui/retire-party.tsx","../../../../../web/app/outside-parties/%5Bname%5D/retire/page.tsx"],"sourcesContent":["import { inFleet } from '../../../lib/gateway-api/page-account';\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { ActionForm } from '../../forms/ui/action-form';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { partyPath } from '../../outside-parties/paths';\nimport { retireParty } from '../actions';\nimport { Back, Refusal } from './outside-party';\n\n/** Retiring a party, after one confirm that lists what happens (decision 0056). */\nexport async function RetireParty({ page, name }: { page: SignedInPage; name: string }) {\n const { api, fleetId } = page;\n const read = await readOf(api.parties.get.query({ name }));\n if (!read.isOk) {\n return (\n <div className=\"grid gap-4\">\n <Back fleetId={fleetId} />\n <Refusal>{read.refusal}</Refusal>\n </div>\n );\n }\n const party = read.value;\n return (\n <div className=\"grid gap-4\">\n <Back fleetId={fleetId} />\n <section className={`${CARD} grid gap-3`}>\n <h2 className=\"text-heading font-semibold\">Retire {party.name}?</h2>\n <ul className=\"list-disc pl-5\">\n <li>{party.proxyShipId === null ? 'Its proxy ship is retired' : <>Its proxy ship <span className=\"font-mono\">{party.proxyShipId}</span> is retired</>}</li>\n <li>The ships that used it lose its tools</li>\n <li>Adding it again is a new request</li>\n </ul>\n <ActionForm action={retireParty} fleetId={fleetId} submit={{ label: `Retire ${party.name}`, pending: 'Retiring…', kind: 'destructive' }} testId=\"outside-party-retire-form\">\n <input type=\"hidden\" name=\"name\" value={party.name} />\n </ActionForm>\n <div>\n <a className={BUTTONS.secondary} href={inFleet(partyPath(party.name), fleetId)}>\n Cancel\n </a>\n </div>\n </section>\n </div>\n );\n}\n","import type { Metadata } from 'next';\n\nimport { RetireParty } from '../../../../features/outside-party/ui/retire-party';\nimport { partyPath } from '../../../../features/outside-parties/paths';\nimport { NoSignIn } from '../../../../features/sign-in/ui/no-sign-in';\nimport { signedInPage, type SearchParams } from '../../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Outside parties' };\n\nexport default async function RetirePartyPage({ params, searchParams }: { params: Promise<{ name: string }>; searchParams: Promise<SearchParams> }) {\n const { name } = await params;\n const page = await signedInPage({ path: partyPath(name, 'retire'), searchParams: await searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n return <RetireParty page={page} name={name} />;\n}\n"],"names":["RetireParty","page","name","api","fleetId","read","parties","get","query","isOk","className","refusal","party","value","proxyShipId","action","submit","label","pending","kind","testId","type","secondary","href"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- module.exports=[16457,a=>{"use strict";let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/web/app/overview/error.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/app/overview/error.tsx","default");a.s(["default",0,b])},701,a=>{"use strict";var b=a.i(16457);a.n(b)},42849,function(a){a.n(a.i(701))}];
2
-
3
- //# sourceMappingURL=web_app_overview_error_tsx_0qlcwxupzw726._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/app/overview/error.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/app/overview/error.tsx%22%20%7D"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport default registerClientReference(\n function() { throw new Error(\"Attempted to call the default export of [project]/web/app/overview/error.tsx from the server, but it's 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/app/overview/error.tsx\",\n \"default\",\n);\n"],"names":["Error"],"mappings":"6CAEe,CAAA,EADf,AACe,EADf,CAAA,CAAA,OACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAIA,MAAM,wQAA0Q,EACvS,uCACA","ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/overview/ui/overview-failed.tsx","../../../../../web/app/overview/error.tsx"],"sourcesContent":["/** The Overview could not be read: why, and the way to try again. */\nexport function OverviewFailed({ message, onTryAgain }: { message: string; onTryAgain: () => void }) {\n return (\n <section role=\"alert\" className=\"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm\">\n <h2 className=\"text-heading font-semibold\">The Overview could not be read</h2>\n <p data-testid=\"overview-failed-reason\" className=\"mt-2 text-muted-foreground\">\n {message === '' ? 'The gateway did not answer.' : message} Try again in a moment.\n </p>\n <div className=\"mt-4\">\n <button type=\"button\" onClick={onTryAgain} className=\"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover\">\n Try again\n </button>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { OverviewFailed } from '../../features/overview/ui/overview-failed';\n\nexport default function OverviewError({ error, reset }: { error: Error; reset: () => void }) {\n return <OverviewFailed message={error.message} onTryAgain={reset} />;\n}\n"],"names":["OverviewFailed","message","onTryAgain","role","className","type","onClick"],"mappings":"wDACO,SAASA,EAAe,SAAEC,CAAO,YAAEC,CAAU,CAA+C,EACjG,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQC,KAAK,QAAQC,UAAU,uFAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,sCAA6B,mCAC3C,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,cAAY,yBAAyBA,UAAU,uCACnC,KAAZH,EAAiB,8BAAgCA,EAAQ,6BAE5D,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIG,UAAU,gBACb,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOC,KAAK,SAASC,QAASJ,EAAYE,UAAU,kHAAyG,kBAMtK,kBCXe,SAAS,AAAc,OAAE,CAAK,OAAE,CAAK,CAAuC,EACzF,MAAOD,CAAAA,EAAAA,EAAAA,GAAAA,EAAC,EAAA,CAAe,QAAS,EAAM,OAAO,CAAE,WAAY,GAC7D"}
@@ -1,3 +0,0 @@
1
- module.exports=[27449,a=>{"use strict";var b=a.i(7997),c=a.i(33621),d=a.i(66680),e=a.i(66283),f=a.i(69372),g=a.i(49144),h=a.i(69912),i=a.i(65253),j=a.i(98323),k=a.i(5901);function l({party:a,fleetId:c}){return(0,b.jsxs)("div",{className:"grid gap-2",children:["awaitingCrew"===a.state?(0,b.jsxs)(f.ActionForm,{action:k.P,fleetId:c,submit:{label:"Crew",pending:"Crewing…"},className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("input",{type:"hidden",name:"name",value:a.name}),(0,b.jsx)("input",{className:g.w,name:"secret",placeholder:"secret from a new starting prompt",required:!0})]}):null,"mcpServer"===a.kind&&"crewed"===a.state?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.ActionForm,{action:k.g,fleetId:c,submit:{label:"State its tools",pending:"Stating…",kind:"secondary"},children:(0,b.jsx)("input",{type:"hidden",name:"name",value:a.name})}),(0,b.jsxs)(f.ActionForm,{action:k.p,fleetId:c,submit:{label:"Mark",pending:"Marking…",kind:"secondary"},className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("input",{type:"hidden",name:"name",value:a.name}),(0,b.jsx)("input",{className:g.w,name:"tool",placeholder:"tool",required:!0,maxLength:128}),(0,b.jsxs)("label",{className:"flex items-center gap-1",children:[(0,b.jsx)("input",{type:"checkbox",name:"isRepeatable"})," repeatable"]})]})]}):null]})}function m({fleetId:a,owners:c}){return(0,b.jsxs)("section",{className:`${g.r} grid gap-3`,children:[(0,b.jsx)("h2",{className:"text-section font-semibold",children:"Approve an MCP server"}),(0,b.jsxs)(f.ActionForm,{action:k.L,fleetId:a,submit:{label:"Approve",pending:"Approving…"},testId:"parties-approve",children:[(0,b.jsx)("input",{type:"hidden",name:"requestId",value:(0,d.randomUUID)()}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Name, the proxy ship's"}),(0,b.jsx)("input",{className:g.w,name:"name",required:!0})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Streamable HTTP URL"}),(0,b.jsx)("input",{className:g.w,name:"url",type:"url",required:!0})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Credential"}),(0,b.jsxs)("select",{className:g.w,name:"credentialKind",children:[(0,b.jsx)("option",{value:"bearer",children:"Bearer token"}),(0,b.jsx)("option",{value:"clientCredentials",children:"OAuth client credentials"})]})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Bearer token"}),(0,b.jsx)("input",{className:g.w,name:"token",type:"password"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Client id"}),(0,b.jsx)("input",{className:g.w,name:"clientId"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Client secret"}),(0,b.jsx)("input",{className:g.w,name:"clientSecret",type:"password"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Issuer"}),(0,b.jsx)("input",{className:g.w,name:"issuer",type:"url"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Scope"}),(0,b.jsx)("input",{className:g.w,name:"scope"})]}),(0,b.jsx)(h.f,{choices:c.isOk?c.value:[],current:null,help:"A person ship or argo. It answers for this server.",refusal:c.isOk?void 0:c.refusal}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Calls at once"}),(0,b.jsx)("input",{className:g.w,name:"concurrencyLimit",type:"number",min:1,max:10,defaultValue:4})]})]})]})}async function n({page:a}){let{api:c,fleetId:d,scopes:f}=a,g=await (0,e.F)(c.parties.list.query()),h=f.includes("fleet:manage"),k=h?await (0,e.F)(c.parties.ownerChoices.query()):void 0;return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Parties"}),(0,b.jsx)("p",{className:"text-muted-foreground",children:"Outside MCP servers approved for this fleet, each behind its proxy ship."}),g.isOk?0===g.value.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"No party yet."}):(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full text-left","data-testid":"parties-table",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border",children:[(0,b.jsx)("th",{className:"p-2",children:"Name"}),(0,b.jsx)("th",{className:"p-2",children:"URL"}),(0,b.jsx)("th",{className:"p-2",children:"Credential"}),(0,b.jsx)("th",{className:"p-2",children:"State"}),(0,b.jsx)("th",{className:"p-2",children:"Proxy ship"}),(0,b.jsx)("th",{className:"p-2"})]})}),(0,b.jsx)("tbody",{children:g.value.map(a=>{let c=i.Y[a.state];return(0,b.jsxs)("tr",{className:"border-b border-border align-top",children:[(0,b.jsx)("td",{className:"p-2",children:a.name}),(0,b.jsx)("td",{className:"p-2 font-mono",children:"mcpServer"===a.kind?a.url:a.clientId}),(0,b.jsx)("td",{className:"p-2",children:"mcpServer"===a.kind?a.credentialKind:"MCP client"}),(0,b.jsx)("td",{className:"p-2",children:(0,b.jsx)(j.T,{tone:c.tone,label:c.label})}),(0,b.jsx)("td",{className:"p-2",children:a.proxyShipName??""}),(0,b.jsx)("td",{className:"p-2",children:h?(0,b.jsx)(l,{party:a,fleetId:d}):null})]},a.name)})})]})}):(0,b.jsx)("p",{role:"alert",className:"text-tone-attention-fg",children:g.refusal}),void 0===k?null:(0,b.jsx)(m,{fleetId:d,owners:k})]})}var o=a.i(22126);async function p({searchParams:a}){let d=await (0,e._)({path:c.f,searchParams:await a});return"noSignIn"===d.kind?(0,b.jsx)(o.f,{}):(0,b.jsx)(n,{page:d})}a.s(["default",0,p,"metadata",0,{title:"Parties"}],27449)},81977,function(a){a.n(a.i(27449))}];
2
-
3
- //# sourceMappingURL=web_app_parties_page_tsx_1lilxm339jj89._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/app/parties/page.tsx","../../../../../web/features/parties/ui/parties.tsx"],"sourcesContent":["import type { Metadata } from 'next';\n\nimport { PARTIES_PATH } from '../../features/parties/paths';\nimport { Parties } from '../../features/parties/ui/parties';\nimport { NoSignIn } from '../../features/sign-in/ui/no-sign-in';\nimport { signedInPage, type SearchParams } from '../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Parties' };\n\nexport default async function PartiesPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n const page = await signedInPage({ path: PARTIES_PATH, searchParams: await searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n return <Parties page={page} />;\n}\n","import { randomUUID } from 'node:crypto';\n\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { ActionForm } from '../../forms/ui/action-form';\nimport { CARD, INPUT, LABEL } from '../../forms/ui/look';\nimport { OwnerField, type OwnerChoices } from '../../forms/ui/owner-field';\nimport { PARTY_STATES, type ListedParty } from '../../outside-parties/party-kinds';\nimport { StatusBadge } from '../../outside-parties/ui/status-badge';\nimport { approveParty, crewParty, markTool, stateParty } from '../actions';\n\n/** The scope that approves, crews and states parties (0056). */\nconst MANAGING_SCOPE = 'fleet:manage';\n\nfunction PartyForms({ party, fleetId }: { party: ListedParty; fleetId: string }) {\n return (\n <div className=\"grid gap-2\">\n {party.state === 'awaitingCrew' ? (\n <ActionForm action={crewParty} fleetId={fleetId} submit={{ label: 'Crew', pending: 'Crewing…' }} className=\"flex flex-wrap items-center gap-2\">\n <input type=\"hidden\" name=\"name\" value={party.name} />\n <input className={INPUT} name=\"secret\" placeholder=\"secret from a new starting prompt\" required />\n </ActionForm>\n ) : null}\n {party.kind === 'mcpServer' && party.state === 'crewed' ? (\n <>\n <ActionForm action={stateParty} fleetId={fleetId} submit={{ label: 'State its tools', pending: 'Stating…', kind: 'secondary' }}>\n <input type=\"hidden\" name=\"name\" value={party.name} />\n </ActionForm>\n <ActionForm action={markTool} fleetId={fleetId} submit={{ label: 'Mark', pending: 'Marking…', kind: 'secondary' }} className=\"flex flex-wrap items-center gap-2\">\n <input type=\"hidden\" name=\"name\" value={party.name} />\n <input className={INPUT} name=\"tool\" placeholder=\"tool\" required maxLength={128} />\n <label className=\"flex items-center gap-1\">\n <input type=\"checkbox\" name=\"isRepeatable\" /> repeatable\n </label>\n </ActionForm>\n </>\n ) : null}\n </div>\n );\n}\n\nfunction ApproveForm({ fleetId, owners }: { fleetId: string; owners: OwnerChoices }) {\n return (\n <section className={`${CARD} grid gap-3`}>\n <h2 className=\"text-section font-semibold\">Approve an MCP server</h2>\n <ActionForm action={approveParty} fleetId={fleetId} submit={{ label: 'Approve', pending: 'Approving…' }} testId=\"parties-approve\">\n <input type=\"hidden\" name=\"requestId\" value={randomUUID()} />\n <label className={LABEL}>\n <span>Name, the proxy ship&apos;s</span>\n <input className={INPUT} name=\"name\" required />\n </label>\n <label className={LABEL}>\n <span>Streamable HTTP URL</span>\n <input className={INPUT} name=\"url\" type=\"url\" required />\n </label>\n <label className={LABEL}>\n <span>Credential</span>\n <select className={INPUT} name=\"credentialKind\">\n <option value=\"bearer\">Bearer token</option>\n <option value=\"clientCredentials\">OAuth client credentials</option>\n </select>\n </label>\n <label className={LABEL}>\n <span>Bearer token</span>\n <input className={INPUT} name=\"token\" type=\"password\" />\n </label>\n <label className={LABEL}>\n <span>Client id</span>\n <input className={INPUT} name=\"clientId\" />\n </label>\n <label className={LABEL}>\n <span>Client secret</span>\n <input className={INPUT} name=\"clientSecret\" type=\"password\" />\n </label>\n <label className={LABEL}>\n <span>Issuer</span>\n <input className={INPUT} name=\"issuer\" type=\"url\" />\n </label>\n <label className={LABEL}>\n <span>Scope</span>\n <input className={INPUT} name=\"scope\" />\n </label>\n <OwnerField choices={owners.isOk ? owners.value : []} current={null} help=\"A person ship or argo. It answers for this server.\" refusal={owners.isOk ? undefined : owners.refusal} />\n <label className={LABEL}>\n <span>Calls at once</span>\n <input className={INPUT} name=\"concurrencyLimit\" type=\"number\" min={1} max={10} defaultValue={4} />\n </label>\n </ActionForm>\n </section>\n );\n}\n\n/**\n * The Parties page (header design H5: argo's page, now for accounts by\n * scope): the fleet's outside MCP servers, each behind its proxy ship, and\n * for an account holding fleet:manage the forms that approve, crew, state\n * and mark them.\n */\nexport async function Parties({ page }: { page: SignedInPage }) {\n const { api, fleetId, scopes } = page;\n const parties = await readOf(api.parties.list.query());\n const canManage = scopes.includes(MANAGING_SCOPE);\n const owners = canManage ? await readOf(api.parties.ownerChoices.query()) : undefined;\n return (\n <div className=\"grid gap-4\">\n <h1 className=\"text-title font-semibold\">Parties</h1>\n <p className=\"text-muted-foreground\">Outside MCP servers approved for this fleet, each behind its proxy ship.</p>\n {!parties.isOk ? (\n <p role=\"alert\" className=\"text-tone-attention-fg\">\n {parties.refusal}\n </p>\n ) : parties.value.length === 0 ? (\n <p className=\"text-muted-foreground\">No party yet.</p>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-left\" data-testid=\"parties-table\">\n <thead>\n <tr className=\"border-b border-border\">\n <th className=\"p-2\">Name</th>\n <th className=\"p-2\">URL</th>\n <th className=\"p-2\">Credential</th>\n <th className=\"p-2\">State</th>\n <th className=\"p-2\">Proxy ship</th>\n <th className=\"p-2\" />\n </tr>\n </thead>\n <tbody>\n {parties.value.map((party) => {\n const state = PARTY_STATES[party.state];\n return (\n <tr key={party.name} className=\"border-b border-border align-top\">\n <td className=\"p-2\">{party.name}</td>\n <td className=\"p-2 font-mono\">{party.kind === 'mcpServer' ? party.url : party.clientId}</td>\n <td className=\"p-2\">{party.kind === 'mcpServer' ? party.credentialKind : 'MCP client'}</td>\n <td className=\"p-2\">\n <StatusBadge tone={state.tone} label={state.label} />\n </td>\n <td className=\"p-2\">{party.proxyShipName ?? ''}</td>\n <td className=\"p-2\">{canManage ? <PartyForms party={party} fleetId={fleetId} /> : null}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n {owners === undefined ? null : <ApproveForm fleetId={fleetId} owners={owners} />}\n </div>\n );\n}\n"],"names":["MANAGING_SCOPE","PartyForms","party","fleetId","className","state","action","submit","label","pending","type","name","value","placeholder","required","kind","maxLength","ApproveForm","owners","testId","choices","isOk","current","help","refusal","undefined","min","max","defaultValue","Parties","page","api","scopes","parties","list","query","canManage","includes","ownerChoices","role","length","map","url","clientId","credentialKind","tone","proxyShipName"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[88412,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},35149,a=>{var b=a.i(87924),c=a.i(88412);a.s(["f",0,function({choices:a,current:d,help:e,refusal:f}){let g=null===d||a.some(a=>a.shipId===d.shipId)?a:[d,...a];return(0,b.jsxs)("label",{className:c.z,children:[(0,b.jsx)("span",{children:"Owner"}),(0,b.jsxs)("select",{className:c.w,name:"ownerShipId",defaultValue:d?.shipId??"",required:!0,"data-testid":"owner-field",children:[null===d?(0,b.jsx)("option",{value:"",disabled:!0,children:"Pick its owner"}):null,g.map(a=>(0,b.jsx)("option",{value:a.shipId,children:a.name},a.shipId))]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:f??e})]})}])},25964,a=>{var b=a.i(50944),c=a.i(72131);a.s(["LiveRefresh",0,function({fleetId:a}){let d;return d=(0,b.useRouter)(),(0,c.useEffect)(()=>{let b=new EventSource(`/overview/changes?fleet=${encodeURIComponent(a)}`);return b.onmessage=()=>{d.refresh()},()=>{b.close()}},[a,d]),null}],25964)},1542,24229,a=>{var b=a.i(87924);let c={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};a.s(["f",0,function({isPending:a,pendingLabel:d,variant:e="secondary",children:f,className:g="",disabled:h,...i}){return(0,b.jsx)("button",{...i,disabled:!0===h||a,"aria-busy":a,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${c[e]} ${g}`,children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),d]}):f})}],1542),a.s(["f",0,function({message:a,isFailure:c}){return c?(0,b.jsx)("p",{role:"alert","data-testid":"overview-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a}):(0,b.jsx)("p",{role:"status","data-testid":"overview-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a})}],24229)}]})();
2
-
3
- //# sourceMappingURL=web_features_0k3zd1eymtkgq._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/owner-field.tsx","../../../../../web/features/overview/hooks/use-live-refresh.ts","../../../../../web/features/overview/state/live-refresh.tsx","../../../../../web/features/overview/ui/action-button.tsx","../../../../../web/features/overview/ui/notice.tsx"],"sourcesContent":["/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","import { INPUT, LABEL } from './look';\n\n/** A ship a party's owner may be picked from, by its name. */\nexport interface OwnerChoice {\n shipId: string;\n name: string;\n}\n\n/** The owner choices as a page read them, or why they could not be read. */\nexport type OwnerChoices = { isOk: true; value: OwnerChoice[] } | { isOk: false; refusal: string };\n\n/**\n * The owner of a party, picked by name from the ships the fleet takes as an\n * owner. The owner it has now stays a choice, though the fleet no longer\n * lists it, so saving leaves it as it is. Where the choices could not be\n * read, it says why, with nothing to pick.\n */\nexport function OwnerField({ choices, current, help, refusal }: { choices: readonly OwnerChoice[]; current: OwnerChoice | null; help: string; refusal?: string | undefined }) {\n const shown = current === null || choices.some((choice) => choice.shipId === current.shipId) ? choices : [current, ...choices];\n return (\n <label className={LABEL}>\n <span>Owner</span>\n <select className={INPUT} name=\"ownerShipId\" defaultValue={current?.shipId ?? ''} required data-testid=\"owner-field\">\n {current === null ? (\n <option value=\"\" disabled>\n Pick its owner\n </option>\n ) : null}\n {shown.map((choice) => (\n <option key={choice.shipId} value={choice.shipId}>\n {choice.name}\n </option>\n ))}\n </select>\n <span className=\"text-muted-foreground\">{refusal ?? help}</span>\n </label>\n );\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** The page's live updates, which the web app's server follows on the gateway's API for the browser. */\nexport const CHANGES_PATH = '/overview/changes';\n\n/**\n * Keeps the page in step with its fleet's requests: whenever one changes,\n * the page reads itself again on the server, as its own caller. The browser\n * opens the stream again by itself when it drops.\n */\nexport function useLiveRefresh(fleetId: string): void {\n const router = useRouter();\n useEffect(() => {\n const changes = new EventSource(`${CHANGES_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n changes.onmessage = () => {\n router.refresh();\n };\n return () => {\n changes.close();\n };\n }, [fleetId, router]);\n}\n","'use client';\n\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\n\n/** Keeps the page it sits in live: it shows nothing itself. */\nexport function LiveRefresh({ fleetId }: { fleetId: string }) {\n useLiveRefresh(fleetId);\n return null;\n}\n","import type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nconst VARIANTS = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'border border-border bg-card text-card-foreground hover:bg-accent',\n} as const;\n\n/**\n * A button for an action: the moment it is pressed and until the answer\n * comes, it shows a spinner and its working label, and cannot run twice.\n */\nexport function ActionButton({\n isPending,\n pendingLabel,\n variant = 'secondary',\n children,\n className = '',\n disabled,\n ...button\n}: ButtonHTMLAttributes<HTMLButtonElement> & { isPending: boolean; pendingLabel: string; variant?: keyof typeof VARIANTS; children: ReactNode }) {\n return (\n <button\n {...button}\n disabled={disabled === true || isPending}\n aria-busy={isPending}\n className={`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${VARIANTS[variant]} ${className}`}\n >\n {isPending ? (\n <>\n <span aria-hidden=\"true\" className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {pendingLabel}\n </>\n ) : (\n children\n )}\n </button>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <p role=\"alert\" data-testid=\"overview-failure\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {message}\n </p>\n ) : (\n <p role=\"status\" data-testid=\"overview-success\" className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {message}\n </p>\n );\n}\n"],"names":["CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","OwnerField","choices","current","help","refusal","shown","some","choice","shipId","className","name","defaultValue","required","value","disabled","map","CHANGES_PATH","useLiveRefresh","fleetId","router","changes","EventSource","encodeURIComponent","onmessage","refresh","close","VARIANTS","ActionButton","isPending","pendingLabel","variant","children","button"],"mappings":"6CAGA,IAAMC,EAAS,oGAEFC,EAAU,CACrBC,QAAS,CAAA,EAAGF,EAAO,0DAA0D,CAAC,CAC9EG,UAAW,CAAA,EAAGH,EAAO,6CAA6C,CAAC,CACnEI,YAAa,CAAA,EAAGJ,EAAO,2CAA2C,CAAC,AACrE,qBARoB,mFAYC,yFAEA,2CCfrB,EAAA,EAAA,CAAA,CAAA,kBAiBO,SAASO,AAAW,SAAEC,CAAO,SAAEC,CAAO,MAAEC,CAAI,CAAEC,SAAO,CAAgH,EAC1K,IAAMC,EAAoB,OAAZH,GAAoBD,EAAQK,IAAI,CAAC,AAACC,GAAWA,EAAOC,MAAM,GAAKN,EAAQM,MAAM,EAAIP,EAAU,CAACC,KAAYD,EAAQ,CAC9H,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAMQ,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,UACN,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOA,UAAW,EAAA,CAAK,CAAEC,KAAK,cAAcC,aAAcT,GAASM,QAAU,GAAII,QAAQ,CAAA,CAAA,EAAC,cAAY,wBACxF,OAAZV,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOW,MAAM,GAAGC,QAAQ,CAAA,CAAA,WAAC,mBAGxB,KACHT,EAAMU,GAAG,CAAC,AAACR,GACV,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAA2BM,MAAON,EAAOC,MAAM,UAC7CD,EAAOG,IAAI,EADDH,EAAOC,MAAM,MAK9B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKC,UAAU,iCAAyBL,GAAWD,MAG1D,eCnCA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,4BCEO,SAAS,AAAY,CAAE,SAAO,CAAuB,QAE1D,ODOMgB,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IACxB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAMC,EAAU,IAAIC,YAAY,GAAGL,aAAa,OAAO,IAAEM,mBAAmBJ,IAAU,EAItF,OAHAE,EAAQG,SAAS,CAAG,KAClBJ,EAAOK,OAAO,EAChB,EACO,KACLJ,EAAQK,KAAK,EACf,CACF,EAAG,CCjBY,EDiBFN,EAAO,EChBb,IACT,2CCNA,IAAMO,EAAW,CACf/B,QAAS,4DACTC,UAAW,mEACb,aAMO,SAAS+B,AAAa,WAC3BC,CAAS,cACTC,CAAY,SACZC,EAAU,WAAW,UACrBC,CAAQ,WACRtB,EAAY,EAAE,UACdK,CAAQ,CACR,GAAGkB,EAC0I,EAC7I,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACE,GAAGA,CAAM,CACVlB,UAAuB,IAAbA,GAAqBc,EAC/B,YAAWA,EACXnB,UAAW,CAAC,mGAAmG,EAAEiB,CAAQ,CAACI,EAAQ,CAAC,CAAC,EAAErB,EAAAA,CAAW,UAEhJmB,EACC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,cAAY,OAAOnB,UAAU,oFAClCoB,KAGHE,GAIR,oBCpCO,SAAS,AAAO,SAAE,CAAO,WAAE,CAAS,CAA2C,EACpF,OAAO,EACL,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,KAAK,QAAQ,cAAY,mBAAmB,UAAU,gHACtD,IAGH,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,KAAK,SAAS,cAAY,mBAAmB,UAAU,2FACvD,GAGP"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[38203,a=>{a.s(["r",0,"holder","e",0,"/authorize/waiting","U",0,function(a,b){let c=Math.max(0,Math.floor((a.getTime()-b.getTime())/36e5));return`${String(Math.floor(c/24))} d ${String(c%24)} h`}])},819,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(88412),e=a.i(38203);a.s(["PickHolder",0,function({fields:a}){let[f,g]=(0,c.useState)(void 0),h=(0,c.useRef)(!1),i=a=>()=>{h.current||g(a)};return(0,b.jsxs)("form",{method:"get",action:"/authorize/sign-in",onSubmit:a=>{h.current?a.preventDefault():h.current=!0},className:"grid gap-3 sm:grid-cols-2",children:[a.map(([a,c])=>(0,b.jsx)("input",{type:"hidden",name:a,value:c},a)),(0,b.jsxs)("button",{type:"submit",name:e.r,value:"account",onClick:i("account"),"aria-busy":"account"===f,"data-testid":"authorize-pick-account",className:`${d.r} grid gap-1 text-left hover:bg-accent`,children:[(0,b.jsx)("strong",{children:"account"===f?"Signing in...":"Sign in as yourself"}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"The client acts as you."})]}),(0,b.jsxs)("button",{type:"submit",name:e.r,value:"party",onClick:i("party"),"aria-busy":"party"===f,"data-testid":"authorize-pick-party",className:`${d.r} grid gap-1 text-left hover:bg-accent`,children:[(0,b.jsx)("strong",{children:"party"===f?"Signing in...":"Ask for access for this client"}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"An approver of your fleet decides; the client then acts as its own party."})]})]})}])},88412,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])}]})();
2
-
3
- //# sourceMappingURL=web_features_0vq1wjkuh6dmr._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/authorize/services/authorize.ts","../../../../../web/features/authorize/ui/pick-holder.tsx","../../../../../web/features/forms/ui/look.ts"],"sourcesContent":["/**\n * What the authorize pages work out: the time a request waiting for\n * approval has left, why a browser got nowhere connecting an MCP client,\n * and the authorization request the pick page carries on to the sign-in.\n */\nimport type { SearchParams } from '../../../lib/gateway-api/page-api';\n\nconst MS_PER_HOUR = 3_600_000;\nconst HOURS_PER_DAY = 24;\n\n/** The time a request has left, in days and hours, as the waiting page's ring shows it. */\nexport function timeLeft(expiresAt: Date, now: Date): string {\n const hours = Math.max(0, Math.floor((expiresAt.getTime() - now.getTime()) / MS_PER_HOUR));\n return `${String(Math.floor(hours / HOURS_PER_DAY))} d ${String(hours % HOURS_PER_DAY)} h`;\n}\n\nconst START_AGAIN = 'Start again from your MCP client.';\n\n/** Why a browser got nowhere, as the gateway's authorize doors name it (src/adapters/http/oauth-routes.ts). */\nconst REASONS: Record<string, string> = {\n invalidClient: `The gateway does not know this MCP client, or the address it asks to be sent back to. ${START_AGAIN}`,\n noPick: 'Pick on the page whether to sign in as yourself or to ask for access for the client.',\n unknownSignIn: `This sign-in is unknown, or took over 10 minutes. ${START_AGAIN}`,\n otherBrowser: `This sign-in was started in another browser, so it is not yours to finish. ${START_AGAIN}`,\n fleetNotServed: 'This gateway does not serve the fleet you signed in to.',\n outsidePartiesOff: \"Your fleet's outside parties are off, so no MCP client can ask for access. Sign in as yourself instead, or ask whoever runs your fleet.\",\n pagasaeRefused: `The sign-in service did not sign you in. ${START_AGAIN}`,\n unknownWaiting: `This request is unknown, or ended long ago. ${START_AGAIN}`,\n otherBrowserWaiting: `This request was made in another browser, so it is not yours to follow. ${START_AGAIN}`,\n noSignIn: 'This gateway signs no one in, so no MCP client can connect to it: its operator sets pagasae first.',\n};\n\nconst UNKNOWN_REASON = `The connection did not go through. ${START_AGAIN}`;\n\nexport function failedReasonText(reason: string | undefined): string {\n return (reason === undefined ? undefined : REASONS[reason]) ?? UNKNOWN_REASON;\n}\n\n/** The gateway's waiting address, which sends the browser on once its request no longer waits. */\nexport const WAITING_DOOR = '/authorize/waiting';\n\n/** The pick the page adds to the request, as the sign-in door reads it. */\nexport const HOLDER_FIELD = 'holder';\n\n/** The request's parameters the browser sent once each, without a pick: the page adds its own. */\nexport function pickFieldsOf(searchParams: SearchParams): [string, string][] {\n return Object.entries(searchParams).flatMap(([name, value]) => (typeof value === 'string' && name !== HOLDER_FIELD ? [[name, value]] : []));\n}\n","'use client';\n\nimport { useRef, useState, type SyntheticEvent } from 'react';\n\nimport { CARD } from '../../forms/ui/look';\nimport { HOLDER_FIELD } from '../services/authorize';\n\ntype Holder = 'account' | 'party';\n\n/** The sign-in door that starts the sign-in through pagasae for the pick. */\nconst SIGN_IN_DOOR = '/authorize/sign-in';\n\n/**\n * The two picks (Q1 a), each starting a sign-in through pagasae. The\n * button pressed says the sign-in is on its way at once; a second press\n * meanwhile sends nothing. The buttons stay enabled, so the browser still\n * sends the pick.\n */\nexport function PickHolder({ fields }: { fields: readonly [string, string][] }) {\n const [picked, setPicked] = useState<Holder | undefined>(undefined);\n const isSent = useRef(false);\n const onSubmit = (event: SyntheticEvent<HTMLFormElement>) => {\n if (isSent.current) {\n event.preventDefault();\n return;\n }\n isSent.current = true;\n };\n const pick = (holder: Holder) => () => {\n if (!isSent.current) {\n setPicked(holder);\n }\n };\n return (\n <form method=\"get\" action={SIGN_IN_DOOR} onSubmit={onSubmit} className=\"grid gap-3 sm:grid-cols-2\">\n {fields.map(([name, value]) => (\n <input key={name} type=\"hidden\" name={name} value={value} />\n ))}\n <button type=\"submit\" name={HOLDER_FIELD} value=\"account\" onClick={pick('account')} aria-busy={picked === 'account'} data-testid=\"authorize-pick-account\" className={`${CARD} grid gap-1 text-left hover:bg-accent`}>\n <strong>{picked === 'account' ? 'Signing in...' : 'Sign in as yourself'}</strong>\n <span className=\"text-muted-foreground\">The client acts as you.</span>\n </button>\n <button type=\"submit\" name={HOLDER_FIELD} value=\"party\" onClick={pick('party')} aria-busy={picked === 'party'} data-testid=\"authorize-pick-party\" className={`${CARD} grid gap-1 text-left hover:bg-accent`}>\n <strong>{picked === 'party' ? 'Signing in...' : 'Ask for access for this client'}</strong>\n <span className=\"text-muted-foreground\">An approver of your fleet decides; the client then acts as its own party.</span>\n </button>\n </form>\n );\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n"],"names":["MS_PER_HOUR","HOURS_PER_DAY","timeLeft","expiresAt","now","hours","Math","max","floor","getTime","String","START_AGAIN","REASONS","invalidClient","noPick","unknownSignIn","otherBrowser","fleetNotServed","outsidePartiesOff","pagasaeRefused","unknownWaiting","otherBrowserWaiting","noSignIn","UNKNOWN_REASON","failedReasonText","reason","undefined","WAITING_DOOR","HOLDER_FIELD","pickFieldsOf","searchParams","Object","entries","flatMap","name","value","SIGN_IN_DOOR","PickHolder","fields","picked","setPicked","isSent","onSubmit","event","current","preventDefault","pick","holder","method","action","className","map","type","onClick","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL"],"mappings":"wDA0C4B,eAHA,2BA5BrB,SAAkBG,AAATD,CAAwB,CAAEE,CAAS,EACjD,IAAMC,EAAQC,KAAKC,GAAG,CAAC,EAAGD,KAAKE,KAAK,CAAC,AAACL,GAAUM,OAAO,GAAKL,EAAIK,OAAO,EAAA,CAAE,CALvD,GAK2DT,IAC7E,MAAO,CAAA,EAAGU,OAAOJ,KAAKE,KAAK,CAACH,OAAwB,CAAhBJ,EAAmB,EAAES,OAAOL,EAL5C,IAKmE,EAAfJ,AAAiB,CAC3F,AAD4F,8BCX5F,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,2BAaO,SAASoC,AAAW,QAAEC,CAAM,CAA2C,EAC5E,GAAM,CAACC,EAAQC,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,OAAqBd,GACnDe,EAAS,CAAA,EAAA,EAAA,MAAA,AAAM,EAAC,IAQhBK,EAAO,AAACC,GAAmB,KAC3B,AAACN,EAAOG,OAAO,EAAE,AACnBJ,EAAUO,EAEd,EACA,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKC,OAAO,MAAMC,OAxBF,CAwBUb,oBAAcM,SAb1B,AAACC,CAamCD,GAZnD,AAAID,EAAOG,OAAO,CAChBD,CADkB,CACZE,cAAc,GAGtBJ,EAAOG,OAAO,EAAG,CACnB,EAO+DM,UAAU,sCACpEZ,EAAOa,GAAG,CAAC,CAAC,CAACjB,EAAMC,EAAM,GACxB,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAiBiB,KAAK,SAASlB,KAAMA,EAAMC,MAAOA,GAAvCD,IAEd,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOkB,KAAK,SAASlB,KAAM,EAAA,CAAY,CAAEC,MAAM,UAAUkB,QAASP,EAAK,WAAY,YAAsB,YAAXP,EAAsB,cAAY,yBAAyBW,UAAW,CAAA,EAAG,EAAA,CAAI,CAAC,qCAAqC,CAAC,WACjN,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAmB,YAAXX,EAAuB,gBAAkB,wBAClD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKW,UAAU,iCAAwB,+BAE1C,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOE,KAAK,SAASlB,KAAM,EAAA,CAAY,CAAEC,MAAM,QAAQkB,QAASP,EAAK,SAAU,YAAsB,UAAXP,EAAoB,cAAY,uBAAuBW,UAAW,CAAA,EAAG,EAAA,CAAI,CAAC,qCAAqC,CAAC,WACzM,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAmB,UAAXX,EAAqB,gBAAkB,mCAChD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKW,UAAU,iCAAwB,mFAIhD,eC7CA,IAAMK,EAAS,oGAEFC,EAAU,CACrBC,QAAS,CAAA,EAAGF,EAAO,0DAA0D,CAAC,CAC9EG,UAAW,CAAA,EAAGH,EAAO,6CAA6C,CAAC,CACnEI,YAAa,CAAA,EAAGJ,EAAO,2CAA2C,CAAC,AACrE,qBARoB,mFAYC,yFAEA"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[30587,36855,77237,a=>{a.s(["H",0,"fleet","Q",0,{kind:"idle"}],30587);var b=a.i(87924);a.s(["f",0,function({state:a,testId:c}){switch(a.kind){case"idle":return null;case"done":return(0,b.jsx)("p",{role:"status","data-testid":c,className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a.message});case"refused":case"openNetwork":return(0,b.jsx)("p",{role:"alert","data-testid":c,className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a.message})}}],36855);var c=a.i(35112),d=a.i(88412);a.s(["f",0,function({children:a,pending:e,kind:f="primary",testId:g}){let h=(0,c.useFormStatus)();return(0,b.jsx)("button",{type:"submit",className:d.x[f],disabled:h.pending,"aria-busy":h.pending,"data-testid":g,children:h.pending?e:a})}],77237)},88412,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},35149,a=>{var b=a.i(87924),c=a.i(88412);a.s(["f",0,function({choices:a,current:d,help:e,refusal:f}){let g=null===d||a.some(a=>a.shipId===d.shipId)?a:[d,...a];return(0,b.jsxs)("label",{className:c.z,children:[(0,b.jsx)("span",{children:"Owner"}),(0,b.jsxs)("select",{className:c.w,name:"ownerShipId",defaultValue:d?.shipId??"",required:!0,"data-testid":"owner-field",children:[null===d?(0,b.jsx)("option",{value:"",disabled:!0,children:"Pick its owner"}):null,g.map(a=>(0,b.jsx)("option",{value:a.shipId,children:a.name},a.shipId))]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:f??e})]})}])}]})();
2
-
3
- //# sourceMappingURL=web_features_forms_03k1kg82ux_ee._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/forms/form-state.ts","../../../../../web/features/forms/ui/outcome.tsx","../../../../../web/features/forms/ui/submit-button.tsx","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/owner-field.tsx"],"sourcesContent":["/**\n * What a page's form (a server action) answers the browser: nothing yet,\n * done with what changed, or refused with why, as the API said it. The\n * open network's warning asks for a confirm (interop I-3).\n */\nexport type FormState =\n | { kind: 'idle' }\n | { kind: 'done'; message: string }\n | { kind: 'refused'; message: string }\n | { kind: 'openNetwork'; message: string };\n\nexport const IDLE: FormState = { kind: 'idle' };\n\n/** A form's text field, empty when it was not sent. */\nexport function fieldOf(form: FormData, name: string): string {\n const value = form.get(name);\n return typeof value === 'string' ? value : '';\n}\n\n/** The form's fields as text, files left out. */\nexport function fieldsOf(form: FormData): Record<string, string> {\n return Object.fromEntries([...form.entries()].flatMap(([name, value]) => (typeof value === 'string' ? [[name, value]] : [])));\n}\n\n/** The fleet a page's form names: the page's own, sent in a hidden field. */\nexport const FLEET_FIELD = 'fleet';\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","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useFormStatus } from 'react-dom';\n\nimport { BUTTONS, type ButtonKind } from './look';\n\n/** A form's button: it says the form is on its way at once, and takes no second press meanwhile. */\nexport function SubmitButton({ children, pending, kind = 'primary', testId }: { children: ReactNode; pending: string; kind?: ButtonKind; testId?: string }) {\n const status = useFormStatus();\n return (\n <button type=\"submit\" className={BUTTONS[kind]} disabled={status.pending} aria-busy={status.pending} data-testid={testId}>\n {status.pending ? pending : children}\n </button>\n );\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","import { INPUT, LABEL } from './look';\n\n/** A ship a party's owner may be picked from, by its name. */\nexport interface OwnerChoice {\n shipId: string;\n name: string;\n}\n\n/** The owner choices as a page read them, or why they could not be read. */\nexport type OwnerChoices = { isOk: true; value: OwnerChoice[] } | { isOk: false; refusal: string };\n\n/**\n * The owner of a party, picked by name from the ships the fleet takes as an\n * owner. The owner it has now stays a choice, though the fleet no longer\n * lists it, so saving leaves it as it is. Where the choices could not be\n * read, it says why, with nothing to pick.\n */\nexport function OwnerField({ choices, current, help, refusal }: { choices: readonly OwnerChoice[]; current: OwnerChoice | null; help: string; refusal?: string | undefined }) {\n const shown = current === null || choices.some((choice) => choice.shipId === current.shipId) ? choices : [current, ...choices];\n return (\n <label className={LABEL}>\n <span>Owner</span>\n <select className={INPUT} name=\"ownerShipId\" defaultValue={current?.shipId ?? ''} required data-testid=\"owner-field\">\n {current === null ? (\n <option value=\"\" disabled>\n Pick its owner\n </option>\n ) : null}\n {shown.map((choice) => (\n <option key={choice.shipId} value={choice.shipId}>\n {choice.name}\n </option>\n ))}\n </select>\n <span className=\"text-muted-foreground\">{refusal ?? help}</span>\n </label>\n );\n}\n"],"names":["IDLE","kind","fieldOf","form","name","value","get","fieldsOf","Object","fromEntries","entries","flatMap","FLEET_FIELD","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","OwnerField","choices","current","help","refusal","shown","some","choice","shipId","className","defaultValue","required","disabled","map"],"mappings":"oEAyB2B,cAdI,CAAEC,KAAM,MAAO,sCCRvC,SAAS,AAAQ,OAAE,CAAK,QAAE,CAAM,CAAyC,EAC9E,OAAQ,EAAM,IAAI,EAChB,IAAK,OACH,OAAO,IACT,KAAK,OACH,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,KAAK,SAAS,cAAa,EAAQ,UAAU,2FAC7C,EAAM,OAAO,EAGpB,KAAK,UACL,IAAK,cACH,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEG,KAAK,QAAQ,cAAa,EAAQ,UAAUC,gHAC5C,EAAM,OAAO,EAGtB,CACF,UClBA,IAAA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,kBAGO,SAAS,AAAa,CAAE,UAAQ,SAAE,CAAO,MAAE,EAAO,SAAS,QAAE,CAAM,CAAgF,EACxJ,IAAMJ,EAAS,CAAA,EAAA,EAAA,aAAA,AAAa,IAC5B,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,KAAK,SAAS,UAAW,EAAA,CAAO,CAAC,EAAK,CAAEC,SAAU,EAAO,OAAOE,CAAE,YAAW,EAAO,OAAO,CAAE,cAAa,WAC/G,EAAO,OAAOC,CAAG,EAAU,GAGlC,qBCZA,IAAMS,EAAS,oGAEFC,EAAU,CACrBC,QAAS,CAAA,EAAGF,EAAO,0DAA0D,CAAC,CAC9EG,UAAW,CAAA,EAAGH,EAAO,6CAA6C,CAAC,CACnEI,YAAa,CAAA,EAAGJ,EAAO,2CAA2C,CAAC,AACrE,qBARoB,mFAYC,yFAEA,2CCfrB,EAAA,EAAA,CAAA,CAAA,kBAiBO,SAAoB,AAAXO,SAAaC,CAAO,SAAEC,CAAO,MAAEC,CAAI,SAAEC,CAAO,CAAgH,EAC1K,IAAMC,EAAoB,OAAZH,GAAoBD,EAAQK,IAAI,CAAC,AAACC,GAAWA,EAAOC,MAAM,GAAKN,EAAQM,MAAM,EAAIP,EAAU,CAACC,KAAYD,EAAQ,CAC9H,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAMQ,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,UACN,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOA,UAAW,EAAA,CAAK,CAAE1B,KAAK,cAAc2B,aAAcR,GAASM,QAAU,GAAIG,QAAQ,CAAA,CAAA,EAAC,cAAY,wBACxF,OAAZT,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOlB,MAAM,GAAG4B,QAAQ,CAAA,CAAA,WAAC,mBAGxB,KACHP,EAAMQ,GAAG,CAAC,AAACN,GACV,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAA2BvB,MAAOuB,EAAOC,MAAM,UAC7CD,EAAOxB,IAAI,EADDwB,EAAOC,MAAM,MAK9B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKC,UAAU,iCAAyBL,GAAWD,MAG1D"}