@aeolus-fleet/gateway 0.33.0 → 0.34.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 (637) 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/slack-routes.d.ts +0 -13
  14. package/dist/adapters/http/slack-routes.js +19 -4
  15. package/dist/adapters/http/slack-routes.js.map +1 -1
  16. package/dist/adapters/mcp/mcp-servers.js +22 -4
  17. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  18. package/dist/adapters/oauth/authorization-servers.d.ts +2 -0
  19. package/dist/adapters/oauth/authorization-servers.js +127 -0
  20. package/dist/adapters/oauth/authorization-servers.js.map +1 -0
  21. package/dist/adapters/oauth/party-sign-ins.d.ts +2 -0
  22. package/dist/adapters/oauth/party-sign-ins.js +152 -0
  23. package/dist/adapters/oauth/party-sign-ins.js.map +1 -0
  24. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  25. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  26. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  27. package/dist/adapters/prisma/generated/browser.d.ts +10 -0
  28. package/dist/adapters/prisma/generated/client.d.ts +10 -0
  29. package/dist/adapters/prisma/generated/internal/class.d.ts +22 -0
  30. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  31. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  32. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +178 -1
  33. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +26 -1
  34. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  35. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +27 -0
  36. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +26 -1
  37. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  38. package/dist/adapters/prisma/generated/models/PartyGrant.d.ts +1276 -0
  39. package/dist/adapters/prisma/generated/models/PartyGrant.js +2 -0
  40. package/dist/adapters/prisma/generated/models/PartyGrant.js.map +1 -0
  41. package/dist/adapters/prisma/generated/models/PartySignInNotice.d.ts +1003 -0
  42. package/dist/adapters/prisma/generated/models/PartySignInNotice.js +2 -0
  43. package/dist/adapters/prisma/generated/models/PartySignInNotice.js.map +1 -0
  44. package/dist/adapters/prisma/generated/models/SlackEvent.d.ts +17 -14
  45. package/dist/adapters/prisma/generated/models.d.ts +2 -0
  46. package/dist/adapters/prisma/party-grants.d.ts +10 -0
  47. package/dist/adapters/prisma/party-grants.js +118 -0
  48. package/dist/adapters/prisma/party-grants.js.map +1 -0
  49. package/dist/adapters/prisma/party-store.js +21 -2
  50. package/dist/adapters/prisma/party-store.js.map +1 -1
  51. package/dist/adapters/prisma/sign-in-notices.d.ts +8 -0
  52. package/dist/adapters/prisma/sign-in-notices.js +22 -0
  53. package/dist/adapters/prisma/sign-in-notices.js.map +1 -0
  54. package/dist/adapters/prisma/slack-events.js +1 -1
  55. package/dist/adapters/prisma/slack-events.js.map +1 -1
  56. package/dist/adapters/prisma/slack-posts.js +0 -4
  57. package/dist/adapters/prisma/slack-posts.js.map +1 -1
  58. package/dist/adapters/slack/slack-messages.js +2 -2
  59. package/dist/adapters/slack/slack-messages.js.map +1 -1
  60. package/dist/adapters/trpc/router.d.ts +138 -10
  61. package/dist/adapters/trpc/router.js +147 -6
  62. package/dist/adapters/trpc/router.js.map +1 -1
  63. package/dist/app.d.ts +2 -0
  64. package/dist/app.js +82 -6
  65. package/dist/app.js.map +1 -1
  66. package/dist/core/connection/ports.d.ts +5 -0
  67. package/dist/core/mcp-out/grant-calls.d.ts +69 -0
  68. package/dist/core/mcp-out/grant-calls.js +98 -0
  69. package/dist/core/mcp-out/grant-calls.js.map +1 -0
  70. package/dist/core/mcp-out/hand-call.d.ts +6 -1
  71. package/dist/core/mcp-out/hand-call.js +23 -2
  72. package/dist/core/mcp-out/hand-call.js.map +1 -1
  73. package/dist/core/mcp-out/ports.d.ts +6 -2
  74. package/dist/core/mcp-out/state-party.d.ts +5 -2
  75. package/dist/core/mcp-out/state-party.js +7 -2
  76. package/dist/core/mcp-out/state-party.js.map +1 -1
  77. package/dist/core/parties/add-sign-in-server.d.ts +25 -0
  78. package/dist/core/parties/add-sign-in-server.js +70 -0
  79. package/dist/core/parties/add-sign-in-server.js.map +1 -0
  80. package/dist/core/parties/approve-party.d.ts +2 -2
  81. package/dist/core/parties/check-approving.d.ts +3 -3
  82. package/dist/core/parties/check-approving.js +2 -2
  83. package/dist/core/parties/check-approving.js.map +1 -1
  84. package/dist/core/parties/party.d.ts +3 -2
  85. package/dist/core/parties/party.js +4 -1
  86. package/dist/core/parties/party.js.map +1 -1
  87. package/dist/core/parties/ports.d.ts +49 -0
  88. package/dist/core/parties/read-party-tools.d.ts +5 -2
  89. package/dist/core/parties/read-party-tools.js +7 -2
  90. package/dist/core/parties/read-party-tools.js.map +1 -1
  91. package/dist/core/parties/retire-party.d.ts +5 -1
  92. package/dist/core/parties/retire-party.js +6 -1
  93. package/dist/core/parties/retire-party.js.map +1 -1
  94. package/dist/core/parties/shown-party.d.ts +2 -2
  95. package/dist/core/parties/sign-in-servers.d.ts +4 -0
  96. package/dist/core/parties/sign-in-servers.js +13 -0
  97. package/dist/core/parties/sign-in-servers.js.map +1 -0
  98. package/dist/core/parties/switch-tools.d.ts +3 -1
  99. package/dist/core/parties/switch-tools.js +5 -1
  100. package/dist/core/parties/switch-tools.js.map +1 -1
  101. package/dist/core/party-grants/approved-sign-in-party.d.ts +17 -0
  102. package/dist/core/party-grants/approved-sign-in-party.js +21 -0
  103. package/dist/core/party-grants/approved-sign-in-party.js.map +1 -0
  104. package/dist/core/party-grants/call-grant.d.ts +46 -0
  105. package/dist/core/party-grants/call-grant.js +30 -0
  106. package/dist/core/party-grants/call-grant.js.map +1 -0
  107. package/dist/core/party-grants/complete-party-sign-in.d.ts +52 -0
  108. package/dist/core/party-grants/complete-party-sign-in.js +95 -0
  109. package/dist/core/party-grants/complete-party-sign-in.js.map +1 -0
  110. package/dist/core/party-grants/end-account-grants.d.ts +18 -0
  111. package/dist/core/party-grants/end-account-grants.js +16 -0
  112. package/dist/core/party-grants/end-account-grants.js.map +1 -0
  113. package/dist/core/party-grants/end-grant.d.ts +23 -0
  114. package/dist/core/party-grants/end-grant.js +33 -0
  115. package/dist/core/party-grants/end-grant.js.map +1 -0
  116. package/dist/core/party-grants/end-party-grants.d.ts +19 -0
  117. package/dist/core/party-grants/end-party-grants.js +31 -0
  118. package/dist/core/party-grants/end-party-grants.js.map +1 -0
  119. package/dist/core/party-grants/end-retired-persons-grants.d.ts +19 -0
  120. package/dist/core/party-grants/end-retired-persons-grants.js +30 -0
  121. package/dist/core/party-grants/end-retired-persons-grants.js.map +1 -0
  122. package/dist/core/party-grants/keep-grants-alive.d.ts +18 -0
  123. package/dist/core/party-grants/keep-grants-alive.js +19 -0
  124. package/dist/core/party-grants/keep-grants-alive.js.map +1 -0
  125. package/dist/core/party-grants/list-grants.d.ts +30 -0
  126. package/dist/core/party-grants/list-grants.js +34 -0
  127. package/dist/core/party-grants/list-grants.js.map +1 -0
  128. package/dist/core/party-grants/listing-connection.d.ts +29 -0
  129. package/dist/core/party-grants/listing-connection.js +17 -0
  130. package/dist/core/party-grants/listing-connection.js.map +1 -0
  131. package/dist/core/party-grants/party-grant.d.ts +50 -0
  132. package/dist/core/party-grants/party-grant.js +26 -0
  133. package/dist/core/party-grants/party-grant.js.map +1 -0
  134. package/dist/core/party-grants/ports.d.ts +180 -0
  135. package/dist/core/party-grants/ports.js +2 -0
  136. package/dist/core/party-grants/ports.js.map +1 -0
  137. package/dist/core/party-grants/read-own-grant.d.ts +33 -0
  138. package/dist/core/party-grants/read-own-grant.js +23 -0
  139. package/dist/core/party-grants/read-own-grant.js.map +1 -0
  140. package/dist/core/party-grants/refresh-grant.d.ts +41 -0
  141. package/dist/core/party-grants/refresh-grant.js +58 -0
  142. package/dist/core/party-grants/refresh-grant.js.map +1 -0
  143. package/dist/core/party-grants/remove-grant.d.ts +21 -0
  144. package/dist/core/party-grants/remove-grant.js +25 -0
  145. package/dist/core/party-grants/remove-grant.js.map +1 -0
  146. package/dist/core/party-grants/remove-own-grant.d.ts +17 -0
  147. package/dist/core/party-grants/remove-own-grant.js +21 -0
  148. package/dist/core/party-grants/remove-own-grant.js.map +1 -0
  149. package/dist/core/party-grants/sign-in-party.d.ts +23 -0
  150. package/dist/core/party-grants/sign-in-party.js +22 -0
  151. package/dist/core/party-grants/sign-in-party.js.map +1 -0
  152. package/dist/core/party-grants/start-party-sign-in.d.ts +31 -0
  153. package/dist/core/party-grants/start-party-sign-in.js +31 -0
  154. package/dist/core/party-grants/start-party-sign-in.js.map +1 -0
  155. package/dist/core/party-grants/tell-sign-in-needed.d.ts +29 -0
  156. package/dist/core/party-grants/tell-sign-in-needed.js +27 -0
  157. package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -0
  158. package/dist/core/shared/errors.d.ts +1 -1
  159. package/dist/core/shared/errors.js.map +1 -1
  160. package/dist/core/slack/answer-in-slack.d.ts +8 -3
  161. package/dist/core/slack/answer-in-slack.js +11 -3
  162. package/dist/core/slack/answer-in-slack.js.map +1 -1
  163. package/dist/core/slack/kept-slack-event.d.ts +5 -3
  164. package/dist/core/slack/kept-slack-event.js.map +1 -1
  165. package/dist/core/slack/ports.d.ts +7 -8
  166. package/dist/core/slack/send-slack-events.d.ts +6 -3
  167. package/dist/core/slack/send-slack-events.js +32 -4
  168. package/dist/core/slack/send-slack-events.js.map +1 -1
  169. package/dist/core/slack/show-in-slack.js +2 -2
  170. package/dist/core/slack/show-in-slack.js.map +1 -1
  171. package/dist/core/slack/slack-post.d.ts +9 -0
  172. package/dist/core/slack/slack-post.js +8 -0
  173. package/dist/core/slack/slack-post.js.map +1 -1
  174. package/dist/core/slack/take-slack-event.d.ts +4 -2
  175. package/dist/core/slack/take-slack-event.js +8 -2
  176. package/dist/core/slack/take-slack-event.js.map +1 -1
  177. package/dist/core/vault/credential.d.ts +34 -0
  178. package/dist/grant-worker.d.ts +20 -0
  179. package/dist/grant-worker.js +24 -0
  180. package/dist/grant-worker.js.map +1 -0
  181. package/package.json +1 -1
  182. package/src/adapters/prisma/migrations/20261028230000_party_grants/migration.sql +18 -0
  183. package/src/adapters/prisma/migrations/20261029080000_party_sign_in_notices/migration.sql +10 -0
  184. package/src/adapters/prisma/migrations/20261029120000_party_grants_lost/migration.sql +3 -0
  185. package/src/adapters/prisma/migrations/20261029130000_party_grants_refreshed/migration.sql +6 -0
  186. package/src/adapters/prisma/migrations/20261030090000_party_grants_of_account/migration.sql +2 -0
  187. package/src/adapters/prisma/migrations/20261030100000_slack_events_unmatched_answers/migration.sql +2 -0
  188. package/src/adapters/prisma/schema.prisma +46 -1
  189. package/web/.next/BUILD_ID +1 -1
  190. package/web/.next/app-path-routes-manifest.json +3 -1
  191. package/web/.next/build-manifest.json +3 -3
  192. package/web/.next/diagnostics/route-bundle-stats.json +55 -55
  193. package/web/.next/fallback-build-manifest.json +3 -3
  194. package/web/.next/prerender-manifest.json +67 -3
  195. package/web/.next/routes-manifest.json +12 -0
  196. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  197. package/web/.next/server/app/(console)/gateway-off/page.js +6 -6
  198. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  199. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  200. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  201. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +6 -6
  202. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  203. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  204. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +49 -9
  205. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +6 -6
  206. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  207. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  208. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +44 -4
  209. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +7 -7
  210. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  211. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  212. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +49 -9
  213. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +6 -6
  214. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  215. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  216. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +46 -6
  217. package/web/.next/server/app/(console)/outside-parties/add/page.js +8 -7
  218. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  219. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  220. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  221. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +7 -7
  222. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  223. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  224. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  225. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +6 -6
  226. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  227. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  228. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  229. package/web/.next/server/app/(console)/outside-parties/page.js +6 -6
  230. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  231. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  232. package/web/.next/server/app/(console)/overview/changes/route.js +2 -1
  233. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  234. package/web/.next/server/app/(console)/overview/focus/route.js +2 -1
  235. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
  236. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +9 -9
  237. package/web/.next/server/app/(console)/overview/page.js +6 -6
  238. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  239. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  240. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  241. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js +5 -5
  242. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  243. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  244. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
  245. package/web/.next/server/app/(console)/parties/page.js +6 -6
  246. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  247. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  248. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  249. package/web/.next/server/app/(console)/sign-in/failed/page.js +6 -6
  250. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  251. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  252. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +11 -11
  253. package/web/.next/server/app/(console)/slack/disconnect/page.js +5 -5
  254. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
  255. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
  256. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +11 -11
  257. package/web/.next/server/app/(console)/slack/expose/page.js +5 -5
  258. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
  259. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  260. package/web/.next/server/app/(console)/slack/link/route.js +2 -1
  261. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
  262. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +11 -11
  263. package/web/.next/server/app/(console)/slack/page.js +5 -5
  264. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  265. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  266. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +11 -11
  267. package/web/.next/server/app/(console)/slack/remove/page.js +5 -5
  268. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  269. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  270. package/web/.next/server/app/_global-error.html +1 -1
  271. package/web/.next/server/app/_global-error.rsc +1 -1
  272. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  273. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  274. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  275. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  276. package/web/.next/server/app/_not-found/page.js +6 -6
  277. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  278. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  279. package/web/.next/server/app/apple-icon.png/route/app-paths-manifest.json +3 -0
  280. package/web/.next/server/app/apple-icon.png/route/build-manifest.json +12 -0
  281. package/web/.next/server/app/apple-icon.png/route.js +8 -0
  282. package/web/.next/server/app/apple-icon.png/route.js.map +5 -0
  283. package/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -0
  284. package/web/.next/server/app/apple-icon.png.body +0 -0
  285. package/web/.next/server/app/apple-icon.png.meta +1 -0
  286. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  287. package/web/.next/server/app/authorize/failed/page.js +5 -5
  288. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  289. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  290. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  291. package/web/.next/server/app/authorize/pick/page.js +4 -4
  292. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  293. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  294. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  295. package/web/.next/server/app/authorize/waiting/approval/page.js +6 -6
  296. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  297. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  298. package/web/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
  299. package/web/.next/server/app/icon.svg/route/build-manifest.json +12 -0
  300. package/web/.next/server/app/icon.svg/route.js +8 -0
  301. package/web/.next/server/app/icon.svg/route.js.map +5 -0
  302. package/web/.next/server/app/icon.svg/route.js.nft.json +1 -0
  303. package/web/.next/server/app/icon.svg.body +19 -0
  304. package/web/.next/server/app/icon.svg.meta +1 -0
  305. package/web/.next/server/app-paths-manifest.json +3 -1
  306. package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js +315 -0
  307. package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js.map +1 -0
  308. package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js +315 -0
  309. package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js.map +1 -0
  310. package/web/.next/server/chunks/_0_um96p6psnqx._.js +57 -0
  311. package/web/.next/server/chunks/_0_um96p6psnqx._.js.map +1 -0
  312. package/web/.next/server/chunks/_0xw0b7avhvg75._.js +3 -0
  313. package/web/.next/server/chunks/_0xw0b7avhvg75._.js.map +1 -0
  314. package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js +3 -0
  315. package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js.map +1 -0
  316. package/web/.next/server/chunks/_1xf83h9norhws._.js +57 -0
  317. package/web/.next/server/chunks/_1xf83h9norhws._.js.map +1 -0
  318. package/web/.next/server/chunks/node_modules_next_1zdbrneapig6o._.js +10 -0
  319. package/web/.next/server/chunks/node_modules_next_1zdbrneapig6o._.js.map +1 -0
  320. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  321. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  322. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  323. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  324. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  325. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  326. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  327. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  328. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  329. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  330. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  331. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  332. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
  333. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
  334. package/web/.next/server/chunks/ssr/[root-of-the-server]__03w-pkh4_8jv_._.js +3 -0
  335. package/web/.next/server/chunks/ssr/[root-of-the-server]__03w-pkh4_8jv_._.js.map +1 -0
  336. package/web/.next/server/chunks/ssr/[root-of-the-server]__048-rfvdrnoze._.js +3 -0
  337. package/web/.next/server/chunks/ssr/[root-of-the-server]__048-rfvdrnoze._.js.map +1 -0
  338. package/web/.next/server/chunks/ssr/{[root-of-the-server]__14w0fxvc_of17._.js → [root-of-the-server]__07ba2bfe20c_p._.js} +2 -2
  339. package/web/.next/server/chunks/ssr/[root-of-the-server]__07ba2bfe20c_p._.js.map +1 -0
  340. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +4 -0
  341. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js.map +1 -0
  342. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
  343. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
  344. package/web/.next/server/chunks/ssr/[root-of-the-server]__0f732g7ojc5-a._.js +3 -0
  345. package/web/.next/server/chunks/ssr/[root-of-the-server]__0f732g7ojc5-a._.js.map +1 -0
  346. package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js +3 -0
  347. package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js.map +1 -0
  348. package/web/.next/server/chunks/ssr/[root-of-the-server]__0i_m5r9lyffk8._.js +3 -0
  349. package/web/.next/server/chunks/ssr/[root-of-the-server]__0i_m5r9lyffk8._.js.map +1 -0
  350. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js +1 -1
  351. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js.map +1 -1
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  354. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k6a9o0872_0x._.js +3 -0
  355. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k6a9o0872_0x._.js.map +1 -0
  356. package/web/.next/server/chunks/ssr/[root-of-the-server]__0pj38h6qumggc._.js +3 -0
  357. package/web/.next/server/chunks/ssr/[root-of-the-server]__0pj38h6qumggc._.js.map +1 -0
  358. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
  359. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
  361. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
  362. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  363. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  364. package/web/.next/server/chunks/ssr/[root-of-the-server]__1aojrh3-9jh9r._.js +3 -0
  365. package/web/.next/server/chunks/ssr/[root-of-the-server]__1aojrh3-9jh9r._.js.map +1 -0
  366. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1w5swo8gmjyx6._.js → [root-of-the-server]__1kynqd8xcwg2b._.js} +2 -2
  367. package/web/.next/server/chunks/ssr/[root-of-the-server]__1kynqd8xcwg2b._.js.map +1 -0
  368. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js +3 -0
  369. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js.map +1 -0
  370. package/web/.next/server/chunks/ssr/{[root-of-the-server]__160zc0ja_jjnu._.js → [root-of-the-server]__1q14l5_4hp9h3._.js} +2 -2
  371. package/web/.next/server/chunks/ssr/[root-of-the-server]__1q14l5_4hp9h3._.js.map +1 -0
  372. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qnls-4cj-7oh._.js +3 -0
  373. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qnls-4cj-7oh._.js.map +1 -0
  374. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
  375. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
  376. package/web/.next/server/chunks/ssr/[root-of-the-server]__1r1t1q3fzoqey._.js +3 -0
  377. package/web/.next/server/chunks/ssr/[root-of-the-server]__1r1t1q3fzoqey._.js.map +1 -0
  378. package/web/.next/server/chunks/ssr/[root-of-the-server]__1xmvo3lr1_qyo._.js +3 -0
  379. package/web/.next/server/chunks/ssr/[root-of-the-server]__1xmvo3lr1_qyo._.js.map +1 -0
  380. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js +3 -0
  381. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js.map +1 -0
  382. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js +3 -0
  383. package/web/.next/server/chunks/ssr/{_0wukvn3-ht3ps._.js.map → _0-boiqan2j4tr._.js.map} +1 -1
  384. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  385. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  386. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +1 -1
  387. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  388. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js +3 -0
  389. package/web/.next/server/chunks/ssr/{_00dg5cvqofspn._.js.map → _0bizyb21i2sl8._.js.map} +1 -1
  390. package/web/.next/server/chunks/ssr/_0eu-76mbv16oa._.js +3 -0
  391. package/web/.next/server/chunks/ssr/_0eu-76mbv16oa._.js.map +1 -0
  392. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  393. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  394. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  395. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  396. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  397. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  398. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  399. package/web/.next/server/chunks/ssr/_1cnvrfjlqx00k._.js +3 -0
  400. package/web/.next/server/chunks/ssr/_1cnvrfjlqx00k._.js.map +1 -0
  401. package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
  402. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  403. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  404. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  405. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  406. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js +3 -0
  407. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js.map +1 -0
  408. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js +3 -0
  409. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js.map +1 -0
  410. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_045k03anc7fhh.js +3 -0
  411. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_045k03anc7fhh.js.map +1 -0
  412. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js +3 -0
  413. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js.map +1 -0
  414. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tpm7qi6un9x2.js +3 -0
  415. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tpm7qi6un9x2.js.map +1 -0
  416. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uyk6p-2ofqw3.js +3 -0
  417. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uyk6p-2ofqw3.js.map +1 -0
  418. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0w8e__21f7qvg.js +3 -0
  419. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0w8e__21f7qvg.js.map +1 -0
  420. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js +3 -0
  421. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js.map +1 -0
  422. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0za9__u5ytp2s.js +3 -0
  423. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0za9__u5ytp2s.js.map +1 -0
  424. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zyzdu1detzlm.js +3 -0
  425. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zyzdu1detzlm.js.map +1 -0
  426. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11t1sej48_ec4.js +3 -0
  427. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11t1sej48_ec4.js.map +1 -0
  428. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js +3 -0
  429. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js.map +1 -0
  430. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18uz1icr303zj.js +3 -0
  431. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18uz1icr303zj.js.map +1 -0
  432. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_qkbe8796m6.js +3 -0
  433. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_qkbe8796m6.js.map +1 -0
  434. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19uoij8es9z19.js +3 -0
  435. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19uoij8es9z19.js.map +1 -0
  436. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1auju5fur8z6x.js +3 -0
  437. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1auju5fur8z6x.js.map +1 -0
  438. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c7_m2ii9lash.js +3 -0
  439. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c7_m2ii9lash.js.map +1 -0
  440. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1chb4qpzj_l1t.js +3 -0
  441. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1chb4qpzj_l1t.js.map +1 -0
  442. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qa52eylhjmki.js +3 -0
  443. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qa52eylhjmki.js.map +1 -0
  444. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qw59-auzd_zx.js +3 -0
  445. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qw59-auzd_zx.js.map +1 -0
  446. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xzq9xckazj3u.js +3 -0
  447. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xzq9xckazj3u.js.map +1 -0
  448. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1yis85alzg6hk.js +3 -0
  449. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1yis85alzg6hk.js.map +1 -0
  450. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  451. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  452. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  453. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  454. package/web/.next/server/chunks/ssr/web_features_077oo3gzcibvf._.js +3 -0
  455. package/web/.next/server/chunks/ssr/web_features_077oo3gzcibvf._.js.map +1 -0
  456. package/web/.next/server/chunks/ssr/web_features_08yw0utky5j17._.js +3 -0
  457. package/web/.next/server/chunks/ssr/{web_features_19v3mlx8c_h1-._.js.map → web_features_08yw0utky5j17._.js.map} +1 -1
  458. package/web/.next/server/chunks/ssr/web_features_0d48z2epb6oie._.js +3 -0
  459. package/web/.next/server/chunks/ssr/web_features_0d48z2epb6oie._.js.map +1 -0
  460. package/web/.next/server/chunks/ssr/web_features_0f6r-m-dq36vf._.js +3 -0
  461. package/web/.next/server/chunks/ssr/web_features_0f6r-m-dq36vf._.js.map +1 -0
  462. package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js +3 -0
  463. package/web/.next/server/chunks/ssr/{web_features_1rwkgka1xffb1._.js.map → web_features_0mi9a9pdzkdji._.js.map} +1 -1
  464. package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js +1 -1
  465. package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js.map +1 -1
  466. package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js +3 -0
  467. package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js.map +1 -0
  468. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js +3 -0
  469. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js.map +1 -0
  470. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  471. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  472. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  473. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  474. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  475. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  476. package/web/.next/server/chunks/ssr/{web_features_forms_1d1jyea2jni9o._.js → web_features_forms_1muc8tmsxjj_k._.js} +2 -2
  477. package/web/.next/server/chunks/ssr/{web_features_forms_1d1jyea2jni9o._.js.map → web_features_forms_1muc8tmsxjj_k._.js.map} +1 -1
  478. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +1 -1
  479. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -1
  480. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  481. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  482. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  483. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  484. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  485. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  486. package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js +3 -0
  487. package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js.map +1 -0
  488. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  489. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  490. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js +3 -0
  491. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js.map +1 -0
  492. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  493. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js +1 -1
  494. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js.map +1 -1
  495. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  496. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  497. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  498. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  499. package/web/.next/server/chunks/web__next-internal_server_app_apple-icon_png_route_actions_1yyo-ix0n2rsy.js +3 -0
  500. package/web/.next/server/chunks/web__next-internal_server_app_apple-icon_png_route_actions_1yyo-ix0n2rsy.js.map +1 -0
  501. package/web/.next/server/chunks/web__next-internal_server_app_icon_svg_route_actions_0xhoz0ftyz5p3.js +3 -0
  502. package/web/.next/server/chunks/web__next-internal_server_app_icon_svg_route_actions_0xhoz0ftyz5p3.js.map +1 -0
  503. package/web/.next/server/middleware-build-manifest.js +3 -3
  504. package/web/.next/server/pages/500.html +1 -1
  505. package/web/.next/server/preview-props.json +3 -3
  506. package/web/.next/server/server-reference-manifest.js +1 -1
  507. package/web/.next/server/server-reference-manifest.json +130 -42
  508. package/web/.next/static/chunks/015ume9uk4hla.js +1 -0
  509. package/web/.next/static/chunks/{3d_sjtxh_vkr6.js → 07j7jnfe13wx6.js} +1 -1
  510. package/web/.next/static/chunks/0ji7rkz0ll9gh.js +1 -0
  511. package/web/.next/static/chunks/{3dhy3jady0w6a.js → 0p_kl57bddsiy.js} +1 -1
  512. package/web/.next/static/chunks/{3efghx8whwnok.js → 0psup8zn8e6k5.js} +1 -1
  513. package/web/.next/static/chunks/0vlawcs6_kjs1.js +1 -0
  514. package/web/.next/static/chunks/1s8b8jpg4jai9.js +1 -0
  515. package/web/.next/static/chunks/20t1nmdiq805b.js +1 -0
  516. package/web/.next/static/chunks/26vlpatu47xtw.css +3 -0
  517. package/web/.next/static/chunks/2gghdkr64z9f9.js +1 -0
  518. package/web/.next/static/chunks/{3rbzp0tdc1te-.js → 2s_dov6h7kus5.js} +1 -1
  519. package/web/.next/static/chunks/{1jvae6c-4jwji.js → 2x86i673xcv4t.js} +1 -1
  520. package/web/.next/static/chunks/{1msggkwsn7vyq.js → 31-hltzmw_9fi.js} +1 -1
  521. package/web/.next/static/chunks/35bmc8wm29tr6.js +1 -0
  522. package/web/.next/static/chunks/3rxg2mdhxd6yt.js +1 -0
  523. package/web/.next/static/chunks/42cpzi5s1o44m.js +1 -0
  524. package/web/.next/static/media/apple-icon.3jccaq3p5-lh-.png +0 -0
  525. package/web/.next/static/media/icon.0h5hy2etdmq_n.svg +19 -0
  526. package/web/.next/trace +1 -1
  527. package/web/.next/trace-build +1 -1
  528. package/web/.next/server/chunks/[root-of-the-server]__01ghdzznyfucm._.js +0 -369
  529. package/web/.next/server/chunks/[root-of-the-server]__01ghdzznyfucm._.js.map +0 -1
  530. package/web/.next/server/chunks/[root-of-the-server]__0mbwomk4pjrl7._.js +0 -369
  531. package/web/.next/server/chunks/[root-of-the-server]__0mbwomk4pjrl7._.js.map +0 -1
  532. package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js +0 -3
  533. package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js.map +0 -1
  534. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js +0 -3
  535. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js.map +0 -1
  536. package/web/.next/server/chunks/ssr/[root-of-the-server]__04e53giy2-2tm._.js +0 -3
  537. package/web/.next/server/chunks/ssr/[root-of-the-server]__04e53giy2-2tm._.js.map +0 -1
  538. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +0 -3
  539. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js.map +0 -1
  540. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js +0 -3
  541. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js.map +0 -1
  542. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e59elwbtqr-6._.js +0 -3
  543. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e59elwbtqr-6._.js.map +0 -1
  544. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kb1gl5t8kz4l._.js +0 -4
  545. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kb1gl5t8kz4l._.js.map +0 -1
  546. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +0 -3
  547. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js.map +0 -1
  548. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +0 -4
  549. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +0 -1
  550. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +0 -3
  551. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js.map +0 -1
  552. package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js.map +0 -1
  553. package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js.map +0 -1
  554. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js +0 -3
  555. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js.map +0 -1
  556. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hfashtn1ee82._.js +0 -3
  557. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hfashtn1ee82._.js.map +0 -1
  558. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +0 -3
  559. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +0 -1
  560. package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js.map +0 -1
  561. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js +0 -3
  562. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +0 -3
  563. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +0 -1
  564. package/web/.next/server/chunks/ssr/_0wukvn3-ht3ps._.js +0 -3
  565. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js +0 -3
  566. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js.map +0 -1
  567. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +0 -3
  568. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +0 -1
  569. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js +0 -3
  570. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js.map +0 -1
  571. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +0 -3
  572. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +0 -1
  573. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js +0 -3
  574. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js.map +0 -1
  575. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +0 -3
  576. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +0 -1
  577. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +0 -3
  578. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +0 -1
  579. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js +0 -3
  580. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js.map +0 -1
  581. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js +0 -3
  582. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js.map +0 -1
  583. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js +0 -3
  584. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js.map +0 -1
  585. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js +0 -3
  586. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js.map +0 -1
  587. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js +0 -3
  588. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js.map +0 -1
  589. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js +0 -3
  590. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js.map +0 -1
  591. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js +0 -3
  592. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js.map +0 -1
  593. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +0 -3
  594. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +0 -1
  595. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js +0 -3
  596. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js.map +0 -1
  597. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js +0 -3
  598. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js.map +0 -1
  599. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js +0 -3
  600. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js.map +0 -1
  601. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +0 -3
  602. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +0 -1
  603. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js +0 -3
  604. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js.map +0 -1
  605. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js +0 -3
  606. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js.map +0 -1
  607. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js +0 -3
  608. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js.map +0 -1
  609. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js +0 -3
  610. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js.map +0 -1
  611. package/web/.next/server/chunks/ssr/web_15vnjj3s0z3fa._.js +0 -3
  612. package/web/.next/server/chunks/ssr/web_15vnjj3s0z3fa._.js.map +0 -1
  613. package/web/.next/server/chunks/ssr/web_features_0xbnkk4hfgr9v._.js +0 -3
  614. package/web/.next/server/chunks/ssr/web_features_0xbnkk4hfgr9v._.js.map +0 -1
  615. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +0 -3
  616. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +0 -1
  617. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +0 -3
  618. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +0 -3
  619. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +0 -1
  620. package/web/.next/server/chunks/ssr/web_features_1rwkgka1xffb1._.js +0 -3
  621. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js +0 -3
  622. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +0 -1
  623. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js +0 -3
  624. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js.map +0 -1
  625. package/web/.next/static/chunks/1-suv9wttlxqo.js +0 -1
  626. package/web/.next/static/chunks/19kfx4qlur25a.js +0 -1
  627. package/web/.next/static/chunks/1a2-hkn-7471k.js +0 -1
  628. package/web/.next/static/chunks/1yj875esaesyh.css +0 -3
  629. package/web/.next/static/chunks/2-kh9nbonee6w.js +0 -1
  630. package/web/.next/static/chunks/2l92bozm8dcmo.js +0 -1
  631. package/web/.next/static/chunks/2riya89_i0je8.js +0 -1
  632. package/web/.next/static/chunks/310mio1zd_mw7.js +0 -1
  633. package/web/.next/static/chunks/3_pwm8b3mf4mf.js +0 -1
  634. package/web/.next/static/chunks/455eobei0t6t9.js +0 -1
  635. /package/web/.next/static/{87vMFs_KGRcFD40WWRkFR → yf1Q3fTAV4eQiroxoYbih}/_buildManifest.js +0 -0
  636. /package/web/.next/static/{87vMFs_KGRcFD40WWRkFR → yf1Q3fTAV4eQiroxoYbih}/_clientMiddlewareManifest.js +0 -0
  637. /package/web/.next/static/{87vMFs_KGRcFD40WWRkFR → yf1Q3fTAV4eQiroxoYbih}/_ssgManifest.js +0 -0
