@aeolus-fleet/gateway 0.29.2 → 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 (694) 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/core-version.d.ts +1 -1
  14. package/dist/adapters/fleet/core-version.js +1 -1
  15. package/dist/adapters/fleet/fleet-ships.d.ts +3 -1
  16. package/dist/adapters/fleet/fleet-ships.js +19 -10
  17. package/dist/adapters/fleet/fleet-ships.js.map +1 -1
  18. package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -2
  19. package/dist/adapters/fleet/rest-fleet-door.js +29 -5
  20. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  21. package/dist/adapters/http/a2a-cards.d.ts +24 -0
  22. package/dist/adapters/http/a2a-cards.js +62 -0
  23. package/dist/adapters/http/a2a-cards.js.map +1 -0
  24. package/dist/adapters/http/a2a-endpoint.d.ts +28 -0
  25. package/dist/adapters/http/a2a-endpoint.js +424 -0
  26. package/dist/adapters/http/a2a-endpoint.js.map +1 -0
  27. package/dist/adapters/http/a2a-streams.d.ts +28 -0
  28. package/dist/adapters/http/a2a-streams.js +74 -0
  29. package/dist/adapters/http/a2a-streams.js.map +1 -0
  30. package/dist/adapters/http/a2a-tasks.d.ts +18 -0
  31. package/dist/adapters/http/a2a-tasks.js +117 -0
  32. package/dist/adapters/http/a2a-tasks.js.map +1 -0
  33. package/dist/adapters/http/front-door.js +8 -4
  34. package/dist/adapters/http/front-door.js.map +1 -1
  35. package/dist/adapters/http/live.d.ts +3 -1
  36. package/dist/adapters/http/live.js +6 -2
  37. package/dist/adapters/http/live.js.map +1 -1
  38. package/dist/adapters/http/oauth-routes.d.ts +1 -1
  39. package/dist/adapters/http/oauth-routes.js +16 -3
  40. package/dist/adapters/http/oauth-routes.js.map +1 -1
  41. package/dist/adapters/mcp/mcp-servers.js +2 -0
  42. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  43. package/dist/adapters/pagasae/email-channel.d.ts +8 -0
  44. package/dist/adapters/pagasae/email-channel.js +37 -0
  45. package/dist/adapters/pagasae/email-channel.js.map +1 -0
  46. package/dist/adapters/pagasae/pagasae-client.js +6 -2
  47. package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
  48. package/dist/adapters/prisma/agent-calls.d.ts +3 -0
  49. package/dist/adapters/prisma/agent-calls.js +49 -0
  50. package/dist/adapters/prisma/agent-calls.js.map +1 -0
  51. package/dist/adapters/prisma/changes.d.ts +17 -8
  52. package/dist/adapters/prisma/changes.js +18 -5
  53. package/dist/adapters/prisma/changes.js.map +1 -1
  54. package/dist/adapters/prisma/client-calls.d.ts +1 -1
  55. package/dist/adapters/prisma/client-calls.js +83 -21
  56. package/dist/adapters/prisma/client-calls.js.map +1 -1
  57. package/dist/adapters/prisma/email-channels.d.ts +4 -0
  58. package/dist/adapters/prisma/email-channels.js +14 -0
  59. package/dist/adapters/prisma/email-channels.js.map +1 -0
  60. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  61. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  62. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  63. package/dist/adapters/prisma/focused-pages.d.ts +4 -0
  64. package/dist/adapters/prisma/focused-pages.js +13 -0
  65. package/dist/adapters/prisma/focused-pages.js.map +1 -0
  66. package/dist/adapters/prisma/generated/browser.d.ts +45 -0
  67. package/dist/adapters/prisma/generated/client.d.ts +45 -0
  68. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +54 -54
  69. package/dist/adapters/prisma/generated/internal/class.d.ts +99 -0
  70. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  71. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  72. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +783 -1
  73. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +101 -3
  74. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  75. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +107 -0
  76. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +101 -3
  77. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  78. package/dist/adapters/prisma/generated/models/A2aAgentCall.d.ts +1203 -0
  79. package/dist/adapters/prisma/generated/models/A2aAgentCall.js +2 -0
  80. package/dist/adapters/prisma/generated/models/A2aAgentCall.js.map +1 -0
  81. package/dist/adapters/prisma/generated/models/A2aAgentReply.d.ts +1003 -0
  82. package/dist/adapters/prisma/generated/models/A2aAgentReply.js +2 -0
  83. package/dist/adapters/prisma/generated/models/A2aAgentReply.js.map +1 -0
  84. package/dist/adapters/prisma/generated/models/A2aPush.d.ts +1413 -0
  85. package/dist/adapters/prisma/generated/models/A2aPush.js +2 -0
  86. package/dist/adapters/prisma/generated/models/A2aPush.js.map +1 -0
  87. package/dist/adapters/prisma/generated/models/A2aPushConfig.d.ts +1322 -0
  88. package/dist/adapters/prisma/generated/models/A2aPushConfig.js +2 -0
  89. package/dist/adapters/prisma/generated/models/A2aPushConfig.js.map +1 -0
  90. package/dist/adapters/prisma/generated/models/A2aTask.d.ts +1002 -0
  91. package/dist/adapters/prisma/generated/models/A2aTask.js +2 -0
  92. package/dist/adapters/prisma/generated/models/A2aTask.js.map +1 -0
  93. package/dist/adapters/prisma/generated/models/ClientCall.d.ts +136 -15
  94. package/dist/adapters/prisma/generated/models/ClientCallReply.d.ts +0 -7
  95. package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +946 -0
  96. package/dist/adapters/prisma/generated/models/EmailChannel.js +2 -0
  97. package/dist/adapters/prisma/generated/models/EmailChannel.js.map +1 -0
  98. package/dist/adapters/prisma/generated/models/FocusedPage.d.ts +974 -0
  99. package/dist/adapters/prisma/generated/models/FocusedPage.js +2 -0
  100. package/dist/adapters/prisma/generated/models/FocusedPage.js.map +1 -0
  101. package/dist/adapters/prisma/generated/models/IssuedToken.d.ts +47 -41
  102. package/dist/adapters/prisma/generated/models/OAuthClient.d.ts +32 -8
  103. package/dist/adapters/prisma/generated/models/Party.d.ts +90 -3
  104. package/dist/adapters/prisma/generated/models/WakeSent.d.ts +975 -0
  105. package/dist/adapters/prisma/generated/models/WakeSent.js +2 -0
  106. package/dist/adapters/prisma/generated/models/WakeSent.js.map +1 -0
  107. package/dist/adapters/prisma/generated/models/WebPushSubscription.d.ts +1115 -0
  108. package/dist/adapters/prisma/generated/models/WebPushSubscription.js +2 -0
  109. package/dist/adapters/prisma/generated/models/WebPushSubscription.js.map +1 -0
  110. package/dist/adapters/prisma/generated/models.d.ts +9 -0
  111. package/dist/adapters/prisma/oauth-stores.js +3 -2
  112. package/dist/adapters/prisma/oauth-stores.js.map +1 -1
  113. package/dist/adapters/prisma/party-store.js +35 -6
  114. package/dist/adapters/prisma/party-store.js.map +1 -1
  115. package/dist/adapters/prisma/person-crews.js +9 -0
  116. package/dist/adapters/prisma/person-crews.js.map +1 -1
  117. package/dist/adapters/prisma/push-store.d.ts +3 -0
  118. package/dist/adapters/prisma/push-store.js +102 -0
  119. package/dist/adapters/prisma/push-store.js.map +1 -0
  120. package/dist/adapters/prisma/waiter-locks.d.ts +4 -0
  121. package/dist/adapters/prisma/waiter-locks.js +72 -0
  122. package/dist/adapters/prisma/waiter-locks.js.map +1 -0
  123. package/dist/adapters/prisma/wakes-sent.d.ts +4 -0
  124. package/dist/adapters/prisma/wakes-sent.js +10 -0
  125. package/dist/adapters/prisma/wakes-sent.js.map +1 -0
  126. package/dist/adapters/prisma/web-push-subscriptions.d.ts +3 -0
  127. package/dist/adapters/prisma/web-push-subscriptions.js +33 -0
  128. package/dist/adapters/prisma/web-push-subscriptions.js.map +1 -0
  129. package/dist/adapters/trpc/router.d.ts +397 -9
  130. package/dist/adapters/trpc/router.js +237 -13
  131. package/dist/adapters/trpc/router.js.map +1 -1
  132. package/dist/adapters/web-push/web-push.d.ts +9 -0
  133. package/dist/adapters/web-push/web-push.js +70 -0
  134. package/dist/adapters/web-push/web-push.js.map +1 -0
  135. package/dist/adapters/webhooks/allowed-lookup.d.ts +14 -0
  136. package/dist/adapters/webhooks/allowed-lookup.js +28 -0
  137. package/dist/adapters/webhooks/allowed-lookup.js.map +1 -0
  138. package/dist/adapters/webhooks/host-resolver.d.ts +3 -0
  139. package/dist/adapters/webhooks/host-resolver.js +13 -0
  140. package/dist/adapters/webhooks/host-resolver.js.map +1 -0
  141. package/dist/adapters/webhooks/webhook-poster.d.ts +6 -0
  142. package/dist/adapters/webhooks/webhook-poster.js +67 -0
  143. package/dist/adapters/webhooks/webhook-poster.js.map +1 -0
  144. package/dist/app.d.ts +12 -0
  145. package/dist/app.js +273 -14
  146. package/dist/app.js.map +1 -1
  147. package/dist/bin/aeolus-gateway.js +3 -0
  148. package/dist/bin/aeolus-gateway.js.map +1 -1
  149. package/dist/config.d.ts +14 -0
  150. package/dist/config.js +24 -0
  151. package/dist/config.js.map +1 -1
  152. package/dist/core/a2a-in/authenticate-a2a-client.d.ts +23 -0
  153. package/dist/core/a2a-in/authenticate-a2a-client.js +21 -0
  154. package/dist/core/a2a-in/authenticate-a2a-client.js.map +1 -0
  155. package/dist/core/a2a-in/deliver-pushes.d.ts +24 -0
  156. package/dist/core/a2a-in/deliver-pushes.js +48 -0
  157. package/dist/core/a2a-in/deliver-pushes.js.map +1 -0
  158. package/dist/core/a2a-in/find-reached-ship.d.ts +18 -0
  159. package/dist/core/a2a-in/find-reached-ship.js +20 -0
  160. package/dist/core/a2a-in/find-reached-ship.js.map +1 -0
  161. package/dist/core/a2a-in/follow-a2a-task.d.ts +25 -0
  162. package/dist/core/a2a-in/follow-a2a-task.js +23 -0
  163. package/dist/core/a2a-in/follow-a2a-task.js.map +1 -0
  164. package/dist/core/a2a-in/inbound-message.d.ts +30 -0
  165. package/dist/core/a2a-in/inbound-message.js +33 -0
  166. package/dist/core/a2a-in/inbound-message.js.map +1 -0
  167. package/dist/core/a2a-in/list-a2a-tasks.d.ts +18 -0
  168. package/dist/core/a2a-in/list-a2a-tasks.js +14 -0
  169. package/dist/core/a2a-in/list-a2a-tasks.js.map +1 -0
  170. package/dist/core/a2a-in/list-push-configs.d.ts +20 -0
  171. package/dist/core/a2a-in/list-push-configs.js +18 -0
  172. package/dist/core/a2a-in/list-push-configs.js.map +1 -0
  173. package/dist/core/a2a-in/list-reached-ships.d.ts +25 -0
  174. package/dist/core/a2a-in/list-reached-ships.js +22 -0
  175. package/dist/core/a2a-in/list-reached-ships.js.map +1 -0
  176. package/dist/core/a2a-in/notice-task-changes.d.ts +19 -0
  177. package/dist/core/a2a-in/notice-task-changes.js +17 -0
  178. package/dist/core/a2a-in/notice-task-changes.js.map +1 -0
  179. package/dist/core/a2a-in/ports.d.ts +124 -0
  180. package/dist/core/a2a-in/ports.js +2 -0
  181. package/dist/core/a2a-in/ports.js.map +1 -0
  182. package/dist/core/a2a-in/push-config-view.d.ts +8 -0
  183. package/dist/core/a2a-in/push-config-view.js +2 -0
  184. package/dist/core/a2a-in/push-config-view.js.map +1 -0
  185. package/dist/core/a2a-in/push-to-webhooks.d.ts +19 -0
  186. package/dist/core/a2a-in/push-to-webhooks.js +19 -0
  187. package/dist/core/a2a-in/push-to-webhooks.js.map +1 -0
  188. package/dist/core/a2a-in/read-a2a-task.d.ts +12 -0
  189. package/dist/core/a2a-in/read-a2a-task.js +11 -0
  190. package/dist/core/a2a-in/read-a2a-task.js.map +1 -0
  191. package/dist/core/a2a-in/read-push-config.d.ts +16 -0
  192. package/dist/core/a2a-in/read-push-config.js +14 -0
  193. package/dist/core/a2a-in/read-push-config.js.map +1 -0
  194. package/dist/core/a2a-in/remove-push-config.d.ts +15 -0
  195. package/dist/core/a2a-in/remove-push-config.js +13 -0
  196. package/dist/core/a2a-in/remove-push-config.js.map +1 -0
  197. package/dist/core/a2a-in/send-a2a-message.d.ts +34 -0
  198. package/dist/core/a2a-in/send-a2a-message.js +106 -0
  199. package/dist/core/a2a-in/send-a2a-message.js.map +1 -0
  200. package/dist/core/a2a-in/set-push-config.d.ts +30 -0
  201. package/dist/core/a2a-in/set-push-config.js +27 -0
  202. package/dist/core/a2a-in/set-push-config.js.map +1 -0
  203. package/dist/core/a2a-in/subscribe-to-a2a-task.d.ts +18 -0
  204. package/dist/core/a2a-in/subscribe-to-a2a-task.js +17 -0
  205. package/dist/core/a2a-in/subscribe-to-a2a-task.js.map +1 -0
  206. package/dist/core/a2a-in/task-view.d.ts +51 -0
  207. package/dist/core/a2a-in/task-view.js +49 -0
  208. package/dist/core/a2a-in/task-view.js.map +1 -0
  209. package/dist/core/a2a-in/webhook-address.d.ts +7 -0
  210. package/dist/core/a2a-in/webhook-address.js +17 -0
  211. package/dist/core/a2a-in/webhook-address.js.map +1 -0
  212. package/dist/core/a2a-in/webhook.d.ts +6 -0
  213. package/dist/core/a2a-in/webhook.js +80 -0
  214. package/dist/core/a2a-in/webhook.js.map +1 -0
  215. package/dist/core/a2a-out/agent-endpoint.d.ts +10 -0
  216. package/dist/core/a2a-out/agent-endpoint.js +10 -0
  217. package/dist/core/a2a-out/agent-endpoint.js.map +1 -0
  218. package/dist/core/a2a-out/agent-event.d.ts +41 -0
  219. package/dist/core/a2a-out/agent-event.js +64 -0
  220. package/dist/core/a2a-out/agent-event.js.map +1 -0
  221. package/dist/core/a2a-out/agent-message.d.ts +36 -0
  222. package/dist/core/a2a-out/agent-message.js +36 -0
  223. package/dist/core/a2a-out/agent-message.js.map +1 -0
  224. package/dist/core/a2a-out/agent-statement.d.ts +10 -0
  225. package/dist/core/a2a-out/agent-statement.js +45 -0
  226. package/dist/core/a2a-out/agent-statement.js.map +1 -0
  227. package/dist/core/a2a-out/follow-agent-task.d.ts +40 -0
  228. package/dist/core/a2a-out/follow-agent-task.js +125 -0
  229. package/dist/core/a2a-out/follow-agent-task.js.map +1 -0
  230. package/dist/core/a2a-out/hand-a2a-message.d.ts +36 -0
  231. package/dist/core/a2a-out/hand-a2a-message.js +132 -0
  232. package/dist/core/a2a-out/hand-a2a-message.js.map +1 -0
  233. package/dist/core/a2a-out/mark-a2a-agent.d.ts +24 -0
  234. package/dist/core/a2a-out/mark-a2a-agent.js +24 -0
  235. package/dist/core/a2a-out/mark-a2a-agent.js.map +1 -0
  236. package/dist/core/a2a-out/ports.d.ts +200 -0
  237. package/dist/core/a2a-out/ports.js +2 -0
  238. package/dist/core/a2a-out/ports.js.map +1 -0
  239. package/dist/core/a2a-out/read-agent-statement.d.ts +13 -0
  240. package/dist/core/a2a-out/read-agent-statement.js +13 -0
  241. package/dist/core/a2a-out/read-agent-statement.js.map +1 -0
  242. package/dist/core/a2a-out/run-a2a-agent.d.ts +26 -0
  243. package/dist/core/a2a-out/run-a2a-agent.js +46 -0
  244. package/dist/core/a2a-out/run-a2a-agent.js.map +1 -0
  245. package/dist/core/a2a-out/state-a2a-agent.d.ts +26 -0
  246. package/dist/core/a2a-out/state-a2a-agent.js +31 -0
  247. package/dist/core/a2a-out/state-a2a-agent.js.map +1 -0
  248. package/dist/core/mcp-in/call-tool.js +2 -0
  249. package/dist/core/mcp-in/call-tool.js.map +1 -1
  250. package/dist/core/mcp-in/client-call.d.ts +35 -4
  251. package/dist/core/mcp-in/client-call.js +57 -10
  252. package/dist/core/mcp-in/client-call.js.map +1 -1
  253. package/dist/core/mcp-in/collect-replies.d.ts +4 -3
  254. package/dist/core/mcp-in/collect-replies.js +4 -0
  255. package/dist/core/mcp-in/collect-replies.js.map +1 -1
  256. package/dist/core/mcp-in/ports.d.ts +52 -3
  257. package/dist/core/mcp-out/hand-call.d.ts +5 -1
  258. package/dist/core/mcp-out/hand-call.js +9 -1
  259. package/dist/core/mcp-out/hand-call.js.map +1 -1
  260. package/dist/core/mcp-out/run-party.d.ts +29 -7
  261. package/dist/core/mcp-out/run-party.js +14 -6
  262. package/dist/core/mcp-out/run-party.js.map +1 -1
  263. package/dist/core/mcp-out/state-party.d.ts +4 -2
  264. package/dist/core/mcp-out/state-party.js +10 -3
  265. package/dist/core/mcp-out/state-party.js.map +1 -1
  266. package/dist/core/mcp-out/statement.d.ts +2 -1
  267. package/dist/core/mcp-out/statement.js.map +1 -1
  268. package/dist/core/oauth/exchange-id-jag.d.ts +28 -0
  269. package/dist/core/oauth/exchange-id-jag.js +66 -0
  270. package/dist/core/oauth/exchange-id-jag.js.map +1 -0
  271. package/dist/core/oauth/exchange-token.d.ts +25 -11
  272. package/dist/core/oauth/exchange-token.js +50 -3
  273. package/dist/core/oauth/exchange-token.js.map +1 -1
  274. package/dist/core/oauth/ports.d.ts +17 -6
  275. package/dist/core/oauth/register-client.js +1 -1
  276. package/dist/core/oauth/register-client.js.map +1 -1
  277. package/dist/core/parties/add-a2a-agent.d.ts +34 -0
  278. package/dist/core/parties/add-a2a-agent.js +45 -0
  279. package/dist/core/parties/add-a2a-agent.js.map +1 -0
  280. package/dist/core/parties/add-a2a-client.d.ts +30 -0
  281. package/dist/core/parties/add-a2a-client.js +47 -0
  282. package/dist/core/parties/add-a2a-client.js.map +1 -0
  283. package/dist/core/parties/add-client-party.d.ts +38 -0
  284. package/dist/core/parties/add-client-party.js +40 -0
  285. package/dist/core/parties/add-client-party.js.map +1 -0
  286. package/dist/core/parties/approve-party.d.ts +43 -2
  287. package/dist/core/parties/approve-party.js +9 -5
  288. package/dist/core/parties/approve-party.js.map +1 -1
  289. package/dist/core/parties/approver.d.ts +7 -0
  290. package/dist/core/parties/approver.js +9 -0
  291. package/dist/core/parties/approver.js.map +1 -0
  292. package/dist/core/parties/check-server.d.ts +2 -1
  293. package/dist/core/parties/check-server.js +1 -1
  294. package/dist/core/parties/check-server.js.map +1 -1
  295. package/dist/core/parties/crew-party.d.ts +18 -4
  296. package/dist/core/parties/crew-party.js +36 -4
  297. package/dist/core/parties/crew-party.js.map +1 -1
  298. package/dist/core/parties/party.d.ts +23 -1
  299. package/dist/core/parties/party.js +17 -4
  300. package/dist/core/parties/party.js.map +1 -1
  301. package/dist/core/parties/ports.d.ts +16 -0
  302. package/dist/core/parties/read-party-tools.d.ts +4 -3
  303. package/dist/core/parties/read-party-tools.js +4 -2
  304. package/dist/core/parties/read-party-tools.js.map +1 -1
  305. package/dist/core/parties/shown-party.d.ts +8 -0
  306. package/dist/core/parties/shown-party.js +4 -0
  307. package/dist/core/parties/shown-party.js.map +1 -1
  308. package/dist/core/parties/switch-tool.d.ts +29 -0
  309. package/dist/core/parties/switch-tool.js +33 -0
  310. package/dist/core/parties/switch-tool.js.map +1 -0
  311. package/dist/core/parties/tool-switches.d.ts +27 -0
  312. package/dist/core/parties/tool-switches.js +17 -0
  313. package/dist/core/parties/tool-switches.js.map +1 -0
  314. package/dist/core/people/answer-delivery.d.ts +2 -1
  315. package/dist/core/people/answer-delivery.js.map +1 -1
  316. package/dist/core/people/done-delivery.d.ts +2 -1
  317. package/dist/core/people/done-delivery.js.map +1 -1
  318. package/dist/core/people/focus-page.d.ts +18 -0
  319. package/dist/core/people/focus-page.js +20 -0
  320. package/dist/core/people/focus-page.js.map +1 -0
  321. package/dist/core/people/open-delivery.d.ts +3 -1
  322. package/dist/core/people/open-delivery.js +2 -0
  323. package/dist/core/people/open-delivery.js.map +1 -1
  324. package/dist/core/people/opened-of.d.ts +7 -2
  325. package/dist/core/people/opened-of.js +6 -1
  326. package/dist/core/people/opened-of.js.map +1 -1
  327. package/dist/core/people/person-crew.d.ts +2 -0
  328. package/dist/core/people/person-crew.js +6 -2
  329. package/dist/core/people/person-crew.js.map +1 -1
  330. package/dist/core/people/ports.d.ts +151 -3
  331. package/dist/core/people/read-wake-channels.d.ts +42 -0
  332. package/dist/core/people/read-wake-channels.js +21 -0
  333. package/dist/core/people/read-wake-channels.js.map +1 -0
  334. package/dist/core/people/turn-email-channel.d.ts +21 -0
  335. package/dist/core/people/turn-email-channel.js +22 -0
  336. package/dist/core/people/turn-email-channel.js.map +1 -0
  337. package/dist/core/people/turn-off-web-push.d.ts +13 -0
  338. package/dist/core/people/turn-off-web-push.js +14 -0
  339. package/dist/core/people/turn-off-web-push.js.map +1 -0
  340. package/dist/core/people/turn-on-web-push.d.ts +35 -0
  341. package/dist/core/people/turn-on-web-push.js +49 -0
  342. package/dist/core/people/turn-on-web-push.js.map +1 -0
  343. package/dist/core/people/wait-on-person-ship.d.ts +44 -0
  344. package/dist/core/people/wait-on-person-ship.js +92 -0
  345. package/dist/core/people/wait-on-person-ship.js.map +1 -0
  346. package/dist/core/people/wake-person.d.ts +40 -0
  347. package/dist/core/people/wake-person.js +74 -0
  348. package/dist/core/people/wake-person.js.map +1 -0
  349. package/dist/core/people/web-push-channel.d.ts +17 -0
  350. package/dist/core/people/web-push-channel.js +35 -0
  351. package/dist/core/people/web-push-channel.js.map +1 -0
  352. package/dist/core/requests/decide-request.d.ts +0 -2
  353. package/dist/core/requests/decide-request.js +3 -6
  354. package/dist/core/requests/decide-request.js.map +1 -1
  355. package/dist/core/requests/list-to-decide.js +1 -1
  356. package/dist/core/requests/list-to-decide.js.map +1 -1
  357. package/dist/core/shared/errors.d.ts +1 -1
  358. package/dist/core/shared/errors.js.map +1 -1
  359. package/dist/core/sign-in/ports.d.ts +13 -0
  360. package/dist/core/vault/credential.d.ts +6 -2
  361. package/dist/party-workers.d.ts +9 -1
  362. package/dist/party-workers.js +37 -5
  363. package/dist/party-workers.js.map +1 -1
  364. package/dist/person-waiters.d.ts +30 -0
  365. package/dist/person-waiters.js +89 -0
  366. package/dist/person-waiters.js.map +1 -0
  367. package/package.json +7 -3
  368. package/src/adapters/prisma/migrations/20261023120000_party_bearer_hash/migration.sql +4 -0
  369. package/src/adapters/prisma/migrations/20261023130000_client_credentials/migration.sql +5 -0
  370. package/src/adapters/prisma/migrations/20261023200000_a2a_tasks/migration.sql +20 -0
  371. package/src/adapters/prisma/migrations/20261023210000_tool_switches/migration.sql +2 -0
  372. package/src/adapters/prisma/migrations/20261024090000_a2a_pushes/migration.sql +37 -0
  373. package/src/adapters/prisma/migrations/20261024100000_party_is_repeatable/migration.sql +2 -0
  374. package/src/adapters/prisma/migrations/20261024110000_a2a_agent_calls/migration.sql +29 -0
  375. package/src/adapters/prisma/migrations/20261024115000_wakes/migration.sql +17 -0
  376. package/src/adapters/prisma/migrations/20261024120000_focused_pages/migration.sql +11 -0
  377. package/src/adapters/prisma/migrations/20261024130000_web_push_subscriptions/migration.sql +14 -0
  378. package/src/adapters/prisma/schema.prisma +159 -5
  379. package/web/.next/BUILD_ID +1 -1
  380. package/web/.next/app-path-routes-manifest.json +3 -0
  381. package/web/.next/build-manifest.json +27 -3
  382. package/web/.next/diagnostics/route-bundle-stats.json +75 -42
  383. package/web/.next/fallback-build-manifest.json +3 -3
  384. package/web/.next/next-minimal-server.js.nft.json +1 -1
  385. package/web/.next/next-server.js.nft.json +1 -1
  386. package/web/.next/prerender-manifest.json +3 -3
  387. package/web/.next/routes-manifest.json +18 -0
  388. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +23 -3
  389. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +10 -8
  390. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  391. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  392. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +22 -2
  393. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +8 -5
  394. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  395. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  396. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +23 -3
  397. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +9 -6
  398. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  399. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  400. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +26 -6
  401. package/web/.next/server/app/(console)/outside-parties/add/page.js +10 -5
  402. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  403. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  404. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/app-paths-manifest.json +3 -0
  405. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +23 -0
  406. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/next-font-manifest.json +11 -0
  407. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/react-loadable-manifest.json +1 -0
  408. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +25 -0
  409. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +20 -0
  410. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.map +5 -0
  411. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -0
  412. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +3 -0
  413. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/app-paths-manifest.json +3 -0
  414. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +23 -0
  415. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/next-font-manifest.json +11 -0
  416. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/react-loadable-manifest.json +1 -0
  417. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +25 -0
  418. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +21 -0
  419. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.map +5 -0
  420. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -0
  421. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +3 -0
  422. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  423. package/web/.next/server/app/(console)/outside-parties/page.js +3 -3
  424. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  425. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  426. package/web/.next/server/app/(console)/overview/changes/route.js +3 -2
  427. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  428. package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +3 -0
  429. package/web/.next/server/app/(console)/overview/focus/route/build-manifest.json +12 -0
  430. package/web/.next/server/app/(console)/overview/focus/route/server-reference-manifest.json +4 -0
  431. package/web/.next/server/app/(console)/overview/focus/route.js +7 -0
  432. package/web/.next/server/app/(console)/overview/focus/route.js.map +5 -0
  433. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -0
  434. package/web/.next/server/app/(console)/overview/focus/route_client-reference-manifest.js +3 -0
  435. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +34 -4
  436. package/web/.next/server/app/(console)/overview/page.js +3 -3
  437. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  438. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  439. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  440. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js +2 -2
  441. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  442. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  443. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
  444. package/web/.next/server/app/(console)/parties/page.js +2 -2
  445. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  446. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  447. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  448. package/web/.next/server/app/(console)/sign-in/failed/page.js +3 -3
  449. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  450. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  451. package/web/.next/server/app/_global-error/page.js +3 -3
  452. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  453. package/web/.next/server/app/_global-error.html +1 -1
  454. package/web/.next/server/app/_global-error.rsc +1 -1
  455. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  456. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  457. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  458. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  459. package/web/.next/server/app/_not-found/page.js +3 -3
  460. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  461. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  462. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  463. package/web/.next/server/app/authorize/failed/page.js +2 -2
  464. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  465. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  466. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  467. package/web/.next/server/app/authorize/pick/page.js +2 -2
  468. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  469. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  470. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  471. package/web/.next/server/app/authorize/waiting/approval/page.js +2 -2
  472. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  473. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  474. package/web/.next/server/app-paths-manifest.json +3 -0
  475. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +3 -0
  476. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js +3 -0
  477. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js.map +1 -0
  478. package/web/.next/server/chunks/{[root-of-the-server]__0k8jiujb_0xtx._.js → [root-of-the-server]__0ykc8bq_c06a1._.js} +22 -22
  479. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -0
  480. package/web/.next/server/chunks/_04is-uopj3op9._.js +3 -0
  481. package/web/.next/server/chunks/_04is-uopj3op9._.js.map +1 -0
  482. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +3 -0
  483. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +1 -0
  484. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +3 -0
  485. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -0
  486. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +3 -0
  487. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -0
  488. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +3 -0
  489. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -0
  490. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +3 -0
  491. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -0
  492. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +3 -0
  493. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -0
  494. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  495. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  496. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12_to1hq55n1y._.js → [root-of-the-server]__0-og0bl8lr2xq._.js} +2 -2
  497. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12_to1hq55n1y._.js.map → [root-of-the-server]__0-og0bl8lr2xq._.js.map} +1 -1
  498. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +3 -0
  499. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yydhn6iokbm4._.js.map → [root-of-the-server]__07udzu2zwg_74._.js.map} +1 -1
  500. package/web/.next/server/chunks/ssr/{[root-of-the-server]__197il4swfpq1a._.js → [root-of-the-server]__0a68v9ynev4q6._.js} +2 -2
  501. package/web/.next/server/chunks/ssr/{[root-of-the-server]__197il4swfpq1a._.js.map → [root-of-the-server]__0a68v9ynev4q6._.js.map} +1 -1
  502. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +4 -0
  503. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -0
  504. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +3 -0
  505. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1vkw2kvzx6fpw._.js.map → [root-of-the-server]__0l2_dk9d4o01n._.js.map} +1 -1
  506. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +3 -0
  507. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +1 -0
  508. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +4 -0
  509. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +1 -0
  510. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +3 -0
  511. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1imel8atfb770._.js.map → [root-of-the-server]__0rr5u24i9tjyc._.js.map} +1 -1
  512. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +1 -1
  513. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -1
  514. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js +3 -0
  515. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +1 -0
  516. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +4 -0
  517. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +1 -0
  518. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js +3 -0
  519. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js.map +1 -0
  520. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +3 -0
  521. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +1 -0
  522. package/web/.next/server/chunks/ssr/[root-of-the-server]__1m9atpy0vkbmj._.js +3 -0
  523. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0dywrno7zb0r_._.js.map → [root-of-the-server]__1m9atpy0vkbmj._.js.map} +1 -1
  524. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +3 -0
  525. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +1 -0
  526. package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js +3 -0
  527. package/web/.next/server/chunks/ssr/{[root-of-the-server]__216xd8otb96uo._.js.map → [root-of-the-server]__1w5swo8gmjyx6._.js.map} +1 -1
  528. package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +1 -1
  529. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +3 -0
  530. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +1 -0
  531. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +3 -0
  532. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -0
  533. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  534. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  535. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +4 -0
  536. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js.map +1 -0
  537. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  538. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  539. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  540. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  541. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +4 -0
  542. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js.map +1 -0
  543. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  544. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  545. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  546. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  547. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js +3 -0
  548. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js.map +1 -0
  549. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +1 -1
  550. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +1 -1
  551. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +1 -1
  552. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +3 -0
  553. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +1 -0
  554. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +3 -0
  555. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +1 -0
  556. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +1 -1
  557. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +1 -1
  558. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +1 -1
  559. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +1 -1
  560. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +3 -0
  561. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +1 -0
  562. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +3 -0
  563. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js.map +1 -0
  564. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +3 -0
  565. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -0
  566. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js +1 -1
  567. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js.map +1 -1
  568. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  569. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  570. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +1 -1
  571. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js.map +1 -1
  572. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +1 -1
  573. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -1
  574. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js +3 -0
  575. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js.map +1 -0
  576. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +3 -0
  577. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +1 -0
  578. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +3 -0
  579. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +1 -0
  580. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +3 -0
  581. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +1 -0
  582. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +3 -0
  583. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js.map +1 -0
  584. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +3 -0
  585. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +1 -0
  586. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +3 -0
  587. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +1 -0
  588. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +3 -0
  589. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -0
  590. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +3 -0
  591. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -0
  592. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  593. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  594. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js +3 -0
  595. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js.map +1 -0
  596. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +3 -0
  597. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +1 -0
  598. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +3 -0
  599. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -0
  600. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  601. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  602. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  603. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  604. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  605. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  606. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +3 -0
  607. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +1 -0
  608. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +1 -1
  609. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -1
  610. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  611. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
  612. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +3 -0
  613. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -0
  614. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  615. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  616. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  617. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -1
  618. package/web/.next/server/middleware-build-manifest.js +27 -3
  619. package/web/.next/server/next-font-manifest.js +1 -1
  620. package/web/.next/server/next-font-manifest.json +8 -0
  621. package/web/.next/server/pages/500.html +1 -1
  622. package/web/.next/server/preview-props.json +3 -3
  623. package/web/.next/server/server-reference-manifest.js +1 -1
  624. package/web/.next/server/server-reference-manifest.json +124 -22
  625. package/web/.next/static/chunks/00njqo86bx2kb.js +1 -0
  626. package/web/.next/static/chunks/047i2x2j--shk.css +3 -0
  627. package/web/.next/static/chunks/0g4cpamshfwmn.js +1 -0
  628. package/web/.next/static/chunks/0j84uiid6fsim.js +1 -0
  629. package/web/.next/static/chunks/1aa1d23q1vokr.js +1 -0
  630. package/web/.next/static/chunks/1jvae6c-4jwji.js +1 -0
  631. package/web/.next/static/chunks/23ud2e13dn8f4.js +1 -0
  632. package/web/.next/static/chunks/2_41h3v090ur9.js +1 -0
  633. package/web/.next/static/chunks/31vy122d9fvme.js +1 -0
  634. package/web/.next/static/chunks/3apnqdh48__yw.js +1 -0
  635. package/web/.next/static/chunks/3okm5g88ig1l3.js +1 -0
  636. package/web/.next/trace +1 -1
  637. package/web/.next/trace-build +1 -1
  638. package/web/.next/types/routes.d.ts +5 -2
  639. package/web/.next/types/validator.ts +44 -0
  640. package/web/public/wake-worker.js +17 -0
  641. package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +0 -3
  642. package/web/.next/server/chunks/[root-of-the-server]__0k8jiujb_0xtx._.js.map +0 -1
  643. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_10eg3jn_qq_u_.js +0 -3
  644. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_10eg3jn_qq_u_.js.map +0 -1
  645. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +0 -4
  646. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +0 -1
  647. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +0 -3
  648. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +0 -3
  649. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +0 -1
  650. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-sy-ven9f2f._.js +0 -3
  651. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-sy-ven9f2f._.js.map +0 -1
  652. package/web/.next/server/chunks/ssr/[root-of-the-server]__1imel8atfb770._.js +0 -3
  653. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rmy72sai5-kh._.js +0 -4
  654. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rmy72sai5-kh._.js.map +0 -1
  655. package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +0 -3
  656. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yydhn6iokbm4._.js +0 -3
  657. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +0 -4
  658. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +0 -1
  659. package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +0 -3
  660. package/web/.next/server/chunks/ssr/_080ao10j8x4km._.js +0 -4
  661. package/web/.next/server/chunks/ssr/_080ao10j8x4km._.js.map +0 -1
  662. package/web/.next/server/chunks/ssr/_1gb_kwx9jg1et._.js +0 -4
  663. package/web/.next/server/chunks/ssr/_1gb_kwx9jg1et._.js.map +0 -1
  664. package/web/.next/server/chunks/ssr/_1ulh8nd8_yv_3._.js +0 -4
  665. package/web/.next/server/chunks/ssr/_1ulh8nd8_yv_3._.js.map +0 -1
  666. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +0 -3
  667. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +0 -1
  668. package/web/.next/server/chunks/ssr/web_06ue1l1ujajps._.js +0 -3
  669. package/web/.next/server/chunks/ssr/web_06ue1l1ujajps._.js.map +0 -1
  670. package/web/.next/server/chunks/ssr/web_1_rm1ivvp726s._.js +0 -3
  671. package/web/.next/server/chunks/ssr/web_1_rm1ivvp726s._.js.map +0 -1
  672. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +0 -3
  673. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +0 -1
  674. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +0 -3
  675. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +0 -1
  676. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +0 -3
  677. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +0 -1
  678. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +0 -3
  679. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +0 -1
  680. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +0 -3
  681. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +0 -1
  682. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +0 -3
  683. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +0 -1
  684. package/web/.next/static/chunks/1l1gmjf-hz7u_.css +0 -3
  685. package/web/.next/static/chunks/1ma7v1viiz247.js +0 -1
  686. package/web/.next/static/chunks/1tfvu44eel7g5.js +0 -1
  687. package/web/.next/static/chunks/2bg4wnfhuftsq.js +0 -1
  688. package/web/.next/static/chunks/2yplpvvjibfqw.js +0 -1
  689. package/web/.next/static/chunks/34syicr_5c5u1.js +0 -1
  690. package/web/.next/static/chunks/43zbq11isnos4.js +0 -1
  691. /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
  692. /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → Az1CqrzgGHMZVR4nw9717}/_buildManifest.js +0 -0
  693. /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → Az1CqrzgGHMZVR4nw9717}/_clientMiddlewareManifest.js +0 -0
  694. /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → Az1CqrzgGHMZVR4nw9717}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[35765,a=>{"use strict";var b=a.i(12948),c=a.i(67436),d=a.i(94331);a.i(70408);let e=(0,b.instrumentModuleGetter)(()=>a.r(98556)),f=(0,b.instrumentModuleGetter)(()=>a.r(92528)),g=(0,b.instrumentModuleGetter)(()=>a.r(13718)),h=(0,b.instrumentModuleGetter)(()=>a.r(18198)),i=(0,b.instrumentModuleGetter)(()=>a.r(62212)),j=(0,b.instrumentModuleGetter)(()=>a.r(36884)),k=(0,b.instrumentModuleGetter)(()=>a.r(92528)),l=(0,b.instrumentModuleGetter)(()=>a.r(13718)),m=(0,b.instrumentModuleGetter)(()=>a.r(18198)),n=["",{children:["(console)",{children:["outside-parties",{children:["[name]",{children:["__PAGE__",{},{metadata:{},page:[(0,b.instrumentModuleGetter)(()=>a.r(61658)),"[project]/web/app/(console)/outside-parties/[name]/page.tsx"]},[]]},{metadata:{}},["add"]]},{metadata:{}},[]]},{metadata:{},layout:[j,"[project]/web/app/(console)/layout.tsx"],"not-found":[k,"[project]/web/app/not-found.tsx"],forbidden:[l,"[project]/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js"]},[]]},{layout:[e,"[project]/web/app/layout.tsx"],"not-found":[f,"[project]/web/app/not-found.tsx"],forbidden:[g,"[project]/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[h,"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js"],"global-error":[i,"[project]/node_modules/next/dist/client/components/builtin/global-error.js"]},[]],o=a.r.bind(a),p=a.l.bind(a),q=(0,c.f)({tree:n,page:"/(console)/outside-parties/[name]/page",pathname:"/outside-parties/[name]",require:o,loadChunk:p,interopDefault:d.interopDefault}),r=q.__next_app__,s=q.routeModule,t=q.handler;var u=a.i(22922);a.s(["ClientPageRoot",()=>u.ClientPageRoot,"ClientSegmentRoot",()=>u.ClientSegmentRoot,"Fragment",()=>u.Fragment,"HTTPAccessFallbackBoundary",()=>u.HTTPAccessFallbackBoundary,"InstantValidation",()=>u.InstantValidation,"LayoutRouter",()=>u.LayoutRouter,"LoadingBoundaryProvider",()=>u.LoadingBoundaryProvider,"RenderFromTemplateContext",()=>u.RenderFromTemplateContext,"RootLayoutBoundary",()=>u.RootLayoutBoundary,"SegmentViewNode",()=>u.SegmentViewNode,"SegmentViewStateNode",()=>u.SegmentViewStateNode,"__next_app__",0,r,"captureOwnerStack",()=>u.captureOwnerStack,"collectPrefetchHints",()=>u.collectPrefetchHints,"collectSegmentData",()=>u.collectSegmentData,"createElement",()=>u.createElement,"createMetadataComponents",()=>u.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>u.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>u.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>u.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>u.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>u.createTemporaryReferenceSet,"decodeAction",()=>u.decodeAction,"decodeFormState",()=>u.decodeFormState,"decodeReply",()=>u.decodeReply,"handler",0,t,"isEmptyHTMLPrelude",()=>u.isEmptyHTMLPrelude,"patchFetch",()=>u.patchFetch,"preconnect",()=>u.preconnect,"preloadFont",()=>u.preloadFont,"preloadStyle",()=>u.preloadStyle,"prerender",()=>u.prerender,"prerenderToNodeStream",()=>u.prerenderToNodeStream,"renderToPipeableStream",()=>u.renderToPipeableStream,"renderToReadableStream",()=>u.renderToReadableStream,"routeModule",0,s,"serverHooks",()=>u.serverHooks,"taintObjectReference",()=>u.taintObjectReference],35765)}];
1
+ module.exports=[35765,a=>{"use strict";var b=a.i(12948),c=a.i(67436),d=a.i(94331);a.i(70408);let e=(0,b.instrumentModuleGetter)(()=>a.r(98556)),f=(0,b.instrumentModuleGetter)(()=>a.r(92528)),g=(0,b.instrumentModuleGetter)(()=>a.r(13718)),h=(0,b.instrumentModuleGetter)(()=>a.r(18198)),i=(0,b.instrumentModuleGetter)(()=>a.r(62212)),j=(0,b.instrumentModuleGetter)(()=>a.r(36884)),k=(0,b.instrumentModuleGetter)(()=>a.r(92528)),l=(0,b.instrumentModuleGetter)(()=>a.r(13718)),m=(0,b.instrumentModuleGetter)(()=>a.r(18198)),n=["",{children:["(console)",{children:["outside-parties",{children:["[name]",{children:["__PAGE__",{},{metadata:{},page:[(0,b.instrumentModuleGetter)(()=>a.r(61658)),"[project]/web/app/(console)/outside-parties/[name]/page.tsx"]},[]]},{metadata:{}},["add","add-a2a-agent","add-a2a-client"]]},{metadata:{}},[]]},{metadata:{},layout:[j,"[project]/web/app/(console)/layout.tsx"],"not-found":[k,"[project]/web/app/not-found.tsx"],forbidden:[l,"[project]/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js"]},[]]},{layout:[e,"[project]/web/app/layout.tsx"],"not-found":[f,"[project]/web/app/not-found.tsx"],forbidden:[g,"[project]/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[h,"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js"],"global-error":[i,"[project]/node_modules/next/dist/client/components/builtin/global-error.js"]},[]],o=a.r.bind(a),p=a.l.bind(a),q=(0,c.f)({tree:n,page:"/(console)/outside-parties/[name]/page",pathname:"/outside-parties/[name]",require:o,loadChunk:p,interopDefault:d.interopDefault}),r=q.__next_app__,s=q.routeModule,t=q.handler;var u=a.i(22922);a.s(["ClientPageRoot",()=>u.ClientPageRoot,"ClientSegmentRoot",()=>u.ClientSegmentRoot,"Fragment",()=>u.Fragment,"HTTPAccessFallbackBoundary",()=>u.HTTPAccessFallbackBoundary,"InstantValidation",()=>u.InstantValidation,"LayoutRouter",()=>u.LayoutRouter,"LoadingBoundaryProvider",()=>u.LoadingBoundaryProvider,"RenderFromTemplateContext",()=>u.RenderFromTemplateContext,"RootLayoutBoundary",()=>u.RootLayoutBoundary,"SegmentViewNode",()=>u.SegmentViewNode,"SegmentViewStateNode",()=>u.SegmentViewStateNode,"__next_app__",0,r,"captureOwnerStack",()=>u.captureOwnerStack,"collectPrefetchHints",()=>u.collectPrefetchHints,"collectSegmentData",()=>u.collectSegmentData,"createElement",()=>u.createElement,"createMetadataComponents",()=>u.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>u.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>u.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>u.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>u.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>u.createTemporaryReferenceSet,"decodeAction",()=>u.decodeAction,"decodeFormState",()=>u.decodeFormState,"decodeReply",()=>u.decodeReply,"handler",0,t,"isEmptyHTMLPrelude",()=>u.isEmptyHTMLPrelude,"patchFetch",()=>u.patchFetch,"preconnect",()=>u.preconnect,"preloadFont",()=>u.preloadFont,"preloadStyle",()=>u.preloadStyle,"prerender",()=>u.prerender,"prerenderToNodeStream",()=>u.prerenderToNodeStream,"renderToPipeableStream",()=>u.renderToPipeableStream,"renderToReadableStream",()=>u.renderToReadableStream,"routeModule",0,s,"serverHooks",()=>u.serverHooks,"taintObjectReference",()=>u.taintObjectReference],35765)}];
2
2
 
3
3
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../node_modules/next/dist/esm/build/templates/app-page.js%3Fpage%3D/%28console%29/outside-parties/%5Bname%5D/page"],"sourcesContent":["import { instrumentModuleGetter } from \"next/dist/server/app-render/module-loading/instrument-module-getter\";\nconst __TURBOPACK__layout__$23$0__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_0\"));\nconst __TURBOPACK__not$2d$found__$23$1__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_1\"));\nconst __TURBOPACK__forbidden__$23$2__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_2\"));\nconst __TURBOPACK__unauthorized__$23$3__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_3\"));\nconst __TURBOPACK__global$2d$error__$23$4__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_4\"));\nconst __TURBOPACK__layout__$23$5__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_5\"));\nconst __TURBOPACK__not$2d$found__$23$6__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_6\"));\nconst __TURBOPACK__forbidden__$23$7__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_7\"));\nconst __TURBOPACK__unauthorized__$23$8__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_8\"));\nconst __TURBOPACK__page__$23$9__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_9\"));\nimport { createAppPageEntrypoint } from \"next/dist/esm/build/templates/app-page-runtime\";\nimport { interopDefault } from \"next/dist/esm/server/app-render/interop-default\" with {\n 'turbopack-transition': 'next-server-utility'\n};\nconst tree = [\"\", {\n\"children\": [\"(console)\", {\n\"children\": [\"outside-parties\", {\n\"children\": [\"[name]\", {\n\"children\": [\"__PAGE__\", {\n}, {\n metadata: { }, \"page\": [__TURBOPACK__page__$23$9__, \"[project]/web/app/(console)/outside-parties/[name]/page.tsx\"],\n}, []],\n}, {\n metadata: { },}, [\"add\"]],\n}, {\n metadata: { },}, []],\n}, {\n metadata: { }, \"layout\": [__TURBOPACK__layout__$23$5__, \"[project]/web/app/(console)/layout.tsx\"],\n \"not-found\": [__TURBOPACK__not$2d$found__$23$6__, \"[project]/web/app/not-found.tsx\"],\n \"forbidden\": [__TURBOPACK__forbidden__$23$7__, \"[project]/node_modules/next/dist/client/components/builtin/forbidden.js\"],\n \"unauthorized\": [__TURBOPACK__unauthorized__$23$8__, \"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js\"],\n}, []],\n}, {\n \"layout\": [__TURBOPACK__layout__$23$0__, \"[project]/web/app/layout.tsx\"],\n \"not-found\": [__TURBOPACK__not$2d$found__$23$1__, \"[project]/web/app/not-found.tsx\"],\n \"forbidden\": [__TURBOPACK__forbidden__$23$2__, \"[project]/node_modules/next/dist/client/components/builtin/forbidden.js\"],\n \"unauthorized\": [__TURBOPACK__unauthorized__$23$3__, \"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js\"],\n \"global-error\": [__TURBOPACK__global$2d$error__$23$4__, \"[project]/node_modules/next/dist/client/components/builtin/global-error.js\"],\n}, []]\nconst __next_app_require__ = __turbopack_context__.r.bind(__turbopack_context__)\nconst __next_app_load_chunk__ = __turbopack_context__.l.bind(__turbopack_context__)\nconst entrypoint = createAppPageEntrypoint({\n tree,\n page: \"/(console)/outside-parties/[name]/page\",\n pathname: \"/outside-parties/[name]\",\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__,\n interopDefault\n});\nexport const __next_app__ = entrypoint.__next_app__;\nexport const routeModule = entrypoint.routeModule;\nexport const handler = entrypoint.handler;\nexport * from \"next/dist/esm/server/app-render/entry-base\" with {\n 'turbopack-transition': 'next-server-utility'\n};\n\n//# sourceMappingURL=app-page.js.map\n"],"names":["layout #0","not-found #1","forbidden #2","unauthorized #3","global-error #4","layout #5","not-found #6","forbidden #7","unauthorized #8","page #9","tree","metadata","__next_app_require__","__turbopack_context__","r","bind","__next_app_load_chunk__","l","entrypoint","page","pathname","require","loadChunk","interopDefault","__next_app__","routeModule","handler"],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OAWA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAyCA,EAAA,CAAA,CAAA,OApDA,IAAMA,EAA+B,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACtDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAkC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACzDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAwC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC/DC,EAA+B,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACtDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAkC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACzDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAM5DE,EAAO,CAAC,GAAI,CAClB,SAAY,CAAC,YAAa,CAC1B,SAAY,CAAC,kBAAmB,CAChC,SAAY,CAAC,SAAU,CACvB,SAAY,CAAC,WAAY,CACzB,EAAG,CACDC,SAAU,CAAG,EAAI,KAAQ,CAXQ,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAWF,8DACxD,AADsH,EACnH,EAAE,CAAC,AACN,EAAG,CACDA,SAAU,CAAG,CAAE,EAAG,CAAC,MAAM,CAAC,AAC5B,EAAG,CACDA,SAAU,CAAG,CAAE,EAAG,EAAE,CACtB,AADuB,EACpB,CACDA,SAAU,CAAG,EAAI,OAAU,CAACN,EAA8B,yCAAyC,CACnG,YAAa,CAACC,EAAoC,kCAAkC,CACpF,UAAa,CAACC,EAAiC,0EAA0E,CACzH,aAAgB,CAACC,EAAoC,6EAA6E,AACpI,EAAG,EAAE,CAAC,AACN,EAAG,CACD,OAAU,CAACR,EAA8B,+BAA+B,CACxE,YAAa,CAACC,EAAoC,kCAAkC,CACpF,UAAa,CAACC,EAAiC,0EAA0E,CACzH,aAAgB,CAACC,EAAoC,6EAA6E,CAClI,eAAgB,CAACC,EAAuC,6EAA6E,AACvI,EAAG,EAAE,CAAC,CACAQ,EAAuBC,EAAsBC,CAAC,CAACC,IAAI,CAACF,GACpDG,EAA0BH,EAAsBI,CAAC,CAACF,IAAI,CAACF,GACvDK,EAAa,CAAA,EAAA,EAAA,CAAA,AAAuB,EAAC,CACvCR,OACAS,KAAM,yCACNC,SAAU,0BACVC,QAAST,EACTU,UAAWN,EACXO,eAAAA,EAAAA,cAAc,AAClB,GACaC,EAAeN,EAAWM,YAAY,CACtCC,EAAcP,EAAWO,WAAW,CACpCC,EAAUR,EAAWQ,OAAO","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../node_modules/next/dist/esm/build/templates/app-page.js%3Fpage%3D/%28console%29/outside-parties/%5Bname%5D/page"],"sourcesContent":["import { instrumentModuleGetter } from \"next/dist/server/app-render/module-loading/instrument-module-getter\";\nconst __TURBOPACK__layout__$23$0__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_0\"));\nconst __TURBOPACK__not$2d$found__$23$1__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_1\"));\nconst __TURBOPACK__forbidden__$23$2__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_2\"));\nconst __TURBOPACK__unauthorized__$23$3__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_3\"));\nconst __TURBOPACK__global$2d$error__$23$4__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_4\"));\nconst __TURBOPACK__layout__$23$5__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_5\"));\nconst __TURBOPACK__not$2d$found__$23$6__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_6\"));\nconst __TURBOPACK__forbidden__$23$7__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_7\"));\nconst __TURBOPACK__unauthorized__$23$8__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_8\"));\nconst __TURBOPACK__page__$23$9__ = instrumentModuleGetter(() => require(/*turbopackChunkingType: shared*/\"MODULE_9\"));\nimport { createAppPageEntrypoint } from \"next/dist/esm/build/templates/app-page-runtime\";\nimport { interopDefault } from \"next/dist/esm/server/app-render/interop-default\" with {\n 'turbopack-transition': 'next-server-utility'\n};\nconst tree = [\"\", {\n\"children\": [\"(console)\", {\n\"children\": [\"outside-parties\", {\n\"children\": [\"[name]\", {\n\"children\": [\"__PAGE__\", {\n}, {\n metadata: { }, \"page\": [__TURBOPACK__page__$23$9__, \"[project]/web/app/(console)/outside-parties/[name]/page.tsx\"],\n}, []],\n}, {\n metadata: { },}, [\"add\",\"add-a2a-agent\",\"add-a2a-client\"]],\n}, {\n metadata: { },}, []],\n}, {\n metadata: { }, \"layout\": [__TURBOPACK__layout__$23$5__, \"[project]/web/app/(console)/layout.tsx\"],\n \"not-found\": [__TURBOPACK__not$2d$found__$23$6__, \"[project]/web/app/not-found.tsx\"],\n \"forbidden\": [__TURBOPACK__forbidden__$23$7__, \"[project]/node_modules/next/dist/client/components/builtin/forbidden.js\"],\n \"unauthorized\": [__TURBOPACK__unauthorized__$23$8__, \"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js\"],\n}, []],\n}, {\n \"layout\": [__TURBOPACK__layout__$23$0__, \"[project]/web/app/layout.tsx\"],\n \"not-found\": [__TURBOPACK__not$2d$found__$23$1__, \"[project]/web/app/not-found.tsx\"],\n \"forbidden\": [__TURBOPACK__forbidden__$23$2__, \"[project]/node_modules/next/dist/client/components/builtin/forbidden.js\"],\n \"unauthorized\": [__TURBOPACK__unauthorized__$23$3__, \"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js\"],\n \"global-error\": [__TURBOPACK__global$2d$error__$23$4__, \"[project]/node_modules/next/dist/client/components/builtin/global-error.js\"],\n}, []]\nconst __next_app_require__ = __turbopack_context__.r.bind(__turbopack_context__)\nconst __next_app_load_chunk__ = __turbopack_context__.l.bind(__turbopack_context__)\nconst entrypoint = createAppPageEntrypoint({\n tree,\n page: \"/(console)/outside-parties/[name]/page\",\n pathname: \"/outside-parties/[name]\",\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__,\n interopDefault\n});\nexport const __next_app__ = entrypoint.__next_app__;\nexport const routeModule = entrypoint.routeModule;\nexport const handler = entrypoint.handler;\nexport * from \"next/dist/esm/server/app-render/entry-base\" with {\n 'turbopack-transition': 'next-server-utility'\n};\n\n//# sourceMappingURL=app-page.js.map\n"],"names":["layout #0","not-found #1","forbidden #2","unauthorized #3","global-error #4","layout #5","not-found #6","forbidden #7","unauthorized #8","page #9","tree","metadata","__next_app_require__","__turbopack_context__","r","bind","__next_app_load_chunk__","l","entrypoint","page","pathname","require","loadChunk","interopDefault","__next_app__","routeModule","handler"],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OAWA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAyCA,EAAA,CAAA,CAAA,OApDA,IAAMA,EAA+B,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACtDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAkC,CAAA,EAAA,EAAA,sBAAsB,AAAtB,EAAuB,IAAA,EAAA,CAAA,CAAA,QACzDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAwC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC/DC,EAA+B,CAAA,EAAA,EAAA,sBAAsB,AAAtB,EAAuB,IAAA,EAAA,CAAA,CAAA,QACtDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAC5DC,EAAkC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QACzDC,EAAqC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAM5DE,EAAO,CAAC,GAAI,CAClB,SAAY,CAAC,YAAa,CAC1B,SAAY,CAAC,kBAAmB,CAChC,SAAY,CAAC,SAAU,CACvB,SAAY,CAAC,WAAY,CACzB,EAAG,CACDC,SAAU,CAAG,EAAI,KAAQ,CAXQ,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAAA,EAAA,CAAA,CAAA,QAWF,8DAA8D,AACtH,EAAG,EAAE,CACL,AADM,EACH,CACDA,SAAU,CAAG,CAAE,EAAG,CAAC,MAAM,gBAAgB,iBAAiB,CAAC,AAC7D,EAAG,CACDA,SAAU,CAAG,CAAE,EAAG,EAAE,CAAC,AACvB,EAAG,CACDA,SAAU,CAAG,EAAI,OAAU,CAACN,EAA8B,yCAAyC,CACnG,YAAa,CAACC,EAAoC,kCAAkC,CACpF,UAAa,CAACC,EAAiC,0EAA0E,CACzH,aAAgB,CAACC,EAAoC,6EAA6E,AACpI,EAAG,EAAE,CAAC,AACN,EAAG,CACD,OAAU,CAACR,EAA8B,+BAA+B,CACxE,YAAa,CAACC,EAAoC,kCAAkC,CACpF,UAAa,CAACC,EAAiC,0EAA0E,CACzH,aAAgB,CAACC,EAAoC,6EAA6E,CAClI,eAAgB,CAACC,EAAuC,6EAA6E,AACvI,EAAG,EAAE,CAAC,CACAQ,EAAuBC,EAAsBC,CAAC,CAACC,IAAI,CAACF,GACpDG,EAA0BH,EAAsBI,CAAC,CAACF,IAAI,CAACF,GACvDK,EAAa,CAAA,EAAA,EAAA,CAAA,AAAuB,EAAC,CACvCR,OACAS,KAAM,yCACNC,SAAU,0BACVC,QAAST,EACTU,UAAWN,EACXO,eAAAA,EAAAA,cAAc,AAClB,GACaC,EAAeN,EAAWM,YAAY,CACtCC,EAAcP,EAAWO,WAAW,CACpCC,EAAUR,EAAWQ,OAAO","ignoreList":[0]}
@@ -0,0 +1,3 @@
1
+ module.exports=[[4825,a=>{var b=a.i(7997),c=a.i(717),d=a.i(66283),e=a.i(10351),f=a.i(22126);function g({message:a,isFailure:c}){return c?(0,b.jsx)("p",{role:"alert","data-testid":"overview-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a}):(0,b.jsx)("p",{role:"status","data-testid":"overview-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a})}function h({waiting:a,toDecide:c}){if(void 0===a&&void 0===c)return(0,b.jsx)("h1",{className:"text-heading font-semibold",children:"Nothing waits on you"});let d=(a??0)+(c??0),e=[void 0===a?void 0:`${String(a)} for you`,void 0===c?void 0:`${String(c)} to decide`].filter(a=>void 0!==a);return(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("span",{"data-testid":"overview-total",className:"inline-flex size-12 items-center justify-center rounded-full border-4 border-tone-waiting-border text-section font-semibold",children:d}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-heading font-semibold",children:0===d?"Nothing waits on you":"Waits on you"}),(0,b.jsx)("p",{className:"text-muted-foreground",children:e.join(" · ")})]})]})}function i({width:a}){return(0,b.jsx)("span",{className:`block h-4 animate-pulse rounded bg-muted ${a}`})}function j(){return(0,b.jsxs)("div",{"aria-busy":"true","aria-label":"Loading the Overview",className:"grid gap-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("span",{className:"size-12 animate-pulse rounded-full bg-muted"}),(0,b.jsxs)("div",{className:"grid flex-1 gap-2",children:[(0,b.jsx)(i,{width:"w-48"}),(0,b.jsx)(i,{width:"w-32"})]})]}),(0,b.jsx)("div",{className:"grid gap-2",children:["a","b","c"].map(a=>(0,b.jsx)("span",{className:"block h-14 animate-pulse rounded-md bg-muted"},a))})]})}var k=a.i(65044),l=a.i(78942),m=a.i(20285),n=a.i(40623);let o={approve:"You approved the request.",deny:"You denied the request."};async function p({api:a,fleetId:c}){let{inbox:d,wakeChannels:f,toDecide:g,mine:i}=await (0,e.m)(a),j=new Date;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h,{waiting:d?.waiting,toDecide:g?.length}),void 0===d?null:(0,b.jsx)(l.InboxPanel,{fleetId:c,inbox:d}),void 0===f?null:(0,b.jsx)(n.WakePanel,{fleetId:c,channels:f}),void 0===g?null:0===g.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"No request waits for a decision."}):(0,b.jsx)(k.f,{title:"To decide",requests:g,now:j,hrefOf:a=>`/overview/requests/${encodeURIComponent(a.requestId)}?fleet=${encodeURIComponent(c)}`}),void 0===i||0===i.length?null:(0,b.jsx)(k.f,{title:"Your requests",requests:i,now:j})]})}async function q({searchParams:a}){let h=await (0,d._)({path:e.K,searchParams:a});if("noSignIn"===h.kind)return(0,b.jsx)(f.f,{});let{decided:i}=a,k="string"==typeof i?o[i]:void 0;return(0,b.jsxs)("div",{className:"grid gap-6",children:[(0,b.jsx)(m.LiveRefresh,{fleetId:h.fleetId}),void 0===k?null:(0,b.jsx)(g,{message:k,isFailure:!1}),(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)(j,{}),children:(0,b.jsx)(p,{api:h.api,fleetId:h.fleetId})})]})}async function r({searchParams:a}){return(0,b.jsx)(q,{searchParams:await a})}a.s(["default",0,r,"metadata",0,{title:"Overview"}],4825)},73315,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call InboxPanel() from the server but InboxPanel is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/overview/state/inbox-panel.tsx","InboxPanel");a.s(["InboxPanel",0,b])},78942,a=>{var b=a.i(73315);a.n(b)},8077,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call WakePanel() from the server but WakePanel 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/wake-panel.tsx","WakePanel");a.s(["WakePanel",0,b])},40623,a=>{var b=a.i(8077);a.n(b)}],15360,function(a){a.n(a.i(4825))}];
2
+
3
+ //# sourceMappingURL=web_0-ufi2al5ubig._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/features/overview/state/overview.tsx","../../../../../web/features/overview/ui/notice.tsx","../../../../../web/features/overview/ui/overview-lead.tsx","../../../../../web/features/overview/ui/overview-skeleton.tsx","../../../../../web/app/%28console%29/overview/page.tsx","../../../../../web/features/overview/state/inbox-panel.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/overview/state/inbox-panel.tsx%22%20%7D","../../../../../web/features/overview/state/wake-panel.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/overview/state/wake-panel.tsx%22%20%7D"],"sourcesContent":["import { Suspense } from 'react';\n\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { signedInPage, type SearchParams } from '../../../lib/gateway-api/page-api';\nimport { OVERVIEW_PATH, readOverview } from '../hooks/read-overview';\nimport { NoSignIn } from '../../sign-in/ui/no-sign-in';\nimport { Notice } from '../ui/notice';\nimport { OverviewLead } from '../ui/overview-lead';\nimport { OverviewSkeleton } from '../ui/overview-skeleton';\nimport { RequestsList } from '../ui/requests-list';\nimport { InboxPanel } from './inbox-panel';\nimport { LiveRefresh } from './live-refresh';\nimport { WakePanel } from './wake-panel';\n\n/** What a decision the person just made came to, said once they are back. */\nconst DECIDED: Record<string, string> = {\n approve: 'You approved the request.',\n deny: 'You denied the request.',\n};\n\nasync function OverviewParts({ api, fleetId }: { api: GatewayApi; fleetId: string }) {\n const { inbox, wakeChannels, toDecide, mine } = await readOverview(api);\n const now = new Date();\n return (\n <>\n <OverviewLead waiting={inbox?.waiting} toDecide={toDecide?.length} />\n {inbox === undefined ? null : <InboxPanel fleetId={fleetId} inbox={inbox} />}\n {wakeChannels === undefined ? null : <WakePanel fleetId={fleetId} channels={wakeChannels} />}\n {toDecide === undefined ? null : toDecide.length === 0 ? (\n <p className=\"text-muted-foreground\">No request waits for a decision.</p>\n ) : (\n <RequestsList title=\"To decide\" requests={toDecide} now={now} hrefOf={(request) => `/overview/requests/${encodeURIComponent(request.requestId)}?fleet=${encodeURIComponent(fleetId)}`} />\n )}\n {mine === undefined || mine.length === 0 ? null : <RequestsList title=\"Your requests\" requests={mine} now={now} />}\n </>\n );\n}\n\n/**\n * The Overview (design B, Signal): what waits on the person, their inbox\n * and the channels that wake them, the requests to decide for an approver,\n * oldest first, and the requests they asked. Signed out, the browser goes to sign in before anything shows;\n * signed in, the shape shows while the parts load. It reads itself again\n * whenever the fleet's requests change.\n */\nexport async function Overview({ searchParams }: { searchParams: SearchParams }) {\n const page = await signedInPage({ path: OVERVIEW_PATH, searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n const { decided } = searchParams;\n const said = typeof decided === 'string' ? DECIDED[decided] : undefined;\n return (\n <div className=\"grid gap-6\">\n <LiveRefresh fleetId={page.fleetId} />\n {said === undefined ? null : <Notice message={said} isFailure={false} />}\n <Suspense fallback={<OverviewSkeleton />}>\n <OverviewParts api={page.api} fleetId={page.fleetId} />\n </Suspense>\n </div>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <p role=\"alert\" data-testid=\"overview-failure\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {message}\n </p>\n ) : (\n <p role=\"status\" data-testid=\"overview-success\" className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {message}\n </p>\n );\n}\n","/**\n * What waits on the person, counted: deliveries for them and requests to\n * decide. A count they have no part in is left out; with neither, nothing\n * waits on them.\n */\nexport function OverviewLead({ waiting, toDecide }: { waiting: number | undefined; toDecide: number | undefined }) {\n if (waiting === undefined && toDecide === undefined) {\n return <h1 className=\"text-heading font-semibold\">Nothing waits on you</h1>;\n }\n const total = (waiting ?? 0) + (toDecide ?? 0);\n const counts = [waiting === undefined ? undefined : `${String(waiting)} for you`, toDecide === undefined ? undefined : `${String(toDecide)} to decide`].filter((count) => count !== undefined);\n return (\n <div className=\"flex items-center gap-4\">\n <span data-testid=\"overview-total\" className=\"inline-flex size-12 items-center justify-center rounded-full border-4 border-tone-waiting-border text-section font-semibold\">\n {total}\n </span>\n <div>\n <h1 className=\"text-heading font-semibold\">{total === 0 ? 'Nothing waits on you' : 'Waits on you'}</h1>\n <p className=\"text-muted-foreground\">{counts.join(' · ')}</p>\n </div>\n </div>\n );\n}\n","function Bar({ width }: { width: string }) {\n return <span className={`block h-4 animate-pulse rounded bg-muted ${width}`} />;\n}\n\n/** The Overview's shape while it loads: the lead, then a list. */\nexport function OverviewSkeleton() {\n return (\n <div aria-busy=\"true\" aria-label=\"Loading the Overview\" className=\"grid gap-6\">\n <div className=\"flex items-center gap-4\">\n <span className=\"size-12 animate-pulse rounded-full bg-muted\" />\n <div className=\"grid flex-1 gap-2\">\n <Bar width=\"w-48\" />\n <Bar width=\"w-32\" />\n </div>\n </div>\n <div className=\"grid gap-2\">\n {['a', 'b', 'c'].map((row) => (\n <span key={row} className=\"block h-14 animate-pulse rounded-md bg-muted\" />\n ))}\n </div>\n </div>\n );\n}\n","import type { Metadata } from 'next';\n\nimport { Overview } from '../../../features/overview/state/overview';\nimport type { SearchParams } from '../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Overview' };\n\nexport default async function OverviewPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n return <Overview searchParams={await searchParams} />;\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const InboxPanel = registerClientReference(\n function() { throw new Error(\"Attempted to call InboxPanel() from the server but InboxPanel is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/overview/state/inbox-panel.tsx\",\n \"InboxPanel\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const WakePanel = registerClientReference(\n function() { throw new Error(\"Attempted to call WakePanel() from the server but WakePanel 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/wake-panel.tsx\",\n \"WakePanel\",\n);\n"],"names":["Notice","message","isFailure","role","className","InboxPanel","Error","WakePanel"],"mappings":"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","ignoreList":[5,6]}
@@ -0,0 +1,3 @@
1
+ module.exports=[[50761,a=>{var b=a.i(7997),c=a.i(48010),d=a.i(72913),e=a.i(9181),f=a.i(22126),g=a.i(55476),h=a.i(66283);async function i({searchParams:a}){let j=await (0,h._)({path:d.y,searchParams:await a});return"noSignIn"===j.kind?(0,b.jsx)(f.f,{}):(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)("a",{href:(0,g.i)(d.$,j.fleetId),className:"text-muted-foreground hover:text-foreground",children:"← Outside parties"}),(0,b.jsx)(c.AddServer,{fleetId:j.fleetId,canSwitchTools:j.scopes.includes(e.N)})]})}a.s(["default",0,i,"metadata",0,{title:"Add MCP server"}])},63274,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call AddServer() from the server but AddServer 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/add-server/ui/add-server.tsx","AddServer");a.s(["AddServer",0,b])},48010,a=>{var b=a.i(63274);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"])},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."})]})}])}],20996,function(a){a.n(a.i(50761))}];
2
+
3
+ //# sourceMappingURL=web_0_jk9eione6lx._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../web/app/%28console%29/outside-parties/add/page.tsx","../../../../../web/features/add-server/ui/add-server.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/add-server/ui/add-server.tsx%22%20%7D","../../../../../web/features/forms/ui/look.ts","../../../../../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":["import type { Metadata } from 'next';\n\nimport { AddServer } from '../../../../features/add-server/ui/add-server';\nimport { ADD_SERVER_PATH, OUTSIDE_PARTIES_PATH } from '../../../../features/outside-parties/paths';\nimport { APPROVING_SCOPE } from '../../../../features/outside-party/ui/outside-party';\nimport { NoSignIn } from '../../../../features/sign-in/ui/no-sign-in';\nimport { inFleet } from '../../../../lib/gateway-api/page-account';\nimport { signedInPage, type SearchParams } from '../../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Add MCP server' };\n\nexport default async function AddServerPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n const page = await signedInPage({ path: ADD_SERVER_PATH, searchParams: await searchParams });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n return (\n <div className=\"grid gap-4\">\n <a href={inFleet(OUTSIDE_PARTIES_PATH, page.fleetId)} className=\"text-muted-foreground hover:text-foreground\">\n ← Outside parties\n </a>\n <AddServer fleetId={page.fleetId} canSwitchTools={page.scopes.includes(APPROVING_SCOPE)} />\n </div>\n );\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const AddServer = registerClientReference(\n function() { throw new Error(\"Attempted to call AddServer() from the server but AddServer 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/add-server/ui/add-server.tsx\",\n \"AddServer\",\n);\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","/**\n * An outside party is a party and its protocol (design B, How A2A slots\n * in): the protocol is a tag on every card and the list counts per\n * protocol, so an A2A agent joins as one more kind here.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../src/adapters/trpc/router.js';\n\n/** An outside party as the API lists it. */\nexport type ListedParty = inferRouterOutputs<GatewayRouter>['parties']['list'][number];\n\n/** Which side an outside party is on: a server the fleet's ships call, or a client that calls them. */\nexport type Side = 'server' | 'client';\n\nexport const PARTY_KINDS: Record<ListedParty['kind'], { protocol: string; side: Side }> = {\n mcpServer: { protocol: 'MCP', side: 'server' },\n mcpClient: { protocol: 'MCP', side: 'client' },\n 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":["metadata","title","AddServerPage","searchParams","page","path","kind","className","href","fleetId","canSwitchTools","scopes","includes","AddServer","Error","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","PARTY_KINDS","mcpServer","protocol","side","mcpClient","a2aClient","a2aAgent","outsideAddressOf","party","url","clientId","cardUrl","SIDES","server","one","many","client","PARTY_STATES","commissioning","tone","label","awaitingCrew","crewed","countsOf","parties","kinds","map","protocols","Set","total","length","sides","filter","count","NoSignIn"],"mappings":"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","ignoreList":[1]}
@@ -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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"}
@@ -1,3 +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);function j({party:a,fleetId:d}){let{protocol:i,side:k}=f.G[a.kind],l="mcpServer"===a.kind?a.url:a.clientId,m=f.Y[a.state];return(0,b.jsxs)("a",{href:(0,c.i)((0,g.N)(a.name),d),className:`${e.r} grid gap-2 hover:bg-accent`,"data-testid":"outside-parties-party",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)("strong",{children:a.name})," ",(0,b.jsx)(h.E,{children:i})," ",(0,b.jsx)(h.E,{children:`${i} ${f.N[k].one}`})]}),(0,b.jsx)("span",{className:"truncate font-mono text-code",title:l,children:l}),(0,b.jsxs)("span",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(h.T,{tone:m.tone,label:m.label}),null===a.ownerName?null:(0,b.jsx)(h.E,{children:a.ownerName})]})]})}async function k({page:a,side:h}){let{api:l,fleetId:m,scopes:n}=a,[o,p]=await Promise.all([(0,d.F)(l.outsideParties.status.query()),(0,d.F)(l.parties.list.query())]),q=p.isOk?p.value:[],r=(0,f.R)(q),s=void 0===h?q:q.filter(a=>f.G[a.kind].side===h),t=[{label:"All",href:g.$,isCurrent:void 0===h},{label:"Servers",href:`${g.$}?kind=server`,isCurrent:"server"===h},{label:"Clients",href:`${g.$}?kind=client`,isCurrent:"client"===h}];return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-end justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Outside parties"}),(0,b.jsx)("p",{className:"text-muted-foreground","data-testid":"outside-parties-counts",children:[`${String(r.sides.server)} ${1===r.sides.server?f.N.server.one:f.N.server.many}`,`${String(r.sides.client)} ${1===r.sides.client?f.N.client.one:f.N.client.many}`,...r.protocols.map(({protocol:a,count:b})=>`${a} ${String(b)}`)].join(" · ")})]}),n.includes("fleet:manage")?(0,b.jsx)("a",{className:e.x.primary,href:(0,c.i)(g.y,m),"data-testid":"outside-parties-add",children:"Add server"}):null]}),o.isOk?(0,b.jsx)(i.SwitchCard,{isOn:o.value.isOn,canSwitch:n.includes("fleet:network"),fleetId:m}):(0,b.jsx)("p",{role:"alert",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:o.refusal}),(0,b.jsx)("nav",{"aria-label":"Show",className:"flex gap-2",children:t.map(a=>(0,b.jsx)("a",{href:(0,c.i)(a.href,m),"aria-current":a.isCurrent?"page":void 0,className:a.isCurrent?e.x.secondary:`${e.x.secondary} border-transparent`,children:a.label},a.label))}),p.isOk?0===s.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"No outside party yet."}):(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2",children:s.map(a=>(0,b.jsx)(j,{party:a,fleetId:m},a.name))}):(0,b.jsx)("p",{role:"alert",className:"text-tone-attention-fg",children:p.refusal})]})}var l=a.i(22126);async function m({searchParams:a}){let c=await a,e=await (0,d._)({path:g.$,searchParams:c});if("noSignIn"===e.kind)return(0,b.jsx)(l.f,{});let f="server"===c.kind||"client"===c.kind?c.kind:void 0;return(0,b.jsx)(k,{page:e,side:f})}a.s(["default",0,m,"metadata",0,{title:"Outside parties"}],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))}];
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
2
 
