@aeolus-fleet/gateway 0.33.0 → 0.35.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 (647) hide show
  1. package/README.md +12 -2
  2. package/dist/adapters/crypto/party-sign-in-seals.d.ts +3 -0
  3. package/dist/adapters/crypto/party-sign-in-seals.js +15 -0
  4. package/dist/adapters/crypto/party-sign-in-seals.js.map +1 -0
  5. package/dist/adapters/fleet/rest-fleet-door.js +2 -2
  6. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  7. package/dist/adapters/fleet/ship-names.d.ts +7 -0
  8. package/dist/adapters/fleet/ship-names.js +25 -0
  9. package/dist/adapters/fleet/ship-names.js.map +1 -0
  10. package/dist/adapters/http/party-sign-in-routes.d.ts +25 -0
  11. package/dist/adapters/http/party-sign-in-routes.js +45 -0
  12. package/dist/adapters/http/party-sign-in-routes.js.map +1 -0
  13. package/dist/adapters/http/person-tools.js +5 -3
  14. package/dist/adapters/http/person-tools.js.map +1 -1
  15. package/dist/adapters/http/slack-routes.d.ts +0 -13
  16. package/dist/adapters/http/slack-routes.js +19 -4
  17. package/dist/adapters/http/slack-routes.js.map +1 -1
  18. package/dist/adapters/mcp/mcp-servers.js +22 -4
  19. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  20. package/dist/adapters/oauth/authorization-servers.d.ts +2 -0
  21. package/dist/adapters/oauth/authorization-servers.js +127 -0
  22. package/dist/adapters/oauth/authorization-servers.js.map +1 -0
  23. package/dist/adapters/oauth/party-sign-ins.d.ts +2 -0
  24. package/dist/adapters/oauth/party-sign-ins.js +152 -0
  25. package/dist/adapters/oauth/party-sign-ins.js.map +1 -0
  26. package/dist/adapters/pagasae/email-channel.js +4 -3
  27. package/dist/adapters/pagasae/email-channel.js.map +1 -1
  28. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  29. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  30. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  31. package/dist/adapters/prisma/generated/browser.d.ts +10 -0
  32. package/dist/adapters/prisma/generated/client.d.ts +10 -0
  33. package/dist/adapters/prisma/generated/internal/class.d.ts +22 -0
  34. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  35. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  36. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +178 -1
  37. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +26 -1
  38. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  39. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +27 -0
  40. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +26 -1
  41. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  42. package/dist/adapters/prisma/generated/models/PartyGrant.d.ts +1276 -0
  43. package/dist/adapters/prisma/generated/models/PartyGrant.js +2 -0
  44. package/dist/adapters/prisma/generated/models/PartyGrant.js.map +1 -0
  45. package/dist/adapters/prisma/generated/models/PartySignInNotice.d.ts +1003 -0
  46. package/dist/adapters/prisma/generated/models/PartySignInNotice.js +2 -0
  47. package/dist/adapters/prisma/generated/models/PartySignInNotice.js.map +1 -0
  48. package/dist/adapters/prisma/generated/models/SlackEvent.d.ts +17 -14
  49. package/dist/adapters/prisma/generated/models.d.ts +2 -0
  50. package/dist/adapters/prisma/party-grants.d.ts +10 -0
  51. package/dist/adapters/prisma/party-grants.js +118 -0
  52. package/dist/adapters/prisma/party-grants.js.map +1 -0
  53. package/dist/adapters/prisma/party-store.js +23 -3
  54. package/dist/adapters/prisma/party-store.js.map +1 -1
  55. package/dist/adapters/prisma/sign-in-notices.d.ts +8 -0
  56. package/dist/adapters/prisma/sign-in-notices.js +22 -0
  57. package/dist/adapters/prisma/sign-in-notices.js.map +1 -0
  58. package/dist/adapters/prisma/slack-events.js +1 -1
  59. package/dist/adapters/prisma/slack-events.js.map +1 -1
  60. package/dist/adapters/prisma/slack-posts.js +0 -4
  61. package/dist/adapters/prisma/slack-posts.js.map +1 -1
  62. package/dist/adapters/slack/slack-messages.js +2 -2
  63. package/dist/adapters/slack/slack-messages.js.map +1 -1
  64. package/dist/adapters/trpc/router.d.ts +138 -10
  65. package/dist/adapters/trpc/router.js +150 -11
  66. package/dist/adapters/trpc/router.js.map +1 -1
  67. package/dist/app.d.ts +2 -0
  68. package/dist/app.js +82 -6
  69. package/dist/app.js.map +1 -1
  70. package/dist/core/a2a-in/send-a2a-message.d.ts +0 -2
  71. package/dist/core/a2a-in/send-a2a-message.js +17 -4
  72. package/dist/core/a2a-in/send-a2a-message.js.map +1 -1
  73. package/dist/core/connection/ports.d.ts +5 -0
  74. package/dist/core/mcp-out/grant-calls.d.ts +69 -0
  75. package/dist/core/mcp-out/grant-calls.js +98 -0
  76. package/dist/core/mcp-out/grant-calls.js.map +1 -0
  77. package/dist/core/mcp-out/hand-call.d.ts +6 -1
  78. package/dist/core/mcp-out/hand-call.js +23 -2
  79. package/dist/core/mcp-out/hand-call.js.map +1 -1
  80. package/dist/core/mcp-out/ports.d.ts +6 -2
  81. package/dist/core/mcp-out/state-party.d.ts +5 -2
  82. package/dist/core/mcp-out/state-party.js +7 -2
  83. package/dist/core/mcp-out/state-party.js.map +1 -1
  84. package/dist/core/parties/add-sign-in-server.d.ts +25 -0
  85. package/dist/core/parties/add-sign-in-server.js +70 -0
  86. package/dist/core/parties/add-sign-in-server.js.map +1 -0
  87. package/dist/core/parties/approve-party.d.ts +2 -2
  88. package/dist/core/parties/check-approving.d.ts +3 -3
  89. package/dist/core/parties/check-approving.js +2 -2
  90. package/dist/core/parties/check-approving.js.map +1 -1
  91. package/dist/core/parties/party.d.ts +3 -2
  92. package/dist/core/parties/party.js +4 -1
  93. package/dist/core/parties/party.js.map +1 -1
  94. package/dist/core/parties/ports.d.ts +49 -0
  95. package/dist/core/parties/read-party-tools.d.ts +5 -2
  96. package/dist/core/parties/read-party-tools.js +7 -2
  97. package/dist/core/parties/read-party-tools.js.map +1 -1
  98. package/dist/core/parties/retire-party.d.ts +5 -1
  99. package/dist/core/parties/retire-party.js +6 -1
  100. package/dist/core/parties/retire-party.js.map +1 -1
  101. package/dist/core/parties/shown-party.d.ts +2 -2
  102. package/dist/core/parties/sign-in-servers.d.ts +4 -0
  103. package/dist/core/parties/sign-in-servers.js +13 -0
  104. package/dist/core/parties/sign-in-servers.js.map +1 -0
  105. package/dist/core/parties/switch-tools.d.ts +3 -1
  106. package/dist/core/parties/switch-tools.js +5 -1
  107. package/dist/core/parties/switch-tools.js.map +1 -1
  108. package/dist/core/party-grants/approved-sign-in-party.d.ts +17 -0
  109. package/dist/core/party-grants/approved-sign-in-party.js +21 -0
  110. package/dist/core/party-grants/approved-sign-in-party.js.map +1 -0
  111. package/dist/core/party-grants/call-grant.d.ts +46 -0
  112. package/dist/core/party-grants/call-grant.js +30 -0
  113. package/dist/core/party-grants/call-grant.js.map +1 -0
  114. package/dist/core/party-grants/complete-party-sign-in.d.ts +52 -0
  115. package/dist/core/party-grants/complete-party-sign-in.js +95 -0
  116. package/dist/core/party-grants/complete-party-sign-in.js.map +1 -0
  117. package/dist/core/party-grants/end-account-grants.d.ts +18 -0
  118. package/dist/core/party-grants/end-account-grants.js +16 -0
  119. package/dist/core/party-grants/end-account-grants.js.map +1 -0
  120. package/dist/core/party-grants/end-grant.d.ts +23 -0
  121. package/dist/core/party-grants/end-grant.js +33 -0
  122. package/dist/core/party-grants/end-grant.js.map +1 -0
  123. package/dist/core/party-grants/end-party-grants.d.ts +19 -0
  124. package/dist/core/party-grants/end-party-grants.js +31 -0
  125. package/dist/core/party-grants/end-party-grants.js.map +1 -0
  126. package/dist/core/party-grants/end-retired-persons-grants.d.ts +19 -0
  127. package/dist/core/party-grants/end-retired-persons-grants.js +30 -0
  128. package/dist/core/party-grants/end-retired-persons-grants.js.map +1 -0
  129. package/dist/core/party-grants/keep-grants-alive.d.ts +18 -0
  130. package/dist/core/party-grants/keep-grants-alive.js +19 -0
  131. package/dist/core/party-grants/keep-grants-alive.js.map +1 -0
  132. package/dist/core/party-grants/list-grants.d.ts +30 -0
  133. package/dist/core/party-grants/list-grants.js +34 -0
  134. package/dist/core/party-grants/list-grants.js.map +1 -0
  135. package/dist/core/party-grants/listing-connection.d.ts +29 -0
  136. package/dist/core/party-grants/listing-connection.js +17 -0
  137. package/dist/core/party-grants/listing-connection.js.map +1 -0
  138. package/dist/core/party-grants/party-grant.d.ts +50 -0
  139. package/dist/core/party-grants/party-grant.js +26 -0
  140. package/dist/core/party-grants/party-grant.js.map +1 -0
  141. package/dist/core/party-grants/ports.d.ts +180 -0
  142. package/dist/core/party-grants/ports.js +2 -0
  143. package/dist/core/party-grants/ports.js.map +1 -0
  144. package/dist/core/party-grants/read-own-grant.d.ts +33 -0
  145. package/dist/core/party-grants/read-own-grant.js +23 -0
  146. package/dist/core/party-grants/read-own-grant.js.map +1 -0
  147. package/dist/core/party-grants/refresh-grant.d.ts +41 -0
  148. package/dist/core/party-grants/refresh-grant.js +58 -0
  149. package/dist/core/party-grants/refresh-grant.js.map +1 -0
  150. package/dist/core/party-grants/remove-grant.d.ts +21 -0
  151. package/dist/core/party-grants/remove-grant.js +25 -0
  152. package/dist/core/party-grants/remove-grant.js.map +1 -0
  153. package/dist/core/party-grants/remove-own-grant.d.ts +17 -0
  154. package/dist/core/party-grants/remove-own-grant.js +21 -0
  155. package/dist/core/party-grants/remove-own-grant.js.map +1 -0
  156. package/dist/core/party-grants/sign-in-party.d.ts +23 -0
  157. package/dist/core/party-grants/sign-in-party.js +22 -0
  158. package/dist/core/party-grants/sign-in-party.js.map +1 -0
  159. package/dist/core/party-grants/start-party-sign-in.d.ts +31 -0
  160. package/dist/core/party-grants/start-party-sign-in.js +31 -0
  161. package/dist/core/party-grants/start-party-sign-in.js.map +1 -0
  162. package/dist/core/party-grants/tell-sign-in-needed.d.ts +29 -0
  163. package/dist/core/party-grants/tell-sign-in-needed.js +27 -0
  164. package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -0
  165. package/dist/core/people/ports.d.ts +9 -2
  166. package/dist/core/people/wake-person.js +3 -1
  167. package/dist/core/people/wake-person.js.map +1 -1
  168. package/dist/core/shared/errors.d.ts +1 -1
  169. package/dist/core/shared/errors.js.map +1 -1
  170. package/dist/core/slack/answer-in-slack.d.ts +8 -3
  171. package/dist/core/slack/answer-in-slack.js +11 -3
  172. package/dist/core/slack/answer-in-slack.js.map +1 -1
  173. package/dist/core/slack/kept-slack-event.d.ts +5 -3
  174. package/dist/core/slack/kept-slack-event.js.map +1 -1
  175. package/dist/core/slack/ports.d.ts +7 -8
  176. package/dist/core/slack/send-slack-events.d.ts +6 -3
  177. package/dist/core/slack/send-slack-events.js +32 -4
  178. package/dist/core/slack/send-slack-events.js.map +1 -1
  179. package/dist/core/slack/show-in-slack.js +2 -2
  180. package/dist/core/slack/show-in-slack.js.map +1 -1
  181. package/dist/core/slack/slack-post.d.ts +9 -0
  182. package/dist/core/slack/slack-post.js +8 -0
  183. package/dist/core/slack/slack-post.js.map +1 -1
  184. package/dist/core/slack/take-slack-event.d.ts +4 -2
  185. package/dist/core/slack/take-slack-event.js +8 -2
  186. package/dist/core/slack/take-slack-event.js.map +1 -1
  187. package/dist/core/vault/credential.d.ts +34 -0
  188. package/dist/grant-worker.d.ts +20 -0
  189. package/dist/grant-worker.js +24 -0
  190. package/dist/grant-worker.js.map +1 -0
  191. package/package.json +1 -1
  192. package/src/adapters/prisma/migrations/20261028230000_party_grants/migration.sql +18 -0
  193. package/src/adapters/prisma/migrations/20261029080000_party_sign_in_notices/migration.sql +10 -0
  194. package/src/adapters/prisma/migrations/20261029120000_party_grants_lost/migration.sql +3 -0
  195. package/src/adapters/prisma/migrations/20261029130000_party_grants_refreshed/migration.sql +6 -0
  196. package/src/adapters/prisma/migrations/20261030090000_party_grants_of_account/migration.sql +2 -0
  197. package/src/adapters/prisma/migrations/20261030100000_slack_events_unmatched_answers/migration.sql +2 -0
  198. package/src/adapters/prisma/schema.prisma +46 -1
  199. package/web/.next/BUILD_ID +1 -1
  200. package/web/.next/app-path-routes-manifest.json +3 -1
  201. package/web/.next/build-manifest.json +3 -3
  202. package/web/.next/diagnostics/route-bundle-stats.json +55 -55
  203. package/web/.next/fallback-build-manifest.json +3 -3
  204. package/web/.next/prerender-manifest.json +67 -3
  205. package/web/.next/routes-manifest.json +12 -0
  206. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  207. package/web/.next/server/app/(console)/gateway-off/page.js +6 -6
  208. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  209. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  210. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  211. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +6 -6
  212. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  213. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  214. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +48 -8
  215. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +6 -6
  216. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  217. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  218. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +44 -4
  219. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +7 -7
  220. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  221. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  222. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +48 -8
  223. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +6 -6
  224. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  225. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  226. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +46 -6
  227. package/web/.next/server/app/(console)/outside-parties/add/page.js +8 -7
  228. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  229. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  230. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  231. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +7 -7
  232. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  233. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  234. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  235. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +6 -6
  236. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  237. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  238. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  239. package/web/.next/server/app/(console)/outside-parties/page.js +6 -6
  240. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  241. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  242. package/web/.next/server/app/(console)/overview/changes/route.js +2 -1
  243. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  244. package/web/.next/server/app/(console)/overview/focus/route.js +2 -1
  245. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
  246. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +9 -9
  247. package/web/.next/server/app/(console)/overview/page.js +6 -6
  248. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  249. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  250. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  251. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js +5 -5
  252. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  253. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  254. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
  255. package/web/.next/server/app/(console)/parties/page.js +6 -6
  256. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  257. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  258. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  259. package/web/.next/server/app/(console)/sign-in/failed/page.js +6 -6
  260. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  261. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  262. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +10 -10
  263. package/web/.next/server/app/(console)/slack/disconnect/page.js +5 -5
  264. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
  265. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
  266. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +10 -10
  267. package/web/.next/server/app/(console)/slack/expose/page.js +5 -5
  268. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
  269. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  270. package/web/.next/server/app/(console)/slack/link/route.js +2 -1
  271. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
  272. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +10 -10
  273. package/web/.next/server/app/(console)/slack/page.js +5 -5
  274. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  275. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  276. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +10 -10
  277. package/web/.next/server/app/(console)/slack/remove/page.js +5 -5
  278. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  279. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  280. package/web/.next/server/app/_global-error.html +1 -1
  281. package/web/.next/server/app/_global-error.rsc +1 -1
  282. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  283. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  284. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  285. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  286. package/web/.next/server/app/_not-found/page.js +6 -6
  287. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  288. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  289. package/web/.next/server/app/apple-icon.png/route/app-paths-manifest.json +3 -0
  290. package/web/.next/server/app/apple-icon.png/route/build-manifest.json +12 -0
  291. package/web/.next/server/app/apple-icon.png/route.js +8 -0
  292. package/web/.next/server/app/apple-icon.png/route.js.map +5 -0
  293. package/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -0
  294. package/web/.next/server/app/apple-icon.png.body +0 -0
  295. package/web/.next/server/app/apple-icon.png.meta +1 -0
  296. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  297. package/web/.next/server/app/authorize/failed/page.js +5 -5
  298. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  299. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  300. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  301. package/web/.next/server/app/authorize/pick/page.js +4 -4
  302. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  303. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  304. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  305. package/web/.next/server/app/authorize/waiting/approval/page.js +6 -6
  306. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  307. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  308. package/web/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
  309. package/web/.next/server/app/icon.svg/route/build-manifest.json +12 -0
  310. package/web/.next/server/app/icon.svg/route.js +8 -0
  311. package/web/.next/server/app/icon.svg/route.js.map +5 -0
  312. package/web/.next/server/app/icon.svg/route.js.nft.json +1 -0
  313. package/web/.next/server/app/icon.svg.body +19 -0
  314. package/web/.next/server/app/icon.svg.meta +1 -0
  315. package/web/.next/server/app-paths-manifest.json +3 -1
  316. package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js +315 -0
  317. package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js.map +1 -0
  318. package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js +315 -0
  319. package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js.map +1 -0
  320. package/web/.next/server/chunks/_0_um96p6psnqx._.js +57 -0
  321. package/web/.next/server/chunks/_0_um96p6psnqx._.js.map +1 -0
  322. package/web/.next/server/chunks/_0xw0b7avhvg75._.js +3 -0
  323. package/web/.next/server/chunks/_0xw0b7avhvg75._.js.map +1 -0
  324. package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js +3 -0
  325. package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js.map +1 -0
  326. package/web/.next/server/chunks/_1xf83h9norhws._.js +57 -0
  327. package/web/.next/server/chunks/_1xf83h9norhws._.js.map +1 -0
  328. package/web/.next/server/chunks/node_modules_next_1zdbrneapig6o._.js +10 -0
  329. package/web/.next/server/chunks/node_modules_next_1zdbrneapig6o._.js.map +1 -0
  330. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  331. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  332. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  333. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  334. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  335. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  336. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  337. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  338. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  339. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  340. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  341. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  342. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
  343. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
  344. package/web/.next/server/chunks/ssr/[root-of-the-server]__03w-pkh4_8jv_._.js +3 -0
  345. package/web/.next/server/chunks/ssr/[root-of-the-server]__03w-pkh4_8jv_._.js.map +1 -0
  346. package/web/.next/server/chunks/ssr/[root-of-the-server]__048-rfvdrnoze._.js +3 -0
  347. package/web/.next/server/chunks/ssr/[root-of-the-server]__048-rfvdrnoze._.js.map +1 -0
  348. package/web/.next/server/chunks/ssr/{[root-of-the-server]__14w0fxvc_of17._.js → [root-of-the-server]__07ba2bfe20c_p._.js} +2 -2
  349. package/web/.next/server/chunks/ssr/[root-of-the-server]__07ba2bfe20c_p._.js.map +1 -0
  350. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +4 -0
  351. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js.map +1 -0
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
  354. package/web/.next/server/chunks/ssr/[root-of-the-server]__0f732g7ojc5-a._.js +3 -0
  355. package/web/.next/server/chunks/ssr/[root-of-the-server]__0f732g7ojc5-a._.js.map +1 -0
  356. package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js +3 -0
  357. package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js.map +1 -0
  358. package/web/.next/server/chunks/ssr/[root-of-the-server]__0i_m5r9lyffk8._.js +3 -0
  359. package/web/.next/server/chunks/ssr/[root-of-the-server]__0i_m5r9lyffk8._.js.map +1 -0
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js +1 -1
  361. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js.map +1 -1
  362. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  363. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  364. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k6a9o0872_0x._.js +3 -0
  365. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k6a9o0872_0x._.js.map +1 -0
  366. package/web/.next/server/chunks/ssr/[root-of-the-server]__0pj38h6qumggc._.js +3 -0
  367. package/web/.next/server/chunks/ssr/[root-of-the-server]__0pj38h6qumggc._.js.map +1 -0
  368. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
  369. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
  370. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
  371. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
  372. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  373. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  374. package/web/.next/server/chunks/ssr/[root-of-the-server]__1aojrh3-9jh9r._.js +3 -0
  375. package/web/.next/server/chunks/ssr/[root-of-the-server]__1aojrh3-9jh9r._.js.map +1 -0
  376. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1w5swo8gmjyx6._.js → [root-of-the-server]__1kynqd8xcwg2b._.js} +2 -2
  377. package/web/.next/server/chunks/ssr/[root-of-the-server]__1kynqd8xcwg2b._.js.map +1 -0
  378. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js +3 -0
  379. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js.map +1 -0
  380. package/web/.next/server/chunks/ssr/{[root-of-the-server]__160zc0ja_jjnu._.js → [root-of-the-server]__1q14l5_4hp9h3._.js} +2 -2
  381. package/web/.next/server/chunks/ssr/[root-of-the-server]__1q14l5_4hp9h3._.js.map +1 -0
  382. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qnls-4cj-7oh._.js +3 -0
  383. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qnls-4cj-7oh._.js.map +1 -0
  384. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
  385. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
  386. package/web/.next/server/chunks/ssr/[root-of-the-server]__1r1t1q3fzoqey._.js +3 -0
  387. package/web/.next/server/chunks/ssr/[root-of-the-server]__1r1t1q3fzoqey._.js.map +1 -0
  388. package/web/.next/server/chunks/ssr/[root-of-the-server]__1xmvo3lr1_qyo._.js +3 -0
  389. package/web/.next/server/chunks/ssr/[root-of-the-server]__1xmvo3lr1_qyo._.js.map +1 -0
  390. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js +3 -0
  391. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js.map +1 -0
  392. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js +3 -0
  393. package/web/.next/server/chunks/ssr/{_0wukvn3-ht3ps._.js.map → _0-boiqan2j4tr._.js.map} +1 -1
  394. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  395. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  396. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +1 -1
  397. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  398. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js +3 -0
  399. package/web/.next/server/chunks/ssr/{_00dg5cvqofspn._.js.map → _0bizyb21i2sl8._.js.map} +1 -1
  400. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  401. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  402. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  403. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  404. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  405. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  406. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  407. package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
  408. package/web/.next/server/chunks/ssr/_1oy13966tft2_._.js +3 -0
  409. package/web/.next/server/chunks/ssr/_1oy13966tft2_._.js.map +1 -0
  410. package/web/.next/server/chunks/ssr/_1pf8x2exvfl1z._.js +3 -0
  411. package/web/.next/server/chunks/ssr/_1pf8x2exvfl1z._.js.map +1 -0
  412. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  413. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  414. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  415. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  416. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js +3 -0
  417. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js.map +1 -0
  418. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js +3 -0
  419. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js.map +1 -0
  420. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_045k03anc7fhh.js +3 -0
  421. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_045k03anc7fhh.js.map +1 -0
  422. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js +3 -0
  423. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js.map +1 -0
  424. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tpm7qi6un9x2.js +3 -0
  425. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tpm7qi6un9x2.js.map +1 -0
  426. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uyk6p-2ofqw3.js +3 -0
  427. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uyk6p-2ofqw3.js.map +1 -0
  428. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0w8e__21f7qvg.js +3 -0
  429. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0w8e__21f7qvg.js.map +1 -0
  430. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js +3 -0
  431. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js.map +1 -0
  432. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0za9__u5ytp2s.js +3 -0
  433. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0za9__u5ytp2s.js.map +1 -0
  434. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zyzdu1detzlm.js +3 -0
  435. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zyzdu1detzlm.js.map +1 -0
  436. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11t1sej48_ec4.js +3 -0
  437. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11t1sej48_ec4.js.map +1 -0
  438. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js +3 -0
  439. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js.map +1 -0
  440. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18uz1icr303zj.js +3 -0
  441. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18uz1icr303zj.js.map +1 -0
  442. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_qkbe8796m6.js +3 -0
  443. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_qkbe8796m6.js.map +1 -0
  444. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19uoij8es9z19.js +3 -0
  445. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19uoij8es9z19.js.map +1 -0
  446. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1auju5fur8z6x.js +3 -0
  447. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1auju5fur8z6x.js.map +1 -0
  448. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c7_m2ii9lash.js +3 -0
  449. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c7_m2ii9lash.js.map +1 -0
  450. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1chb4qpzj_l1t.js +3 -0
  451. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1chb4qpzj_l1t.js.map +1 -0
  452. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qa52eylhjmki.js +3 -0
  453. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qa52eylhjmki.js.map +1 -0
  454. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qw59-auzd_zx.js +3 -0
  455. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qw59-auzd_zx.js.map +1 -0
  456. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xzq9xckazj3u.js +3 -0
  457. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xzq9xckazj3u.js.map +1 -0
  458. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1yis85alzg6hk.js +3 -0
  459. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1yis85alzg6hk.js.map +1 -0
  460. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  461. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  462. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  463. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  464. package/web/.next/server/chunks/ssr/web_features_077oo3gzcibvf._.js +3 -0
  465. package/web/.next/server/chunks/ssr/web_features_077oo3gzcibvf._.js.map +1 -0
  466. package/web/.next/server/chunks/ssr/web_features_08yw0utky5j17._.js +3 -0
  467. package/web/.next/server/chunks/ssr/{web_features_19v3mlx8c_h1-._.js.map → web_features_08yw0utky5j17._.js.map} +1 -1
  468. package/web/.next/server/chunks/ssr/web_features_0d48z2epb6oie._.js +3 -0
  469. package/web/.next/server/chunks/ssr/web_features_0d48z2epb6oie._.js.map +1 -0
  470. package/web/.next/server/chunks/ssr/web_features_0f6r-m-dq36vf._.js +3 -0
  471. package/web/.next/server/chunks/ssr/web_features_0f6r-m-dq36vf._.js.map +1 -0
  472. package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js +3 -0
  473. package/web/.next/server/chunks/ssr/{web_features_1rwkgka1xffb1._.js.map → web_features_0mi9a9pdzkdji._.js.map} +1 -1
  474. package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js +1 -1
  475. package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js.map +1 -1
  476. package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js +3 -0
  477. package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js.map +1 -0
  478. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js +3 -0
  479. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js.map +1 -0
  480. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  481. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  482. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  483. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  484. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  485. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  486. package/web/.next/server/chunks/ssr/{web_features_forms_1d1jyea2jni9o._.js → web_features_forms_1muc8tmsxjj_k._.js} +2 -2
  487. package/web/.next/server/chunks/ssr/{web_features_forms_1d1jyea2jni9o._.js.map → web_features_forms_1muc8tmsxjj_k._.js.map} +1 -1
  488. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +1 -1
  489. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -1
  490. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  491. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  492. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  493. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  494. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  495. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  496. package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js +3 -0
  497. package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js.map +1 -0
  498. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  499. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  500. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js +3 -0
  501. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js.map +1 -0
  502. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  503. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js +1 -1
  504. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js.map +1 -1
  505. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  506. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  507. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  508. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  509. package/web/.next/server/chunks/web__next-internal_server_app_apple-icon_png_route_actions_1yyo-ix0n2rsy.js +3 -0
  510. package/web/.next/server/chunks/web__next-internal_server_app_apple-icon_png_route_actions_1yyo-ix0n2rsy.js.map +1 -0
  511. package/web/.next/server/chunks/web__next-internal_server_app_icon_svg_route_actions_0xhoz0ftyz5p3.js +3 -0
  512. package/web/.next/server/chunks/web__next-internal_server_app_icon_svg_route_actions_0xhoz0ftyz5p3.js.map +1 -0
  513. package/web/.next/server/middleware-build-manifest.js +3 -3
  514. package/web/.next/server/pages/500.html +1 -1
  515. package/web/.next/server/preview-props.json +3 -3
  516. package/web/.next/server/server-reference-manifest.js +1 -1
  517. package/web/.next/server/server-reference-manifest.json +127 -39
  518. package/web/.next/static/chunks/{3efghx8whwnok.js → 03239gtej3tj0.js} +1 -1
  519. package/web/.next/static/chunks/{3d_sjtxh_vkr6.js → 07j7jnfe13wx6.js} +1 -1
  520. package/web/.next/static/chunks/{3dhy3jady0w6a.js → 0p_kl57bddsiy.js} +1 -1
  521. package/web/.next/static/chunks/0tmvd_zw45u96.js +1 -0
  522. package/web/.next/static/chunks/0vlawcs6_kjs1.js +1 -0
  523. package/web/.next/static/chunks/1se0j0htjyep6.js +1 -0
  524. package/web/.next/static/chunks/26vlpatu47xtw.css +3 -0
  525. package/web/.next/static/chunks/{1msggkwsn7vyq.js → 287ofedoj_6xl.js} +1 -1
  526. package/web/.next/static/chunks/2_e-puldye2do.js +1 -0
  527. package/web/.next/static/chunks/2gghdkr64z9f9.js +1 -0
  528. package/web/.next/static/chunks/{1jvae6c-4jwji.js → 2x86i673xcv4t.js} +1 -1
  529. package/web/.next/static/chunks/34kulpk3a-cka.js +1 -0
  530. package/web/.next/static/chunks/3ceatffqhpgpu.js +1 -0
  531. package/web/.next/static/chunks/{3rbzp0tdc1te-.js → 3fd167c0-ot3u.js} +1 -1
  532. package/web/.next/static/chunks/3l5jtag3-fukc.js +1 -0
  533. package/web/.next/static/chunks/3rxg2mdhxd6yt.js +1 -0
  534. package/web/.next/static/media/apple-icon.3jccaq3p5-lh-.png +0 -0
  535. package/web/.next/static/media/icon.1o2ogor9e8-fc.svg +19 -0
  536. package/web/.next/trace +1 -1
  537. package/web/.next/trace-build +1 -1
  538. package/web/.next/server/chunks/[root-of-the-server]__01ghdzznyfucm._.js +0 -369
  539. package/web/.next/server/chunks/[root-of-the-server]__01ghdzznyfucm._.js.map +0 -1
  540. package/web/.next/server/chunks/[root-of-the-server]__0mbwomk4pjrl7._.js +0 -369
  541. package/web/.next/server/chunks/[root-of-the-server]__0mbwomk4pjrl7._.js.map +0 -1
  542. package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js +0 -3
  543. package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js.map +0 -1
  544. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js +0 -3
  545. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js.map +0 -1
  546. package/web/.next/server/chunks/ssr/[root-of-the-server]__04e53giy2-2tm._.js +0 -3
  547. package/web/.next/server/chunks/ssr/[root-of-the-server]__04e53giy2-2tm._.js.map +0 -1
  548. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +0 -3
  549. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js.map +0 -1
  550. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js +0 -3
  551. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js.map +0 -1
  552. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e59elwbtqr-6._.js +0 -3
  553. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e59elwbtqr-6._.js.map +0 -1
  554. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kb1gl5t8kz4l._.js +0 -4
  555. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kb1gl5t8kz4l._.js.map +0 -1
  556. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +0 -3
  557. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js.map +0 -1
  558. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +0 -4
  559. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +0 -1
  560. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +0 -3
  561. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js.map +0 -1
  562. package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js.map +0 -1
  563. package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js.map +0 -1
  564. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js +0 -3
  565. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js.map +0 -1
  566. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hfashtn1ee82._.js +0 -3
  567. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hfashtn1ee82._.js.map +0 -1
  568. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +0 -3
  569. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +0 -1
  570. package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js.map +0 -1
  571. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js +0 -3
  572. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +0 -3
  573. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +0 -1
  574. package/web/.next/server/chunks/ssr/_0wukvn3-ht3ps._.js +0 -3
  575. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js +0 -3
  576. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js.map +0 -1
  577. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +0 -3
  578. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +0 -1
  579. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js +0 -3
  580. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js.map +0 -1
  581. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +0 -3
  582. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +0 -1
  583. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js +0 -3
  584. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js.map +0 -1
  585. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +0 -3
  586. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +0 -1
  587. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +0 -3
  588. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +0 -1
  589. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js +0 -3
  590. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js.map +0 -1
  591. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js +0 -3
  592. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js.map +0 -1
  593. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js +0 -3
  594. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js.map +0 -1
  595. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js +0 -3
  596. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js.map +0 -1
  597. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js +0 -3
  598. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js.map +0 -1
  599. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js +0 -3
  600. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js.map +0 -1
  601. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js +0 -3
  602. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js.map +0 -1
  603. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +0 -3
  604. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +0 -1
  605. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js +0 -3
  606. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js.map +0 -1
  607. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js +0 -3
  608. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js.map +0 -1
  609. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js +0 -3
  610. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js.map +0 -1
  611. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +0 -3
  612. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +0 -1
  613. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js +0 -3
  614. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js.map +0 -1
  615. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js +0 -3
  616. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js.map +0 -1
  617. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js +0 -3
  618. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js.map +0 -1
  619. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js +0 -3
  620. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js.map +0 -1
  621. package/web/.next/server/chunks/ssr/web_15vnjj3s0z3fa._.js +0 -3
  622. package/web/.next/server/chunks/ssr/web_15vnjj3s0z3fa._.js.map +0 -1
  623. package/web/.next/server/chunks/ssr/web_features_0xbnkk4hfgr9v._.js +0 -3
  624. package/web/.next/server/chunks/ssr/web_features_0xbnkk4hfgr9v._.js.map +0 -1
  625. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +0 -3
  626. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +0 -1
  627. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +0 -3
  628. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +0 -3
  629. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +0 -1
  630. package/web/.next/server/chunks/ssr/web_features_1rwkgka1xffb1._.js +0 -3
  631. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js +0 -3
  632. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +0 -1
  633. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js +0 -3
  634. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js.map +0 -1
  635. package/web/.next/static/chunks/1-suv9wttlxqo.js +0 -1
  636. package/web/.next/static/chunks/19kfx4qlur25a.js +0 -1
  637. package/web/.next/static/chunks/1a2-hkn-7471k.js +0 -1
  638. package/web/.next/static/chunks/1yj875esaesyh.css +0 -3
  639. package/web/.next/static/chunks/2-kh9nbonee6w.js +0 -1
  640. package/web/.next/static/chunks/2l92bozm8dcmo.js +0 -1
  641. package/web/.next/static/chunks/2riya89_i0je8.js +0 -1
  642. package/web/.next/static/chunks/310mio1zd_mw7.js +0 -1
  643. package/web/.next/static/chunks/3_pwm8b3mf4mf.js +0 -1
  644. package/web/.next/static/chunks/455eobei0t6t9.js +0 -1
  645. /package/web/.next/static/{87vMFs_KGRcFD40WWRkFR → R_nPUtDcDp1BPV3QHhaMZ}/_buildManifest.js +0 -0
  646. /package/web/.next/static/{87vMFs_KGRcFD40WWRkFR → R_nPUtDcDp1BPV3QHhaMZ}/_clientMiddlewareManifest.js +0 -0
  647. /package/web/.next/static/{87vMFs_KGRcFD40WWRkFR → R_nPUtDcDp1BPV3QHhaMZ}/_ssgManifest.js +0 -0