@@ -0,0 +1,31 @@
1
+ import { ok } from '../shared/result.js';
2
+ import { signInPartyOf } from './sign-in-party.js';
3
+ /** How long a sign-in the gateway started may take to come back from the outside authorization server. */
4
+ export const PARTY_SIGN_IN_MS = 10 * 60 * 1000;
5
+ /**
6
+ * Use case: a person presses Sign in on an outside MCP server's page, for
7
+ * themselves (decision 0067, Q16): every account of the fleet with a person
8
+ * ship may. The gateway seals whose sign-in it is and its PKCE verifier into
9
+ * the state, for ten minutes, and sends the person to the party's
10
+ * authorization server under the party's client.
11
+ */
12
+ export function createStartPartySignIn(deps) {
13
+ return async ({ actor, name }) => {
14
+ const signingIn = await signInPartyOf(deps.servers, { actor, name });
15
+ if (!signingIn.isOk) {
16
+ return signingIn;
17
+ }
18
+ const { client, accountId, personShipId } = signingIn.value;
19
+ const verifier = deps.secrets.newSecret();
20
+ const state = deps.seals.seal({
21
+ fleetId: actor.fleetId,
22
+ party: name,
23
+ accountId,
24
+ personShipId,
25
+ verifier,
26
+ expiresAt: new Date(deps.clock.now().getTime() + PARTY_SIGN_IN_MS),
27
+ });
28
+ return ok({ url: deps.signIns.authorizeUrl(client, { state, codeChallenge: deps.secrets.challengeOf(verifier), redirectUri: deps.redirectUri }) });
29
+ };
30
+ }
31
+ //# sourceMappingURL=start-party-sign-in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-party-sign-in.js","sourceRoot":"","sources":["../../../src/core/party-grants/start-party-sign-in.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAE5E,0GAA0G;AAC1G,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAM/C;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAQtC;IACC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,IAAI;YACX,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAAC;SACnE,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IACrJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { FleetId, ShipId } from '@aeolus-fleet/common';
2
+ import type { ConnectionStore } from '../connection/ports.js';
3
+ import type { CallSender } from '../mcp-in/ports.js';
4
+ import type { GrantLost } from './party-grant.js';
5
+ import type { SignInNotices } from './ports.js';
6
+ /** Tells a person a call needs their sign-in to a party, or that their grant of it was lost, unless they were told since their last sign-in. */
7
+ export type TellSignInNeeded = (input: {
8
+ fleetId: FleetId;
9
+ party: string;
10
+ personShipId: ShipId;
11
+ lost: GrantLost | null;
12
+ }) => Promise<void>;
13
+ /** The page a person signs in to a party on, in a fleet. */
14
+ export type PageUrlOf = (fleetId: FleetId, party: string) => string;
15
+ /**
16
+ * Use case: the gateway's ship tells a person, by a text message to their
17
+ * person ship, that a call needs their sign-in to a party, or that their
18
+ * grant of it was lost, with the page to sign in on (decision 0067, Q6, Q9): once per party, and again only after a
19
+ * sign-in in between closes the notice. The notice's id keys the message, so
20
+ * one the fleet did not answer is sent again at the next call and stored
21
+ * once; one it refused is not tried again.
22
+ */
23
+ export declare function createTellSignInNeeded(deps: {
24
+ notices: SignInNotices;
25
+ connections: Pick<ConnectionStore, 'find'>;
26
+ sender: CallSender;
27
+ newNoticeId: () => string;
28
+ pageUrlOf: PageUrlOf;
29
+ }): TellSignInNeeded;
@@ -0,0 +1,27 @@
1
+ function textOf({ party, lost }, pageUrl) {
2
+ return lost === null
3
+ ? `A ship of yours called ${party}, which calls under each person's own sign-in, and you are not signed in to it. Sign in on ${pageUrl}; until then your ships' calls to ${party} are refused.`
4
+ : `Your sign-in to ${party} ended: ${party} refused to refresh it (${lost.why}). Sign in again on ${pageUrl}; until then your ships' calls to ${party} are refused.`;
5
+ }
6
+ /**
7
+ * Use case: the gateway's ship tells a person, by a text message to their
8
+ * person ship, that a call needs their sign-in to a party, or that their
9
+ * grant of it was lost, with the page to sign in on (decision 0067, Q6, Q9): once per party, and again only after a
10
+ * sign-in in between closes the notice. The notice's id keys the message, so
11
+ * one the fleet did not answer is sent again at the next call and stored
12
+ * once; one it refused is not tried again.
13
+ */
14
+ export function createTellSignInNeeded(deps) {
15
+ return async ({ fleetId, party, personShipId, lost }) => {
16
+ const notice = await deps.notices.open(fleetId, { party, personShipId, noticeId: deps.newNoticeId() });
17
+ const gateway = await deps.connections.find(fleetId);
18
+ if (notice.isTold || gateway === undefined) {
19
+ return;
20
+ }
21
+ const sent = await deps.sender.send(gateway.crewToken, { to: personShipId, contentType: 'text/plain', payload: textOf({ party, lost }, deps.pageUrlOf(fleetId, party)), idempotencyKey: `party-sign-in:${notice.noticeId}` });
22
+ if (sent.isOk || sent.error.code !== 'UNAVAILABLE') {
23
+ await deps.notices.markTold(fleetId, { party, personShipId });
24
+ }
25
+ };
26
+ }
27
+ //# sourceMappingURL=tell-sign-in-needed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tell-sign-in-needed.js","sourceRoot":"","sources":["../../../src/core/party-grants/tell-sign-in-needed.ts"],"names":[],"mappings":"AAaA,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAA6C,EAAE,OAAe;IACzF,OAAO,IAAI,KAAK,IAAI;QAClB,CAAC,CAAC,0BAA0B,KAAK,8FAA8F,OAAO,qCAAqC,KAAK,eAAe;QAC/L,CAAC,CAAC,mBAAmB,KAAK,WAAW,KAAK,2BAA2B,IAAI,CAAC,GAAG,uBAAuB,OAAO,qCAAqC,KAAK,eAAe,CAAC;AACzK,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAiJ;IACtL,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,cAAc,EAAE,iBAAiB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9N,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type Err } from './result.js';
2
2
  /** Every reason the gateway's core refuses a request. */
