@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 +1 @@
1
- {"version":3,"sources":["../../../../../web/app/authorize/waiting/approval/page.tsx","../../../../../web/features/authorize/hooks/read-authorize.ts","../../../../../web/features/authorize/services/authorize.ts","../../../../../web/features/authorize/ui/waiting-for-approval.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/authorize/ui/waiting-for-approval.tsx%22%20%7D"],"sourcesContent":["import type { Metadata } from 'next';\nimport { redirect } from 'next/navigation';\n\nimport { readWaiting } from '../../../../features/authorize/hooks/read-authorize';\nimport { WAITING_DOOR } from '../../../../features/authorize/services/authorize';\nimport { WaitingForApproval } from '../../../../features/authorize/ui/waiting-for-approval';\nimport type { SearchParams } from '../../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Waiting for approval' };\n\nexport default async function WaitingPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n const { waiting } = await searchParams;\n const asked = typeof waiting === 'string' ? waiting : '';\n const read = await readWaiting(asked);\n if (read.kind === 'goOn') {\n // Whatever no longer waits, refused or decided, the gateway's waiting address says.\n redirect(`${WAITING_DOOR}?${new URLSearchParams({ waiting: asked }).toString()}`);\n }\n return <WaitingForApproval waiting={asked} clientName={read.clientName} expiresAt={read.expiresAt} shownAt={new Date().toISOString()} />;\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 WaitingForApproval = registerClientReference(\n function() { throw new Error(\"Attempted to call WaitingForApproval() from the server but WaitingForApproval 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/waiting-for-approval.tsx\",\n \"WaitingForApproval\",\n);\n"],"names":["metadata","title","WaitingPage","searchParams","waiting","asked","read","kind","URLSearchParams","toString","clientName","expiresAt","shownAt","Date","toISOString","WAITING_COOKIE","FAILED_PAGE","failedPage","reason","readClient","fields","api","undefined","client","oauth","authorization","query","Object","fromEntries","error","code","readWaiting","browserSecret","get","value","url","cookie","fleetId","waitingSecret","MS_PER_HOUR","HOURS_PER_DAY","timeLeft","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","entries","flatMap","name","WaitingForApproval","Error"],"mappings":"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","ignoreList":[3]}
1
+ {"version":3,"sources":["../../../../../web/app/authorize/waiting/approval/page.tsx","../../../../../web/features/authorize/hooks/read-authorize.ts","../../../../../web/features/authorize/services/authorize.ts","../../../../../web/features/authorize/ui/waiting-for-approval.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/authorize/ui/waiting-for-approval.tsx%22%20%7D"],"sourcesContent":["import type { Metadata } from 'next';\nimport { redirect } from 'next/navigation';\n\nimport { readWaiting } from '../../../../features/authorize/hooks/read-authorize';\nimport { WAITING_DOOR } from '../../../../features/authorize/services/authorize';\nimport { WaitingForApproval } from '../../../../features/authorize/ui/waiting-for-approval';\nimport type { SearchParams } from '../../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Waiting for approval' };\n\nexport default async function WaitingPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n const { waiting } = await searchParams;\n const asked = typeof waiting === 'string' ? waiting : '';\n const read = await readWaiting(asked);\n if (read.kind === 'goOn') {\n // Whatever no longer waits, refused or decided, the gateway's waiting address says.\n redirect(`${WAITING_DOOR}?${new URLSearchParams({ waiting: asked }).toString()}`);\n }\n return <WaitingForApproval waiting={asked} clientName={read.clientName} expiresAt={read.expiresAt} shownAt={new Date().toISOString()} />;\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 door that starts the sign-in through pagasae for the pick. */\nexport const SIGN_IN_DOOR = '/authorize/sign-in';\n\n/** Where a pressed pick sends the browser: the sign-in door, with the request as it came and the pick. */\nexport function signInAddressOf(fields: readonly [string, string][], holder: string): string {\n return `${SIGN_IN_DOOR}?${new URLSearchParams([...fields, [HOLDER_FIELD, holder]]).toString()}`;\n}\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 WaitingForApproval = registerClientReference(\n function() { throw new Error(\"Attempted to call WaitingForApproval() from the server but WaitingForApproval 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/waiting-for-approval.tsx\",\n \"WaitingForApproval\",\n);\n"],"names":["metadata","title","WaitingPage","searchParams","waiting","asked","read","kind","URLSearchParams","toString","clientName","expiresAt","shownAt","Date","toISOString","WAITING_COOKIE","FAILED_PAGE","failedPage","reason","readClient","fields","api","undefined","client","oauth","authorization","query","Object","fromEntries","error","code","readWaiting","browserSecret","get","value","url","cookie","fleetId","waitingSecret","MS_PER_HOUR","HOURS_PER_DAY","timeLeft","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","SIGN_IN_DOOR","signInAddressOf","holder","pickFieldsOf","entries","flatMap","name","WaitingForApproval","Error"],"mappings":"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","ignoreList":[3]}
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[50088,a=>{var b=a.i(70043),c=a.i(37936),d=a.i(29517);a.i(70396);var e=a.i(73727),f=a.i(55476),g=a.i(66283),h=a.i(81140),i=a.i(1324),j=a.i(29493),k=a.i(72913),l=a.i(13095);let m=new Set(["token","clientSecret"]);async function n(a,b){let c,l=(0,i.v)(b,i.H),n=Object.fromEntries(Object.entries((0,i.O)(b)).filter(([a])=>!m.has(a))),o=(0,d.f)("ship").safeParse((0,i.v)(b,"ownerShipId"));if(!o.success)return{kind:"refused",message:"Pick its owner",fields:n};let p=await (0,g.z)(l);try{c=(await p.parties.addA2aAgent.mutate({requestId:(0,i.v)(b,"requestId"),name:(0,i.v)(b,"name"),cardUrl:(0,i.v)(b,"cardUrl"),credential:(0,j.y)({credentialKind:(0,i.v)(b,"credentialKind"),token:(0,i.v)(b,"token"),clientId:(0,i.v)(b,"clientId"),clientSecret:(0,i.v)(b,"clientSecret"),issuer:(0,i.v)(b,"issuer"),scope:(0,i.v)(b,"scope")}),concurrencyLimit:Number((0,i.v)(b,"concurrencyLimit")),ownerShipId:o.data,scopes:(0,h.f)((0,i.O)(b))})).name}catch(a){return{kind:"refused",message:(0,g.s)(a),fields:n}}(0,e.redirect)((0,f.i)((0,k.N)(c),l))}(0,l.ensureServerEntryExports)([n]),(0,c.registerServerReference)(n,"603c02af05f2520217716b567bda68040ecbf48391",null),a.s(["40e9a42ba8cfd90f0dd74f6fcb1ee9c16c64e374ae",()=>b.f,"603c02af05f2520217716b567bda68040ecbf48391",0,n],50088)},81140,a=>{var b=a.i(18379);a.s(["f",0,function(a){return Object.keys(a).flatMap(a=>a.startsWith(b.u)?[a.slice(b.u.length)]:[])}])},29493,a=>{let b=[{kind:"none",label:"No credential"},{kind:"bearer",label:"Bearer token"},{kind:"clientCredentials",label:"OAuth client credentials"}];a.s(["x",0,b,"y",0,function(a){var c;let d=(c=a.credentialKind,b.find(({kind:a})=>a===c)?.kind??"bearer");switch(d){case"none":return{kind:d};case"bearer":return{kind:d,token:a.token};case"clientCredentials":return{kind:d,clientId:a.clientId,clientSecret:a.clientSecret,issuer:a.issuer,...""===a.scope?{}:{scope:a.scope}}}}])}]})();
2
+
3
+ //# sourceMappingURL=web_0wys4l6za8umr._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/.next-internal/server/app/%28console%29/outside-parties/add-a2a-agent/page/actions.js%20%28server%20actions%20loader%29","../../../../../web/features/add-a2a-agent/actions.ts","../../../../../web/features/add-a2a-client/ticked-scopes.ts","../../../../../web/features/forms/server-credential.ts"],"sourcesContent":["export {setTheme as '40e9a42ba8cfd90f0dd74f6fcb1ee9c16c64e374ae'} from 'ACTIONS_MODULE0'\nexport {addA2aAgent as '603c02af05f2520217716b567bda68040ecbf48391'} from 'ACTIONS_MODULE1'\n","'use server';\n\n/**\n * Adding an outside A2A agent by its card address (slice 5), as the account\n * signed in: the API checks it holds gateway:approve and grants only scopes\n * it holds, and the gateway reads the card before it commissions anything.\n * Added, the page goes to the agent's own page.\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 { tickedScopes } from '../add-a2a-client/ticked-scopes';\nimport { FLEET_FIELD, fieldOf, fieldsOf } from '../forms/form-state';\nimport { serverCredentialOf } from '../forms/server-credential';\nimport { partyPath } from '../outside-parties/paths';\n\n/** The fields that never travel back to the browser: the credential's secrets. */\nconst SECRET_FIELDS: ReadonlySet<string> = new Set(['token', 'clientSecret']);\n\n/** Where adding stands: not sent, or refused with why and what the browser sent, its secrets aside. */\nexport type AddA2aAgentState = { kind: 'idle' } | { kind: 'refused'; message: string; fields: Record<string, string> };\n\nexport async function addA2aAgent(_previous: AddA2aAgentState, form: FormData): Promise<AddA2aAgentState> {\n const fleetId = fieldOf(form, FLEET_FIELD);\n const fields = Object.fromEntries(Object.entries(fieldsOf(form)).filter(([field]) => !SECRET_FIELDS.has(field)));\n const ownerShipId = idSchema('ship').safeParse(fieldOf(form, 'ownerShipId'));\n if (!ownerShipId.success) {\n return { kind: 'refused', message: 'Pick its owner', fields };\n }\n const api = await requestApi(fleetId);\n let name: string;\n try {\n const added = await api.parties.addA2aAgent.mutate({\n requestId: fieldOf(form, 'requestId'),\n name: fieldOf(form, 'name'),\n cardUrl: fieldOf(form, 'cardUrl'),\n credential: serverCredentialOf({\n credentialKind: fieldOf(form, 'credentialKind'),\n token: fieldOf(form, 'token'),\n clientId: fieldOf(form, 'clientId'),\n clientSecret: fieldOf(form, 'clientSecret'),\n issuer: fieldOf(form, 'issuer'),\n scope: fieldOf(form, 'scope'),\n }),\n concurrencyLimit: Number(fieldOf(form, 'concurrencyLimit')),\n ownerShipId: ownerShipId.data,\n scopes: tickedScopes(fieldsOf(form)),\n });\n name = added.name;\n } catch (error) {\n return { kind: 'refused', message: refusalMessageOf(error), fields };\n }\n redirect(inFleet(partyPath(name), fleetId));\n}\n","import { SCOPE_FIELD_PREFIX } from '../outside-party/scope-changes';\n\n/** The scopes a form ticks, one `scope:<scope>` field each. */\nexport function tickedScopes(fields: Readonly<Record<string, string>>): string[] {\n return Object.keys(fields).flatMap((field) => (field.startsWith(SCOPE_FIELD_PREFIX) ? [field.slice(SCOPE_FIELD_PREFIX.length)] : []));\n}\n","/**\n * An outside MCP server's credential, as the add, Parties and decision forms\n * take it: none for a server reached only on a private network, a static\n * bearer, or OAuth client credentials.\n */\n\n/** The credential kinds a form offers, with the words it shows. */\nexport const CREDENTIAL_KINDS = [\n { kind: 'none', label: 'No credential' },\n { kind: 'bearer', label: 'Bearer token' },\n { kind: 'clientCredentials', label: 'OAuth client credentials' },\n] as const;\n\nexport type CredentialKind = (typeof CREDENTIAL_KINDS)[number]['kind'];\n\nexport type ServerCredential =\n | { kind: 'none' }\n | { kind: 'bearer'; token: string }\n | { kind: 'clientCredentials'; clientId: string; clientSecret: string; issuer: string; scope?: string };\n\n/** The kind a form sent, a bearer when it sent none it knows. */\nexport function credentialKindOf(sent: string): CredentialKind {\n return CREDENTIAL_KINDS.find(({ kind }) => kind === sent)?.kind ?? 'bearer';\n}\n\n/** The credential the fields name: only the fields of its kind are read. */\nexport function serverCredentialOf(fields: { credentialKind: string; token: string; clientId: string; clientSecret: string; issuer: string; scope: string }): ServerCredential {\n const kind = credentialKindOf(fields.credentialKind);\n switch (kind) {\n case 'none':\n return { kind };\n case 'bearer':\n return { kind, token: fields.token };\n case 'clientCredentials':\n return { kind, clientId: fields.clientId, clientSecret: fields.clientSecret, issuer: fields.issuer, ...(fields.scope === '' ? {} : { scope: fields.scope }) };\n }\n}\n"],"names":["SECRET_FIELDS","Set","addA2aAgent","_previous","form","fleetId","fields","Object","fromEntries","entries","filter","field","has","ownerShipId","safeParse","success","kind","message","api","name","added","parties","mutate","requestId","cardUrl","credential","credentialKind","token","clientId","clientSecret","issuer","scope","concurrencyLimit","Number","data","scopes","error","tickedScopes","keys","flatMap","startsWith","slice","length","CREDENTIAL_KINDS","label","credentialKindOf","sent","find","serverCredentialOf"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ module.exports=[[22176,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);let j="gateway:approve";function k({party:a,fleetId:d}){let{protocol:i,side:j}=f.G[a.kind],l=(0,f.M)(a),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[j].one}`})]}),null===l?null:(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 l({page:a,side:h}){let{api:m,fleetId:n,scopes:o}=a,[p,q]=await Promise.all([(0,d.F)(m.outsideParties.status.query()),(0,d.F)(m.parties.list.query())]),r=q.isOk?q.value:[],s=(0,f.R)(r),t=void 0===h?r:r.filter(a=>f.G[a.kind].side===h),u=[{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(s.sides.server)} ${1===s.sides.server?f.N.server.one:f.N.server.many}`,`${String(s.sides.client)} ${1===s.sides.client?f.N.client.one:f.N.client.many}`,...s.protocols.map(({protocol:a,count:b})=>`${a} ${String(b)}`)].join(" · ")})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[o.includes(j)?(0,b.jsx)("a",{className:e.x.secondary,href:(0,c.i)(g.Z,n),"data-testid":"outside-parties-add-a2a-client",children:"Add A2A client"}):null,o.includes(j)?(0,b.jsx)("a",{className:e.x.secondary,href:(0,c.i)(g.u,n),"data-testid":"outside-parties-add-a2a-agent",children:"Add A2A agent"}):null,o.includes("fleet:manage")?(0,b.jsx)("a",{className:e.x.primary,href:(0,c.i)(g.y,n),"data-testid":"outside-parties-add",children:"Add server"}):null]})]}),p.isOk?(0,b.jsx)(i.SwitchCard,{isOn:p.value.isOn,canSwitch:o.includes("fleet:network"),fleetId:n}):(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:p.refusal}),(0,b.jsx)("nav",{"aria-label":"Show",className:"flex gap-2",children:u.map(a=>(0,b.jsx)("a",{href:(0,c.i)(a.href,n),"aria-current":a.isCurrent?"page":void 0,className:a.isCurrent?e.x.secondary:`${e.x.secondary} border-transparent`,children:a.label},a.label))}),q.isOk?0===t.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:t.map(a=>(0,b.jsx)(k,{party:a,fleetId:n},a.name))}):(0,b.jsx)("p",{role:"alert",className:"text-tone-attention-fg",children:q.refusal})]})}var m=a.i(22126);async function n({searchParams:a}){let c=await a,e=await (0,d._)({path:g.$,searchParams:c});if("noSignIn"===e.kind)return(0,b.jsx)(m.f,{});let f="server"===c.kind||"client"===c.kind?c.kind:void 0;return(0,b.jsx)(l,{page:e,side:f})}a.s(["default",0,n,"metadata",0,{title:"Outside parties"}],22176)},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)}],24611,function(a){a.n(a.i(22176))}];
2
+
3
+ //# sourceMappingURL=web_1ga4pbv72m0ad._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/outside-parties/ui/outside-parties.tsx","../../../../../web/app/%28console%29/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, outsideAddressOf, PARTY_KINDS, PARTY_STATES, SIDES, type ListedParty, type Side } from '../party-kinds';\nimport { ADD_A2A_AGENT_PATH, ADD_A2A_CLIENT_PATH, 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, that add an outside MCP server (0056), and that add an outside A2A client (0060). */\nconst SWITCHING_SCOPE = 'fleet:network';\nconst ADDING_SCOPE = 'fleet:manage';\nconst APPROVING_SCOPE = 'gateway:approve';\n\nfunction PartyCard({ party, fleetId }: { party: ListedParty; fleetId: string }) {\n const { protocol, side } = PARTY_KINDS[party.kind];\n const where = outsideAddressOf(party);\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 {where === null ? null : (\n <span className=\"truncate font-mono text-code\" title={where}>\n {where}\n </span>\n )}\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 <div className=\"flex gap-2\">\n {scopes.includes(APPROVING_SCOPE) ? (\n <a className={BUTTONS.secondary} href={inFleet(ADD_A2A_CLIENT_PATH, fleetId)} data-testid=\"outside-parties-add-a2a-client\">\n Add A2A client\n </a>\n ) : null}\n {scopes.includes(APPROVING_SCOPE) ? (\n <a className={BUTTONS.secondary} href={inFleet(ADD_A2A_AGENT_PATH, fleetId)} data-testid=\"outside-parties-add-a2a-agent\">\n Add A2A agent\n </a>\n ) : null}\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 </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","APPROVING_SCOPE","PartyCard","party","fleetId","protocol","side","kind","where","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","secondary","primary","isOn","canSwitch","role","refusal","length","SwitchCard","Error"],"mappings":"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","ignoreList":[2]}
@@ -1,3 +1,3 @@
1
- module.exports=[[70210,a=>{var b=a.i(7997),c=a.i(66283),d=a.i(10351),e=a.i(22126),f=a.i(11393),g=a.i(65044),h=a.i(7345),i=a.i(20285);async function j({requestId:a,searchParams:k}){let l=await (0,c._)({path:`${d.K}/requests/${encodeURIComponent(a)}`,searchParams:k});if("noSignIn"===l.kind)return(0,b.jsx)(e.f,{});let{fleetId:m,scopes:n}=l,{request:o,toDecide:p}=await (0,d.F)(l.api,a),q=`/overview?fleet=${encodeURIComponent(m)}`,r=(0,b.jsx)(g.f,{title:"Queue",requests:p,now:new Date,currentId:a,hrefOf:a=>`/overview/requests/${encodeURIComponent(a.requestId)}?fleet=${encodeURIComponent(m)}`});if(void 0===o)return(0,b.jsxs)("div",{className:"grid gap-6",children:[(0,b.jsx)(i.LiveRefresh,{fleetId:m}),(0,b.jsxs)("section",{"data-testid":"overview-no-longer-waits",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 request no longer waits for a decision"}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)("a",{href:q,className:"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Back to the Overview"})})]})]});let s=await (0,c.F)(l.api.parties.ownerChoices.query()),t=o.requesters.length;return(0,b.jsxs)("div",{className:"grid gap-6",children:[(0,b.jsx)(i.LiveRefresh,{fleetId:m}),(0,b.jsx)("h1",{className:"text-heading font-semibold",children:"To decide"}),(0,b.jsxs)("div",{className:"grid gap-6 md:grid-cols-[1fr_18rem]",children:[(0,b.jsxs)("div",{className:"grid content-start gap-4",children:[(0,b.jsxs)("section",{className:"grid justify-items-center gap-1 rounded-lg border border-border bg-card p-6 text-center",children:[(0,b.jsx)("span",{className:"text-section font-semibold",children:(0,f.M)(o)}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:[(0,f.E)(o)," · ",t," ",1===t?"requester":"requesters"]})]}),(0,b.jsx)(h.DecisionPanel,{fleetId:m,request:o,heldScopes:n,owners:s})]}),(0,b.jsx)("aside",{children:r})]})]})}async function k({params:a,searchParams:c}){let[{requestId:d},e]=await Promise.all([a,c]);return(0,b.jsx)(j,{requestId:d,searchParams:e})}a.s(["default",0,k,"metadata",0,{title:"To decide"}],70210)},66722,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw 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.")},"[project]/web/features/overview/state/decision-panel.tsx","DecisionPanel");a.s(["DecisionPanel",0,b])},7345,a=>{var b=a.i(66722);a.n(b)}],51610,function(a){a.n(a.i(70210))}];
1
+ module.exports=[[55410,a=>{var b=a.i(7997),c=a.i(66283),d=a.i(10351),e=a.i(22126),f=a.i(11393),g=a.i(65044),h=a.i(7345),i=a.i(20285);async function j({requestId:a,searchParams:k}){let l=await (0,c._)({path:`${d.K}/requests/${encodeURIComponent(a)}`,searchParams:k});if("noSignIn"===l.kind)return(0,b.jsx)(e.f,{});let{fleetId:m,scopes:n}=l,{request:o,toDecide:p}=await (0,d.F)(l.api,a),q=`/overview?fleet=${encodeURIComponent(m)}`,r=(0,b.jsx)(g.f,{title:"Queue",requests:p,now:new Date,currentId:a,hrefOf:a=>`/overview/requests/${encodeURIComponent(a.requestId)}?fleet=${encodeURIComponent(m)}`});if(void 0===o)return(0,b.jsxs)("div",{className:"grid gap-6",children:[(0,b.jsx)(i.LiveRefresh,{fleetId:m}),(0,b.jsxs)("section",{"data-testid":"overview-no-longer-waits",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 request no longer waits for a decision"}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)("a",{href:q,className:"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Back to the Overview"})})]})]});let s=await (0,c.F)(l.api.parties.ownerChoices.query()),t=o.requesters.length;return(0,b.jsxs)("div",{className:"grid gap-6",children:[(0,b.jsx)(i.LiveRefresh,{fleetId:m}),(0,b.jsx)("h1",{className:"text-heading font-semibold",children:"To decide"}),(0,b.jsxs)("div",{className:"grid gap-6 md:grid-cols-[1fr_18rem]",children:[(0,b.jsxs)("div",{className:"grid content-start gap-4",children:[(0,b.jsxs)("section",{className:"grid justify-items-center gap-1 rounded-lg border border-border bg-card p-6 text-center",children:[(0,b.jsx)("span",{className:"text-section font-semibold",children:(0,f.M)(o)}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:[(0,f.E)(o)," · ",t," ",1===t?"requester":"requesters"]})]}),(0,b.jsx)(h.DecisionPanel,{fleetId:m,request:o,heldScopes:n,owners:s})]}),(0,b.jsx)("aside",{children:r})]})]})}async function k({params:a,searchParams:c}){let[{requestId:d},e]=await Promise.all([a,c]);return(0,b.jsx)(j,{requestId:d,searchParams:e})}a.s(["default",0,k,"metadata",0,{title:"To decide"}],55410)},66722,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw 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.")},"[project]/web/features/overview/state/decision-panel.tsx","DecisionPanel");a.s(["DecisionPanel",0,b])},7345,a=>{var b=a.i(66722);a.n(b)}],60431,function(a){a.n(a.i(55410))}];
2
2
 
3
- //# sourceMappingURL=web_1nqu01kfi0u66._.js.map
3
+ //# sourceMappingURL=web_1loiet18xbddu._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/overview/state/request-to-decide.tsx","../../../../../web/app/%28console%29/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":"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","ignoreList":[2]}
@@ -0,0 +1,3 @@
1
+ module.exports=[43928,a=>{"use strict";var b=a.i(70043),c=a.i(4757);a.S([b,"40e9a42ba8cfd90f0dd74f6fcb1ee9c16c64e374ae,f",0,c,"4094bd2603f6cb4c692f8c5bbc35b6dfa0e2cd78a8,q,6014a23e56a6300e1adee24bc60d3989cf9a3ffcaa,G,60813b25998f3aa5040c7138940db92bf5b1bba1ae,v,60aac98a56e7babd7b75c679560c72a3ef6741a3b7,W,60b48f9537cbc087081a7c9cb59da4be205bfeabdd,_,60da3873bc1544318b9ef24fd1e90ef1716e80cdd3,y"],43928)}];
2
+
3
+ //# sourceMappingURL=web__next-internal_server_app_%28console%29_overview_page_actions_18on1ziyg1nzy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/.next-internal/server/app/%28console%29/overview/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {setTheme as '40e9a42ba8cfd90f0dd74f6fcb1ee9c16c64e374ae'} from 'ACTIONS_MODULE0'\nexport {answerDelivery as '4094bd2603f6cb4c692f8c5bbc35b6dfa0e2cd78a8'} from 'ACTIONS_MODULE1'\nexport {doneDelivery as '6014a23e56a6300e1adee24bc60d3989cf9a3ffcaa'} from 'ACTIONS_MODULE1'\nexport {openDelivery as '60813b25998f3aa5040c7138940db92bf5b1bba1ae'} from 'ACTIONS_MODULE1'\nexport {turnEmail as '60b48f9537cbc087081a7c9cb59da4be205bfeabdd'} from 'ACTIONS_MODULE1'\nexport {turnOffWebPush as '60aac98a56e7babd7b75c679560c72a3ef6741a3b7'} from 'ACTIONS_MODULE1'\nexport {turnOnWebPush as '60da3873bc1544318b9ef24fd1e90ef1716e80cdd3'} from 'ACTIONS_MODULE1'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -0,0 +1,3 @@
1
+ module.exports=[34382,a=>{"use strict";var b=a.i(7997),c=a.i(72704);a.s(["default",0,function({children:a}){return(0,b.jsx)(c.f,{children:a})}])},36884,function(a){a.n(a.i(34382))}];
2
+
3
+ //# sourceMappingURL=web_app_%28console%29_layout_tsx_1t-5g79yb9xtl._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/app/%28console%29/layout.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ConsoleFrame } from '../../features/frame/state/console-frame';\n\nexport default function ConsoleLayout({ children }: { children: ReactNode }) {\n return <ConsoleFrame>{children}</ConsoleFrame>;\n}\n"],"names":["ConsoleLayout","children"],"mappings":"uDAEA,EAAA,EAAA,CAAA,CAAA,wBAEe,SAASA,AAAc,CAAEC,UAAQ,CAA2B,EACzE,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,UAAEA,GACxB"}
@@ -1,3 +1,3 @@
1
- module.exports=[54629,a=>{"use strict";var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(69372),f=a.i(49144),g=a.i(69912),h=a.i(72913),i=a.i(94705),j=a.i(18379),k=a.i(9181);let l={"messages:send":"Send","messages:receive":"Receive","fleet:read":"Read the fleet"};function m({scope:a,isLocked:c=!1,isChecked:d=!1}){return(0,b.jsxs)("label",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",defaultChecked:!!c||d,disabled:c,...c?{}:{name:`${j.u}${a}`}}),(0,b.jsx)("span",{children:l[a]??a}),(0,b.jsx)("span",{className:"font-mono text-code text-muted-foreground",children:a}),c?(0,b.jsx)("span",{className:"text-muted-foreground",children:"(locked)"}):null]})}async function n({page:a,name:l}){let{api:o,fleetId:p,scopes:q}=a,r=await (0,d.F)(o.parties.get.query({name:l}));if(!r.isOk)return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(k.W,{fleetId:p}),(0,b.jsx)(k.y,{children:r.refusal})]});let s=r.value,t=q.includes(k.J)?await (0,d.F)(o.parties.ownerChoices.query()):void 0,u=s.scopes,v=q.filter(a=>!j._.includes(a)),w=null===u?[]:u.filter(a=>!j._.includes(a)&&!v.includes(a));return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(k.W,{fleetId:p}),(0,b.jsxs)("section",{className:`${f.r} grid gap-3`,children:[(0,b.jsxs)("h2",{className:"text-section font-semibold",children:[s.name,": owner and scopes"]}),(0,b.jsxs)(e.ActionForm,{action:i.v,fleetId:p,submit:{label:"Save",pending:"Saving…"},testId:"outside-party-change-form",children:[(0,b.jsx)("input",{type:"hidden",name:"name",value:s.name}),void 0===t?null:t.isOk?(0,b.jsx)(g.f,{choices:t.value,current:null===s.ownerShipId?null:{shipId:s.ownerShipId,name:s.ownerName??s.ownerShipId},help:"A person ship or argo. It answers for this party."}):(0,b.jsx)(k.y,{children:t.refusal}),q.includes(k.p)&&null!==u?(0,b.jsxs)("fieldset",{className:"grid gap-2",children:[(0,b.jsx)("legend",{className:"font-medium",children:"Scopes"}),(0,b.jsx)("input",{type:"hidden",name:j.e,value:"true"}),j._.map(a=>(0,b.jsx)(m,{scope:a,isLocked:!0},a)),v.map(a=>(0,b.jsx)(m,{scope:a,isChecked:u.includes(a)},a)),w.map(a=>(0,b.jsx)(m,{scope:a,isLocked:!0},a))]}):null]}),(0,b.jsx)("div",{children:(0,b.jsx)("a",{className:f.x.secondary,href:(0,c.i)((0,h.N)(s.name),p),children:"Cancel"})})]})]})}var o=a.i(22126);async function p({params:a,searchParams:c}){let{name:e}=await a,f=await (0,d._)({path:(0,h.N)(e,"change"),searchParams:await c});return"noSignIn"===f.kind?(0,b.jsx)(o.f,{}):(0,b.jsx)(n,{page:f,name:e})}a.s(["default",0,p,"metadata",0,{title:"Outside parties"}],54629)},76733,function(a){a.n(a.i(54629))}];
1
+ module.exports=[80098,a=>{"use strict";var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(69372),f=a.i(49144),g=a.i(69912),h=a.i(72913),i=a.i(94705),j=a.i(18379),k=a.i(9181);let l={"messages:send":"Send","messages:receive":"Receive","fleet:read":"Read the fleet"};function m({scope:a,isLocked:c=!1,isChecked:d=!1}){return(0,b.jsxs)("label",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",defaultChecked:!!c||d,disabled:c,...c?{}:{name:`${j.u}${a}`}}),(0,b.jsx)("span",{children:l[a]??a}),(0,b.jsx)("span",{className:"font-mono text-code text-muted-foreground",children:a}),c?(0,b.jsx)("span",{className:"text-muted-foreground",children:"(locked)"}):null]})}async function n({page:a,name:l}){let{api:o,fleetId:p,scopes:q}=a,r=await (0,d.F)(o.parties.get.query({name:l}));if(!r.isOk)return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(k.W,{fleetId:p}),(0,b.jsx)(k.y,{children:r.refusal})]});let s=r.value,t=q.includes(k.J)?await (0,d.F)(o.parties.ownerChoices.query()):void 0,u=s.scopes,v=q.filter(a=>!j._.includes(a)),w=null===u?[]:u.filter(a=>!j._.includes(a)&&!v.includes(a));return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(k.W,{fleetId:p}),(0,b.jsxs)("section",{className:`${f.r} grid gap-3`,children:[(0,b.jsxs)("h2",{className:"text-section font-semibold",children:[s.name,": owner and scopes"]}),(0,b.jsxs)(e.ActionForm,{action:i.v,fleetId:p,submit:{label:"Save",pending:"Saving…"},testId:"outside-party-change-form",children:[(0,b.jsx)("input",{type:"hidden",name:"name",value:s.name}),void 0===t?null:t.isOk?(0,b.jsx)(g.f,{choices:t.value,current:null===s.ownerShipId?null:{shipId:s.ownerShipId,name:s.ownerName??s.ownerShipId},help:"A person ship or argo. It answers for this party."}):(0,b.jsx)(k.y,{children:t.refusal}),q.includes(k.p)&&null!==u?(0,b.jsxs)("fieldset",{className:"grid gap-2",children:[(0,b.jsx)("legend",{className:"font-medium",children:"Scopes"}),(0,b.jsx)("input",{type:"hidden",name:j.e,value:"true"}),j._.map(a=>(0,b.jsx)(m,{scope:a,isLocked:!0},a)),v.map(a=>(0,b.jsx)(m,{scope:a,isChecked:u.includes(a)},a)),w.map(a=>(0,b.jsx)(m,{scope:a,isLocked:!0},a))]}):null]}),(0,b.jsx)("div",{children:(0,b.jsx)("a",{className:f.x.secondary,href:(0,c.i)((0,h.N)(s.name),p),children:"Cancel"})})]})]})}var o=a.i(22126);async function p({params:a,searchParams:c}){let{name:e}=await a,f=await (0,d._)({path:(0,h.N)(e,"change"),searchParams:await c});return"noSignIn"===f.kind?(0,b.jsx)(o.f,{}):(0,b.jsx)(n,{page:f,name:e})}a.s(["default",0,p,"metadata",0,{title:"Outside parties"}],80098)},44910,function(a){a.n(a.i(80098))}];
2
2
 
3
- //# sourceMappingURL=web_app_outside-parties_%5Bname%5D_change_page_tsx_0kfjh3f55us56._.js.map
3
+ //# sourceMappingURL=web_app_%28console%29_outside-parties_%5Bname%5D_change_page_tsx_00bpg0s2eypj9._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/outside-party/ui/change-party.tsx","../../../../../web/app/%28console%29/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,3 +1,3 @@
1
- module.exports=[17177,a=>{"use strict";var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(69372),f=a.i(49144),g=a.i(72913),h=a.i(94705),i=a.i(9181);async function j({page:a,name:k}){let{api:l,fleetId:m}=a,n=await (0,d.F)(l.parties.get.query({name:k}));if(!n.isOk)return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(i.W,{fleetId:m}),(0,b.jsx)(i.y,{children:n.refusal})]});let o=n.value;return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(i.W,{fleetId:m}),(0,b.jsxs)("section",{className:`${f.r} grid gap-3`,children:[(0,b.jsxs)("h2",{className:"text-heading font-semibold",children:["Retire ",o.name,"?"]}),(0,b.jsxs)("ul",{className:"list-disc pl-5",children:[(0,b.jsx)("li",{children:null===o.proxyShipId?"Its proxy ship is retired":(0,b.jsxs)(b.Fragment,{children:["Its proxy ship ",(0,b.jsx)("span",{className:"font-mono",children:o.proxyShipId})," is retired"]})}),(0,b.jsx)("li",{children:"The ships that used it lose its tools"}),(0,b.jsx)("li",{children:"Adding it again is a new request"})]}),(0,b.jsx)(e.ActionForm,{action:h.t,fleetId:m,submit:{label:`Retire ${o.name}`,pending:"Retiring…",kind:"destructive"},testId:"outside-party-retire-form",children:(0,b.jsx)("input",{type:"hidden",name:"name",value:o.name})}),(0,b.jsx)("div",{children:(0,b.jsx)("a",{className:f.x.secondary,href:(0,c.i)((0,g.N)(o.name),m),children:"Cancel"})})]})]})}var k=a.i(22126);async function l({params:a,searchParams:c}){let{name:e}=await a,f=await (0,d._)({path:(0,g.N)(e,"retire"),searchParams:await c});return"noSignIn"===f.kind?(0,b.jsx)(k.f,{}):(0,b.jsx)(j,{page:f,name:e})}a.s(["default",0,l,"metadata",0,{title:"Outside parties"}],17177)},30223,function(a){a.n(a.i(17177))}];
1
+ module.exports=[30754,a=>{"use strict";var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(69372),f=a.i(49144),g=a.i(72913),h=a.i(94705),i=a.i(9181);async function j({page:a,name:k}){let{api:l,fleetId:m}=a,n=await (0,d.F)(l.parties.get.query({name:k}));if(!n.isOk)return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(i.W,{fleetId:m}),(0,b.jsx)(i.y,{children:n.refusal})]});let o=n.value;return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(i.W,{fleetId:m}),(0,b.jsxs)("section",{className:`${f.r} grid gap-3`,children:[(0,b.jsxs)("h2",{className:"text-heading font-semibold",children:["Retire ",o.name,"?"]}),(0,b.jsxs)("ul",{className:"list-disc pl-5",children:[(0,b.jsx)("li",{children:null===o.proxyShipId?"Its proxy ship is retired":(0,b.jsxs)(b.Fragment,{children:["Its proxy ship ",(0,b.jsx)("span",{className:"font-mono",children:o.proxyShipId})," is retired"]})}),(0,b.jsx)("li",{children:"The ships that used it lose its tools"}),(0,b.jsx)("li",{children:"Adding it again is a new request"})]}),(0,b.jsx)(e.ActionForm,{action:h.t,fleetId:m,submit:{label:`Retire ${o.name}`,pending:"Retiring…",kind:"destructive"},testId:"outside-party-retire-form",children:(0,b.jsx)("input",{type:"hidden",name:"name",value:o.name})}),(0,b.jsx)("div",{children:(0,b.jsx)("a",{className:f.x.secondary,href:(0,c.i)((0,g.N)(o.name),m),children:"Cancel"})})]})]})}var k=a.i(22126);async function l({params:a,searchParams:c}){let{name:e}=await a,f=await (0,d._)({path:(0,g.N)(e,"retire"),searchParams:await c});return"noSignIn"===f.kind?(0,b.jsx)(k.f,{}):(0,b.jsx)(j,{page:f,name:e})}a.s(["default",0,l,"metadata",0,{title:"Outside parties"}],30754)},81356,function(a){a.n(a.i(30754))}];
2
2
 
3
- //# sourceMappingURL=web_app_outside-parties_%5Bname%5D_retire_page_tsx_0qhcnjpjipu_2._.js.map
3
+ //# sourceMappingURL=web_app_%28console%29_outside-parties_%5Bname%5D_retire_page_tsx_1zxy74pr5_2kn._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/outside-party/ui/retire-party.tsx","../../../../../web/app/%28console%29/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 +1,3 @@
1
- module.exports=[31206,a=>{"use strict";var b=a.i(87924);function c({message:a,onTryAgain:d}){return(0,b.jsxs)("section",{role:"alert",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:"The Overview could not be read"}),(0,b.jsxs)("p",{"data-testid":"overview-failed-reason",className:"mt-2 text-muted-foreground",children:[""===a?"The gateway did not answer.":a," Try again in a moment."]}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)("button",{type:"button",onClick:d,className:"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Try again"})})]})}a.s(["default",0,function({error:a,reset:d}){return(0,b.jsx)(c,{message:a.message,onTryAgain:d})}],31206)}];
1
+ module.exports=[11963,a=>{"use strict";var b=a.i(87924);function c({message:a,onTryAgain:d}){return(0,b.jsxs)("section",{role:"alert",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:"The Overview could not be read"}),(0,b.jsxs)("p",{"data-testid":"overview-failed-reason",className:"mt-2 text-muted-foreground",children:[""===a?"The gateway did not answer.":a," Try again in a moment."]}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)("button",{type:"button",onClick:d,className:"inline-flex h-9 items-center rounded-md bg-primary px-4 text-primary-foreground hover:bg-primary-hover",children:"Try again"})})]})}a.s(["default",0,function({error:a,reset:d}){return(0,b.jsx)(c,{message:a.message,onTryAgain:d})}],11963)}];
2
2
 