@@ -3,12 +3,12 @@
3
3
  * (interop 3.3, 5.2): its tools, and one call at a time.
4
4
  */
5
5
  import type { Result } from '../shared/result.js';
6
- import type { McpServerCredential } from '../vault/credential.js';
6
+ import type { McpServerPartyCredential } from '../vault/credential.js';
7
7
  /** Where an outside MCP server is, and how the gateway signs in to it. */
8
8
  export interface McpServerConnection {
9
9
  /** Its Streamable HTTP endpoint. */
10
10
  readonly url: string;
11
- readonly credential: McpServerCredential;
11
+ readonly credential: McpServerPartyCredential;
12
12
  }
13
13
  /** MCP's tool annotations (2026-07-28), as the server states them: hints, never trusted on their own. */
14
14
  export interface ToolAnnotations {
@@ -33,10 +33,13 @@ export interface ToolResult {
33
33
  readonly structuredContent?: Readonly<Record<string, unknown>>;
34
34
  readonly isError: boolean;
35
35
  }
36
+ /** How a server refused the credential a call went with (RFC 6750 3.1): not taken (401), or lacking a scope the call needs (403 `insufficient_scope`). */
37
+ export type CredentialRefusal = 'unauthorized' | 'insufficientScope';
36
38
  /**
37
39
  * How one `tools/call` ended (5.2):
38
40
  * - answered: the server's answer, which confirms the hand-over;
39
41
  * - notSent: the gateway never sent it (the server was unreachable, or refused the gateway's credential), so it did not run;
42
+ * a refusal says how the server refused the credential: 401 (unauthorized), or 403 `insufficient_scope` for this call;
40
43
  * - unanswered: sent, and no answer came (a broken stream, a timeout): whether the server ran it is unknown.
41
44
  */
42
45
  export type ToolCallOutcome = {
@@ -45,6 +48,7 @@ export type ToolCallOutcome = {
45
48
  } | {
46
49
  readonly kind: 'notSent';
47
50
  readonly reason: string;
51
+ readonly refusal?: CredentialRefusal;
48
52
  } | {
49
53
  readonly kind: 'unanswered';
50
54
  readonly reason: string;
@@ -1,6 +1,7 @@
1
1
  import type { FleetId } from '@aeolus-fleet/common';
2
2
  import type { FleetRefusal } from '../connection/ports.js';
3
3
  import type { PartyStore, ScopeRequirementsStore } from '../parties/ports.js';
4
+ import type { ListingConnectionOf } from '../party-grants/listing-connection.js';
4
5
  import { type DomainError } from '../shared/errors.js';
5
6
  import { type Result } from '../shared/result.js';
6
7
  import type { McpServers } from './ports.js';
@@ -24,17 +25,19 @@ export type StateParty = (input: {
24
25
  name: string;
25
26
  }) => Promise<Result<{
26
27
  capabilities: string[];
27
- }, DomainError<'NO_SUCH_PARTY' | 'NOT_CREWED' | 'SERVER_UNREACHABLE' | 'STATEMENT_REFUSED'>>>;
28
+ }, DomainError<'NO_SUCH_PARTY' | 'NOT_CREWED' | 'NOT_SIGNED_IN' | 'SERVER_UNREACHABLE' | 'STATEMENT_REFUSED'>>>;
28
29
  /**
29
30
  * Use case: the gateway states what a party's proxy ship offers, as its
30
31
  * crew: the tools its server lists now that are switched on, with argo's
31
32
  * marks and the scopes each tool needs now. The whole statement replaces the one before, so a tool the server
32
33
  * dropped or an approver switched off is gone. A party with no switches kept
33
- * keeps every tool it lists on first (aeolus-fleet#1151).
34
+ * keeps every tool it lists on first (aeolus-fleet#1151). A server where each
35
+ * person signs in is listed under a person's grant (decision 0067).
34
36
  */
35
37
  export declare function createStateParty(deps: {
36
38
  parties: PartyStore;
37
39
  servers: McpServers;
40
+ connectionOf: ListingConnectionOf;
38
41
  door: StatementDoor;
39
42
  marks: ToolMarks;
40
43
  requirements: ScopeRequirementsStore;
@@ -7,7 +7,8 @@ import { statementOf } from './statement.js';
7
7
  * crew: the tools its server lists now that are switched on, with argo's
8
8
  * marks and the scopes each tool needs now. The whole statement replaces the one before, so a tool the server
9
9
  * dropped or an approver switched off is gone. A party with no switches kept
10
- * keeps every tool it lists on first (aeolus-fleet#1151).
10
+ * keeps every tool it lists on first (aeolus-fleet#1151). A server where each
11
+ * person signs in is listed under a person's grant (decision 0067).
11
12
  */
12
13
  export function createStateParty(deps) {
13
14
  return async ({ fleetId, name }) => {
@@ -18,7 +19,11 @@ export function createStateParty(deps) {
18
19
  if (party.state !== 'crewed' || party.crewToken === null) {
19
20
  return refuse('NOT_CREWED', `The gateway does not crew the proxy ship of ${name} yet`);
20
21
  }
21
- const listed = await deps.servers.listTools({ url: party.url, credential: party.credential });
22
+ const connection = await deps.connectionOf(party);
23
+ if (connection === undefined) {
24
+ return refuse('NOT_SIGNED_IN', `Nobody holds a usable sign-in to ${name}, so its tools cannot be listed`);
25
+ }
26
+ const listed = await deps.servers.listTools(connection);
22
27
  if (!listed.isOk) {
23
28
  return refuse('SERVER_UNREACHABLE', `The MCP server of ${name} could not be listed: ${listed.error.reason}`);
24
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state-party.js","sourceRoot":"","sources":["../../../src/core/mcp-out/state-party.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAmC,MAAM,gBAAgB,CAAC;AAkB9E;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmJ;IAClL,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,eAAe,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,YAAY,EAAE,+CAA+C,IAAI,MAAM,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"state-party.js","sourceRoot":"","sources":["../../../src/core/mcp-out/state-party.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAmC,MAAM,gBAAgB,CAAC;AAkB9E;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAQhC;IACC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,eAAe,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,YAAY,EAAE,+CAA+C,IAAI,MAAM,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,eAAe,EAAE,oCAAoC,IAAI,iCAAiC,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { FleetId } from '@aeolus-fleet/common';
2
+ import { type DomainError } from '../shared/errors.js';
3
+ import type { Result } from '../shared/result.js';
4
+ import type { ApproveParty, ApprovePartyRefusal } from './approve-party.js';
5
+ import type { AuthorizationServers, PartyStore } from './ports.js';
6
+ import type { ShownParty } from './shown-party.js';
7
+ export type AddSignInServerRefusal = ApprovePartyRefusal | DomainError<'SERVER_UNREACHABLE' | 'NO_AUTHORIZATION_SERVER' | 'SIGN_IN_CHECK_FAILED' | 'NO_DYNAMIC_REGISTRATION' | 'REGISTRATION_REFUSED'>;
8
+ export type AddSignInServer = (input: Omit<Parameters<ApproveParty>[0], 'credential'>) => Promise<Result<ShownParty, AddSignInServerRefusal>>;
9
+ /**
10
+ * Use case: an approver adds an outside MCP server that takes only an OAuth
11
+ * sign-in (decision 0067). The gateway finds its authorization server,
12
+ * checks it states PKCE S256 and offers dynamic registration, registers one
13
+ * client for the party, bound to its issuer, then approves the party with
14
+ * that client as its credential: its proxy ship is commissioned and crewed,
15
+ * unstated until a person signs in. A refused check keeps nothing. The same
16
+ * addition again finds the party it kept, and registers no second client.
17
+ */
18
+ export declare function createAddSignInServer(deps: {
19
+ approveParty: ApproveParty;
20
+ parties: PartyStore;
21
+ servers: AuthorizationServers;
22
+ servesOutsideParties: (fleetId: FleetId) => Promise<boolean>;
23
+ /** Where the outside authorization server sends each person back after their sign-in. */
24
+ redirectUri: string;
25
+ }): AddSignInServer;
@@ -0,0 +1,70 @@
1
+ import { refuse } from '../shared/errors.js';
2
+ /** The PKCE method the gateway signs in with; an authorization server that does not state it is refused (MCP authorization). */
3
+ const PKCE_METHOD = 'S256';
4
+ /** The scopes a sign-in adds when the authorization server lists them: a refresh token, and the outside account's subject (Q8, Q13). */
5
+ const ADDED_SCOPES = ['offline_access', 'openid'];
6
+ /** The outside scopes each person's sign-in asks for (Q8): the 401's, else every scope the server lists, with offline_access and openid when the authorization server lists them. */
7
+ function scopeOf(discovered) {
8
+ const asked = discovered.challengeScope === null ? [...discovered.resourceScopes] : discovered.challengeScope.split(' ');
9
+ const added = ADDED_SCOPES.filter((scope) => discovered.serverScopes.includes(scope) && !asked.includes(scope));
10
+ return [...asked, ...added].join(' ');
11
+ }
12
+ /**
13
+ * Use case: an approver adds an outside MCP server that takes only an OAuth
14
+ * sign-in (decision 0067). The gateway finds its authorization server,
15
+ * checks it states PKCE S256 and offers dynamic registration, registers one
16
+ * client for the party, bound to its issuer, then approves the party with
17
+ * that client as its credential: its proxy ship is commissioned and crewed,
18
+ * unstated until a person signs in. A refused check keeps nothing. The same
19
+ * addition again finds the party it kept, and registers no second client.
20
+ */
21
+ export function createAddSignInServer(deps) {
22
+ return async (input) => {
23
+ const { operatorFleetId: fleetId, name, url, requestId } = input;
24
+ if (!(await deps.servesOutsideParties(fleetId))) {
25
+ return refuse('OUTSIDE_PARTIES_OFF', "This fleet's outside parties are off: turn them on first");
26
+ }
27
+ const earlier = await deps.parties.find(fleetId, name);
28
+ if (earlier) {
29
+ if (earlier.kind === 'mcpServer' && earlier.credential.kind === 'personSignIn' && earlier.requestId === requestId) {
30
+ return deps.approveParty({ ...input, credential: earlier.credential });
31
+ }
32
+ return refuse('PARTY_EXISTS', `A party named ${name} was approved already`);
33
+ }
34
+ const discovered = await deps.servers.discover(url);
35
+ if (!discovered.isOk) {
36
+ switch (discovered.error.kind) {
37
+ case 'unreachable':
38
+ return refuse('SERVER_UNREACHABLE', `The MCP server could not be reached: ${discovered.error.reason}`);
39
+ case 'noAuthorizationServer':
40
+ return refuse('NO_AUTHORIZATION_SERVER', `The server states no authorization server: ${discovered.error.reason}`);
41
+ case 'noServerMetadata':
42
+ return refuse('SIGN_IN_CHECK_FAILED', `The authorization server failed its check: ${discovered.error.reason}`);
43
+ }
44
+ }
45
+ const signIn = discovered.value;
46
+ if (!signIn.codeChallengeMethods.includes(PKCE_METHOD)) {
47
+ return refuse('SIGN_IN_CHECK_FAILED', `The authorization server ${signIn.issuer} does not state PKCE ${PKCE_METHOD}`);
48
+ }
49
+ if (signIn.registrationEndpoint === null) {
50
+ return refuse('NO_DYNAMIC_REGISTRATION', `The authorization server ${signIn.issuer} offers no dynamic registration`);
51
+ }
52
+ const scope = scopeOf(signIn);
53
+ const registered = await deps.servers.register(signIn.registrationEndpoint, { clientName: `Aeolus: ${name}`, redirectUri: deps.redirectUri, scope });
54
+ if (!registered.isOk) {
55
+ return refuse('REGISTRATION_REFUSED', `The authorization server ${signIn.issuer} refused the registration: ${registered.error.reason}`);
56
+ }
57
+ const client = {
58
+ issuer: signIn.issuer,
59
+ authorizationEndpoint: signIn.authorizationEndpoint,
60
+ tokenEndpoint: signIn.tokenEndpoint,
61
+ revocationEndpoint: signIn.revocationEndpoint,
62
+ isIssuerInResponse: signIn.isIssuerInResponse,
63
+ ...registered.value,
64
+ resource: signIn.resource,
65
+ scope,
66
+ };
67
+ return deps.approveParty({ ...input, credential: { kind: 'personSignIn', client } });
68
+ };
69
+ }
70
+ //# sourceMappingURL=add-sign-in-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-sign-in-server.js","sourceRoot":"","sources":["../../../src/core/parties/add-sign-in-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAO/D,gIAAgI;AAChI,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,wIAAwI;AACxI,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAQlD,qLAAqL;AACrL,SAAS,OAAO,CAAC,UAA4B;IAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzH,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChH,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAOrC;IACC,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QACjE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,qBAAqB,EAAE,0DAA0D,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClH,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,MAAM,CAAC,cAAc,EAAE,iBAAiB,IAAI,uBAAuB,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrB,QAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC9B,KAAK,aAAa;oBAChB,OAAO,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACzG,KAAK,uBAAuB;oBAC1B,OAAO,MAAM,CAAC,yBAAyB,EAAE,8CAA8C,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpH,KAAK,kBAAkB;oBACrB,OAAO,MAAM,CAAC,sBAAsB,EAAE,8CAA8C,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACnH,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,MAAM,CAAC,MAAM,wBAAwB,WAAW,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,IAAI,MAAM,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,MAAM,CAAC,MAAM,iCAAiC,CAAC,CAAC;QACvH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACrJ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,MAAM,CAAC,MAAM,8BAA8B,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1I,CAAC;QACD,MAAM,MAAM,GAAiB;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;YACnD,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,GAAG,UAAU,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK;SACN,CAAC;QACF,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@ import type { RequestHasher } from '../installation/ports.js';
4
4
  import type { Clock } from '../shared/clock.js';
5
5
  import { type DomainError } from '../shared/errors.js';
6
6
  import { type Result } from '../shared/result.js';
7
- import type { McpServerCredential } from '../vault/credential.js';
7
+ import type { McpServerPartyCredential } from '../vault/credential.js';
8
8
  import { type Party } from './party.js';
9
9
  import type { PartyStore, ProxyShipDoor } from './ports.js';
10
10
  import { type ShownParty } from './shown-party.js';
@@ -23,7 +23,7 @@ export type ApproveParty = (input: {
23
23
  requestId: string;
24
24
  name: string;
25
25
  url: string;
26
- credential: McpServerCredential;
26
+ credential: McpServerPartyCredential;
27
27
  ownerShipId: ShipId;
28
28
  /** The scopes granted its proxy ship beside the ones every app ship gets (decision 0046). */
29
29
  scopes: readonly string[];
@@ -11,7 +11,7 @@ export type CheckApproving = (input: {
11
11
  as: ActorCredential;
12
12
  name: string;
13
13
  }) => Promise<Result<undefined, ApprovingRefusal>>;
14
- interface ApprovingDeps {
14
+ export interface ApprovingDeps {
15
15
  parties: PartyStore;
16
16
  connections: Pick<ConnectionStore, 'find'>;
17
17
  fleet: Pick<ProxyShipsAsActor, 'checkManage'>;
@@ -19,13 +19,14 @@ interface ApprovingDeps {
19
19
  }
20
20
  /**
21
21
  * The outside MCP server or A2A agent an actor approves, with the gateway's
22
- * connection: the actor holds gateway:approve, and the fleet, asked as the
22
+ * connection and the actor's credential: the actor holds gateway:approve, and the fleet, asked as the
23
23
  * actor, answers that it manages the party's proxy ship (A2). The fleet
24
24
  * records a refusal.
25
25
  */
26
26
  export declare function approvedParty(deps: ApprovingDeps, { actor, as, name }: Parameters<CheckApproving>[0]): Promise<Result<{
27
27
  party: McpServerParty | A2aAgentParty;
28
28
  gateway: GatewayCrew;
29
+ credential: ActorCredential;
29
30
  }, ApprovingRefusal>>;
30
31
  /**
31
32
  * Use case: whether an actor approves an outside MCP server or A2A agent
@@ -33,4 +34,3 @@ export declare function approvedParty(deps: ApprovingDeps, { actor, as, name }:
33
34
  * the same table read-only otherwise.
34
35
  */
35
36
  export declare function createCheckApproving(deps: ApprovingDeps): CheckApproving;
36
- export {};
@@ -3,7 +3,7 @@ import { ok } from '../shared/result.js';
3
3
  import { APPROVING_SCOPE } from './approver.js';
4
4
  /**
5
5
  * The outside MCP server or A2A agent an actor approves, with the gateway's
6
- * connection: the actor holds gateway:approve, and the fleet, asked as the
6
+ * connection and the actor's credential: the actor holds gateway:approve, and the fleet, asked as the
7
7
  * actor, answers that it manages the party's proxy ship (A2). The fleet
8
8
  * records a refusal.
9
9
  */
@@ -32,7 +32,7 @@ export async function approvedParty(deps, { actor, as, name }) {
32
32
  ? refuse('FLEET_UNAVAILABLE', `The fleet did not say whether you manage ${name}: ${managed.error.message}`)
33
33
  : refuse('NOT_REACHABLE', managed.error.message);
34
34
  }
35
- return ok({ party, gateway });
35
+ return ok({ party, gateway, credential: credential.value });
36
36
  }
37
37
  /**
38
38
  * Use case: whether an actor approves an outside MCP server or A2A agent
@@ -1 +1 @@
1
- {"version":3,"file":"check-approving.js","sourceRoot":"","sources":["../../../src/core/parties/check-approving.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAehD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAiC;IACzG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,eAAe,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,eAAe,EAAE,+CAA+C,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,wBAAwB,EAAE,GAAG,IAAI,uCAAuC,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,eAAe,EAAE,2CAA2C,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;YACzC,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,4CAA4C,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3G,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"check-approving.js","sourceRoot":"","sources":["../../../src/core/parties/check-approving.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAehD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAiC;IACzG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,eAAe,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,eAAe,EAAE,+CAA+C,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,wBAAwB,EAAE,GAAG,IAAI,uCAAuC,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,eAAe,EAAE,2CAA2C,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;YACzC,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,4CAA4C,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3G,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { FleetId, ShipId, VerifiedFact } from '@aeolus-fleet/common';
2
- import type { McpServerCredential } from '../vault/credential.js';
2
+ import type { McpServerCredential, McpServerPartyCredential } from '../vault/credential.js';
3
3
  import type { ToolSwitches } from './tool-switches.js';
4
4
  /**
5
5
  * Where an approved party's proxy ship stands (interop I-5):
@@ -32,7 +32,7 @@ export interface McpServerParty extends PartyBase {
32
32
  readonly kind: 'mcpServer';
33
33
  /** The server's Streamable HTTP endpoint. */
34
34
  readonly url: string;
35
- readonly credential: McpServerCredential;
35
+ readonly credential: McpServerPartyCredential;
36
36
  /** The most calls the gateway has in flight to the server at once. */
37
37
  readonly concurrencyLimit: number;
38
38
  /** Which of its tools the fleet may call; none kept yet means every tool it lists (aeolus-fleet#1151). */
@@ -67,6 +67,7 @@ export type Party = McpServerParty | McpClientParty | A2aClientParty | A2aAgentP
67
67
  * 0059): the host it reached an MCP server at over TLS, and the domain of the
68
68
  * metadata document it read an MCP client's id from over TLS. A client argo
69
69
  * registered has no document, and an address without TLS proves no host.
70
+ * A server where each person signs in: the issuer of the party's client.
70
71
  * The domain an A2A agent's card was read from over TLS. The gateway checks
71
72
  * nothing about an A2A client: an approver names it.
72
73
  */
@@ -13,6 +13,7 @@ function tlsHostOf(address) {
13
13
  * 0059): the host it reached an MCP server at over TLS, and the domain of the
14
14
  * metadata document it read an MCP client's id from over TLS. A client argo
15
15
  * registered has no document, and an address without TLS proves no host.
16
+ * A server where each person signs in: the issuer of the party's client.
16
17
  * The domain an A2A agent's card was read from over TLS. The gateway checks
17
18
  * nothing about an A2A client: an approver names it.
18
19
  */
@@ -20,7 +21,9 @@ export function verifiedFactsOf(party) {
20
21
  switch (party.kind) {
21
22
  case 'mcpServer': {
22
23
  const host = tlsHostOf(party.url);
23
- return host === undefined ? [] : [{ checked: 'tlsHost', value: host }];
24
+ const reached = host === undefined ? [] : [{ checked: 'tlsHost', value: host }];
25
+ // Where each person signs in, the issuer only (decision 0067): the subject it issued the party's client to, never a person's outside account.
26
+ return party.credential.kind === 'personSignIn' ? [...reached, { checked: 'oauthSubject', issuer: party.credential.client.issuer, value: party.credential.client.clientId }] : reached;
24
27
  }
25
28
  case 'mcpClient': {
26
29
  const host = tlsHostOf(party.clientId);
@@ -1 +1 @@
1
- {"version":3,"file":"party.js","sourceRoot":"","sources":["../../../src/core/parties/party.ts"],"names":[],"mappings":"AAyEA,oGAAoG;AACpG,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,WAAW;YACd,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"party.js","sourceRoot":"","sources":["../../../src/core/parties/party.ts"],"names":[],"mappings":"AAyEA,oGAAoG;AACpG,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,OAAO,GAAmB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChG,8IAA8I;YAC9I,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzL,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,WAAW;YACd,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -118,3 +118,52 @@ export interface FleetShip {
118
118
  export interface FleetShips {
119
119
  list(as: ActorCredential): Promise<Result<FleetShip[], FleetRefusal>>;
120
120
  }
121
+ /** What an outside MCP server says about its sign-in: its protected resource metadata (RFC 9728) and its authorization server's metadata (RFC 8414 or OpenID Connect). */
122
+ export interface DiscoveredSignIn {
123
+ /** The resource indicator the server names itself by. */
124
+ readonly resource: string;
125
+ /** The scope its 401 named, if it named one. */
126
+ readonly challengeScope: string | null;
127
+ /** The scopes its protected resource metadata lists. */
128
+ readonly resourceScopes: readonly string[];
129
+ /** The authorization server's issuer, matching the one the server named. */
130
+ readonly issuer: string;
131
+ readonly authorizationEndpoint: string;
132
+ readonly tokenEndpoint: string;
133
+ readonly registrationEndpoint: string | null;
134
+ readonly revocationEndpoint: string | null;
135
+ /** Whether it states its issuer in each authorization response (RFC 9207). */
136
+ readonly isIssuerInResponse: boolean;
137
+ readonly codeChallengeMethods: readonly string[];
138
+ /** The scopes the authorization server lists. */
139
+ readonly serverScopes: readonly string[];
140
+ }
141
+ /**
142
+ * Why a server's sign-in could not be found:
143
+ * - noAuthorizationServer: its 401 and its well-known address name no protected resource metadata;
144
+ * - noServerMetadata: the authorization server it names has no metadata, or metadata whose issuer is not the one named;
145
+ * - unreachable: the server or its authorization server did not answer.
146
+ */
147
+ export interface DiscoveryFailure {
148
+ readonly kind: 'noAuthorizationServer' | 'noServerMetadata' | 'unreachable';
149
+ readonly reason: string;
150
+ }
151
+ /** What dynamic registration answered (RFC 7591, 7592). */
152
+ export interface RegisteredClient {
153
+ readonly clientId: string;
154
+ readonly clientSecret: string | null;
155
+ readonly registrationClientUri: string | null;
156
+ readonly registrationAccessToken: string | null;
157
+ }
158
+ /** Outbound port: outside MCP servers' authorization servers, as the gateway, an OAuth client, reaches them. */
159
+ export interface AuthorizationServers {
160
+ discover(serverUrl: string): Promise<Result<DiscoveredSignIn, DiscoveryFailure>>;
161
+ /** Registers a confidential client for the authorization code flow; the server's own error when it refuses or does not answer. */
162
+ register(registrationEndpoint: string, client: {
163
+ clientName: string;
164
+ redirectUri: string;
165
+ scope: string;
166
+ }): Promise<Result<RegisteredClient, {
167
+ readonly reason: string;
168
+ }>>;
169
+ }
@@ -1,5 +1,6 @@
1
1
  import type { FleetId } from '@aeolus-fleet/common';
2
2
  import type { McpServers } from '../mcp-out/ports.js';
3
+ import type { ListingConnectionOf } from '../party-grants/listing-connection.js';
3
4
  import { type DomainError } from '../shared/errors.js';
4
5
  import { type Result } from '../shared/result.js';
5
6
  import type { PartyStore } from './ports.js';
@@ -9,10 +10,11 @@ export type ReadPartyTools = (party: {
9
10
  name: string;
10
11
  }) => Promise<Result<{
11
12
  tools: SwitchedTool[];
12
- }, DomainError<'NO_SUCH_PARTY' | 'SERVER_UNREACHABLE'>>>;
13
+ }, DomainError<'NO_SUCH_PARTY' | 'NOT_SIGNED_IN' | 'SERVER_UNREACHABLE'>>>;
13
14
  /**
14
15
  * Use case: an outside MCP server's tools, as the server lists them now,
15
- * asked with the credential the gateway keeps for it, each with its switch
16
+ * asked with the credential the gateway keeps for it, or under a person's
17
+ * grant where each person signs in (decision 0067), each with its switch
16
18
  * (aeolus-fleet#1151). It keeps nothing:
17
19
  * the proxy ship's statement in the fleet is where the tools live, and
18
20
  * core does not answer a statement to a reader yet, so the server is asked.
@@ -20,4 +22,5 @@ export type ReadPartyTools = (party: {
20
22
  export declare function createReadPartyTools(deps: {
21
23
  parties: PartyStore;
22
24
  servers: McpServers;
25
+ connectionOf: ListingConnectionOf;
23
26
  }): ReadPartyTools;
@@ -3,7 +3,8 @@ import { ok } from '../shared/result.js';
3
3
  import { switchedToolsOf } from './tool-switches.js';
4
4
  /**
5
5
  * Use case: an outside MCP server's tools, as the server lists them now,
6
- * asked with the credential the gateway keeps for it, each with its switch
6
+ * asked with the credential the gateway keeps for it, or under a person's
7
+ * grant where each person signs in (decision 0067), each with its switch
7
8
  * (aeolus-fleet#1151). It keeps nothing:
8
9
  * the proxy ship's statement in the fleet is where the tools live, and
9
10
  * core does not answer a statement to a reader yet, so the server is asked.
@@ -14,7 +15,11 @@ export function createReadPartyTools(deps) {
14
15
  if (party?.kind !== 'mcpServer') {
15
16
  return refuse('NO_SUCH_PARTY', `There is no outside MCP server ${name}`);
16
17
  }
17
- const listed = await deps.servers.listTools({ url: party.url, credential: party.credential });
18
+ const connection = await deps.connectionOf(party);
19
+ if (connection === undefined) {
20
+ return refuse('NOT_SIGNED_IN', `Nobody holds a usable sign-in to ${name}, so its tools cannot be listed`);
21
+ }
22
+ const listed = await deps.servers.listTools(connection);
18
23
  if (!listed.isOk) {
19
24
  return refuse('SERVER_UNREACHABLE', `The MCP server of ${name} could not be listed: ${listed.error.reason}`);
20
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"read-party-tools.js","sourceRoot":"","sources":["../../../src/core/parties/read-party-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAIxE;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAkD;IACrF,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,eAAe,EAAE,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"read-party-tools.js","sourceRoot":"","sources":["../../../src/core/parties/read-party-tools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAIxE;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAqF;IACxH,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,eAAe,EAAE,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,eAAe,EAAE,oCAAoC,IAAI,iCAAiC,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { Actor } from '../actors/authenticate-actor.js';
2
2
  import type { ActorCredential, CredentialOf } from '../actors/credential-of.js';
3
3
  import type { IssuedTokens } from '../oauth/ports.js';
4
+ import type { EndPartyGrants } from '../party-grants/end-party-grants.js';
4
5
  import { type DomainError } from '../shared/errors.js';
5
6
  import { type Result } from '../shared/result.js';
6
7
  import type { PartyStore, ProxyShipsAsActor } from './ports.js';
@@ -17,7 +18,9 @@ export type RetireParty = (input: {
17
18
  * 0056). Its proxy ship is retired in the fleet as the actor, so the fleet
18
19
  * checks its manage reach, and only then does the gateway forget the party
19
20
  * and revoke its client's tokens; its worker ends as the fleet ends the
20
- * proxy ship's crew. A proxy ship retired already is retired. A party whose
21
+ * proxy ship's crew. A server where each person signs in has every grant
22
+ * ended and its client deleted where offered (decision 0067) before it is
23
+ * forgotten. A proxy ship retired already is retired. A party whose
21
24
  * ship the gateway never learned asks the fleet nothing. Adding it again is
22
25
  * a new request.
23
26
  */
@@ -25,5 +28,6 @@ export declare function createRetireParty(deps: {
25
28
  parties: PartyStore;
26
29
  fleet: ProxyShipsAsActor;
27
30
  tokens: Pick<IssuedTokens, 'revokeParty'>;
31
+ endPartyGrants: EndPartyGrants;
28
32
  credentialOf: CredentialOf;
29
33
  }): RetireParty;
@@ -9,7 +9,9 @@ const RETIRED_ALREADY = 'CONFLICT';
9
9
  * 0056). Its proxy ship is retired in the fleet as the actor, so the fleet
10
10
  * checks its manage reach, and only then does the gateway forget the party
11
11
  * and revoke its client's tokens; its worker ends as the fleet ends the
12
- * proxy ship's crew. A proxy ship retired already is retired. A party whose
12
+ * proxy ship's crew. A server where each person signs in has every grant
13
+ * ended and its client deleted where offered (decision 0067) before it is
14
+ * forgotten. A proxy ship retired already is retired. A party whose
13
15
  * ship the gateway never learned asks the fleet nothing. Adding it again is
14
16
  * a new request.
15
17
  */
@@ -35,6 +37,9 @@ export function createRetireParty(deps) {
35
37
  return refuse('RETIRE_REFUSED', retired.error.message);
36
38
  }
37
39
  }
40
+ if (party.kind === 'mcpServer' && party.credential.kind === 'personSignIn') {
41
+ await deps.endPartyGrants({ fleetId: actor.fleetId, name, client: party.credential.client });
42
+ }
38
43
  await deps.parties.remove(actor.fleetId, name);
39
44
  await deps.tokens.revokeParty(actor.fleetId, name);
40
45
  return ok(undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"retire-party.js","sourceRoot":"","sources":["../../../src/core/parties/retire-party.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,uFAAuF;AACvF,MAAM,eAAe,GAAG,UAAU,CAAC;AAMnC;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA8H;IAC9J,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,eAAe,EAAE,mCAAmC,cAAc,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,eAAe,EAAE,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC1D,OAAO,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,IAAI,kBAAkB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChH,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC5D,OAAO,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"retire-party.js","sourceRoot":"","sources":["../../../src/core/parties/retire-party.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,uFAAuF;AACvF,MAAM,eAAe,GAAG,UAAU,CAAC;AAMnC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA8J;IAC9L,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,eAAe,EAAE,mCAAmC,cAAc,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,eAAe,EAAE,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC1D,OAAO,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,IAAI,kBAAkB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChH,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC5D,OAAO,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC3E,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ShipId } from '@aeolus-fleet/common';
2
- import type { McpServerCredential } from '../vault/credential.js';
2
+ import type { McpServerCredential, McpServerPartyCredential } from '../vault/credential.js';
3
3
  import type { Party, PartyState } from './party.js';
4
4
  interface ShownPartyBase {
5
5
  name: string;
@@ -10,7 +10,7 @@ interface ShownPartyBase {
10
10
  export type ShownParty = (ShownPartyBase & {
11
11
  kind: 'mcpServer';
12
12
  url: string;
13
- credentialKind: McpServerCredential['kind'];
13
+ credentialKind: McpServerPartyCredential['kind'];
14
14
  concurrencyLimit: number;
15
15
  }) | (ShownPartyBase & {
16
16
  kind: 'mcpClient';
@@ -0,0 +1,4 @@
1
+ import type { SignInServers } from '../party-grants/ports.js';
2
+ import type { PartyStore } from './ports.js';
3
+ /** Parties published to Party Grants: an approved outside MCP server is a sign-in server, with its client where each person signs in. */
4
+ export declare function signInServersOf(parties: Pick<PartyStore, 'find'>): SignInServers;
@@ -0,0 +1,13 @@
1
+ /** Parties published to Party Grants: an approved outside MCP server is a sign-in server, with its client where each person signs in. */
2
+ export function signInServersOf(parties) {
3
+ return {
4
+ async find(fleetId, name) {
5
+ const party = await parties.find(fleetId, name);
6
+ if (party?.kind !== 'mcpServer') {
7
+ return undefined;
8
+ }
9
+ return { fleetId: party.fleetId, name: party.name, client: party.credential.kind === 'personSignIn' ? party.credential.client : null };
10
+ },
11
+ };
12
+ }
13
+ //# sourceMappingURL=sign-in-servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-in-servers.js","sourceRoot":"","sources":["../../../src/core/parties/sign-in-servers.ts"],"names":[],"mappings":"AAGA,yIAAyI;AACzI,MAAM,UAAU,eAAe,CAAC,OAAiC;IAC/D,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI;YACtB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzI,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -3,11 +3,12 @@ import type { ActorCredential, CredentialOf } from '../actors/credential-of.js';
3
3
  import type { ConnectionStore } from '../connection/ports.js';
4
4
  import type { McpServers } from '../mcp-out/ports.js';
5
5
  import type { StateParty } from '../mcp-out/state-party.js';
6
+ import type { ListingConnectionOf } from '../party-grants/listing-connection.js';
6
7
  import { type DomainError } from '../shared/errors.js';
7
8
  import { type Result } from '../shared/result.js';
8
9
  import { type ApprovingRefusal } from './check-approving.js';
9
10
  import type { PartyStore, ProxyShipsAsActor } from './ports.js';
10
- export type SwitchToolsRefusal = ApprovingRefusal | DomainError<'SERVER_UNREACHABLE' | 'NO_SUCH_TOOL'>;
11
+ export type SwitchToolsRefusal = ApprovingRefusal | DomainError<'NOT_SIGNED_IN' | 'SERVER_UNREACHABLE' | 'NO_SUCH_TOOL'>;
11
12
  export type SwitchTools = (input: {
12
13
  actor: Actor;
13
14
  as: ActorCredential;
@@ -32,6 +33,7 @@ export type SwitchTools = (input: {
32
33
  export declare function createSwitchTools(deps: {
33
34
  parties: PartyStore;
34
35
  servers: McpServers;
36
+ connectionOf: ListingConnectionOf;
35
37
  stateParty: StateParty;
36
38
  connections: Pick<ConnectionStore, 'find'>;
37
39
  fleet: Pick<ProxyShipsAsActor, 'checkManage'>;
@@ -21,7 +21,11 @@ export function createSwitchTools(deps) {
21
21
  if (party.kind !== 'mcpServer') {
22
22
  return refuse('NO_SUCH_PARTY', `There is no outside MCP server ${name}`);
23
23
  }
24
- const listed = await deps.servers.listTools({ url: party.url, credential: party.credential });
24
+ const connection = await deps.connectionOf(party);
25
+ if (connection === undefined) {
26
+ return refuse('NOT_SIGNED_IN', `Nobody holds a usable sign-in to ${name}, so its tools cannot be listed`);
27
+ }
28
+ const listed = await deps.servers.listTools(connection);
25
29
  if (!listed.isOk) {
26
30
  return refuse('SERVER_UNREACHABLE', `The MCP server of ${name} could not be listed: ${listed.error.reason}`);
27
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"switch-tools.js","sourceRoot":"","sources":["../../../src/core/parties/switch-tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AAS5E;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAOjC;IACC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,eAAe,EAAE,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,cAAc,EAAE,qBAAqB,IAAI,kBAAkB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1I,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"switch-tools.js","sourceRoot":"","sources":["../../../src/core/parties/switch-tools.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AAS5E;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAQjC;IACC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,eAAe,EAAE,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,eAAe,EAAE,oCAAoC,IAAI,iCAAiC,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,cAAc,EAAE,qBAAqB,IAAI,kBAAkB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1I,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC;AACJ,CAAC"}