@aeolus-fleet/gateway 0.32.2 → 0.33.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 (536) hide show
  1. package/README.md +22 -3
  2. package/dist/adapters/crypto/slack-install-seals.d.ts +3 -0
  3. package/dist/adapters/crypto/slack-install-seals.js +15 -0
  4. package/dist/adapters/crypto/slack-install-seals.js.map +1 -0
  5. package/dist/adapters/crypto/slack-link-seals.d.ts +3 -0
  6. package/dist/adapters/crypto/slack-link-seals.js +15 -0
  7. package/dist/adapters/crypto/slack-link-seals.js.map +1 -0
  8. package/dist/adapters/crypto/slack-signatures.d.ts +3 -0
  9. package/dist/adapters/crypto/slack-signatures.js +14 -0
  10. package/dist/adapters/crypto/slack-signatures.js.map +1 -0
  11. package/dist/adapters/fleet/slack-ships.d.ts +15 -0
  12. package/dist/adapters/fleet/slack-ships.js +32 -0
  13. package/dist/adapters/fleet/slack-ships.js.map +1 -0
  14. package/dist/adapters/http/mcp-endpoint.js +1 -1
  15. package/dist/adapters/http/mcp-endpoint.js.map +1 -1
  16. package/dist/adapters/http/oauth-routes.d.ts +4 -1
  17. package/dist/adapters/http/oauth-routes.js +21 -9
  18. package/dist/adapters/http/oauth-routes.js.map +1 -1
  19. package/dist/adapters/http/openai-apps-challenge.d.ts +10 -0
  20. package/dist/adapters/http/openai-apps-challenge.js +9 -0
  21. package/dist/adapters/http/openai-apps-challenge.js.map +1 -0
  22. package/dist/adapters/http/person-tools.d.ts +24 -1
  23. package/dist/adapters/http/person-tools.js +43 -11
  24. package/dist/adapters/http/person-tools.js.map +1 -1
  25. package/dist/adapters/http/slack-routes.d.ts +28 -0
  26. package/dist/adapters/http/slack-routes.js +173 -0
  27. package/dist/adapters/http/slack-routes.js.map +1 -0
  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 +25 -0
  32. package/dist/adapters/prisma/generated/client.d.ts +25 -0
  33. package/dist/adapters/prisma/generated/internal/class.d.ts +55 -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 +452 -1
  37. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +72 -1
  38. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  39. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +76 -0
  40. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +72 -1
  41. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  42. package/dist/adapters/prisma/generated/models/SlackApp.d.ts +1229 -0
  43. package/dist/adapters/prisma/generated/models/SlackApp.js +2 -0
  44. package/dist/adapters/prisma/generated/models/SlackApp.js.map +1 -0
  45. package/dist/adapters/prisma/generated/models/SlackEvent.d.ts +1229 -0
  46. package/dist/adapters/prisma/generated/models/SlackEvent.js +2 -0
  47. package/dist/adapters/prisma/generated/models/SlackEvent.js.map +1 -0
  48. package/dist/adapters/prisma/generated/models/SlackLink.d.ts +1126 -0
  49. package/dist/adapters/prisma/generated/models/SlackLink.js +2 -0
  50. package/dist/adapters/prisma/generated/models/SlackLink.js.map +1 -0
  51. package/dist/adapters/prisma/generated/models/SlackPost.d.ts +1174 -0
  52. package/dist/adapters/prisma/generated/models/SlackPost.js +2 -0
  53. package/dist/adapters/prisma/generated/models/SlackPost.js.map +1 -0
  54. package/dist/adapters/prisma/generated/models/SlackWorkspace.d.ts +1143 -0
  55. package/dist/adapters/prisma/generated/models/SlackWorkspace.js +2 -0
  56. package/dist/adapters/prisma/generated/models/SlackWorkspace.js.map +1 -0
  57. package/dist/adapters/prisma/generated/models.d.ts +5 -0
  58. package/dist/adapters/prisma/slack-events.d.ts +8 -0
  59. package/dist/adapters/prisma/slack-events.js +55 -0
  60. package/dist/adapters/prisma/slack-events.js.map +1 -0
  61. package/dist/adapters/prisma/slack-links.d.ts +8 -0
  62. package/dist/adapters/prisma/slack-links.js +49 -0
  63. package/dist/adapters/prisma/slack-links.js.map +1 -0
  64. package/dist/adapters/prisma/slack-posts.d.ts +4 -0
  65. package/dist/adapters/prisma/slack-posts.js +42 -0
  66. package/dist/adapters/prisma/slack-posts.js.map +1 -0
  67. package/dist/adapters/prisma/slack-stores.d.ts +6 -0
  68. package/dist/adapters/prisma/slack-stores.js +115 -0
  69. package/dist/adapters/prisma/slack-stores.js.map +1 -0
  70. package/dist/adapters/slack/slack-call.d.ts +15 -0
  71. package/dist/adapters/slack/slack-call.js +41 -0
  72. package/dist/adapters/slack/slack-call.js.map +1 -0
  73. package/dist/adapters/slack/slack-messages.d.ts +4 -0
  74. package/dist/adapters/slack/slack-messages.js +53 -0
  75. package/dist/adapters/slack/slack-messages.js.map +1 -0
  76. package/dist/adapters/slack/slack-sign-in.d.ts +4 -0
  77. package/dist/adapters/slack/slack-sign-in.js +33 -0
  78. package/dist/adapters/slack/slack-sign-in.js.map +1 -0
  79. package/dist/adapters/slack/slack-tooling.d.ts +6 -0
  80. package/dist/adapters/slack/slack-tooling.js +68 -0
  81. package/dist/adapters/slack/slack-tooling.js.map +1 -0
  82. package/dist/adapters/trpc/router.d.ts +149 -1
  83. package/dist/adapters/trpc/router.js +117 -6
  84. package/dist/adapters/trpc/router.js.map +1 -1
  85. package/dist/app.d.ts +4 -0
  86. package/dist/app.js +143 -15
  87. package/dist/app.js.map +1 -1
  88. package/dist/bin/aeolus-gateway.js +2 -0
  89. package/dist/bin/aeolus-gateway.js.map +1 -1
  90. package/dist/config.d.ts +8 -0
  91. package/dist/config.js +4 -0
  92. package/dist/config.js.map +1 -1
  93. package/dist/core/connection/connect.d.ts +12 -0
  94. package/dist/core/connection/connect.js +11 -4
  95. package/dist/core/connection/connect.js.map +1 -1
  96. package/dist/core/connection/declare-gateway-scopes.d.ts +15 -0
  97. package/dist/core/connection/declare-gateway-scopes.js +23 -0
  98. package/dist/core/connection/declare-gateway-scopes.js.map +1 -0
  99. package/dist/core/oauth/exchange-token.d.ts +1 -0
  100. package/dist/core/oauth/exchange-token.js +4 -3
  101. package/dist/core/oauth/exchange-token.js.map +1 -1
  102. package/dist/core/oauth/read-authorization.d.ts +3 -3
  103. package/dist/core/oauth/read-authorization.js +6 -5
  104. package/dist/core/oauth/read-authorization.js.map +1 -1
  105. package/dist/core/people/ports.d.ts +23 -2
  106. package/dist/core/people/wake-person.d.ts +9 -2
  107. package/dist/core/people/wake-person.js +33 -9
  108. package/dist/core/people/wake-person.js.map +1 -1
  109. package/dist/core/shared/errors.d.ts +1 -1
  110. package/dist/core/shared/errors.js.map +1 -1
  111. package/dist/core/sign-in/start-sign-in.d.ts +4 -1
  112. package/dist/core/sign-in/start-sign-in.js +8 -2
  113. package/dist/core/sign-in/start-sign-in.js.map +1 -1
  114. package/dist/core/slack/answer-in-slack.d.ts +36 -0
  115. package/dist/core/slack/answer-in-slack.js +51 -0
  116. package/dist/core/slack/answer-in-slack.js.map +1 -0
  117. package/dist/core/slack/complete-install.d.ts +27 -0
  118. package/dist/core/slack/complete-install.js +36 -0
  119. package/dist/core/slack/complete-install.js.map +1 -0
  120. package/dist/core/slack/complete-link.d.ts +41 -0
  121. package/dist/core/slack/complete-link.js +64 -0
  122. package/dist/core/slack/complete-link.js.map +1 -0
  123. package/dist/core/slack/connect-slack.d.ts +34 -0
  124. package/dist/core/slack/connect-slack.js +54 -0
  125. package/dist/core/slack/connect-slack.js.map +1 -0
  126. package/dist/core/slack/disconnect-slack.d.ts +21 -0
  127. package/dist/core/slack/disconnect-slack.js +31 -0
  128. package/dist/core/slack/disconnect-slack.js.map +1 -0
  129. package/dist/core/slack/expose-ship.d.ts +35 -0
  130. package/dist/core/slack/expose-ship.js +59 -0
  131. package/dist/core/slack/expose-ship.js.map +1 -0
  132. package/dist/core/slack/follow-exposed-ships.d.ts +20 -0
  133. package/dist/core/slack/follow-exposed-ships.js +43 -0
  134. package/dist/core/slack/follow-exposed-ships.js.map +1 -0
  135. package/dist/core/slack/gateway-bot.d.ts +20 -0
  136. package/dist/core/slack/gateway-bot.js +22 -0
  137. package/dist/core/slack/gateway-bot.js.map +1 -0
  138. package/dist/core/slack/kept-slack-event.d.ts +30 -0
  139. package/dist/core/slack/kept-slack-event.js +5 -0
  140. package/dist/core/slack/kept-slack-event.js.map +1 -0
  141. package/dist/core/slack/list-exposable.d.ts +25 -0
  142. package/dist/core/slack/list-exposable.js +32 -0
  143. package/dist/core/slack/list-exposable.js.map +1 -0
  144. package/dist/core/slack/ports.d.ts +288 -0
  145. package/dist/core/slack/ports.js +2 -0
  146. package/dist/core/slack/ports.js.map +1 -0
  147. package/dist/core/slack/read-slack-link.d.ts +23 -0
  148. package/dist/core/slack/read-slack-link.js +20 -0
  149. package/dist/core/slack/read-slack-link.js.map +1 -0
  150. package/dist/core/slack/read-slack.d.ts +42 -0
  151. package/dist/core/slack/read-slack.js +35 -0
  152. package/dist/core/slack/read-slack.js.map +1 -0
  153. package/dist/core/slack/remove-bot.d.ts +24 -0
  154. package/dist/core/slack/remove-bot.js +33 -0
  155. package/dist/core/slack/remove-bot.js.map +1 -0
  156. package/dist/core/slack/rotate-configuration-tokens.d.ts +13 -0
  157. package/dist/core/slack/rotate-configuration-tokens.js +14 -0
  158. package/dist/core/slack/rotate-configuration-tokens.js.map +1 -0
  159. package/dist/core/slack/send-slack-events.d.ts +29 -0
  160. package/dist/core/slack/send-slack-events.js +78 -0
  161. package/dist/core/slack/send-slack-events.js.map +1 -0
  162. package/dist/core/slack/ship-bot.d.ts +23 -0
  163. package/dist/core/slack/ship-bot.js +25 -0
  164. package/dist/core/slack/ship-bot.js.map +1 -0
  165. package/dist/core/slack/show-all-in-slack.d.ts +16 -0
  166. package/dist/core/slack/show-all-in-slack.js +18 -0
  167. package/dist/core/slack/show-all-in-slack.js.map +1 -0
  168. package/dist/core/slack/show-in-slack.d.ts +38 -0
  169. package/dist/core/slack/show-in-slack.js +154 -0
  170. package/dist/core/slack/show-in-slack.js.map +1 -0
  171. package/dist/core/slack/slack-app.d.ts +77 -0
  172. package/dist/core/slack/slack-app.js +53 -0
  173. package/dist/core/slack/slack-app.js.map +1 -0
  174. package/dist/core/slack/slack-event.d.ts +51 -0
  175. package/dist/core/slack/slack-event.js +18 -0
  176. package/dist/core/slack/slack-event.js.map +1 -0
  177. package/dist/core/slack/slack-link.d.ts +20 -0
  178. package/dist/core/slack/slack-link.js +2 -0
  179. package/dist/core/slack/slack-link.js.map +1 -0
  180. package/dist/core/slack/slack-markdown.d.ts +13 -0
  181. package/dist/core/slack/slack-markdown.js +27 -0
  182. package/dist/core/slack/slack-markdown.js.map +1 -0
  183. package/dist/core/slack/slack-post-of.d.ts +27 -0
  184. package/dist/core/slack/slack-post-of.js +71 -0
  185. package/dist/core/slack/slack-post-of.js.map +1 -0
  186. package/dist/core/slack/slack-post.d.ts +31 -0
  187. package/dist/core/slack/slack-post.js +5 -0
  188. package/dist/core/slack/slack-post.js.map +1 -0
  189. package/dist/core/slack/slack-request.d.ts +17 -0
  190. package/dist/core/slack/slack-request.js +10 -0
  191. package/dist/core/slack/slack-request.js.map +1 -0
  192. package/dist/core/slack/slack-workspace.d.ts +36 -0
  193. package/dist/core/slack/slack-workspace.js +7 -0
  194. package/dist/core/slack/slack-workspace.js.map +1 -0
  195. package/dist/core/slack/start-install.d.ts +43 -0
  196. package/dist/core/slack/start-install.js +57 -0
  197. package/dist/core/slack/start-install.js.map +1 -0
  198. package/dist/core/slack/start-link.d.ts +32 -0
  199. package/dist/core/slack/start-link.js +46 -0
  200. package/dist/core/slack/start-link.js.map +1 -0
  201. package/dist/core/slack/stop-slack-link.d.ts +16 -0
  202. package/dist/core/slack/stop-slack-link.js +9 -0
  203. package/dist/core/slack/stop-slack-link.js.map +1 -0
  204. package/dist/core/slack/take-access-token.d.ts +25 -0
  205. package/dist/core/slack/take-access-token.js +45 -0
  206. package/dist/core/slack/take-access-token.js.map +1 -0
  207. package/dist/core/slack/take-slack-event.d.ts +47 -0
  208. package/dist/core/slack/take-slack-event.js +75 -0
  209. package/dist/core/slack/take-slack-event.js.map +1 -0
  210. package/dist/core/slack/unlink-slack.d.ts +9 -0
  211. package/dist/core/slack/unlink-slack.js +9 -0
  212. package/dist/core/slack/unlink-slack.js.map +1 -0
  213. package/dist/slack-event-worker.d.ts +21 -0
  214. package/dist/slack-event-worker.js +38 -0
  215. package/dist/slack-event-worker.js.map +1 -0
  216. package/dist/slack-token-worker.d.ts +19 -0
  217. package/dist/slack-token-worker.js +24 -0
  218. package/dist/slack-token-worker.js.map +1 -0
  219. package/package.json +3 -2
  220. package/src/adapters/prisma/migrations/20261027090000_slack_workspaces/migration.sql +30 -0
  221. package/src/adapters/prisma/migrations/20261027150000_slack_bots/migration.sql +6 -0
  222. package/src/adapters/prisma/migrations/20261027200000_slack_links/migration.sql +15 -0
  223. package/src/adapters/prisma/migrations/20261028090000_slack_events/migration.sql +18 -0
  224. package/src/adapters/prisma/migrations/20261028150000_slack_posts/migration.sql +25 -0
  225. package/src/adapters/prisma/schema.prisma +103 -0
  226. package/web/.next/BUILD_ID +1 -1
  227. package/web/.next/app-path-routes-manifest.json +5 -0
  228. package/web/.next/build-manifest.json +51 -3
  229. package/web/.next/diagnostics/route-bundle-stats.json +143 -70
  230. package/web/.next/fallback-build-manifest.json +3 -3
  231. package/web/.next/prerender-manifest.json +3 -3
  232. package/web/.next/routes-manifest.json +30 -0
  233. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  234. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  235. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  236. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  237. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  238. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  239. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +11 -11
  240. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +2 -2
  241. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  242. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  243. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +4 -4
  244. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +2 -2
  245. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  246. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  247. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +11 -11
  248. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +3 -3
  249. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  250. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  251. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +6 -6
  252. package/web/.next/server/app/(console)/outside-parties/add/page.js +2 -2
  253. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  254. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  255. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  256. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +1 -1
  257. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  258. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  259. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  260. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +1 -1
  261. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  262. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  263. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  264. package/web/.next/server/app/(console)/outside-parties/page.js +3 -3
  265. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  266. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  267. package/web/.next/server/app/(console)/overview/changes/route.js +2 -2
  268. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  269. package/web/.next/server/app/(console)/overview/focus/route.js +2 -2
  270. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
  271. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +27 -7
  272. package/web/.next/server/app/(console)/overview/page.js +2 -2
  273. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  274. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  275. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  276. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js +1 -1
  277. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  278. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  279. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
  280. package/web/.next/server/app/(console)/parties/page.js +3 -3
  281. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  282. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  283. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  284. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  285. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  286. package/web/.next/server/app/(console)/slack/disconnect/page/app-paths-manifest.json +3 -0
  287. package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +23 -0
  288. package/web/.next/server/app/(console)/slack/disconnect/page/next-font-manifest.json +11 -0
  289. package/web/.next/server/app/(console)/slack/disconnect/page/react-loadable-manifest.json +1 -0
  290. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +65 -0
  291. package/web/.next/server/app/(console)/slack/disconnect/page.js +22 -0
  292. package/web/.next/server/app/(console)/slack/disconnect/page.js.map +5 -0
  293. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -0
  294. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +3 -0
  295. package/web/.next/server/app/(console)/slack/expose/page/app-paths-manifest.json +3 -0
  296. package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +23 -0
  297. package/web/.next/server/app/(console)/slack/expose/page/next-font-manifest.json +11 -0
  298. package/web/.next/server/app/(console)/slack/expose/page/react-loadable-manifest.json +1 -0
  299. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +65 -0
  300. package/web/.next/server/app/(console)/slack/expose/page.js +22 -0
  301. package/web/.next/server/app/(console)/slack/expose/page.js.map +5 -0
  302. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -0
  303. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +3 -0
  304. package/web/.next/server/app/(console)/slack/link/route/app-paths-manifest.json +3 -0
  305. package/web/.next/server/app/(console)/slack/link/route/build-manifest.json +12 -0
  306. package/web/.next/server/app/(console)/slack/link/route/server-reference-manifest.json +4 -0
  307. package/web/.next/server/app/(console)/slack/link/route.js +7 -0
  308. package/web/.next/server/app/(console)/slack/link/route.js.map +5 -0
  309. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -0
  310. package/web/.next/server/app/(console)/slack/link/route_client-reference-manifest.js +3 -0
  311. package/web/.next/server/app/(console)/slack/page/app-paths-manifest.json +3 -0
  312. package/web/.next/server/app/(console)/slack/page/build-manifest.json +23 -0
  313. package/web/.next/server/app/(console)/slack/page/next-font-manifest.json +11 -0
  314. package/web/.next/server/app/(console)/slack/page/react-loadable-manifest.json +1 -0
  315. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +65 -0
  316. package/web/.next/server/app/(console)/slack/page.js +22 -0
  317. package/web/.next/server/app/(console)/slack/page.js.map +5 -0
  318. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -0
  319. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +3 -0
  320. package/web/.next/server/app/(console)/slack/remove/page/app-paths-manifest.json +3 -0
  321. package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +23 -0
  322. package/web/.next/server/app/(console)/slack/remove/page/next-font-manifest.json +11 -0
  323. package/web/.next/server/app/(console)/slack/remove/page/react-loadable-manifest.json +1 -0
  324. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +65 -0
  325. package/web/.next/server/app/(console)/slack/remove/page.js +22 -0
  326. package/web/.next/server/app/(console)/slack/remove/page.js.map +5 -0
  327. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -0
  328. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +3 -0
  329. package/web/.next/server/app/_global-error/page.js +1 -1
  330. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  331. package/web/.next/server/app/_global-error.html +1 -1
  332. package/web/.next/server/app/_global-error.rsc +1 -1
  333. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  334. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  335. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  336. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  337. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  338. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  339. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  340. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  341. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  342. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  343. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  344. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  345. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  346. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  347. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  348. package/web/.next/server/app-paths-manifest.json +5 -0
  349. package/web/.next/server/chunks/[root-of-the-server]__01ghdzznyfucm._.js +369 -0
  350. package/web/.next/server/chunks/[root-of-the-server]__01ghdzznyfucm._.js.map +1 -0
  351. package/web/.next/server/chunks/[root-of-the-server]__0mbwomk4pjrl7._.js +369 -0
  352. package/web/.next/server/chunks/[root-of-the-server]__0mbwomk4pjrl7._.js.map +1 -0
  353. package/web/.next/server/chunks/[root-of-the-server]__1tfyrijwfgqlk._.js +3 -0
  354. package/web/.next/server/chunks/[root-of-the-server]__1tfyrijwfgqlk._.js.map +1 -0
  355. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +3 -0
  356. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -0
  357. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  358. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  359. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  360. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  361. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  362. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  363. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  364. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  365. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  366. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  367. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  368. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  369. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +4 -0
  370. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -0
  371. package/web/.next/server/chunks/ssr/[root-of-the-server]__04e53giy2-2tm._.js +3 -0
  372. package/web/.next/server/chunks/ssr/[root-of-the-server]__04e53giy2-2tm._.js.map +1 -0
  373. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0-og0bl8lr2xq._.js → [root-of-the-server]__0a8db18tyk__5._.js} +2 -2
  374. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0-og0bl8lr2xq._.js.map → [root-of-the-server]__0a8db18tyk__5._.js.map} +1 -1
  375. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e59elwbtqr-6._.js +3 -0
  376. package/web/.next/server/chunks/ssr/{[root-of-the-server]__10y66e1xx8xiq._.js.map → [root-of-the-server]__0e59elwbtqr-6._.js.map} +1 -1
  377. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js +4 -0
  378. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js.map +1 -0
  379. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  380. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  381. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1-c9wugbbwsp3._.js → [root-of-the-server]__0kb1gl5t8kz4l._.js} +2 -2
  382. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +1 -1
  383. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1gb-3dttuacyz._.js → [root-of-the-server]__0y0jwufd7xjsv._.js} +1 -1
  384. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +4 -0
  385. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -0
  386. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +4 -0
  387. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -0
  388. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  389. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  390. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1m9atpy0vkbmj._.js → [root-of-the-server]__19ecatcacd6t9._.js} +1 -1
  391. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hfashtn1ee82._.js +3 -0
  392. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hfashtn1ee82._.js.map +1 -0
  393. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +4 -0
  394. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -0
  395. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  396. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  397. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +1 -1
  398. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +1 -1
  399. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  400. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  401. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  402. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  403. package/web/.next/server/chunks/ssr/{_0w2ptjht34s6t._.js → _0wukvn3-ht3ps._.js} +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/{_0bhvvyz0q_0ja._.js → _1e2o809f0ekry._.js} +2 -2
  408. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  409. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  410. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  411. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  412. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +1 -1
  413. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +1 -1
  414. package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js +3 -0
  415. package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js.map +1 -0
  416. package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js +3 -0
  417. package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js.map +1 -0
  418. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js +3 -0
  419. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js.map +1 -0
  420. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js +3 -0
  421. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js.map +1 -0
  422. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js +3 -0
  423. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js.map +1 -0
  424. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js +3 -0
  425. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js.map +1 -0
  426. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js +3 -0
  427. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js.map +1 -0
  428. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js +3 -0
  429. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js.map +1 -0
  430. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js +3 -0
  431. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js.map +1 -0
  432. package/web/.next/server/chunks/ssr/web_00e7-_y92losl._.js +3 -0
  433. package/web/.next/server/chunks/ssr/web_00e7-_y92losl._.js.map +1 -0
  434. package/web/.next/server/chunks/ssr/web_09rcfto3dw4wd._.js +3 -0
  435. package/web/.next/server/chunks/ssr/web_09rcfto3dw4wd._.js.map +1 -0
  436. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js +3 -0
  437. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js.map +1 -0
  438. package/web/.next/server/chunks/ssr/web_0qgev3ti257yj._.js +3 -0
  439. package/web/.next/server/chunks/ssr/{web_0_jk9eione6lx._.js.map → web_0qgev3ti257yj._.js.map} +1 -1
  440. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  441. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  442. package/web/.next/server/chunks/ssr/web_15vnjj3s0z3fa._.js +3 -0
  443. package/web/.next/server/chunks/ssr/{web_1wcpaty_bz55q._.js.map → web_15vnjj3s0z3fa._.js.map} +1 -1
  444. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  445. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  446. package/web/.next/server/chunks/ssr/web_app_(console)_slack_page_tsx_0ts7fo7pqicq6._.js +3 -0
  447. package/web/.next/server/chunks/ssr/web_app_(console)_slack_page_tsx_0ts7fo7pqicq6._.js.map +1 -0
  448. package/web/.next/server/chunks/ssr/web_app_(console)_slack_remove_page_tsx_15q4ril_on0ed._.js +3 -0
  449. package/web/.next/server/chunks/ssr/web_app_(console)_slack_remove_page_tsx_15q4ril_on0ed._.js.map +1 -0
  450. package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js +3 -0
  451. package/web/.next/server/chunks/ssr/{web_features_10xz3ojtvfi7h._.js.map → web_features_0rd6357w-eo50._.js.map} +1 -1
  452. package/web/.next/server/chunks/ssr/web_features_1m5g9a6mwrsd-._.js +3 -0
  453. package/web/.next/server/chunks/ssr/{web_features_085cv0gogrxxf._.js.map → web_features_1m5g9a6mwrsd-._.js.map} +1 -1
  454. package/web/.next/server/chunks/ssr/web_features_1rwkgka1xffb1._.js +3 -0
  455. package/web/.next/server/chunks/ssr/web_features_1rwkgka1xffb1._.js.map +1 -0
  456. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  457. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  458. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  459. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  460. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  461. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  462. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  463. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  464. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  465. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  466. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  467. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  468. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  469. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  470. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
  471. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js +3 -0
  472. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js.map +1 -0
  473. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  474. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  475. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  476. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +3 -0
  477. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js.map +1 -0
  478. package/web/.next/server/chunks/web__next-internal_server_app_(console)_slack_link_route_actions_16zgisics858w.js +3 -0
  479. package/web/.next/server/chunks/web__next-internal_server_app_(console)_slack_link_route_actions_16zgisics858w.js.map +1 -0
  480. package/web/.next/server/middleware-build-manifest.js +51 -3
  481. package/web/.next/server/next-font-manifest.js +1 -1
  482. package/web/.next/server/next-font-manifest.json +16 -0
  483. package/web/.next/server/pages/500.html +1 -1
  484. package/web/.next/server/preview-props.json +3 -3
  485. package/web/.next/server/server-reference-manifest.js +1 -1
  486. package/web/.next/server/server-reference-manifest.json +174 -28
  487. package/web/.next/static/chunks/0nhopjmnw_dqt.js +1 -0
  488. package/web/.next/static/chunks/0zbcy0_3jemrv.js +1 -0
  489. package/web/.next/static/chunks/{0ke_2_la1glwa.js → 1-suv9wttlxqo.js} +1 -1
  490. package/web/.next/static/chunks/19kfx4qlur25a.js +1 -0
  491. package/web/.next/static/chunks/1a2-hkn-7471k.js +1 -0
  492. package/web/.next/static/chunks/{1tgs1j0j-1qlh.js → 1msggkwsn7vyq.js} +1 -1
  493. package/web/.next/static/chunks/{2hj3-kl1ggnu_.js → 2-kh9nbonee6w.js} +1 -1
  494. package/web/.next/static/chunks/2l92bozm8dcmo.js +1 -0
  495. package/web/.next/static/chunks/{2d283cu3en9cy.js → 310mio1zd_mw7.js} +1 -1
  496. package/web/.next/static/chunks/{07j7jnfe13wx6.js → 3d_sjtxh_vkr6.js} +1 -1
  497. package/web/.next/static/chunks/{0p_kl57bddsiy.js → 3dhy3jady0w6a.js} +1 -1
  498. package/web/.next/static/chunks/3efghx8whwnok.js +1 -0
  499. package/web/.next/static/chunks/3hvo3apdq-ckk.js +1 -0
  500. package/web/.next/static/chunks/3rbzp0tdc1te-.js +1 -0
  501. package/web/.next/static/chunks/{2n4bf_2r9lysd.js → 455eobei0t6t9.js} +1 -1
  502. package/web/.next/trace +1 -1
  503. package/web/.next/trace-build +1 -1
  504. package/web/.next/types/routes.d.ts +7 -2
  505. package/web/.next/types/validator.ts +78 -0
  506. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js +0 -369
  507. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +0 -1
  508. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +0 -3
  509. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +0 -4
  510. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +0 -1
  511. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js +0 -3
  512. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js.map +0 -1
  513. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js +0 -3
  514. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js.map +0 -1
  515. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +0 -3
  516. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +0 -1
  517. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +0 -3
  518. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js +0 -3
  519. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +0 -3
  520. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js +0 -3
  521. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +0 -3
  522. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +0 -1
  523. package/web/.next/static/chunks/0ul9rtulfiph6.js +0 -1
  524. package/web/.next/static/chunks/19wvmglfgof0u.js +0 -1
  525. package/web/.next/static/chunks/2i3ydqqupow_x.js +0 -1
  526. package/web/.next/static/chunks/2ngyis59r3qta.js +0 -1
  527. package/web/.next/static/chunks/3bl-e3zhidrrz.js +0 -1
  528. package/web/.next/static/chunks/3x_8doukmdfpu.js +0 -1
  529. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1-c9wugbbwsp3._.js.map → [root-of-the-server]__0kb1gl5t8kz4l._.js.map} +0 -0
  530. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1gb-3dttuacyz._.js.map → [root-of-the-server]__0y0jwufd7xjsv._.js.map} +0 -0
  531. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1m9atpy0vkbmj._.js.map → [root-of-the-server]__19ecatcacd6t9._.js.map} +0 -0
  532. /package/web/.next/server/chunks/ssr/{_0w2ptjht34s6t._.js.map → _0wukvn3-ht3ps._.js.map} +0 -0
  533. /package/web/.next/server/chunks/ssr/{_0bhvvyz0q_0ja._.js.map → _1e2o809f0ekry._.js.map} +0 -0
  534. /package/web/.next/static/{tQFXrUWi6vEZq4Cp-U5tk → 87vMFs_KGRcFD40WWRkFR}/_buildManifest.js +0 -0
  535. /package/web/.next/static/{tQFXrUWi6vEZq4Cp-U5tk → 87vMFs_KGRcFD40WWRkFR}/_clientMiddlewareManifest.js +0 -0
  536. /package/web/.next/static/{tQFXrUWi6vEZq4Cp-U5tk → 87vMFs_KGRcFD40WWRkFR}/_ssgManifest.js +0 -0