3
- //# sourceMappingURL=web_app_overview_error_tsx_17_cklg40kzxe._.js.map
3
+ //# sourceMappingURL=web_app_%28console%29_overview_error_tsx_087e7ba8loavc._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/overview/ui/overview-failed.tsx","../../../../../web/app/%28console%29/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,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAe,QAAS,EAAM,OAAO,CAAE,WAAY,GAC7D"}
@@ -0,0 +1,3 @@
1
+ module.exports=[38584,a=>{"use strict";let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/web/app/(console)/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/(console)/overview/error.tsx","default");a.s(["default",0,b])},11637,a=>{"use strict";var b=a.i(38584);a.n(b)},9854,function(a){a.n(a.i(11637))}];
2
+
3
+ //# sourceMappingURL=web_app_%28console%29_overview_error_tsx_1nn1jz5nh77af._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/app/%28console%29/overview/error.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/app/%28console%29/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/(console)/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/(console)/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,kRAAoR,EACjT,iDACA","ignoreList":[0]}
@@ -0,0 +1,3 @@
1
+ module.exports=[5103,a=>{"use strict";var b=a.i(7997),c=a.i(33621),d=a.i(66680),e=a.i(66283),f=a.i(29493),g=a.i(69372),h=a.i(49144),i=a.i(69912),j=a.i(65253),k=a.i(98323),l=a.i(5901);function m({party:a,fleetId:c}){return(0,b.jsxs)("div",{className:"grid gap-2",children:["awaitingCrew"===a.state?(0,b.jsxs)(g.ActionForm,{action:l.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:h.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)(g.ActionForm,{action:l.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)(g.ActionForm,{action:l.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:h.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 n({fleetId:a,owners:c}){return(0,b.jsxs)("section",{className:`${h.r} grid gap-3`,children:[(0,b.jsx)("h2",{className:"text-section font-semibold",children:"Approve an MCP server"}),(0,b.jsxs)(g.ActionForm,{action:l.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:h.z,children:[(0,b.jsx)("span",{children:"Name, the proxy ship's"}),(0,b.jsx)("input",{className:h.w,name:"name",required:!0})]}),(0,b.jsxs)("label",{className:h.z,children:[(0,b.jsx)("span",{children:"Streamable HTTP URL"}),(0,b.jsx)("input",{className:h.w,name:"url",type:"url",required:!0})]}),(0,b.jsxs)("label",{className:h.z,children:[(0,b.jsx)("span",{children:"Credential"}),(0,b.jsx)("select",{className:h.w,name:"credentialKind",defaultValue:"bearer",children:f.x.map(({kind:a,label:c})=>(0,b.jsx)("option",{value:a,children:c},a))})]}),(0,b.jsxs)("label",{className:h.z,children:[(0,b.jsx)("span",{children:"Bearer token"}),(0,b.jsx)("input",{className:h.w,name:"token",type:"password"})]}),(0,b.jsxs)("label",{className:h.z,children:[(0,b.jsx)("span",{children:"Client id"}),(0,b.jsx)("input",{className:h.w,name:"clientId"})]}),(0,b.jsxs)("label",{className:h.z,children:[(0,b.jsx)("span",{children:"Client secret"}),(0,b.jsx)("input",{className:h.w,name:"clientSecret",type:"password"})]}),(0,b.jsxs)("label",{className:h.z,children:[(0,b.jsx)("span",{children:"Issuer"}),(0,b.jsx)("input",{className:h.w,name:"issuer",type:"url"})]}),(0,b.jsxs)("label",{className:h.z,children:[(0,b.jsx)("span",{children:"Scope"}),(0,b.jsx)("input",{className:h.w,name:"scope"})]}),(0,b.jsx)(i.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:h.z,children:[(0,b.jsx)("span",{children:"Calls at once"}),(0,b.jsx)("input",{className:h.w,name:"concurrencyLimit",type:"number",min:1,max:10,defaultValue:4})]})]})]})}async function o({page:a}){let{api:c,fleetId:d,scopes:f}=a,g=await (0,e.F)(c.parties.list.query()),h=f.includes("fleet:manage"),i=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=j.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:(0,j.M)(a)??""}),(0,b.jsx)("td",{className:"p-2",children:"mcpServer"===a.kind||"a2aAgent"===a.kind?a.credentialKind:"mcpClient"===a.kind?"MCP client":"A2A client"}),(0,b.jsx)("td",{className:"p-2",children:(0,b.jsx)(k.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)(m,{party:a,fleetId:d}):null})]},a.name)})})]})}):(0,b.jsx)("p",{role:"alert",className:"text-tone-attention-fg",children:g.refusal}),void 0===i?null:(0,b.jsx)(n,{fleetId:d,owners:i})]})}var p=a.i(22126);async function q({searchParams:a}){let d=await (0,e._)({path:c.f,searchParams:await a});return"noSignIn"===d.kind?(0,b.jsx)(p.f,{}):(0,b.jsx)(o,{page:d})}a.s(["default",0,q,"metadata",0,{title:"Parties"}],5103)},95412,function(a){a.n(a.i(5103))}];
2
+
3
+ //# sourceMappingURL=web_app_%28console%29_parties_page_tsx_0pp63ghly3eyp._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/app/%28console%29/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 { CREDENTIAL_KINDS } from '../../forms/server-credential';\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 { outsideAddressOf, 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\" defaultValue=\"bearer\">\n {CREDENTIAL_KINDS.map(({ kind, label }) => (\n <option key={kind} value={kind}>\n {label}\n </option>\n ))}\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\">{outsideAddressOf(party) ?? ''}</td>\n <td className=\"p-2\">{party.kind === 'mcpServer' || party.kind === 'a2aAgent' ? party.credentialKind : party.kind === 'mcpClient' ? 'MCP client' : 'A2A 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","defaultValue","map","choices","isOk","current","help","refusal","undefined","min","max","Parties","page","api","scopes","parties","list","query","canManage","includes","ownerChoices","role","length","credentialKind","tone","proxyShipName"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ module.exports=[41001,a=>{"use strict";var b=a.i(7997),c=a.i(57750);function d({children:a}){return(0,b.jsxs)("main",{"data-testid":"sign-in-frame",className:"mx-auto grid min-h-dvh w-full max-w-110 content-center justify-items-center gap-4 px-4 py-8 text-center",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 font-semibold",children:[(0,b.jsx)(c.Avatar,{kind:"app"}),"Aeolus"]}),(0,b.jsx)("div",{className:"grid w-full gap-4",children:a})]})}a.s(["default",0,function({children:a}){return(0,b.jsx)(d,{children:a})}],41001)},44376,function(a){a.n(a.i(41001))}];
2
+
3
+ //# sourceMappingURL=web_app_authorize_layout_tsx_0gs61_7wzx68y._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/frame/ui/sign-in-frame.tsx","../../../../../web/app/authorize/layout.tsx"],"sourcesContent":["import { Avatar } from '@aeolus-fleet/common/header';\nimport type { ReactNode } from 'react';\n\n/**\n * A page a person meets on their way in, from an outside MCP client: the\n * Aeolus mark and its name above one centred column, no app header.\n */\nexport function SignInFrame({ children }: { children: ReactNode }) {\n return (\n <main data-testid=\"sign-in-frame\" className=\"mx-auto grid min-h-dvh w-full max-w-110 content-center justify-items-center gap-4 px-4 py-8 text-center\">\n <div className=\"flex items-center gap-2 font-semibold\">\n <Avatar kind=\"app\" />\n Aeolus\n </div>\n <div className=\"grid w-full gap-4\">{children}</div>\n </main>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { SignInFrame } from '../../features/frame/ui/sign-in-frame';\n\nexport default function AuthorizeLayout({ children }: { children: ReactNode }) {\n return <SignInFrame>{children}</SignInFrame>;\n}\n"],"names":["SignInFrame","children","className","kind"],"mappings":"uDAAA,EAAA,EAAA,CAAA,CAAA,OAOO,SAASA,EAAY,UAAEC,CAAQ,CAA2B,EAC/D,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,cAAY,gBAAgBC,UAAU,oHAC1C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,kDACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACC,KAAK,QAAQ,YAGvB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAID,UAAU,6BAAqBD,MAG1C,kBCbe,SAAS,AAAgB,CAAE,UAAQ,CAA2B,EAC3E,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAa,GACvB"}
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[13930,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call ActionForm() from the server but ActionForm 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/forms/ui/action-form.tsx","ActionForm");a.s(["ActionForm",0,b])},69372,a=>{var b=a.i(13930);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"])},69912,a=>{var b=a.i(7997),c=a.i(49144);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})]})}])},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)},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."})]})}])}]})();
1
+ (()=>{"use strict";module.exports=[13930,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call ActionForm() from the server but ActionForm 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/forms/ui/action-form.tsx","ActionForm");a.s(["ActionForm",0,b])},69372,a=>{var b=a.i(13930);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"])},69912,a=>{var b=a.i(7997),c=a.i(49144);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})]})}])},65253,98323,a=>{let b={mcpServer:{protocol:"MCP",side:"server"},mcpClient:{protocol:"MCP",side:"client"},a2aClient:{protocol:"A2A",side:"client"},a2aAgent:{protocol:"A2A",side:"server"}};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}))}},"M",0,function(a){switch(a.kind){case"mcpServer":return a.url;case"mcpClient":return a.clientId;case"a2aClient":return null;case"a2aAgent":return a.cardUrl}}],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)},22126,a=>{var b=a.i(7997),c=a.i(49144);a.s(["f",0,function(){return(0,b.jsxs)("section",{className:c.r,"data-testid":"no-sign-in",children:[(0,b.jsx)("h2",{className:"text-heading font-semibold",children:"Nobody signs in here"}),(0,b.jsx)("p",{className:"mt-2 text-muted-foreground",children:"This gateway signs no one in to its pages: it is no app at pagasae."})]})}])}]})();
2
2
 