3
- export type DomainErrorKind = 'ALREADY_CONNECTED' | 'SECRET_REFUSED' | 'OTHER_FLEET' | 'MISSING_SCOPES' | 'SCOPE_REFUSED' | 'NOT_THE_OPERATOR' | 'NOT_AN_ACTOR' | 'NOT_AN_APPROVER' | 'NO_SUCH_REQUEST' | 'ALREADY_DECIDED' | 'EXPIRED' | 'SCOPE_NOT_HELD' | 'SERVER_DETAILS_MISSING' | 'REQUEST_ID_USED' | 'FLEET_UNAVAILABLE' | 'NOT_CONNECTED' | 'PARTY_EXISTS' | 'COMMISSION_REFUSED' | 'NO_SUCH_PARTY' | 'NOT_AWAITING_CREW' | 'NOT_CREWED' | 'SERVER_UNREACHABLE' | 'STATEMENT_REFUSED' | 'INVALID_REDIRECT_URIS' | 'CLIENT_HAS_PARTY' | 'PARTY_NOT_CREWED' | 'NO_SUCH_TOOL' | 'INVALID_ARGUMENTS' | 'NOT_REACHABLE' | 'SEND_REFUSED' | 'NO_SUCH_CALL' | 'NOT_A_PERSON' | 'SIGNED_OUT' | 'NO_SUCH_DELIVERY' | 'NOT_A_NETWORKER' | 'OPEN_NETWORK' | 'OUTSIDE_PARTIES_OFF' | 'INVALID_SERVER_URL' | 'NOT_A_MANAGER' | 'RETIRE_REFUSED' | 'NOT_AN_ACCOUNT' | 'PARTY_NOT_COMMISSIONED' | 'CHANGE_REFUSED' | 'UNKNOWN_ALIAS' | 'PAYLOAD_TOO_LARGE' | 'TASK_NOT_FOUND' | 'TASK_TERMINAL' | 'WEBHOOK_REFUSED' | 'PUSH_CONFIG_NOT_FOUND' | 'CONTEXT_MISMATCH' | 'CARD_UNREACHABLE' | 'CARD_INVALID' | 'NOT_A_MESSAGE' | 'CHANNEL_NOT_OFFERED' | 'INVALID_SUBSCRIPTION' | 'NO_SUCH_MEETING' | 'MIC_REFUSED' | 'SCOPE_NOT_LISTED' | 'SLACK_SCOPE_NOT_HELD' | 'SLACK_NOT_CONNECTED' | 'SLACK_TOKEN_REFUSED' | 'SLACK_UNAVAILABLE' | 'OTHER_WORKSPACE' | 'INSTALL_REFUSED' | 'NOT_EXPOSABLE' | 'NO_SUCH_BOT' | 'LINK_REFUSED' | 'SLACK_USER_LINKED' | 'ACCOUNT_LINKED' | 'NOT_LINKED' | 'CONFLICT';
3
+ export type DomainErrorKind = 'ALREADY_CONNECTED' | 'SECRET_REFUSED' | 'OTHER_FLEET' | 'MISSING_SCOPES' | 'SCOPE_REFUSED' | 'NOT_THE_OPERATOR' | 'NOT_AN_ACTOR' | 'NOT_AN_APPROVER' | 'NO_SUCH_REQUEST' | 'ALREADY_DECIDED' | 'EXPIRED' | 'SCOPE_NOT_HELD' | 'SERVER_DETAILS_MISSING' | 'REQUEST_ID_USED' | 'FLEET_UNAVAILABLE' | 'NOT_CONNECTED' | 'PARTY_EXISTS' | 'COMMISSION_REFUSED' | 'NO_SUCH_PARTY' | 'NOT_AWAITING_CREW' | 'NOT_CREWED' | 'SERVER_UNREACHABLE' | 'NO_AUTHORIZATION_SERVER' | 'SIGN_IN_CHECK_FAILED' | 'NOT_SIGNED_IN' | 'NO_SIGN_IN' | 'SIGN_IN_FAILED' | 'TURNED_AWAY' | 'AUTHORIZATION_SERVER_UNREACHABLE' | 'NO_DYNAMIC_REGISTRATION' | 'REGISTRATION_REFUSED' | 'STATEMENT_REFUSED' | 'INVALID_REDIRECT_URIS' | 'CLIENT_HAS_PARTY' | 'PARTY_NOT_CREWED' | 'NO_SUCH_TOOL' | 'INVALID_ARGUMENTS' | 'NOT_REACHABLE' | 'SEND_REFUSED' | 'NO_SUCH_CALL' | 'NOT_A_PERSON' | 'SIGNED_OUT' | 'NO_SUCH_DELIVERY' | 'NOT_A_NETWORKER' | 'OPEN_NETWORK' | 'OUTSIDE_PARTIES_OFF' | 'INVALID_SERVER_URL' | 'NOT_A_MANAGER' | 'RETIRE_REFUSED' | 'NOT_AN_ACCOUNT' | 'PARTY_NOT_COMMISSIONED' | 'CHANGE_REFUSED' | 'UNKNOWN_ALIAS' | 'PAYLOAD_TOO_LARGE' | 'TASK_NOT_FOUND' | 'TASK_TERMINAL' | 'WEBHOOK_REFUSED' | 'PUSH_CONFIG_NOT_FOUND' | 'CONTEXT_MISMATCH' | 'CARD_UNREACHABLE' | 'CARD_INVALID' | 'NOT_A_MESSAGE' | 'CHANNEL_NOT_OFFERED' | 'INVALID_SUBSCRIPTION' | 'NO_SUCH_MEETING' | 'MIC_REFUSED' | 'SCOPE_NOT_LISTED' | 'SLACK_SCOPE_NOT_HELD' | 'SLACK_NOT_CONNECTED' | 'SLACK_TOKEN_REFUSED' | 'SLACK_UNAVAILABLE' | 'OTHER_WORKSPACE' | 'INSTALL_REFUSED' | 'NOT_EXPOSABLE' | 'NO_SUCH_BOT' | 'LINK_REFUSED' | 'SLACK_USER_LINKED' | 'ACCOUNT_LINKED' | 'NOT_LINKED' | 'CONFLICT';
4
4
  /** Why the core refused a request. Adapters map the kind to their own error shape; the message is safe to show. */