@@ -7,11 +7,18 @@ import { ok } from '../shared/result.js';
7
7
  * each proxy ship.
8
8
  */
9
9
  const GATEWAY_SCOPES = ['fleet:read', 'fleet:commission', 'fleet:on-behalf', 'scopes:declare', 'fleet:verify'];
10
- /** The gateway's own scopes, under its namespace: approving is a scope any actor may hold (decision 0056). */
11
- const GATEWAY_NAMESPACE = {
10
+ /**
11
+ * The gateway's own scopes, under its namespace: approving is a scope any
12
+ * actor may hold (decision 0056); Slack is apart from it (gateway scopes B6).
13
+ */
14
+ export const GATEWAY_NAMESPACE = {
12
15
  namespace: 'gateway',
13
- scopes: [{ scope: 'gateway:approve', description: 'Approve outside parties: outside MCP clients and servers, each acting in the fleet as its proxy ship' }],
16
+ scopes: [
17
+ { scope: 'gateway:approve', description: 'Approve outside parties: outside MCP clients and servers, each acting in the fleet as its proxy ship' },
18
+ { scope: 'gateway:slack', description: 'Connect the fleet to a Slack workspace, and expose ships within manage reach as Slack bots' },
19
+ ],
14
20
  };
21
+ export const DECLARED_SCOPES = GATEWAY_NAMESPACE.scopes.map(({ scope }) => scope).join(', ');
15
22
  /**
16
23
  * Use case: argo connects the gateway, as the other plugins are connected.
17
24
  * The console's server hands it its ship's secret, server to server; the
@@ -49,7 +56,7 @@ export function createConnect(deps) {
49
56
  }
50
57
  const declared = await deps.door.declareScopes(crewToken, GATEWAY_NAMESPACE);
51
58
  if (!declared.isOk) {
52
- return letGo('SCOPE_REFUSED', `The fleet did not take the gateway's scope gateway:approve: ${declared.error.message}`);
59
+ return letGo('SCOPE_REFUSED', `The fleet did not take the gateway's scopes ${DECLARED_SCOPES}: ${declared.error.message}`);
53
60
  }
54
61
  await deps.store.save({ fleetId: who.value.fleetId, shipId, name: who.value.name, crewToken, crewedAt: deps.clock.now() });
55
62
  return ok({ state: 'connected', ship: { shipId, name: who.value.name }, lastShipId: shipId });
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/core/connection/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/core/connection/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
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 { ConnectionStore, FleetDoor } from './ports.js';
5
+ export type DeclareGatewayScopes = (fleetId: FleetId) => Promise<Result<undefined, DomainError<'NOT_CONNECTED' | 'SCOPE_REFUSED'>>>;
6
+ /**
7
+ * Use case: the gateway declares its whole namespace again in a fleet it is
8
+ * connected to, as it starts, so a scope added since that fleet connected
9
+ * (gateway:slack) is offered there too. A refusal keeps the connection: the
10
+ * fleet keeps the list it took before.
11
+ */
12
+ export declare function createDeclareGatewayScopes(deps: {
13
+ door: Pick<FleetDoor, 'declareScopes'>;
14
+ store: Pick<ConnectionStore, 'find'>;
15
+ }): DeclareGatewayScopes;
@@ -0,0 +1,23 @@
1
+ import { refuse } from '../shared/errors.js';
2
+ import { ok } from '../shared/result.js';
3
+ import { DECLARED_SCOPES, GATEWAY_NAMESPACE } from './connect.js';
4
+ /**
5
+ * Use case: the gateway declares its whole namespace again in a fleet it is
6
+ * connected to, as it starts, so a scope added since that fleet connected
7
+ * (gateway:slack) is offered there too. A refusal keeps the connection: the
8
+ * fleet keeps the list it took before.
9
+ */
10
+ export function createDeclareGatewayScopes(deps) {
11
+ return async (fleetId) => {
12
+ const crew = await deps.store.find(fleetId);
13
+ if (crew === undefined) {
14
+ return refuse('NOT_CONNECTED', 'The gateway is not connected to this fleet');
15
+ }
16
+ const declared = await deps.door.declareScopes(crew.crewToken, GATEWAY_NAMESPACE);
17
+ if (!declared.isOk) {
18
+ return refuse('SCOPE_REFUSED', `The fleet did not take the gateway's scopes ${DECLARED_SCOPES}: ${declared.error.message}`);
19
+ }
20
+ return ok(undefined);
21
+ };
22
+ }
23
+ //# sourceMappingURL=declare-gateway-scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare-gateway-scopes.js","sourceRoot":"","sources":["../../../src/core/connection/declare-gateway-scopes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKlE;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAsF;IAC/H,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,eAAe,EAAE,+CAA+C,eAAe,KAAK,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9H,CAAC;QACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
@@ -24,6 +24,7 @@ interface ExchangeTokenDeps {
24
24
  tokens: IssuedTokens;
25
25
  secrets: OAuthSecrets;
26
26
  clock: Clock;
27
+ /** The MCP endpoint a client signed in by client credentials is bound to; a code keeps the resource it was issued for. */
27
28
  resource: string;
28
29
  /** The parties argo's approvers added: a client signed in by client credentials is one. */
29
30
  parties: Pick<PartyStore, 'findByClient'>;
@@ -87,9 +87,6 @@ export function createExchangeToken(deps) {
87
87
  if (code === undefined || verifier === undefined) {
88
88
  return refusal('invalid_request', 'A code and its PKCE verifier are required');
89
89
  }
90
- if (request.resource !== undefined && request.resource !== deps.resource) {
91
- return refusal('invalid_target', `The resource must be ${deps.resource}`);
92
- }
93
90
  const taken = await deps.codes.take(deps.secrets.hashOf(code));
94
91
  if (!taken) {
95
92
  return refusal('invalid_grant', 'No such code');
@@ -99,6 +96,10 @@ export function createExchangeToken(deps) {
99
96
  return refusal('invalid_grant', 'The code was used before; the tokens it gave are revoked');
100
97
  }
101
98
  const issued = taken.code;
99
+ // A code is taken for the resource it was issued for, one of the gateway's addresses (RFC 8707).
100
+ if (request.resource !== undefined && request.resource !== issued.resource) {
101
+ return refusal('invalid_target', `The resource must be ${issued.resource}`);
102
+ }
102
103
  const isValid = issued.expiresAt.getTime() > deps.clock.now().getTime() &&
103
104
  issued.clientId === request.client_id &&
104
105
  issued.redirectUri === request.redirect_uri &&
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-token.js","sourceRoot":"","sources":["../../../src/core/oauth/exchange-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exchange-token.js","sourceRoot":"","sources":["../../../src/core/oauth/exchange-token.ts"],"names":[],"mappings":"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"}
@@ -33,11 +33,11 @@ export type ReadAuthorization = (request: Readonly<Record<string, string | undef
33
33
  * Use case: the gateway reads an authorization request from an MCP client
34
34
  * (OAuth 2.1 with PKCE, MCP 2026-07-28). The client is pre-registered, or
35
35
  * known by its metadata document (CIMD), fetched from its client id. Only
36
- * the S256 challenge is taken, and the resource must be the gateway's MCP
37
- * endpoint (RFC 8707), so a token is bound to it.
36
+ * the S256 challenge is taken, and the resource must be one of the addresses
37
+ * the gateway serves its MCP tools at (RFC 8707), so a token is bound to it.
38
38
  */
39
39
  export declare function createReadAuthorization(deps: {
40
40
  clients: OAuthClients;
41
41
  documents: ClientMetadataDocuments;
42
- resource: string;
42
+ resources: readonly string[];
43
43
  }): ReadAuthorization;
@@ -23,8 +23,8 @@ function metadataDocumentUrl(clientId) {
23
23
  * Use case: the gateway reads an authorization request from an MCP client
24
24
  * (OAuth 2.1 with PKCE, MCP 2026-07-28). The client is pre-registered, or
25
25
  * known by its metadata document (CIMD), fetched from its client id. Only
26
- * the S256 challenge is taken, and the resource must be the gateway's MCP
27
- * endpoint (RFC 8707), so a token is bound to it.
26
+ * the S256 challenge is taken, and the resource must be one of the addresses
27
+ * the gateway serves its MCP tools at (RFC 8707), so a token is bound to it.
28
28
  */
29
29
  export function createReadAuthorization(deps) {
30
30
  const knownClient = async (clientId) => {
@@ -65,10 +65,11 @@ export function createReadAuthorization(deps) {
65
65
  if (codeChallenge === undefined || codeChallenge === '' || request.code_challenge_method !== 'S256') {
66
66
  return sendBack('invalid_request', 'A PKCE code challenge with the S256 method is required');
67
67
  }
68
- if (request.resource !== deps.resource) {
69
- return sendBack('invalid_target', `The resource must be ${deps.resource}`);
68
+ const { resource } = request;
69
+ if (resource === undefined || !deps.resources.includes(resource)) {
70
+ return sendBack('invalid_target', `The resource must be one of ${deps.resources.join(', ')}`);
70
71
  }
71
- return ok({ clientId, clientName: client.value.name, clientFleetId: client.value.fleetId, redirectUri, codeChallenge, resource: deps.resource, scope: request.scope ?? null, state });
72
+ return ok({ clientId, clientName: client.value.name, clientFleetId: client.value.fleetId, redirectUri, codeChallenge, resource, scope: request.scope ?? null, state });
72
73
  };
73
74
  }
74
75
  //# sourceMappingURL=read-authorization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-authorization.js","sourceRoot":"","sources":["../../../src/core/oauth/read-authorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-authorization.js","sourceRoot":"","sources":["../../../src/core/oauth/read-authorization.ts"],"names":[],"mappings":"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"}
@@ -196,8 +196,29 @@ export interface OpenedDeliveries {
196
196
  }
197
197
  /** The channels a person may turn on to be woken (wake a person, W1), as a hand-over names them. */
198
198
  export type WakeChannelName = 'email' | 'web-push';
199
- /** What a delivery is handed to the person through: a wake's channel, or a page of theirs in focus, which shows it (W6). */
200
- export type HandOverChannel = WakeChannelName | 'page';
199
+ /**
200
+ * Outbound port: a place beyond the gateway's pages that shows the person's
201
+ * deliveries itself, as Slack does for a linked person (gateway scopes
202
+ * 9.5): it hands each one it shows, so no channel wakes for it (W3).
203
+ */
204
+ export interface ShownElsewhere {
205
+ /**
206
+ * Finishes what an earlier wake left unfinished, then shows what it shows
207
+ * of the fresh deliveries: the ones it showed, and whether any is left
208
+ * unfinished, so the wake is tried again.
209
+ */
210
+ show(ship: PersonShip, wake: {
211
+ crewToken: string;
212
+ fresh: readonly PushedPersonDelivery[];
213
+ }): Promise<Result<ShownThere, FleetRefusal>>;
214
+ }
215
+ /** What a place beyond the pages showed at a wake. */
216
+ export interface ShownThere {
217
+ readonly shown: ReadonlySet<DeliveryId>;
218
+ readonly isAnyUnfinished: boolean;
219
+ }
220
+ /** What a delivery is handed to the person through: a wake's channel, a page of theirs in focus, which shows it (W6), or Slack, which shows it (gateway scopes 9.5). */
221
+ export type HandOverChannel = WakeChannelName | 'page' | 'slack';
201
222
  /**
202
223
  * Outbound port: one way to wake a person (wake a person, W1, W4): it says
203
224
  * only that something waits in the fleet, with the overview's link, and
@@ -1,7 +1,7 @@
1
1
  import type { FleetRefusal } from "../connection/ports.js";
2
2
  import type { Clock } from "../shared/clock.js";
3
3
  import { type Result } from "../shared/result.js";
4
- import type { FocusedPages, PersonShip, PersonShipDoor, WakeChannel, WakeChannelName, WakesSent } from "./ports.js";
4
+ import type { FocusedPages, PersonShip, PersonShipDoor, ShownElsewhere, WakeChannel, WakeChannelName, WakesSent } from "./ports.js";
5
5
  /**
6
6
  * What a wake came to: nothing left to wake (settled), a wake held back
7
7
  * until the earliest window of a channel turned on ends (inWindow), or no
@@ -33,10 +33,17 @@ export type WakePerson = (ship: PersonShip, crewToken: string) => Promise<Result
33
33
  * told, as asking again cannot help; while another channel's wake fails and is
34
34
  * tried again, that channel is not asked again. While a page of the person is in focus, the page
35
35
  * shows what arrives (W6): each fresh delivery is handed through it and no
36
- * wake goes out.
36
+ * wake goes out. Before all that, a place beyond the pages that shows
37
+ * deliveries itself, as Slack does for a linked person, shows what it
38
+ * shows, even while a page is in focus; nothing wakes for those
39
+ * (gateway scopes 9.5 step 5). It is asked at every wake, fresh deliveries
40
+ * or none, so what it left unfinished is finished, and while anything is
41
+ * left the wake counts as failed, so it is tried again.
37
42
  */
38
43
  export declare function createWakePerson(deps: {
39
44
  door: Pick<PersonShipDoor, "pushReceive" | "handed">;
45
+ /** Slack, where the person linked it; none where nothing beyond the pages shows deliveries. */
46
+ shownElsewhere?: ShownElsewhere;
40
47
  channels: readonly WakeChannel[];
41
48
  wakesSent: WakesSent;
42
49
  focused: FocusedPages;
@@ -17,13 +17,45 @@ import { err, ok } from "../shared/result.js";
17
17
  * told, as asking again cannot help; while another channel's wake fails and is
18
18
  * tried again, that channel is not asked again. While a page of the person is in focus, the page
19
19
  * shows what arrives (W6): each fresh delivery is handed through it and no
20
- * wake goes out.
20
+ * wake goes out. Before all that, a place beyond the pages that shows
21
+ * deliveries itself, as Slack does for a linked person, shows what it
22
+ * shows, even while a page is in focus; nothing wakes for those
23
+ * (gateway scopes 9.5 step 5). It is asked at every wake, fresh deliveries
24
+ * or none, so what it left unfinished is finished, and while anything is
25
+ * left the wake counts as failed, so it is tried again.
21
26
  */
22
27
  export function createWakePerson(deps) {
23
28
  /** Channels that refused for good during an attempt still failing, by person ship: a retry of that attempt does not ask them again. */
24
29
  const refusedInAttempt = new Map();
25
30
  const attemptKey = (ship) => `${ship.fleetId}/${ship.shipId}`;
26
31
  const wakePerson = async (ship, crewToken) => {
32
+ const taken = await deps.door.pushReceive(crewToken, {
33
+ max: RECEIVE_MAX_UPPER_BOUND,
34
+ shouldSkipHanded: true,
35
+ });
36
+ if (!taken.isOk) {
37
+ return taken;
38
+ }
39
+ const everyFresh = taken.value.filter(({ handOverNumber }) => handOverNumber === null);
40
+ // Asked even with nothing fresh: it finishes what an earlier wake left unfinished, as after a restart.
41
+ const shownElsewhere = deps.shownElsewhere === undefined
42
+ ? ok({ shown: new Set(), isAnyUnfinished: false })
43
+ : await deps.shownElsewhere.show(ship, { crewToken, fresh: everyFresh });
44
+ if (!shownElsewhere.isOk) {
45
+ return shownElsewhere;
46
+ }
47
+ const { shown, isAnyUnfinished } = shownElsewhere.value;
48
+ const woken = await wakeFor(ship, {
49
+ crewToken,
50
+ allFresh: everyFresh.filter(({ deliveryId }) => !shown.has(deliveryId)),
51
+ });
52
+ // What it left unfinished is finished at a wake tried again.
53
+ return isAnyUnfinished && woken.isOk && woken.value.kind === "settled"
54
+ ? ok({ kind: "failed" })
55
+ : woken;
56
+ };
57
+ /** Wakes the person for the fresh deliveries nothing beyond the pages showed. */
58
+ const wakeFor = async (ship, { crewToken, allFresh }) => {
27
59
  /** Hands each fresh delivery no. 1 through the channel, up to the first refusal: that refusal, or none. */
28
60
  const handEach = async (fresh, channel) => {
29
61
  for (const { deliveryId } of fresh) {
@@ -38,14 +70,6 @@ export function createWakePerson(deps) {
38
70
  }
39
71
  return undefined;
40
72
  };
41
- const taken = await deps.door.pushReceive(crewToken, {
42
- max: RECEIVE_MAX_UPPER_BOUND,
43
- shouldSkipHanded: true,
44
- });
45
- if (!taken.isOk) {
46
- return taken;
47
- }
48
- const allFresh = taken.value.filter(({ handOverNumber }) => handOverNumber === null);
49
73
  if (allFresh.length === 0) {
50
74
  return ok({ kind: "settled" });
51
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wake-person.js","sourceRoot":"","sources":["../../../src/core/people/wake-person.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wake-person.js","sourceRoot":"","sources":["../../../src/core/people/wake-person.ts"],"names":[],"mappings":"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"}
@@ -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' | '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' | '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;AAsE5C,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;AAkF5C,qDAAqD;AACrD,MAAM,UAAU,MAAM,CAA4B,IAAO,EAAE,OAAe;IACxE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC"}
@@ -19,10 +19,13 @@ export type StartSignIn = (picked: {
19
19
  * gateway's own PKCE verifier into the state, and the person is sent to
20
20
  * pagasae naming no fleet, so pagasae answers their only fleet or asks
21
21
  * which (decision 0054). The browser is given a secret of its own, sealed
22
- * too, so only it finishes the sign-in.
22
+ * too, so only it finishes the sign-in. The plugin's address signs the
23
+ * person in as themselves only: no one asks for access for a client there
24
+ * (chatgpt-plugin design, 6).
23
25
  */
24
26
  export declare function createStartSignIn(deps: {
25
27
  readAuthorization: ReadAuthorization;
28
+ pluginResource: string;
26
29
  seals: SignInSeals;
27
30
  pagasae: Pagasae;
28
31
  secrets: OAuthSecrets;
@@ -1,4 +1,4 @@
1
- import { ok } from '../shared/result.js';
1
+ import { err, ok } from '../shared/result.js';
2
2
  /** How long a person has to sign in at pagasae and come back. */
3
3
  export const SIGN_IN_LIFETIME_MS = 10 * 60_000;
4
4
  /**
@@ -8,7 +8,9 @@ export const SIGN_IN_LIFETIME_MS = 10 * 60_000;
8
8
  * gateway's own PKCE verifier into the state, and the person is sent to
9
9
  * pagasae naming no fleet, so pagasae answers their only fleet or asks
10
10
  * which (decision 0054). The browser is given a secret of its own, sealed
11
- * too, so only it finishes the sign-in.
11
+ * too, so only it finishes the sign-in. The plugin's address signs the
12
+ * person in as themselves only: no one asks for access for a client there
13
+ * (chatgpt-plugin design, 6).
12
14
  */
13
15
  export function createStartSignIn(deps) {
14
16
  return async ({ request, holder }) => {
@@ -16,6 +18,10 @@ export function createStartSignIn(deps) {
16
18
  if (!read.isOk) {
17
19
  return read;
18
20
  }
21
+ if (holder === 'party' && read.value.resource === deps.pluginResource) {
22
+ const { redirectUri, state } = read.value;
23
+ return err({ kind: 'redirect', redirectUri, error: 'invalid_request', description: 'The plugin address signs in as yourself only', state });
24
+ }
19
25
  const verifier = deps.secrets.newSecret();
20
26
  const browserSecret = deps.secrets.newSecret();
21
27
  const state = deps.seals.seal({ verifier, browserSecret, request, holder, expiresAt: new Date(deps.clock.now().getTime() + SIGN_IN_LIFETIME_MS) });
@@ -1 +1 @@
1
- {"version":3,"file":"start-sign-in.js","sourceRoot":"","sources":["../../../src/core/sign-in/start-sign-in.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,iEAAiE;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAI/C;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAyH;IACzJ,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACnJ,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IACpI,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"start-sign-in.js","sourceRoot":"","sources":["../../../src/core/sign-in/start-sign-in.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAG3D,iEAAiE;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAI/C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiJ;IACjL,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YACtE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1C,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,8CAA8C,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9I,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACnJ,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IACpI,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { PersonCrews, PersonShipDoor } from '../people/ports.js';
2
+ import type { Clock } from '../shared/clock.js';
3
+ import { type Result } from '../shared/result.js';
4
+ import type { SlackApps, SlackLinks, SlackMessages, SlackPosts, SlackSignatures } from './ports.js';
5
+ import { type SignedRequest } from './slack-request.js';
6
+ export type AnswerInSlack = (press: SignedRequest & {
7
+ appId: string;
8
+ teamId: string;
9
+ userId: string;
10
+ channel: string;
11
+ messageTs: string;
12
+ option: number;
13
+ }) => Promise<Result<{
14
+ kind: 'answered' | 'refused' | 'ignored';
15
+ }, {
16
+ kind: 'notSigned';
17
+ }>>;
18
+ /**
19
+ * Use case: the person presses an option's button under a question the
20
+ * gateway posted to them in Slack (gateway scopes 9.5 step 2). Signed as an
21
+ * event is, by the person the question was posted to, the press sends the
22
+ * answer as their person ship, to the question's sender in reply to it,
23
+ * keyed as an answer on the gateway's page is; then the delivery is handled
24
+ * and the question reacted to, as a message core stored is. Core's refusal
25
+ * is said in the question's thread.
26
+ */
27
+ export declare function createAnswerInSlack(deps: {
28
+ apps: Pick<SlackApps, 'findByAppId'>;
29
+ links: Pick<SlackLinks, 'find'>;
30
+ posts: Pick<SlackPosts, 'atSlackMessage'>;
31
+ crews: Pick<PersonCrews, 'find'>;
32
+ door: Pick<PersonShipDoor, 'delivery' | 'reply' | 'handled'>;
33
+ slack: Pick<SlackMessages, 'react' | 'postInThread'>;
34
+ signatures: SlackSignatures;
35
+ clock: Clock;
36
+ }): AnswerInSlack;
@@ -0,0 +1,51 @@
1
+ import { ANSWER_CONTENT_TYPE, questionSchema } from '@aeolus-fleet/common';
2
+ import { err, ok } from '../shared/result.js';
3
+ import { isSignedBy } from './slack-request.js';
4
+ import { STORED_REACTION } from './send-slack-events.js';
5
+ /** The question's id in a delivery's payload; none when it is no question. */
6
+ function questionIdOf(payload) {
7
+ try {
8
+ const parsed = JSON.parse(payload);
9
+ return questionSchema.safeParse(parsed).data?.id;
10
+ }
11
+ catch {
12
+ return undefined;
13
+ }
14
+ }
15
+ /**
16
+ * Use case: the person presses an option's button under a question the
17
+ * gateway posted to them in Slack (gateway scopes 9.5 step 2). Signed as an
18
+ * event is, by the person the question was posted to, the press sends the
19
+ * answer as their person ship, to the question's sender in reply to it,
20
+ * keyed as an answer on the gateway's page is; then the delivery is handled
21
+ * and the question reacted to, as a message core stored is. Core's refusal
22
+ * is said in the question's thread.
23
+ */
24
+ export function createAnswerInSlack(deps) {
25
+ return async ({ appId, teamId, userId, channel, messageTs, option, body, timestamp, signature }) => {
26
+ const app = await deps.apps.findByAppId(appId);
27
+ if (!isSignedBy(app, { request: { body, timestamp, signature }, signatures: deps.signatures, clock: deps.clock })) {
28
+ return err({ kind: 'notSigned' });
29
+ }
30
+ 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;
32
+ const crew = post === undefined ? undefined : await deps.crews.find(app.fleetId, post.personShipId);
33
+ if (post === undefined || post.deliveryId === null || post.senderShipId === null || crew === undefined || app.bot === null) {
34
+ return ok({ kind: 'ignored' });
35
+ }
36
+ const delivery = await deps.door.delivery(crew.crewToken, post.deliveryId);
37
+ const questionId = delivery.isOk ? questionIdOf(delivery.value.payload) : undefined;
38
+ if (!delivery.isOk || questionId === undefined) {
39
+ return ok({ kind: 'ignored' });
40
+ }
41
+ const replied = await deps.door.reply(crew.crewToken, { to: post.senderShipId, inReplyTo: post.messageId, contentType: ANSWER_CONTENT_TYPE, payload: JSON.stringify({ questionId, option }), idempotencyKey: `answer-${post.deliveryId}` });
42
+ if (!replied.isOk) {
43
+ await deps.slack.postInThread(app.bot.token, { channel, threadTs: messageTs, text: `${delivery.value.senderName} did not take your answer: ${replied.error.message}` });
44
+ return ok({ kind: 'refused' });
45
+ }
46
+ await deps.door.handled(crew.crewToken, post.deliveryId);
47
+ await deps.slack.react(app.bot.token, { channel, ts: messageTs, name: STORED_REACTION });
48
+ return ok({ kind: 'answered' });
49
+ };
50
+ }
51
+ //# sourceMappingURL=answer-in-slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-in-slack.js","sourceRoot":"","sources":["../../../src/core/slack/answer-in-slack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { FleetId } from '@aeolus-fleet/common';
2
+ import type { Clock } from '../shared/clock.js';
3
+ import { type DomainError } from '../shared/errors.js';
4
+ import { type Result } from '../shared/result.js';
5
+ import type { InstallStates, SlackApps, SlackTooling, SlackWorkspaces } from './ports.js';
6
+ export type CompleteInstallRefusal = DomainError<'INSTALL_REFUSED' | 'SLACK_NOT_CONNECTED' | 'OTHER_WORKSPACE' | 'SLACK_UNAVAILABLE'>;
7
+ export type CompleteInstall = (input: {
8
+ code: string;
9
+ state: string;
10
+ }) => Promise<Result<{
11
+ fleetId: FleetId;
12
+ }, CompleteInstallRefusal>>;
13
+ /**
14
+ * Use case: Slack's install screen sends the person back with a code and
15
+ * the state the gateway sealed (gateway scopes 9.1). Within its ten minutes,
16
+ * the code is turned into the app's bot token, kept in the vault, and the
17
+ * workspace's name kept as Slack says it. An install into another workspace
18
+ * than the fleet's keeps nothing.
19
+ */
20
+ export declare function createCompleteInstall(deps: {
21
+ slack: Pick<SlackTooling, 'completeInstall'>;
22
+ apps: Pick<SlackApps, 'find' | 'save'>;
23
+ workspaces: Pick<SlackWorkspaces, 'find' | 'change'>;
24
+ states: InstallStates;
25
+ clock: Clock;
26
+ installRedirectUrl: string;
27
+ }): CompleteInstall;