3
3
  //# sourceMappingURL=web_features_085cv0gogrxxf._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../web/features/forms/ui/action-form.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/forms/ui/action-form.tsx%22%20%7D","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/owner-field.tsx","../../../../../web/features/outside-parties/party-kinds.ts","../../../../../web/features/outside-parties/ui/status-badge.tsx","../../../../../web/features/sign-in/ui/no-sign-in.tsx"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const ActionForm = registerClientReference(\n function() { throw new Error(\"Attempted to call ActionForm() from the server but ActionForm 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/forms/ui/action-form.tsx\",\n \"ActionForm\",\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","/**\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","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":["ActionForm","Error","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","OwnerField","choices","current","help","refusal","shown","some","choice","shipId","className","name","defaultValue","required","value","disabled","map","PARTY_KINDS","mcpServer","protocol","side","mcpClient","SIDES","server","one","many","client","PARTY_STATES","commissioning","tone","label","awaitingCrew","crewed","countsOf","parties","kinds","party","kind","protocols","Set","total","length","sides","filter","count","NoSignIn"],"mappings":"6CAEO,IAAMA,EAAa,CAAA,EAAA,AAD1B,EAAA,CAAA,CAAA,OAC0B,uBAAA,AAAuB,EAC7C,WAAa,MAAM,AAAIC,MAAM,kOAAoO,EACjQ,kDACA,oFCFJ,IAAME,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,0CCfrB,EAAA,EAAA,CAAA,CAAA,kBAiBO,SAASO,AAAW,SAAEC,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,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,qBCtBO,IAAMa,EAA6E,CACxFC,UAAW,CAAEC,SAAU,MAAOC,KAAM,QAAS,EAC7CC,UAAW,CAAEF,SAAU,MAAOC,KAAM,QAAS,CAC/C,qBAWyF,CACvFQ,cAAe,CAAEC,KAAM,SAAUC,MAAO,eAAgB,EACxDC,aAAc,CAAEF,KAAM,UAAWC,MAAO,eAAgB,EACxDE,OAAQ,CAAEH,KAAM,KAAMC,MAAO,QAAS,CACxC,QAbkE,CAChEP,OAAQ,CAAEC,IAAK,SAAUC,KAAM,SAAU,EACzCC,OAAQ,CAAEF,IAAK,SAAUC,KAAM,SAAU,CAC3C,QAmBO,SAASQ,AAASC,CAA6C,EACpE,IAAMC,EAAQD,EAAQlB,GAAG,CAAC,AAACoB,GAAUnB,CAAW,CAACmB,EAAMC,IAAI,CAAC,EACtDC,EAAY,IAAI,IAAIC,IAAIJ,EAAMnB,GAAG,CAAC,AAACqB,GAASA,EAAKlB,QAAQ,GAAG,CAClE,MAAO,CACLqB,MAAON,EAAQO,MAAM,CACrBC,MAAO,CAAEnB,OAAQY,EAAMQ,MAAM,CAAC,AAACN,GAAuB,WAAdA,EAAKjB,IAAI,EAAeqB,MAAM,CAAEf,OAAQS,EAAMQ,MAAM,CAAC,AAACN,GAAuB,WAAdA,EAAKjB,IAAI,EAAeqB,MAAM,AAAC,EACtIH,UAAWA,EAAUtB,GAAG,CAAC,AAACG,IAAc,OAAD,GAAGA,EAAUyB,MAAOT,EAAMQ,MAAM,CAAC,AAACN,GAASA,EAAKlB,QAAQ,GAAKA,GAAUsB,MAAM,CAAC,CAAC,CACxH,CACF,0BChDA,IAAM,EAA8B,CAClC,QAAS,qEACT,OAAQ,kEACR,GAAI,sDACJ,UAAW,2EACX,MAAO,8DACT,aAGO,SAAS,AAAY,MAAE,CAAI,OAAE,CAAK,CAAiC,EACxE,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAW,CAAC,+DAA+D,EAAE,CAAK,CAAC,EAAK,CAAA,CAAE,UAAG,GAC5G,QAGO,SAAS,AAAI,UAAE,CAAQ,QAAE,GAAS,CAAK,CAAmD,EAC/F,MAAO,CAAA,EAAA,EAAA,GAAA,EAAClB,OAAAA,CAAK,UAAW,CAAC,2EAA2E,EAAE,EAAS,YAAc,GAAA,CAAI,UAAG,GACtI,qCClBA,EAAA,EAAA,CAAA,CAAA,kBAGO,SAASsB,EACd,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQnC,UAAW,EAAA,CAAI,CAAE,cAAY,uBACpC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,sCAA6B,yBAC3C,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,sCAA6B,0EAGhD","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../web/features/forms/ui/action-form.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/forms/ui/action-form.tsx%22%20%7D","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/owner-field.tsx","../../../../../web/features/outside-parties/party-kinds.ts","../../../../../web/features/outside-parties/ui/status-badge.tsx","../../../../../web/features/sign-in/ui/no-sign-in.tsx"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const ActionForm = registerClientReference(\n function() { throw new Error(\"Attempted to call ActionForm() from the server but ActionForm 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/forms/ui/action-form.tsx\",\n \"ActionForm\",\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","/**\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 a2aClient: { protocol: 'A2A', side: 'client' },\n a2aAgent: { protocol: 'A2A', side: 'server' },\n};\n\n/** Where a party is reached or named outside: an MCP server's URL, an MCP client's id, an A2A agent's card address; an A2A client has none. */\nexport function outsideAddressOf(party: ListedParty): string | null {\n switch (party.kind) {\n case 'mcpServer':\n return party.url;\n case 'mcpClient':\n return party.clientId;\n case 'a2aClient':\n return null;\n case 'a2aAgent':\n return party.cardUrl;\n }\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","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":["ActionForm","Error","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","OwnerField","choices","current","help","refusal","shown","some","choice","shipId","className","name","defaultValue","required","value","disabled","map","PARTY_KINDS","mcpServer","protocol","side","mcpClient","a2aClient","a2aAgent","outsideAddressOf","party","kind","url","clientId","cardUrl","SIDES","server","one","many","client","PARTY_STATES","commissioning","tone","label","awaitingCrew","crewed","countsOf","parties","kinds","protocols","Set","total","length","sides","filter","count","NoSignIn"],"mappings":"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","ignoreList":[0]}
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[51636,a=>{let b=[{kind:"none",label:"No credential"},{kind:"bearer",label:"Bearer token"},{kind:"clientCredentials",label:"OAuth client credentials"}];a.s(["x",0,b,"C",0,function(a){return b.find(({kind:b})=>b===a)?.kind??"bearer"}])},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(72131),c=a.i(50944);a.s(["LiveRefresh",0,function({fleetId:a}){let d;return d=(0,c.useRouter)(),(0,b.useEffect)(()=>{let b=new EventSource(`/overview/changes?fleet=${encodeURIComponent(a)}`);return b.onmessage=()=>{d.refresh()},()=>{b.close()}},[a,d]),(0,b.useEffect)(()=>{let b,c=()=>{let c="visible"===document.visibilityState&&document.hasFocus();c&&void 0===b?b=new EventSource(`/overview/focus?fleet=${encodeURIComponent(a)}`):c||void 0===b||(b.close(),b=void 0)};return c(),window.addEventListener("focus",c),window.addEventListener("blur",c),document.addEventListener("visibilitychange",c),()=>{window.removeEventListener("focus",c),window.removeEventListener("blur",c),document.removeEventListener("visibilitychange",c),b?.close()}},[a]),null}],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_0ahlkugj7fu3n._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/forms/server-credential.ts","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/owner-field.tsx","../../../../../web/features/overview/hooks/use-focus-report.ts","../../../../../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":["/**\n * An outside MCP server's credential, as the add, Parties and decision forms\n * take it: none for a server reached only on a private network, a static\n * bearer, or OAuth client credentials.\n */\n\n/** The credential kinds a form offers, with the words it shows. */\nexport const CREDENTIAL_KINDS = [\n { kind: 'none', label: 'No credential' },\n { kind: 'bearer', label: 'Bearer token' },\n { kind: 'clientCredentials', label: 'OAuth client credentials' },\n] as const;\n\nexport type CredentialKind = (typeof CREDENTIAL_KINDS)[number]['kind'];\n\nexport type ServerCredential =\n | { kind: 'none' }\n | { kind: 'bearer'; token: string }\n | { kind: 'clientCredentials'; clientId: string; clientSecret: string; issuer: string; scope?: string };\n\n/** The kind a form sent, a bearer when it sent none it knows. */\nexport function credentialKindOf(sent: string): CredentialKind {\n return CREDENTIAL_KINDS.find(({ kind }) => kind === sent)?.kind ?? 'bearer';\n}\n\n/** The credential the fields name: only the fields of its kind are read. */\nexport function serverCredentialOf(fields: { credentialKind: string; token: string; clientId: string; clientSecret: string; issuer: string; scope: string }): ServerCredential {\n const kind = credentialKindOf(fields.credentialKind);\n switch (kind) {\n case 'none':\n return { kind };\n case 'bearer':\n return { kind, token: fields.token };\n case 'clientCredentials':\n return { kind, clientId: fields.clientId, clientSecret: fields.clientSecret, issuer: fields.issuer, ...(fields.scope === '' ? {} : { scope: fields.scope }) };\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","'use client';\n\nimport { useEffect } from 'react';\n\n/** The stream the page holds while in focus, which the web app's server follows on the gateway's API for the browser. */\nexport const FOCUS_PATH = '/overview/focus';\n\n/**\n * Tells the gateway while the page is in focus (wake a person, W6): it holds\n * the focus stream open while the window has focus and the page shows, and\n * closes it when either ends. While a page of the person is in focus, what\n * arrives is shown there and no wake goes out; an open page not in focus\n * changes nothing. A lost connection no longer counts as in focus.\n */\nexport function useFocusReport(fleetId: string): void {\n useEffect(() => {\n let focus: EventSource | undefined;\n const report = () => {\n const isInFocus = document.visibilityState === 'visible' && document.hasFocus();\n if (isInFocus && focus === undefined) {\n focus = new EventSource(`${FOCUS_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n } else if (!isInFocus && focus !== undefined) {\n focus.close();\n focus = undefined;\n }\n };\n report();\n window.addEventListener('focus', report);\n window.addEventListener('blur', report);\n document.addEventListener('visibilitychange', report);\n return () => {\n window.removeEventListener('focus', report);\n window.removeEventListener('blur', report);\n document.removeEventListener('visibilitychange', report);\n focus?.close();\n };\n }, [fleetId]);\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** The page's live updates, which the web app's server follows on the gateway's API for the browser. */\nexport const CHANGES_PATH = '/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 { useFocusReport } from '../hooks/use-focus-report';\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\n\n/** Keeps the page it sits in live, and tells the gateway while it is in focus (wake a person, W6): it shows nothing itself. */\nexport function LiveRefresh({ fleetId }: { fleetId: string }) {\n useLiveRefresh(fleetId);\n useFocusReport(fleetId);\n return null;\n}\n","import type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nconst VARIANTS = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'border border-border bg-card text-card-foreground hover:bg-accent',\n} as const;\n\n/**\n * A button for an action: the moment it is pressed and until the answer\n * comes, it shows a spinner and its working label, and cannot run twice.\n */\nexport function ActionButton({\n isPending,\n pendingLabel,\n variant = 'secondary',\n children,\n className = '',\n disabled,\n ...button\n}: ButtonHTMLAttributes<HTMLButtonElement> & { isPending: boolean; pendingLabel: string; variant?: keyof typeof VARIANTS; children: ReactNode }) {\n return (\n <button\n {...button}\n disabled={disabled === true || isPending}\n aria-busy={isPending}\n className={`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${VARIANTS[variant]} ${className}`}\n >\n {isPending ? (\n <>\n <span aria-hidden=\"true\" className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {pendingLabel}\n </>\n ) : (\n children\n )}\n </button>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <p role=\"alert\" data-testid=\"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":["CREDENTIAL_KINDS","kind","label","credentialKindOf","sent","find","serverCredentialOf","fields","credentialKind","token","clientId","clientSecret","issuer","scope","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","OwnerField","choices","current","help","refusal","shown","some","choice","shipId","className","name","defaultValue","required","value","disabled","map","FOCUS_PATH","useFocusReport","fleetId","focus","report","isInFocus","document","visibilityState","hasFocus","undefined","EventSource","encodeURIComponent","close","window","addEventListener","removeEventListener","VARIANTS","ActionButton","isPending","pendingLabel","variant","children","button"],"mappings":"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"}
@@ -1,3 +1,3 @@
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`}])},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"])}]})();
1
+ (()=>{"use strict";module.exports=[38203,a=>{let b="holder",c="/authorize/sign-in";a.s(["r",0,b,"u",0,c,"e",0,"/authorize/waiting","a",0,function(a,d){return`${c}?${new URLSearchParams([...a,[b,d]]).toString()}`},"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`}])},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
2
 
3
3
  //# sourceMappingURL=web_features_0h0ueu8_-_z5k._.js.map