5
5
  export interface DomainError<K extends DomainErrorKind = DomainErrorKind> {
6
6
  readonly kind: K;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/shared/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AAkF5C,qDAAqD;AACrD,MAAM,UAAU,MAAM,CAA4B,IAAO,EAAE,OAAe;IACxE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/shared/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AA2F5C,qDAAqD;AACrD,MAAM,UAAU,MAAM,CAA4B,IAAO,EAAE,OAAe;IACxE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type MessageId } from '@aeolus-fleet/common';
1
2
  import type { PersonCrews, PersonShipDoor } from '../people/ports.js';
2
3
  import type { Clock } from '../shared/clock.js';
3
4
  import { type Result } from '../shared/result.js';
@@ -9,6 +10,7 @@ export type AnswerInSlack = (press: SignedRequest & {
9
10
  userId: string;
10
11
  channel: string;
11
12
  messageTs: string;
13
+ messageId: MessageId;
12
14
  option: number;
13
15
  }) => Promise<Result<{
14
16
  kind: 'answered' | 'refused' | 'ignored';
@@ -22,14 +24,17 @@ export type AnswerInSlack = (press: SignedRequest & {
22
24
  * answer as their person ship, to the question's sender in reply to it,
23
25
  * keyed as an answer on the gateway's page is; then the delivery is handled
24
26
  * and the question reacted to, as a message core stored is. Core's refusal
25
- * is said in the question's thread.
27
+ * is said in the question's thread. The press names the question's fleet
28
+ * message, as its button carries it, so a press that comes before the
29
+ * gateway kept the post's Slack message is answered too; the delivery not
30
+ * acknowledged yet, the press, the person's own act, acknowledges it.
26
31
  */
27
32
  export declare function createAnswerInSlack(deps: {
28
33
  apps: Pick<SlackApps, 'findByAppId'>;
29
34
  links: Pick<SlackLinks, 'find'>;
30
- posts: Pick<SlackPosts, 'atSlackMessage'>;
35
+ posts: Pick<SlackPosts, 'ofMessage'>;
31
36
  crews: Pick<PersonCrews, 'find'>;
32
- door: Pick<PersonShipDoor, 'delivery' | 'reply' | 'handled'>;
37
+ door: Pick<PersonShipDoor, 'ack' | 'delivery' | 'reply' | 'handled'>;
33
38
  slack: Pick<SlackMessages, 'react' | 'postInThread'>;
34
39
  signatures: SlackSignatures;
35
40
  clock: Clock;
@@ -19,20 +19,28 @@ function questionIdOf(payload) {
19
19
  * answer as their person ship, to the question's sender in reply to it,
20
20
  * keyed as an answer on the gateway's page is; then the delivery is handled
21
21
  * and the question reacted to, as a message core stored is. Core's refusal
22
- * is said in the question's thread.
22
+ * is said in the question's thread. The press names the question's fleet
23
+ * message, as its button carries it, so a press that comes before the
24
+ * gateway kept the post's Slack message is answered too; the delivery not
25
+ * acknowledged yet, the press, the person's own act, acknowledges it.
23
26
  */
24
27
  export function createAnswerInSlack(deps) {
25
- return async ({ appId, teamId, userId, channel, messageTs, option, body, timestamp, signature }) => {
28
+ return async ({ appId, teamId, userId, channel, messageTs, messageId, option, body, timestamp, signature }) => {
26
29
  const app = await deps.apps.findByAppId(appId);
27
30
  if (!isSignedBy(app, { request: { body, timestamp, signature }, signatures: deps.signatures, clock: deps.clock })) {
28
31
  return err({ kind: 'notSigned' });
29
32
  }
30
33
  const link = await deps.links.find(app.fleetId, { teamId, userId });
31
- const post = link?.stoppedAt === null ? await deps.posts.atSlackMessage(app.fleetId, { personShipId: link.personShipId, appId, channel, ts: messageTs }) : undefined;
34
+ const kept = link?.stoppedAt === null ? await deps.posts.ofMessage(app.fleetId, { personShipId: link.personShipId, messageId }) : undefined;
35
+ const post = kept?.appId === appId && kept.channel === channel ? kept : undefined;
32
36
  const crew = post === undefined ? undefined : await deps.crews.find(app.fleetId, post.personShipId);
33
37
  if (post === undefined || post.deliveryId === null || post.senderShipId === null || crew === undefined || app.bot === null) {
34
38
  return ok({ kind: 'ignored' });
35
39
  }
40
+ if (post.ackedAt === null) {
41
+ // Core reads a delivery again only once acknowledged; a refusal leaves it unread, and the press ignored.
42
+ await deps.door.ack(crew.crewToken, post.deliveryId);
43
+ }
36
44
  const delivery = await deps.door.delivery(crew.crewToken, post.deliveryId);
37
45
  const questionId = delivery.isOk ? questionIdOf(delivery.value.payload) : undefined;
38
46
  if (!delivery.isOk || questionId === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"answer-in-slack.js","sourceRoot":"","sources":["../../../src/core/slack/answer-in-slack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"answer-in-slack.js","sourceRoot":"","sources":["../../../src/core/slack/answer-in-slack.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,16 @@ import type { DeliveryId, FleetId, MessageId, ShipId } from '@aeolus-fleet/commo
5
5
  * the ship it goes to, the person ship it is sent as, where it was written
6
6
  * in Slack, and the Markdown it is sent as. An answer in the thread under a
7
7
  * posted delivery goes to its sender in reply to its message, and hands the
8
- * delivery (9.5 step 4). Once core took it, only its event id stays,
9
- * for an hour, to answer Slack's retries.
8
+ * delivery (9.5 step 4); one written before the gateway kept that
9
+ * delivery's Slack message is matched to it as it is sent. Once core took
10
+ * it, only its event id stays, for an hour, to answer Slack's retries.
10
11
  */
11
12
  export interface KeptSlackEvent {
12
13
  readonly fleetId: FleetId;
13
14
  readonly eventId: string;
14
15
  readonly appId: string;
15
- readonly shipId: ShipId;
16
+ /** None through the gateway's own bot for an answer in a thread not matched yet: it goes only as an answer. */
17
+ readonly shipId: ShipId | null;
16
18
  readonly personShipId: ShipId;
17
19
  readonly channel: string;
18
20
  readonly ts: string;
@@ -1 +1 @@
1
- {"version":3,"file":"kept-slack-event.js","sourceRoot":"","sources":["../../../src/core/slack/kept-slack-event.ts"],"names":[],"mappings":"AA4BA,wGAAwG;AACxG,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"kept-slack-event.js","sourceRoot":"","sources":["../../../src/core/slack/kept-slack-event.ts"],"names":[],"mappings":"AA8BA,wGAAwG;AACxG,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -207,8 +207,14 @@ export interface SlackMessages {
207
207
  url: string;
208
208
  };
209
209
  }): Promise<Result<undefined, SlackRefusal>>;
210
- /** A message in a conversation, or a thread of it, with a button per option to answer (chat.postMessage): the Slack message it is. */
210
+ /**
211
+ * A message in a conversation, or a thread of it, with a button per option
212
+ * to answer (chat.postMessage): the Slack message it is. A press of a
213
+ * button names the fleet message it shows, so a press is matched before
214
+ * the gateway keeps the Slack message.
215
+ */
211
216
  post(botToken: string, message: {
217
+ messageId: MessageId;
212
218
  channel: string;
213
219
  threadTs: string | null;
214
220
  text: string;
@@ -265,13 +271,6 @@ export interface SlackPosts {
265
271
  personShipId: ShipId;
266
272
  messageId: MessageId;
267
273
  }): Promise<SlackPost | undefined>;
268
- /** The delivery posted to the person ship as this Slack message. */
269
- atSlackMessage(fleetId: FleetId, message: {
270
- personShipId: ShipId;
271
- appId: string;
272
- channel: string;
273
- ts: string;
274
- }): Promise<SlackPost | undefined>;
275
274
  /** The latest delivery posted to the person ship in the thread, the thread's first message included. */
276
275
  lastInThread(fleetId: FleetId, thread: {
277
276
  personShipId: ShipId;
@@ -11,7 +11,10 @@ export type SendSlackEvents = () => Promise<void>;
11
11
  * (gateway scopes 9.4 steps 5 to 7, P-B2). Each kept event goes as the
12
12
  * person ship, which the gateway crews, to the bot's ship by its id, as
13
13
  * Markdown, keyed by Slack's event id so a send tried again is the same
14
- * send. Core stored it: the gateway reacts to the person's Slack message.
14
+ * send. One in a thread kept unmatched is matched to the delivery the
15
+ * thread is under now: it waits while a delivery in that conversation is
16
+ * not yet in Slack, and through the gateway's own bot, answering none, it
17
+ * is not sent. Core stored it: the gateway reacts to the person's Slack message.
15
18
  * Core refused it: the reason goes in its thread. Core did not answer: it
16
19
  * goes again next round. Nothing builds up: a taken event's id goes an
17
20
  * hour after core took it, and an event core has not taken in 24 hours
@@ -22,8 +25,8 @@ export declare function createSendSlackEvents(deps: {
22
25
  apps: Pick<SlackApps, 'findByAppId'>;
23
26
  crews: Pick<PersonCrews, 'find'>;
24
27
  sender: Pick<CallSender, 'send'>;
25
- door: Pick<PersonShipDoor, 'handled'>;
26
- posts: Pick<SlackPosts, 'save'>;
28
+ door: Pick<PersonShipDoor, 'ack' | 'handled'>;
29
+ posts: Pick<SlackPosts, 'save' | 'lastInThread' | 'unfinished'>;
27
30
  slack: Pick<SlackMessages, 'postInThread' | 'react'>;
28
31
  clock: Clock;
29
32
  }): SendSlackEvents;
@@ -1,4 +1,5 @@
1
1
  import { TAKEN_KEPT_MS, UNTAKEN_KEPT_MS } from './kept-slack-event.js';
2
+ import { isAwaitingSlackIn } from './slack-post.js';
2
3
  /** How many kept events a round sends at most. */
3
4
  const ROUND_LIMIT = 50;
4
5
  /** The reaction that tells the person their message reached the fleet. */
@@ -24,20 +25,45 @@ function refusalText(ship, refusal) {
24
25
  * (gateway scopes 9.4 steps 5 to 7, P-B2). Each kept event goes as the
25
26
  * person ship, which the gateway crews, to the bot's ship by its id, as
26
27
  * Markdown, keyed by Slack's event id so a send tried again is the same
27
- * send. Core stored it: the gateway reacts to the person's Slack message.
28
+ * send. One in a thread kept unmatched is matched to the delivery the
29
+ * thread is under now: it waits while a delivery in that conversation is
30
+ * not yet in Slack, and through the gateway's own bot, answering none, it
31
+ * is not sent. Core stored it: the gateway reacts to the person's Slack message.
28
32
  * Core refused it: the reason goes in its thread. Core did not answer: it
29
33
  * goes again next round. Nothing builds up: a taken event's id goes an
30
34
  * hour after core took it, and an event core has not taken in 24 hours
31
35
  * goes, the person told in its thread.
32
36
  */
33
37
  export function createSendSlackEvents(deps) {
34
- const send = async (event) => {
35
- const app = await deps.apps.findByAppId(event.appId);
36
- const crew = await deps.crews.find(event.fleetId, event.personShipId);
38
+ /** The event as it goes now: one in a thread kept unmatched answers the delivery the thread is under, if any; none while it may still be under one not yet in Slack. */
39
+ const matched = async (event) => {
40
+ const { fleetId, personShipId, appId, channel, threadTs } = event;
41
+ if (threadTs === null || event.inReplyTo !== null) {
42
+ return event;
43
+ }
44
+ // Awaiting is read before the thread: a post Slack answers between the two reads is then found in the thread, never missed by both.
45
+ const isAwaiting = (await deps.posts.unfinished(fleetId, personShipId)).some((post) => isAwaitingSlackIn(post, { appId, channel }));
46
+ const answered = await deps.posts.lastInThread(fleetId, { personShipId, appId, channel, threadTs });
47
+ if (answered !== undefined) {
48
+ return { ...event, shipId: answered.senderShipId ?? event.shipId, inReplyTo: answered.messageId, deliveryId: answered.deliveryId };
49
+ }
50
+ return isAwaiting ? undefined : event;
51
+ };
52
+ const send = async (kept) => {
53
+ const app = await deps.apps.findByAppId(kept.appId);
54
+ const crew = await deps.crews.find(kept.fleetId, kept.personShipId);
37
55
  if (app === undefined || app.bot === null || crew === undefined) {
38
56
  // No bot to answer with, or no crew to send as: the event waits, and goes after 24 hours told as not reached.
39
57
  return 'later';
40
58
  }
59
+ const event = await matched(kept);
60
+ if (event === undefined) {
61
+ return 'later';
62
+ }
63
+ if (event.shipId === null) {
64
+ // Through the gateway's own bot only an answer goes, as a message there that answers none is not kept.
65
+ return 'taken';
66
+ }
41
67
  const where = { channel: event.channel, threadTs: event.threadTs ?? event.ts };
42
68
  const message = { to: event.shipId, contentType: 'text/markdown', payload: event.markdown, idempotencyKey: `slack:${event.eventId}` };
43
69
  const sent = await deps.sender.send(crew.crewToken, event.inReplyTo === null ? message : { ...message, inReplyTo: event.inReplyTo });
@@ -45,7 +71,9 @@ export function createSendSlackEvents(deps) {
45
71
  const { fleetId, personShipId, appId, channel, ts, threadTs } = event;
46
72
  await deps.posts.save({ fleetId, personShipId, messageId: sent.value.messageId, deliveryId: null, senderShipId: null, appId, channel, ts, threadTs, isLinkOnly: false, ackedAt: null });
47
73
  if (event.deliveryId !== null) {
74
+ // Answered before the gateway acknowledged it, the person's answer acknowledges it, as core takes handled only then.
48
75
  // A refusal leaves the delivery acknowledged, as an answer on the gateway's page does when handled is refused.
76
+ await deps.door.ack(crew.crewToken, event.deliveryId);
49
77
  await deps.door.handled(crew.crewToken, event.deliveryId);
50
78
  }
51
79
  // Without the reaction the person sees no sign and sends again: the event goes again, the same send by its key.
@@ -1 +1 @@
1
- {"version":3,"file":"send-slack-events.js","sourceRoot":"","sources":["../../../src/core/slack/send-slack-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send-slack-events.js","sourceRoot":"","sources":["../../../src/core/slack/send-slack-events.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ export function createShowInSlack(deps) {
45
45
  /** Posts it, waiting out Slack's rate limits: the Slack message, or none when Slack refused it. */
46
46
  const posted = async (where, shown) => {
47
47
  for (let tried = 1;; tried += 1) {
48
- const answered = await deps.slack.post(where.app.bot.token, { channel: where.channel, threadTs: where.threadTs, text: shown.text, buttons: shown.buttons });
48
+ const answered = await deps.slack.post(where.app.bot.token, { messageId: shown.messageId, channel: where.channel, threadTs: where.threadTs, text: shown.text, buttons: shown.buttons });
49
49
  if (answered.isOk) {
50
50
  return answered.value.ts;
51
51
  }
@@ -76,7 +76,7 @@ export function createShowInSlack(deps) {
76
76
  }
77
77
  const app = await deps.apps.find(post.fleetId, post.appId);
78
78
  const shown = slackPostOf(delivery, { overviewUrl: deps.overviewUrlOf(post.fleetId), isHeadedBySender: app?.shipId === null });
79
- const ts = isInSlack(app) ? await posted({ app, channel: post.channel, threadTs: post.threadTs }, shown.kind === 'shown' ? shown : { text: shown.text, buttons: [] }) : undefined;
79
+ const ts = isInSlack(app) ? await posted({ app, channel: post.channel, threadTs: post.threadTs }, { messageId: post.messageId, text: shown.text, buttons: shown.kind === 'shown' ? shown.buttons : [] }) : undefined;
80
80
  if (ts === undefined) {
81
81
  await deps.posts.remove(post.fleetId, post);
82
82
  return 'notShown';
@@ -1 +1 @@
1
- {"version":3,"file":"show-in-slack.js","sourceRoot":"","sources":["../../../src/core/slack/show-in-slack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"show-in-slack.js","sourceRoot":"","sources":["../../../src/core/slack/show-in-slack.ts"],"names":[],"mappings":"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"}
@@ -27,5 +27,14 @@ export interface SlackPost {
27
27
  readonly isLinkOnly: boolean;
28
28
  readonly ackedAt: Date | null;
29
29
  }
30
+ /**
31
+ * Whether the post is a delivery not yet in Slack that starts a thread in
32
+ * the conversation: a reply in a thread there that matches no post may be
33
+ * under it, before the gateway keeps its Slack message.
34
+ */
35
+ export declare function isAwaitingSlackIn(post: SlackPost, conversation: {
36
+ appId: string;
37
+ channel: string;
38
+ }): boolean;
30
39
  /** Whether the post is a delivery the gateway did not finish: not yet in Slack, or not yet acknowledged. */
31
40
  export declare function isUnfinished(post: SlackPost): boolean;
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Whether the post is a delivery not yet in Slack that starts a thread in
3
+ * the conversation: a reply in a thread there that matches no post may be
4
+ * under it, before the gateway keeps its Slack message.
5
+ */
6
+ export function isAwaitingSlackIn(post, conversation) {
7
+ return post.deliveryId !== null && post.ts === null && post.threadTs === null && post.appId === conversation.appId && post.channel === conversation.channel;
8
+ }
1
9
  /** Whether the post is a delivery the gateway did not finish: not yet in Slack, or not yet acknowledged. */
2
10
  export function isUnfinished(post) {
3
11
  return post.deliveryId !== null && (post.ts === null || (!post.isLinkOnly && post.ackedAt === null));
@@ -1 +1 @@
1
- {"version":3,"file":"slack-post.js","sourceRoot":"","sources":["../../../src/core/slack/slack-post.ts"],"names":[],"mappings":"AA+BA,4GAA4G;AAC5G,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC;AACvG,CAAC"}
1
+ {"version":3,"file":"slack-post.js","sourceRoot":"","sources":["../../../src/core/slack/slack-post.ts"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAe,EAAE,YAAgD;IACjG,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,CAAC;AAC9J,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC;AACvG,CAAC"}
@@ -30,13 +30,15 @@ export type TakeSlackEvent = (event: {
30
30
  * as, and sent now (9.4 step 3); a retry of a kept one changes nothing.
31
31
  * One in the thread under a delivery the gateway posted answers it: it goes
32
32
  * to that delivery's sender in reply to its message (9.5 step 4). Through
33
- * the gateway's own bot, only such an answer is sent.
33
+ * the gateway's own bot, only such an answer is sent. One in a thread that
34
+ * matches no post, while a delivery in that conversation is not yet in
35
+ * Slack, may be under it: it is kept, and matched as it is sent.
34
36
  */
35
37
  export declare function createTakeSlackEvent(deps: {
36
38
  apps: Pick<SlackApps, 'findByAppId' | 'save'>;
37
39
  links: Pick<SlackLinks, 'find'>;
38
40
  events: Pick<SlackEvents, 'keep'>;
39
- posts: Pick<SlackPosts, 'lastInThread'>;
41
+ posts: Pick<SlackPosts, 'lastInThread' | 'unfinished'>;
40
42
  /** Sends the kept events now, not at the next round. */
41
43
  sendNow: () => void;
42
44
  slack: Pick<SlackMessages, 'postOnlyTo'>;
@@ -1,5 +1,6 @@
1
1
  import { err, ok } from '../shared/result.js';
2
2
  import { isRemovedEvent, personMessageOf } from './slack-event.js';
3
+ import { isAwaitingSlackIn } from './slack-post.js';
3
4
  import { markdownOf } from './slack-markdown.js';
4
5
  import { isSignedBy } from './slack-request.js';
5
6
  /** What the gateway answers a person whose disabled account's link stopped (gateway scopes 9.3). */
@@ -17,7 +18,9 @@ export const STOPPED_LINK_TEXT = 'Your account cannot message the fleet now';
17
18
  * as, and sent now (9.4 step 3); a retry of a kept one changes nothing.
18
19
  * One in the thread under a delivery the gateway posted answers it: it goes
19
20
  * to that delivery's sender in reply to its message (9.5 step 4). Through
20
- * the gateway's own bot, only such an answer is sent.
21
+ * the gateway's own bot, only such an answer is sent. One in a thread that
22
+ * matches no post, while a delivery in that conversation is not yet in
23
+ * Slack, may be under it: it is kept, and matched as it is sent.
21
24
  */
22
25
  export function createTakeSlackEvent(deps) {
23
26
  return async ({ appId, event, isRetry, body, timestamp, signature }) => {
@@ -37,9 +40,12 @@ export function createTakeSlackEvent(deps) {
37
40
  const link = await deps.links.find(app.fleetId, { teamId: message.teamId, userId: message.userId });
38
41
  if (link?.stoppedAt === null) {
39
42
  const { eventId, channel, ts, threadTs, text, files } = message;
43
+ // Awaiting is read before the thread: a post Slack answers between the two reads is then found in the thread, never missed by both.
44
+ const isAwaiting = threadTs !== null && (await deps.posts.unfinished(app.fleetId, link.personShipId)).some((post) => isAwaitingSlackIn(post, { appId, channel }));
40
45
  const answered = threadTs === null ? undefined : await deps.posts.lastInThread(app.fleetId, { personShipId: link.personShipId, appId, channel, threadTs });
41
46
  const shipId = answered?.senderShipId ?? app.shipId;
42
- if (shipId === null) {
47
+ const isToMatch = isAwaiting && answered === undefined;
48
+ if (shipId === null && !isToMatch) {
43
49
  return ok({ kind: 'ignored' });
44
50
  }
45
51
  const kept = await deps.events.keep({
@@ -1 +1 @@
1
- {"version":3,"file":"take-slack-event.js","sourceRoot":"","sources":["../../../src/core/slack/take-slack-event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"take-slack-event.js","sourceRoot":"","sources":["../../../src/core/slack/take-slack-event.ts"],"names":[],"mappings":"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"}
@@ -20,3 +20,37 @@ export type McpServerCredential =
20
20
  /** The OAuth scope to ask the authorization server for, if the server needs one. */
21
21
  readonly scope?: string;
22
22
  };
23
+ /**
24
+ * The OAuth client the gateway registered for one party with the outside
25
+ * authorization server, by dynamic registration (decision 0067): every
26
+ * person's grant for the party is under it, and it goes to no issuer but its
27
+ * own.
28
+ */
29
+ export interface SignInClient {
30
+ readonly issuer: string;
31
+ readonly authorizationEndpoint: string;
32
+ readonly tokenEndpoint: string;
33
+ /** Where a grant is revoked, when the authorization server offers it. */
34
+ readonly revocationEndpoint: string | null;
35
+ /** Whether the authorization server states its issuer in each authorization response (RFC 9207): a response without it is then refused. */
36
+ readonly isIssuerInResponse: boolean;
37
+ readonly clientId: string;
38
+ /** None when the authorization server registered a public client. */
39
+ readonly clientSecret: string | null;
40
+ /** Where the client is read or deleted, and with what (RFC 7592), when the authorization server answered them; only registration answers them. */
41
+ readonly registrationClientUri: string | null;
42
+ readonly registrationAccessToken: string | null;
43
+ /** The server's resource indicator (RFC 8707), as its protected resource metadata names it. */
44
+ readonly resource: string;
45
+ /** The outside scopes each person's sign-in asks for. */
46
+ readonly scope: string;
47
+ }
48
+ /**
49
+ * An outside MCP server's credential: one of the gateway's own, or, for a
50
+ * server that takes only an OAuth sign-in, the party's client, under which
51
+ * each person signs in for themselves (decision 0067).
52
+ */
53
+ export type McpServerPartyCredential = McpServerCredential | {
54
+ readonly kind: 'personSignIn';
55
+ readonly client: SignInClient;
56
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The gateway's rounds over grants (decision 0067): every interval, until
3
+ * it stops, a round refreshes the grants that are idle or near their end
4
+ * (Q7) and ends the grants of retired person ships (Q6). Every gateway
5
+ * instance runs one; the grant's row lock keeps their refreshes of one
6
+ * grant one at a time.
7
+ */
8
+ import type { FastifyBaseLogger } from 'fastify';
9
+ import type { Sleep } from './core/mcp-out/run-party.js';
10
+ export interface GrantWorker {
11
+ start(): void;
12
+ /** Stops, once the round under way ended. */
13
+ stop(): Promise<void>;
14
+ }
15
+ export declare function createGrantWorker(deps: {
16
+ round: () => Promise<void>;
17
+ sleep: Sleep;
18
+ intervalMs: number;
19
+ log: FastifyBaseLogger;
20
+ }): GrantWorker;