3
3
  //# sourceMappingURL=web_1ga4pbv72m0ad._.js.map
@@ -1 +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, PARTY_KINDS, PARTY_STATES, SIDES, type ListedParty, type Side } from '../party-kinds';\nimport { ADD_SERVER_PATH, OUTSIDE_PARTIES_PATH, partyPath } from '../paths';\nimport { StatusBadge, Tag } from './status-badge';\nimport { SwitchCard } from './switch-card';\n\n/** The scopes that turn outside parties on or off, and that add an outside MCP server (0056). */\nconst SWITCHING_SCOPE = 'fleet:network';\nconst ADDING_SCOPE = 'fleet:manage';\n\nfunction PartyCard({ party, fleetId }: { party: ListedParty; fleetId: string }) {\n const { protocol, side } = PARTY_KINDS[party.kind];\n const where = party.kind === 'mcpServer' ? party.url : party.clientId;\n const state = PARTY_STATES[party.state];\n return (\n <a href={inFleet(partyPath(party.name), fleetId)} className={`${CARD} grid gap-2 hover:bg-accent`} data-testid=\"outside-parties-party\">\n <span className=\"flex items-center gap-2\">\n <strong>{party.name}</strong> <Tag>{protocol}</Tag> <Tag>{`${protocol} ${SIDES[side].one}`}</Tag>\n </span>\n <span className=\"truncate font-mono text-code\" title={where}>\n {where}\n </span>\n <span className=\"flex flex-wrap items-center gap-2\">\n <StatusBadge tone={state.tone} label={state.label} />\n {party.ownerName === null ? null : <Tag>{party.ownerName}</Tag>}\n </span>\n </a>\n );\n}\n\n/**\n * The Outside parties page: how many the fleet has, whether they are on,\n * and each party, for every side or one. What the API refuses is said in\n * place of what it would show.\n */\nexport async function OutsideParties({ page, side }: { page: SignedInPage; side: Side | undefined }) {\n const { api, fleetId, scopes } = page;\n const [status, parties] = await Promise.all([readOf(api.outsideParties.status.query()), readOf(api.parties.list.query())]);\n const listed = parties.isOk ? parties.value : [];\n const counts = countsOf(listed);\n const shown = side === undefined ? listed : listed.filter((party) => PARTY_KINDS[party.kind].side === side);\n const filters = [\n { label: 'All', href: OUTSIDE_PARTIES_PATH, isCurrent: side === undefined },\n { label: 'Servers', href: `${OUTSIDE_PARTIES_PATH}?kind=server`, isCurrent: side === 'server' },\n { label: 'Clients', href: `${OUTSIDE_PARTIES_PATH}?kind=client`, isCurrent: side === 'client' },\n ];\n return (\n <div className=\"grid gap-4\">\n <div className=\"flex flex-wrap items-end justify-between gap-3\">\n <div>\n <h1 className=\"text-title font-semibold\">Outside parties</h1>\n <p className=\"text-muted-foreground\" data-testid=\"outside-parties-counts\">\n {[\n `${String(counts.sides.server)} ${counts.sides.server === 1 ? SIDES.server.one : SIDES.server.many}`,\n `${String(counts.sides.client)} ${counts.sides.client === 1 ? SIDES.client.one : SIDES.client.many}`,\n ...counts.protocols.map(({ protocol, count }) => `${protocol} ${String(count)}`),\n ].join(' · ')}\n </p>\n </div>\n {scopes.includes(ADDING_SCOPE) ? (\n <a className={BUTTONS.primary} href={inFleet(ADD_SERVER_PATH, fleetId)} data-testid=\"outside-parties-add\">\n Add server\n </a>\n ) : null}\n </div>\n {status.isOk ? (\n <SwitchCard isOn={status.value.isOn} canSwitch={scopes.includes(SWITCHING_SCOPE)} fleetId={fleetId} />\n ) : (\n <p role=\"alert\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {status.refusal}\n </p>\n )}\n <nav aria-label=\"Show\" className=\"flex gap-2\">\n {filters.map((filter) => (\n <a key={filter.label} href={inFleet(filter.href, fleetId)} aria-current={filter.isCurrent ? 'page' : undefined} className={filter.isCurrent ? BUTTONS.secondary : `${BUTTONS.secondary} border-transparent`}>\n {filter.label}\n </a>\n ))}\n </nav>\n {!parties.isOk ? (\n <p role=\"alert\" className=\"text-tone-attention-fg\">\n {parties.refusal}\n </p>\n ) : shown.length === 0 ? (\n <p className=\"text-muted-foreground\">No outside party yet.</p>\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2\">\n {shown.map((party) => (\n <PartyCard key={party.name} party={party} fleetId={fleetId} />\n ))}\n </div>\n )}\n </div>\n );\n}\n","import type { Metadata } from 'next';\n\nimport { OutsideParties } from '../../../features/outside-parties/ui/outside-parties';\nimport { OUTSIDE_PARTIES_PATH } from '../../../features/outside-parties/paths';\nimport { NoSignIn } from '../../../features/sign-in/ui/no-sign-in';\nimport { signedInPage, type SearchParams } from '../../../lib/gateway-api/page-api';\n\nexport const metadata: Metadata = { title: 'Outside parties' };\n\nexport default async function OutsidePartiesPage({ searchParams }: { searchParams: Promise<SearchParams> }) {\n const parameters = await searchParams;\n const page = await signedInPage({ path: OUTSIDE_PARTIES_PATH, searchParams: parameters });\n if (page.kind === 'noSignIn') {\n return <NoSignIn />;\n }\n const side = parameters.kind === 'server' || parameters.kind === 'client' ? parameters.kind : undefined;\n return <OutsideParties page={page} side={side} />;\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const SwitchCard = registerClientReference(\n function() { throw new Error(\"Attempted to call SwitchCard() from the server but SwitchCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/outside-parties/ui/switch-card.tsx\",\n \"SwitchCard\",\n);\n"],"names":["SWITCHING_SCOPE","ADDING_SCOPE","PartyCard","party","fleetId","protocol","side","kind","where","url","clientId","state","href","name","className","one","title","tone","label","ownerName","OutsideParties","page","api","scopes","status","parties","Promise","all","outsideParties","query","list","listed","isOk","value","counts","shown","undefined","filter","filters","isCurrent","String","sides","server","many","client","protocols","map","count","join","includes","primary","isOn","canSwitch","role","refusal","secondary","length","SwitchCard","Error"],"mappings":"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","ignoreList":[2]}
1
+ {"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=[43928,a=>{"use strict";var b=a.i(70043),c=a.i(4757);a.S([b,"40d6872414150cd79fefc55f072b7cad40b6a4a069,f",0,c,"403e0b04e60dfe1d24c4ecc52b215e8e12e99da16b,q,60c5f3659aad6966b26d46ff4ed48172052fc42a6a,v,60cd31f366bb1d6ef873aca1dd9dd6a97a6fc52519,G"],43928)}];
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
2
 
3
3
  //# sourceMappingURL=web__next-internal_server_app_%28console%29_overview_page_actions_18on1ziyg1nzy.js.map
@@ -1 +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 '40d6872414150cd79fefc55f072b7cad40b6a4a069'} from 'ACTIONS_MODULE0'\nexport {answerDelivery as '403e0b04e60dfe1d24c4ecc52b215e8e12e99da16b'} from 'ACTIONS_MODULE1'\nexport {doneDelivery as '60cd31f366bb1d6ef873aca1dd9dd6a97a6fc52519'} from 'ACTIONS_MODULE1'\nexport {openDelivery as '60c5f3659aad6966b26d46ff4ed48172052fc42a6a'} from 'ACTIONS_MODULE1'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
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"}
@@ -1,3 +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(69372),g=a.i(49144),h=a.i(69912),i=a.i(65253),j=a.i(98323),k=a.i(5901);function l({party:a,fleetId:c}){return(0,b.jsxs)("div",{className:"grid gap-2",children:["awaitingCrew"===a.state?(0,b.jsxs)(f.ActionForm,{action:k.P,fleetId:c,submit:{label:"Crew",pending:"Crewing…"},className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("input",{type:"hidden",name:"name",value:a.name}),(0,b.jsx)("input",{className:g.w,name:"secret",placeholder:"secret from a new starting prompt",required:!0})]}):null,"mcpServer"===a.kind&&"crewed"===a.state?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.ActionForm,{action:k.g,fleetId:c,submit:{label:"State its tools",pending:"Stating…",kind:"secondary"},children:(0,b.jsx)("input",{type:"hidden",name:"name",value:a.name})}),(0,b.jsxs)(f.ActionForm,{action:k.p,fleetId:c,submit:{label:"Mark",pending:"Marking…",kind:"secondary"},className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("input",{type:"hidden",name:"name",value:a.name}),(0,b.jsx)("input",{className:g.w,name:"tool",placeholder:"tool",required:!0,maxLength:128}),(0,b.jsxs)("label",{className:"flex items-center gap-1",children:[(0,b.jsx)("input",{type:"checkbox",name:"isRepeatable"})," repeatable"]})]})]}):null]})}function m({fleetId:a,owners:c}){return(0,b.jsxs)("section",{className:`${g.r} grid gap-3`,children:[(0,b.jsx)("h2",{className:"text-section font-semibold",children:"Approve an MCP server"}),(0,b.jsxs)(f.ActionForm,{action:k.L,fleetId:a,submit:{label:"Approve",pending:"Approving…"},testId:"parties-approve",children:[(0,b.jsx)("input",{type:"hidden",name:"requestId",value:(0,d.randomUUID)()}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Name, the proxy ship's"}),(0,b.jsx)("input",{className:g.w,name:"name",required:!0})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Streamable HTTP URL"}),(0,b.jsx)("input",{className:g.w,name:"url",type:"url",required:!0})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Credential"}),(0,b.jsxs)("select",{className:g.w,name:"credentialKind",children:[(0,b.jsx)("option",{value:"bearer",children:"Bearer token"}),(0,b.jsx)("option",{value:"clientCredentials",children:"OAuth client credentials"})]})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Bearer token"}),(0,b.jsx)("input",{className:g.w,name:"token",type:"password"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Client id"}),(0,b.jsx)("input",{className:g.w,name:"clientId"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Client secret"}),(0,b.jsx)("input",{className:g.w,name:"clientSecret",type:"password"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Issuer"}),(0,b.jsx)("input",{className:g.w,name:"issuer",type:"url"})]}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Scope"}),(0,b.jsx)("input",{className:g.w,name:"scope"})]}),(0,b.jsx)(h.f,{choices:c.isOk?c.value:[],current:null,help:"A person ship or argo. It answers for this server.",refusal:c.isOk?void 0:c.refusal}),(0,b.jsxs)("label",{className:g.z,children:[(0,b.jsx)("span",{children:"Calls at once"}),(0,b.jsx)("input",{className:g.w,name:"concurrencyLimit",type:"number",min:1,max:10,defaultValue:4})]})]})]})}async function n({page:a}){let{api:c,fleetId:d,scopes:f}=a,g=await (0,e.F)(c.parties.list.query()),h=f.includes("fleet:manage"),k=h?await (0,e.F)(c.parties.ownerChoices.query()):void 0;return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:"Parties"}),(0,b.jsx)("p",{className:"text-muted-foreground",children:"Outside MCP servers approved for this fleet, each behind its proxy ship."}),g.isOk?0===g.value.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"No party yet."}):(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full text-left","data-testid":"parties-table",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border",children:[(0,b.jsx)("th",{className:"p-2",children:"Name"}),(0,b.jsx)("th",{className:"p-2",children:"URL"}),(0,b.jsx)("th",{className:"p-2",children:"Credential"}),(0,b.jsx)("th",{className:"p-2",children:"State"}),(0,b.jsx)("th",{className:"p-2",children:"Proxy ship"}),(0,b.jsx)("th",{className:"p-2"})]})}),(0,b.jsx)("tbody",{children:g.value.map(a=>{let c=i.Y[a.state];return(0,b.jsxs)("tr",{className:"border-b border-border align-top",children:[(0,b.jsx)("td",{className:"p-2",children:a.name}),(0,b.jsx)("td",{className:"p-2 font-mono",children:"mcpServer"===a.kind?a.url:a.clientId}),(0,b.jsx)("td",{className:"p-2",children:"mcpServer"===a.kind?a.credentialKind:"MCP client"}),(0,b.jsx)("td",{className:"p-2",children:(0,b.jsx)(j.T,{tone:c.tone,label:c.label})}),(0,b.jsx)("td",{className:"p-2",children:a.proxyShipName??""}),(0,b.jsx)("td",{className:"p-2",children:h?(0,b.jsx)(l,{party:a,fleetId:d}):null})]},a.name)})})]})}):(0,b.jsx)("p",{role:"alert",className:"text-tone-attention-fg",children:g.refusal}),void 0===k?null:(0,b.jsx)(m,{fleetId:d,owners:k})]})}var o=a.i(22126);async function p({searchParams:a}){let d=await (0,e._)({path:c.f,searchParams:await a});return"noSignIn"===d.kind?(0,b.jsx)(o.f,{}):(0,b.jsx)(n,{page:d})}a.s(["default",0,p,"metadata",0,{title:"Parties"}],5103)},95412,function(a){a.n(a.i(5103))}];
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
2
 
3
3
  //# sourceMappingURL=web_app_%28console%29_parties_page_tsx_0pp63ghly3eyp._.js.map
@@ -1 +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 { ActionForm } from '../../forms/ui/action-form';\nimport { CARD, INPUT, LABEL } from '../../forms/ui/look';\nimport { OwnerField, type OwnerChoices } from '../../forms/ui/owner-field';\nimport { PARTY_STATES, type ListedParty } from '../../outside-parties/party-kinds';\nimport { StatusBadge } from '../../outside-parties/ui/status-badge';\nimport { approveParty, crewParty, markTool, stateParty } from '../actions';\n\n/** The scope that approves, crews and states parties (0056). */\nconst MANAGING_SCOPE = 'fleet:manage';\n\nfunction PartyForms({ party, fleetId }: { party: ListedParty; fleetId: string }) {\n return (\n <div className=\"grid gap-2\">\n {party.state === 'awaitingCrew' ? (\n <ActionForm action={crewParty} fleetId={fleetId} submit={{ label: 'Crew', pending: 'Crewing…' }} className=\"flex flex-wrap items-center gap-2\">\n <input type=\"hidden\" name=\"name\" value={party.name} />\n <input className={INPUT} name=\"secret\" placeholder=\"secret from a new starting prompt\" required />\n </ActionForm>\n ) : null}\n {party.kind === 'mcpServer' && party.state === 'crewed' ? (\n <>\n <ActionForm action={stateParty} fleetId={fleetId} submit={{ label: 'State its tools', pending: 'Stating…', kind: 'secondary' }}>\n <input type=\"hidden\" name=\"name\" value={party.name} />\n </ActionForm>\n <ActionForm action={markTool} fleetId={fleetId} submit={{ label: 'Mark', pending: 'Marking…', kind: 'secondary' }} className=\"flex flex-wrap items-center gap-2\">\n <input type=\"hidden\" name=\"name\" value={party.name} />\n <input className={INPUT} name=\"tool\" placeholder=\"tool\" required maxLength={128} />\n <label className=\"flex items-center gap-1\">\n <input type=\"checkbox\" name=\"isRepeatable\" /> repeatable\n </label>\n </ActionForm>\n </>\n ) : null}\n </div>\n );\n}\n\nfunction ApproveForm({ fleetId, owners }: { fleetId: string; owners: OwnerChoices }) {\n return (\n <section className={`${CARD} grid gap-3`}>\n <h2 className=\"text-section font-semibold\">Approve an MCP server</h2>\n <ActionForm action={approveParty} fleetId={fleetId} submit={{ label: 'Approve', pending: 'Approving…' }} testId=\"parties-approve\">\n <input type=\"hidden\" name=\"requestId\" value={randomUUID()} />\n <label className={LABEL}>\n <span>Name, the proxy ship&apos;s</span>\n <input className={INPUT} name=\"name\" required />\n </label>\n <label className={LABEL}>\n <span>Streamable HTTP URL</span>\n <input className={INPUT} name=\"url\" type=\"url\" required />\n </label>\n <label className={LABEL}>\n <span>Credential</span>\n <select className={INPUT} name=\"credentialKind\">\n <option value=\"bearer\">Bearer token</option>\n <option value=\"clientCredentials\">OAuth client credentials</option>\n </select>\n </label>\n <label className={LABEL}>\n <span>Bearer token</span>\n <input className={INPUT} name=\"token\" type=\"password\" />\n </label>\n <label className={LABEL}>\n <span>Client id</span>\n <input className={INPUT} name=\"clientId\" />\n </label>\n <label className={LABEL}>\n <span>Client secret</span>\n <input className={INPUT} name=\"clientSecret\" type=\"password\" />\n </label>\n <label className={LABEL}>\n <span>Issuer</span>\n <input className={INPUT} name=\"issuer\" type=\"url\" />\n </label>\n <label className={LABEL}>\n <span>Scope</span>\n <input className={INPUT} name=\"scope\" />\n </label>\n <OwnerField choices={owners.isOk ? owners.value : []} current={null} help=\"A person ship or argo. It answers for this server.\" refusal={owners.isOk ? undefined : owners.refusal} />\n <label className={LABEL}>\n <span>Calls at once</span>\n <input className={INPUT} name=\"concurrencyLimit\" type=\"number\" min={1} max={10} defaultValue={4} />\n </label>\n </ActionForm>\n </section>\n );\n}\n\n/**\n * The Parties page (header design H5: argo's page, now for accounts by\n * scope): the fleet's outside MCP servers, each behind its proxy ship, and\n * for an account holding fleet:manage the forms that approve, crew, state\n * and mark them.\n */\nexport async function Parties({ page }: { page: SignedInPage }) {\n const { api, fleetId, scopes } = page;\n const parties = await readOf(api.parties.list.query());\n const canManage = scopes.includes(MANAGING_SCOPE);\n const owners = canManage ? await readOf(api.parties.ownerChoices.query()) : undefined;\n return (\n <div className=\"grid gap-4\">\n <h1 className=\"text-title font-semibold\">Parties</h1>\n <p className=\"text-muted-foreground\">Outside MCP servers approved for this fleet, each behind its proxy ship.</p>\n {!parties.isOk ? (\n <p role=\"alert\" className=\"text-tone-attention-fg\">\n {parties.refusal}\n </p>\n ) : parties.value.length === 0 ? (\n <p className=\"text-muted-foreground\">No party yet.</p>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-left\" data-testid=\"parties-table\">\n <thead>\n <tr className=\"border-b border-border\">\n <th className=\"p-2\">Name</th>\n <th className=\"p-2\">URL</th>\n <th className=\"p-2\">Credential</th>\n <th className=\"p-2\">State</th>\n <th className=\"p-2\">Proxy ship</th>\n <th className=\"p-2\" />\n </tr>\n </thead>\n <tbody>\n {parties.value.map((party) => {\n const state = PARTY_STATES[party.state];\n return (\n <tr key={party.name} className=\"border-b border-border align-top\">\n <td className=\"p-2\">{party.name}</td>\n <td className=\"p-2 font-mono\">{party.kind === 'mcpServer' ? party.url : party.clientId}</td>\n <td className=\"p-2\">{party.kind === 'mcpServer' ? party.credentialKind : 'MCP client'}</td>\n <td className=\"p-2\">\n <StatusBadge tone={state.tone} label={state.label} />\n </td>\n <td className=\"p-2\">{party.proxyShipName ?? ''}</td>\n <td className=\"p-2\">{canManage ? <PartyForms party={party} fleetId={fleetId} /> : null}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n {owners === undefined ? null : <ApproveForm fleetId={fleetId} owners={owners} />}\n </div>\n );\n}\n"],"names":["MANAGING_SCOPE","PartyForms","party","fleetId","className","state","action","submit","label","pending","type","name","value","placeholder","required","kind","maxLength","ApproveForm","owners","testId","choices","isOk","current","help","refusal","undefined","min","max","defaultValue","Parties","page","api","scopes","parties","list","query","canManage","includes","ownerChoices","role","length","map","url","clientId","credentialKind","tone","proxyShipName"],"mappings":"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"}
1
+ {"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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"}
@@ -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":"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","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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"}