@aeolus-fleet/gateway 0.32.1 → 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 (539) 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 +10 -10
  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 +10 -10
  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 +7 -7
  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/_12fsn_33ga-n0._.js +1 -1
  407. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  408. package/web/.next/server/chunks/ssr/{_0bhvvyz0q_0ja._.js → _1e2o809f0ekry._.js} +2 -2
  409. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  410. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  411. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  412. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  413. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +1 -1
  414. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +1 -1
  415. package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js +3 -0
  416. package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js.map +1 -0
  417. package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js +3 -0
  418. package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js.map +1 -0
  419. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js +3 -0
  420. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js.map +1 -0
  421. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js +3 -0
  422. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js.map +1 -0
  423. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js +3 -0
  424. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js.map +1 -0
  425. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js +3 -0
  426. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0t6vd5zwkqjs1.js.map +1 -0
  427. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js +3 -0
  428. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1cwvrsosahx6q.js.map +1 -0
  429. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js +3 -0
  430. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jbr52uzx5cc7.js.map +1 -0
  431. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js +3 -0
  432. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xhjyaxgorqkx.js.map +1 -0
  433. package/web/.next/server/chunks/ssr/web_00e7-_y92losl._.js +3 -0
  434. package/web/.next/server/chunks/ssr/web_00e7-_y92losl._.js.map +1 -0
  435. package/web/.next/server/chunks/ssr/web_09rcfto3dw4wd._.js +3 -0
  436. package/web/.next/server/chunks/ssr/web_09rcfto3dw4wd._.js.map +1 -0
  437. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js +3 -0
  438. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js.map +1 -0
  439. package/web/.next/server/chunks/ssr/web_0qgev3ti257yj._.js +3 -0
  440. package/web/.next/server/chunks/ssr/{web_0_jk9eione6lx._.js.map → web_0qgev3ti257yj._.js.map} +1 -1
  441. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  442. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  443. package/web/.next/server/chunks/ssr/web_15vnjj3s0z3fa._.js +3 -0
  444. package/web/.next/server/chunks/ssr/{web_1wcpaty_bz55q._.js.map → web_15vnjj3s0z3fa._.js.map} +1 -1
  445. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  446. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  447. package/web/.next/server/chunks/ssr/web_app_(console)_slack_page_tsx_0ts7fo7pqicq6._.js +3 -0
  448. package/web/.next/server/chunks/ssr/web_app_(console)_slack_page_tsx_0ts7fo7pqicq6._.js.map +1 -0
  449. package/web/.next/server/chunks/ssr/web_app_(console)_slack_remove_page_tsx_15q4ril_on0ed._.js +3 -0
  450. package/web/.next/server/chunks/ssr/web_app_(console)_slack_remove_page_tsx_15q4ril_on0ed._.js.map +1 -0
  451. package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js +3 -0
  452. package/web/.next/server/chunks/ssr/{web_features_10xz3ojtvfi7h._.js.map → web_features_0rd6357w-eo50._.js.map} +1 -1
  453. package/web/.next/server/chunks/ssr/web_features_1m5g9a6mwrsd-._.js +3 -0
  454. package/web/.next/server/chunks/ssr/{web_features_085cv0gogrxxf._.js.map → web_features_1m5g9a6mwrsd-._.js.map} +1 -1
  455. package/web/.next/server/chunks/ssr/web_features_1rwkgka1xffb1._.js +3 -0
  456. package/web/.next/server/chunks/ssr/web_features_1rwkgka1xffb1._.js.map +1 -0
  457. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  458. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  459. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  460. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  461. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  462. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  463. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  464. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  465. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  466. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  467. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  468. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  469. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  470. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  471. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
  472. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js +3 -0
  473. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js.map +1 -0
  474. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  475. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  476. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  477. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +3 -0
  478. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js.map +1 -0
  479. package/web/.next/server/chunks/web__next-internal_server_app_(console)_slack_link_route_actions_16zgisics858w.js +3 -0
  480. package/web/.next/server/chunks/web__next-internal_server_app_(console)_slack_link_route_actions_16zgisics858w.js.map +1 -0
  481. package/web/.next/server/middleware-build-manifest.js +51 -3
  482. package/web/.next/server/next-font-manifest.js +1 -1
  483. package/web/.next/server/next-font-manifest.json +16 -0
  484. package/web/.next/server/pages/500.html +1 -1
  485. package/web/.next/server/preview-props.json +3 -3
  486. package/web/.next/server/server-reference-manifest.js +1 -1
  487. package/web/.next/server/server-reference-manifest.json +173 -27
  488. package/web/.next/static/chunks/0nhopjmnw_dqt.js +1 -0
  489. package/web/.next/static/chunks/0zbcy0_3jemrv.js +1 -0
  490. package/web/.next/static/chunks/{0coxy5zad812a.js → 1-suv9wttlxqo.js} +1 -1
  491. package/web/.next/static/chunks/19kfx4qlur25a.js +1 -0
  492. package/web/.next/static/chunks/1a2-hkn-7471k.js +1 -0
  493. package/web/.next/static/chunks/{0u_4xjk1j74g3.js → 1msggkwsn7vyq.js} +1 -1
  494. package/web/.next/static/chunks/1yj875esaesyh.css +3 -0
  495. package/web/.next/static/chunks/{2ew9kpu2kohk4.js → 2-kh9nbonee6w.js} +1 -1
  496. package/web/.next/static/chunks/2l92bozm8dcmo.js +1 -0
  497. package/web/.next/static/chunks/{20n2z_lok8v0f.js → 310mio1zd_mw7.js} +1 -1
  498. package/web/.next/static/chunks/{07j7jnfe13wx6.js → 3d_sjtxh_vkr6.js} +1 -1
  499. package/web/.next/static/chunks/{0p_kl57bddsiy.js → 3dhy3jady0w6a.js} +1 -1
  500. package/web/.next/static/chunks/3efghx8whwnok.js +1 -0
  501. package/web/.next/static/chunks/3hvo3apdq-ckk.js +1 -0
  502. package/web/.next/static/chunks/3rbzp0tdc1te-.js +1 -0
  503. package/web/.next/static/chunks/{1xrn7oqwd48vi.js → 455eobei0t6t9.js} +1 -1
  504. package/web/.next/trace +1 -1
  505. package/web/.next/trace-build +1 -1
  506. package/web/.next/types/routes.d.ts +7 -2
  507. package/web/.next/types/validator.ts +78 -0
  508. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js +0 -369
  509. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +0 -1
  510. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +0 -3
  511. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +0 -4
  512. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +0 -1
  513. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js +0 -3
  514. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js.map +0 -1
  515. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js +0 -3
  516. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js.map +0 -1
  517. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +0 -3
  518. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +0 -1
  519. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +0 -3
  520. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js +0 -3
  521. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +0 -3
  522. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js +0 -3
  523. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +0 -3
  524. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +0 -1
  525. package/web/.next/static/chunks/0v9r_hyyubykq.js +0 -1
  526. package/web/.next/static/chunks/0zesq1ng-v3s6.js +0 -1
  527. package/web/.next/static/chunks/10wzmy096av_5.css +0 -3
  528. package/web/.next/static/chunks/12c3qjvto3m0f.js +0 -1
  529. package/web/.next/static/chunks/1ahn4kx4ld-rc.js +0 -1
  530. package/web/.next/static/chunks/2i3ydqqupow_x.js +0 -1
  531. package/web/.next/static/chunks/3x_8doukmdfpu.js +0 -1
  532. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1-c9wugbbwsp3._.js.map → [root-of-the-server]__0kb1gl5t8kz4l._.js.map} +0 -0
  533. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1gb-3dttuacyz._.js.map → [root-of-the-server]__0y0jwufd7xjsv._.js.map} +0 -0
  534. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1m9atpy0vkbmj._.js.map → [root-of-the-server]__19ecatcacd6t9._.js.map} +0 -0
  535. /package/web/.next/server/chunks/ssr/{_0w2ptjht34s6t._.js.map → _0wukvn3-ht3ps._.js.map} +0 -0
  536. /package/web/.next/server/chunks/ssr/{_0bhvvyz0q_0ja._.js.map → _1e2o809f0ekry._.js.map} +0 -0
  537. /package/web/.next/static/{wnr2MrrQvcto8MOm16D8r → 87vMFs_KGRcFD40WWRkFR}/_buildManifest.js +0 -0
  538. /package/web/.next/static/{wnr2MrrQvcto8MOm16D8r → 87vMFs_KGRcFD40WWRkFR}/_clientMiddlewareManifest.js +0 -0
  539. /package/web/.next/static/{wnr2MrrQvcto8MOm16D8r → 87vMFs_KGRcFD40WWRkFR}/_ssgManifest.js +0 -0
@@ -0,0 +1,47 @@
1
+ import type { Clock } from '../shared/clock.js';
2
+ import { type Result } from '../shared/result.js';
3
+ import type { SlackApps, SlackEvents, SlackLinks, SlackMessages, SlackPosts, SlackSignatures } from './ports.js';
4
+ import { type SlackEventFields } from './slack-event.js';
5
+ /** What the gateway answers a person whose disabled account's link stopped (gateway scopes 9.3). */
6
+ export declare const STOPPED_LINK_TEXT = "Your account cannot message the fleet now";
7
+ export type TakeSlackEvent = (event: {
8
+ appId: string;
9
+ event: SlackEventFields;
10
+ /** Whether Slack sends the event again, as it does when no answer came within 3 seconds. */
11
+ isRetry: boolean;
12
+ body: string;
13
+ timestamp: string;
14
+ signature: string;
15
+ }) => Promise<Result<{
16
+ kind: 'taken' | 'kept' | 'known' | 'notLinked' | 'ignored';
17
+ }, {
18
+ kind: 'notSigned';
19
+ }>>;
20
+ /**
21
+ * Use case: an event Slack sends the gateway for one of its apps. It is
22
+ * taken only signed with that app's signing secret, its timestamp within 5
23
+ * minutes of now. An app uninstalled or its tokens revoked is Removed in
24
+ * Slack, its bot token forgotten. A person who messages or mentions a bot
25
+ * unlinked gets an answer only they see, with a button to link, and their
26
+ * message is not stored, since it has no sender yet (gateway scopes 9.3);
27
+ * a disabled account's Slack user is told it cannot message the fleet now.
28
+ * Slack's retry of an event is answered once, the first time. A linked
29
+ * person's message is kept by Slack's event id, as the Markdown it is sent
30
+ * as, and sent now (9.4 step 3); a retry of a kept one changes nothing.
31
+ * One in the thread under a delivery the gateway posted answers it: it goes
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.
34
+ */
35
+ export declare function createTakeSlackEvent(deps: {
36
+ apps: Pick<SlackApps, 'findByAppId' | 'save'>;
37
+ links: Pick<SlackLinks, 'find'>;
38
+ events: Pick<SlackEvents, 'keep'>;
39
+ posts: Pick<SlackPosts, 'lastInThread'>;
40
+ /** Sends the kept events now, not at the next round. */
41
+ sendNow: () => void;
42
+ slack: Pick<SlackMessages, 'postOnlyTo'>;
43
+ signatures: SlackSignatures;
44
+ clock: Clock;
45
+ /** The web app's page that starts a link, by the fleet named. */
46
+ linkPageUrl: string;
47
+ }): TakeSlackEvent;
@@ -0,0 +1,75 @@
1
+ import { err, ok } from '../shared/result.js';
2
+ import { isRemovedEvent, personMessageOf } from './slack-event.js';
3
+ import { markdownOf } from './slack-markdown.js';
4
+ import { isSignedBy } from './slack-request.js';
5
+ /** What the gateway answers a person whose disabled account's link stopped (gateway scopes 9.3). */
6
+ export const STOPPED_LINK_TEXT = 'Your account cannot message the fleet now';
7
+ /**
8
+ * Use case: an event Slack sends the gateway for one of its apps. It is
9
+ * taken only signed with that app's signing secret, its timestamp within 5
10
+ * minutes of now. An app uninstalled or its tokens revoked is Removed in
11
+ * Slack, its bot token forgotten. A person who messages or mentions a bot
12
+ * unlinked gets an answer only they see, with a button to link, and their
13
+ * message is not stored, since it has no sender yet (gateway scopes 9.3);
14
+ * a disabled account's Slack user is told it cannot message the fleet now.
15
+ * Slack's retry of an event is answered once, the first time. A linked
16
+ * person's message is kept by Slack's event id, as the Markdown it is sent
17
+ * as, and sent now (9.4 step 3); a retry of a kept one changes nothing.
18
+ * One in the thread under a delivery the gateway posted answers it: it goes
19
+ * 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
+ */
22
+ export function createTakeSlackEvent(deps) {
23
+ return async ({ appId, event, isRetry, body, timestamp, signature }) => {
24
+ const app = await deps.apps.findByAppId(appId);
25
+ const now = deps.clock.now();
26
+ if (!isSignedBy(app, { request: { body, timestamp, signature }, signatures: deps.signatures, clock: deps.clock })) {
27
+ return err({ kind: 'notSigned' });
28
+ }
29
+ if (isRemovedEvent(event)) {
30
+ await deps.apps.save({ ...app, bot: null, removedInSlackAt: now });
31
+ return ok({ kind: 'taken' });
32
+ }
33
+ const message = personMessageOf(event);
34
+ if (message === undefined || app.bot === null) {
35
+ return ok({ kind: 'ignored' });
36
+ }
37
+ const link = await deps.links.find(app.fleetId, { teamId: message.teamId, userId: message.userId });
38
+ if (link?.stoppedAt === null) {
39
+ const { eventId, channel, ts, threadTs, text, files } = message;
40
+ const answered = threadTs === null ? undefined : await deps.posts.lastInThread(app.fleetId, { personShipId: link.personShipId, appId, channel, threadTs });
41
+ const shipId = answered?.senderShipId ?? app.shipId;
42
+ if (shipId === null) {
43
+ return ok({ kind: 'ignored' });
44
+ }
45
+ const kept = await deps.events.keep({
46
+ fleetId: app.fleetId,
47
+ eventId,
48
+ appId,
49
+ shipId,
50
+ personShipId: link.personShipId,
51
+ inReplyTo: answered?.messageId ?? null,
52
+ deliveryId: answered?.deliveryId ?? null,
53
+ channel,
54
+ ts,
55
+ threadTs,
56
+ markdown: markdownOf({ text, botUserId: app.bot.userId, files }),
57
+ receivedAt: now,
58
+ takenAt: null,
59
+ });
60
+ if (kept === 'kept') {
61
+ deps.sendNow();
62
+ }
63
+ return ok({ kind: kept });
64
+ }
65
+ if (!isRetry) {
66
+ const answer = link === undefined
67
+ ? { text: `Link your Slack account to talk to ${app.name}. Your message was not kept: send it again once linked.`, button: { text: 'Link Slack', url: `${deps.linkPageUrl}?${new URLSearchParams({ fleet: app.fleetId }).toString()}` } }
68
+ : { text: STOPPED_LINK_TEXT };
69
+ // Slack's refusal leaves nothing to undo: the message was never kept, and the person may write again.
70
+ await deps.slack.postOnlyTo(app.bot.token, { channel: message.channel, user: message.userId, ...answer });
71
+ }
72
+ return ok({ kind: link === undefined ? 'notLinked' : 'ignored' });
73
+ };
74
+ }
75
+ //# sourceMappingURL=take-slack-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"take-slack-event.js","sourceRoot":"","sources":["../../../src/core/slack/take-slack-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,oGAAoG;AACpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAY7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAYpC;IACC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAClH,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACpG,IAAI,IAAI,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAChE,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3J,MAAM,MAAM,GAAG,QAAQ,EAAE,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;YACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO;gBACP,KAAK;gBACL,MAAM;gBACN,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;gBACtC,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI;gBACxC,OAAO;gBACP,EAAE;gBACF,QAAQ;gBACR,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;gBAChE,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS;gBAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,sCAAsC,GAAG,CAAC,IAAI,yDAAyD,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;gBACzO,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;YAChC,sGAAsG;YACtG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Actor } from '../actors/authenticate-actor.js';
2
+ import type { SlackLinks } from './ports.js';
3
+ export type UnlinkSlack = (input: {
4
+ actor: Actor;
5
+ }) => Promise<void>;
6
+ /** Use case: Unlink on the Overview (gateway scopes 9.3): the account's own link goes, and its Slack user may link again. */
7
+ export declare function createUnlinkSlack(deps: {
8
+ links: Pick<SlackLinks, 'remove'>;
9
+ }): UnlinkSlack;
@@ -0,0 +1,9 @@
1
+ /** Use case: Unlink on the Overview (gateway scopes 9.3): the account's own link goes, and its Slack user may link again. */
2
+ export function createUnlinkSlack(deps) {
3
+ return async ({ actor }) => {
4
+ if (actor.kind === 'account') {
5
+ await deps.links.remove(actor.fleetId, actor.accountId);
6
+ }
7
+ };
8
+ }
9
+ //# sourceMappingURL=unlink-slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink-slack.js","sourceRoot":"","sources":["../../../src/core/slack/unlink-slack.ts"],"names":[],"mappings":"AAKA,6HAA6H;AAC7H,MAAM,UAAU,iBAAiB,CAAC,IAA2C;IAC3E,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The gateway's sends from Slack into the fleet (gateway scopes 9.4): a
3
+ * round every interval, and one at once when a person's message is kept,
4
+ * one round at a time, until it stops.
5
+ */
6
+ import type { FastifyBaseLogger } from 'fastify';
7
+ import type { Sleep } from './core/mcp-out/run-party.js';
8
+ import type { SendSlackEvents } from './core/slack/send-slack-events.js';
9
+ export interface SlackEventWorker {
10
+ start(): void;
11
+ /** Runs the next round now, not at the next interval. */
12
+ wake(): void;
13
+ /** Stops, once the round under way ended. */
14
+ stop(): Promise<void>;
15
+ }
16
+ export declare function createSlackEventWorker(deps: {
17
+ send: SendSlackEvents;
18
+ sleep: Sleep;
19
+ intervalMs: number;
20
+ log: FastifyBaseLogger;
21
+ }): SlackEventWorker;
@@ -0,0 +1,38 @@
1
+ export function createSlackEventWorker(deps) {
2
+ const stopping = new AbortController();
3
+ let waking = new AbortController();
4
+ /** Whether a wake came during a round: the next round runs at once. */
5
+ let isWoken = false;
6
+ let running = Promise.resolve();
7
+ // Read after a round: a wake or a stop may have come while it ran.
8
+ const isToGoOn = () => isWoken || stopping.signal.aborted;
9
+ return {
10
+ start: () => {
11
+ running = (async () => {
12
+ while (!stopping.signal.aborted) {
13
+ isWoken = false;
14
+ try {
15
+ await deps.send();
16
+ }
17
+ catch (error) {
18
+ deps.log.error({ err: error }, 'Slack event round failed');
19
+ }
20
+ if (isToGoOn()) {
21
+ continue;
22
+ }
23
+ waking = new AbortController();
24
+ await deps.sleep(deps.intervalMs, AbortSignal.any([stopping.signal, waking.signal]));
25
+ }
26
+ })();
27
+ },
28
+ wake: () => {
29
+ isWoken = true;
30
+ waking.abort();
31
+ },
32
+ stop: async () => {
33
+ stopping.abort();
34
+ await running;
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=slack-event-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-event-worker.js","sourceRoot":"","sources":["../src/slack-event-worker.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,sBAAsB,CAAC,IAAyF;IAC9H,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,uEAAuE;IACvE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/C,mEAAmE;IACnE,MAAM,QAAQ,GAAG,GAAY,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACnE,OAAO;QACL,KAAK,EAAE,GAAG,EAAE;YACV,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;gBACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAChC,OAAO,GAAG,KAAK,CAAC;oBAChB,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;oBACpB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;oBAC7D,CAAC;oBACD,IAAI,QAAQ,EAAE,EAAE,CAAC;wBACf,SAAS;oBACX,CAAC;oBACD,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The gateway keeping each fleet's Slack configuration token alive (gateway
3
+ * scopes 9.1): a rotation pass every interval, well within the hour before
4
+ * a token ends, until it stops.
5
+ */
6
+ import type { FastifyBaseLogger } from 'fastify';
7
+ import type { Sleep } from './core/mcp-out/run-party.js';
8
+ import type { RotateConfigurationTokens } from './core/slack/rotate-configuration-tokens.js';
9
+ export interface SlackTokenWorker {
10
+ start(): void;
11
+ /** Stops, once the pass under way ended. */
12
+ stop(): Promise<void>;
13
+ }
14
+ export declare function createSlackTokenWorker(deps: {
15
+ rotate: RotateConfigurationTokens;
16
+ sleep: Sleep;
17
+ intervalMs: number;
18
+ log: FastifyBaseLogger;
19
+ }): SlackTokenWorker;
@@ -0,0 +1,24 @@
1
+ export function createSlackTokenWorker(deps) {
2
+ const stopping = new AbortController();
3
+ let running = Promise.resolve();
4
+ return {
5
+ start: () => {
6
+ running = (async () => {
7
+ while (!stopping.signal.aborted) {
8
+ try {
9
+ await deps.rotate();
10
+ }
11
+ catch (error) {
12
+ deps.log.error({ err: error }, 'Slack configuration token pass failed');
13
+ }
14
+ await deps.sleep(deps.intervalMs, stopping.signal);
15
+ }
16
+ })();
17
+ },
18
+ stop: async () => {
19
+ stopping.abort();
20
+ await running;
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=slack-token-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-token-worker.js","sourceRoot":"","sources":["../src/slack-token-worker.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,sBAAsB,CAAC,IAAqG;IAC1I,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,IAAI,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/C,OAAO;QACL,KAAK,EAAE,GAAG,EAAE;YACV,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;gBACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;oBACtB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,uCAAuC,CAAC,CAAC;oBAC1E,CAAC;oBACD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeolus-fleet/gateway",
3
- "version": "0.32.1",
3
+ "version": "0.33.0",
4
4
  "description": "Aeolus gateway: outside MCP servers and clients join a fleet as ships, through one gateway beside core.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -42,7 +42,8 @@
42
42
  "test:unit": "vitest run --project '*:unit'",
43
43
  "test:integration": "vitest run --project '*:integration'",
44
44
  "start": "node dist/bin/aeolus-gateway.js start",
45
- "db:migrate": "tsx --env-file-if-exists=.env src/bin/aeolus-gateway.ts migrate"
45
+ "db:migrate": "tsx --env-file-if-exists=.env src/bin/aeolus-gateway.ts migrate",
46
+ "plugin:build": "tsx scripts/plugin-build.ts"
46
47
  },
47
48
  "dependencies": {
48
49
  "@a2a-js/sdk": "1.3.0",
@@ -0,0 +1,30 @@
1
+ -- Gateway scopes (9.1): each fleet's Slack workspace with its configuration token, and the apps the gateway made in it.
2
+ CREATE TABLE "slack_workspaces" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "team_id" TEXT NOT NULL,
5
+ "team_name" TEXT,
6
+ "connected_by_ship_id" TEXT NOT NULL,
7
+ "connected_by_name" TEXT NOT NULL,
8
+ "connected_at" TIMESTAMPTZ(3) NOT NULL,
9
+ "config_access_token" TEXT NOT NULL,
10
+ "config_refresh_token" TEXT NOT NULL,
11
+ "config_expires_at" TIMESTAMPTZ(3) NOT NULL,
12
+ "is_config_refused" BOOLEAN NOT NULL,
13
+
14
+ CONSTRAINT "slack_workspaces_pkey" PRIMARY KEY ("fleet_id")
15
+ );
16
+
17
+ CREATE TABLE "slack_apps" (
18
+ "fleet_id" TEXT NOT NULL,
19
+ "app_id" TEXT NOT NULL,
20
+ "ship_id" TEXT,
21
+ "client_id" TEXT NOT NULL,
22
+ "client_secret" TEXT NOT NULL,
23
+ "signing_secret" TEXT NOT NULL,
24
+ "install_url" TEXT NOT NULL,
25
+ "made_at" TIMESTAMPTZ(3) NOT NULL,
26
+ "bot_token" TEXT,
27
+ "bot_user_id" TEXT,
28
+
29
+ CONSTRAINT "slack_apps_pkey" PRIMARY KEY ("fleet_id","app_id")
30
+ );
@@ -0,0 +1,6 @@
1
+ -- Gateway scopes (9.2): a Slack app's bot name, its install opened from the gateway, and its removal in Slack; an app id names one app across fleets.
2
+ ALTER TABLE "slack_apps" ADD COLUMN "name" TEXT NOT NULL DEFAULT '';
3
+ ALTER TABLE "slack_apps" ALTER COLUMN "name" DROP DEFAULT;
4
+ ALTER TABLE "slack_apps" ADD COLUMN "install_started_at" TIMESTAMPTZ(3);
5
+ ALTER TABLE "slack_apps" ADD COLUMN "removed_in_slack_at" TIMESTAMPTZ(3);
6
+ CREATE UNIQUE INDEX "slack_apps_app_id_key" ON "slack_apps"("app_id");
@@ -0,0 +1,15 @@
1
+ -- Gateway scopes (9.3): a person's Slack account linked to their account in a fleet, one Slack user to one account and one Slack user per account in each fleet.
2
+ CREATE TABLE "slack_links" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "team_id" TEXT NOT NULL,
5
+ "slack_user_id" TEXT NOT NULL,
6
+ "slack_name" TEXT NOT NULL,
7
+ "account_id" TEXT NOT NULL,
8
+ "person_ship_id" TEXT NOT NULL,
9
+ "linked_at" TIMESTAMPTZ(3) NOT NULL,
10
+ "stopped_at" TIMESTAMPTZ(3),
11
+
12
+ CONSTRAINT "slack_links_pkey" PRIMARY KEY ("fleet_id","team_id","slack_user_id")
13
+ );
14
+
15
+ CREATE UNIQUE INDEX "slack_links_fleet_id_account_id_key" ON "slack_links"("fleet_id", "account_id");
@@ -0,0 +1,18 @@
1
+ -- Gateway scopes (9.4 step 3, P-B2): a linked person's Slack message, kept by Slack's event id until core takes it; then only its id, for an hour.
2
+ CREATE TABLE "slack_events" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "event_id" TEXT NOT NULL,
5
+ "app_id" TEXT NOT NULL,
6
+ "ship_id" TEXT NOT NULL,
7
+ "person_ship_id" TEXT NOT NULL,
8
+ "channel" TEXT NOT NULL,
9
+ "ts" TEXT NOT NULL,
10
+ "thread_ts" TEXT,
11
+ "markdown" TEXT NOT NULL,
12
+ "received_at" TIMESTAMPTZ(3) NOT NULL,
13
+ "taken_at" TIMESTAMPTZ(3),
14
+
15
+ CONSTRAINT "slack_events_pkey" PRIMARY KEY ("fleet_id","event_id")
16
+ );
17
+
18
+ CREATE INDEX "slack_events_taken_at_received_at_idx" ON "slack_events"("taken_at", "received_at");
@@ -0,0 +1,25 @@
1
+ -- Gateway scopes (9.5): Show everything that waits in Slack per link; an answer in a thread kept with what it answers; the fleet messages in Slack, by person ship.
2
+ ALTER TABLE "slack_links" ADD COLUMN "is_showing_all" BOOLEAN NOT NULL DEFAULT false;
3
+ ALTER TABLE "slack_events" ADD COLUMN "in_reply_to" TEXT;
4
+ ALTER TABLE "slack_events" ADD COLUMN "delivery_id" TEXT;
5
+
6
+ CREATE TABLE "slack_posts" (
7
+ "fleet_id" TEXT NOT NULL,
8
+ "person_ship_id" TEXT NOT NULL,
9
+ "message_id" TEXT NOT NULL,
10
+ "delivery_id" TEXT,
11
+ "sender_ship_id" TEXT,
12
+ "app_id" TEXT NOT NULL,
13
+ "channel" TEXT NOT NULL,
14
+ "ts" TEXT,
15
+ "thread_ts" TEXT,
16
+ "is_link_only" BOOLEAN NOT NULL,
17
+ "acked_at" TIMESTAMPTZ(3),
18
+
19
+ CONSTRAINT "slack_posts_pkey" PRIMARY KEY ("fleet_id","person_ship_id","message_id")
20
+ );
21
+
22
+ CREATE INDEX "slack_posts_fleet_id_app_id_channel_ts_idx" ON "slack_posts"("fleet_id", "app_id", "channel", "ts");
23
+ CREATE INDEX "slack_posts_fleet_id_app_id_channel_thread_ts_idx" ON "slack_posts"("fleet_id", "app_id", "channel", "thread_ts");
24
+
25
+ CREATE INDEX "slack_links_fleet_id_person_ship_id_idx" ON "slack_links"("fleet_id", "person_ship_id");
@@ -469,3 +469,106 @@ model WebPushSubscription {
469
469
  @@id([fleetId, shipId, endpoint])
470
470
  @@map("web_push_subscriptions")
471
471
  }
472
+
473
+ /// A fleet's Slack workspace (gateway scopes 9.1): one per fleet, with Slack's app configuration token, which the gateway rotates before its 12 hours end.
474
+ model SlackWorkspace {
475
+ fleetId String @id @map("fleet_id")
476
+ teamId String @map("team_id")
477
+ /// Known once Slack named the workspace, at the gateway's bot's install.
478
+ teamName String? @map("team_name")
479
+ connectedByShipId String @map("connected_by_ship_id")
480
+ connectedByName String @map("connected_by_name")
481
+ connectedAt DateTime @map("connected_at") @db.Timestamptz(3)
482
+ configAccessToken String @map("config_access_token")
483
+ /// Single use: each rotation spends it for the next.
484
+ configRefreshToken String @map("config_refresh_token")
485
+ configExpiresAt DateTime @map("config_expires_at") @db.Timestamptz(3)
486
+ isConfigRefused Boolean @map("is_config_refused")
487
+
488
+ @@map("slack_workspaces")
489
+ }
490
+
491
+ /// A Slack app the gateway made in a fleet's workspace, with its secrets, and its bot token once installed; no ship for the gateway's own bot.
492
+ model SlackApp {
493
+ fleetId String @map("fleet_id")
494
+ appId String @map("app_id")
495
+ shipId String? @map("ship_id")
496
+ clientId String @map("client_id")
497
+ clientSecret String @map("client_secret")
498
+ signingSecret String @map("signing_secret")
499
+ installUrl String @map("install_url")
500
+ /// The bot's name in Slack as last made or renamed.
501
+ name String
502
+ madeAt DateTime @map("made_at") @db.Timestamptz(3)
503
+ installStartedAt DateTime? @map("install_started_at") @db.Timestamptz(3)
504
+ botToken String? @map("bot_token")
505
+ botUserId String? @map("bot_user_id")
506
+ removedInSlackAt DateTime? @map("removed_in_slack_at") @db.Timestamptz(3)
507
+
508
+ @@id([fleetId, appId])
509
+ @@unique([appId])
510
+ @@map("slack_apps")
511
+ }
512
+
513
+ /// A person's Slack account linked to their account in a fleet (gateway scopes 9.3): one Slack user to one account, one Slack user per account.
514
+ model SlackLink {
515
+ fleetId String @map("fleet_id")
516
+ teamId String @map("team_id")
517
+ slackUserId String @map("slack_user_id")
518
+ slackName String @map("slack_name")
519
+ accountId String @map("account_id")
520
+ personShipId String @map("person_ship_id")
521
+ linkedAt DateTime @map("linked_at") @db.Timestamptz(3)
522
+ /// When the account was disabled (0055), its link stopped.
523
+ stoppedAt DateTime? @map("stopped_at") @db.Timestamptz(3)
524
+ /// Show everything that waits in Slack (B5), off until turned on.
525
+ isShowingAll Boolean @default(false) @map("is_showing_all")
526
+
527
+ @@id([fleetId, teamId, slackUserId])
528
+ @@unique([fleetId, accountId])
529
+ @@index([fleetId, personShipId])
530
+ @@map("slack_links")
531
+ }
532
+
533
+ /// A linked person's Slack message, kept by Slack's event id until core takes it (gateway scopes 9.4 step 3); then only its id, for an hour.
534
+ model SlackEvent {
535
+ fleetId String @map("fleet_id")
536
+ eventId String @map("event_id")
537
+ appId String @map("app_id")
538
+ shipId String @map("ship_id")
539
+ personShipId String @map("person_ship_id")
540
+ channel String
541
+ ts String
542
+ threadTs String? @map("thread_ts")
543
+ /// What is sent to the fleet; emptied once core took it.
544
+ markdown String
545
+ inReplyTo String? @map("in_reply_to")
546
+ deliveryId String? @map("delivery_id")
547
+ receivedAt DateTime @map("received_at") @db.Timestamptz(3)
548
+ takenAt DateTime? @map("taken_at") @db.Timestamptz(3)
549
+
550
+ @@id([fleetId, eventId])
551
+ @@index([takenAt, receivedAt])
552
+ @@map("slack_events")
553
+ }
554
+
555
+ /// A fleet message as it is in Slack, for a person ship (gateway scopes 9.5): a delivery posted there, or the person's own message sent from there.
556
+ model SlackPost {
557
+ fleetId String @map("fleet_id")
558
+ personShipId String @map("person_ship_id")
559
+ messageId String @map("message_id")
560
+ deliveryId String? @map("delivery_id")
561
+ senderShipId String? @map("sender_ship_id")
562
+ appId String @map("app_id")
563
+ channel String
564
+ /// The Slack message, once Slack accepted the post.
565
+ ts String?
566
+ threadTs String? @map("thread_ts")
567
+ isLinkOnly Boolean @map("is_link_only")
568
+ ackedAt DateTime? @map("acked_at") @db.Timestamptz(3)
569
+
570
+ @@id([fleetId, personShipId, messageId])
571
+ @@index([fleetId, appId, channel, ts])
572
+ @@index([fleetId, appId, channel, threadTs])
573
+ @@map("slack_posts")
574
+ }
@@ -1 +1 @@
1
- wnr2MrrQvcto8MOm16D8r
1
+ 87vMFs_KGRcFD40WWRkFR
@@ -14,6 +14,11 @@
14
14
  "/(console)/overview/requests/[requestId]/page": "/overview/requests/[requestId]",
15
15
  "/(console)/parties/page": "/parties",
16
16
  "/(console)/sign-in/failed/page": "/sign-in/failed",
17
+ "/(console)/slack/disconnect/page": "/slack/disconnect",
18
+ "/(console)/slack/expose/page": "/slack/expose",
19
+ "/(console)/slack/link/route": "/slack/link",
20
+ "/(console)/slack/page": "/slack",
21
+ "/(console)/slack/remove/page": "/slack/remove",
17
22
  "/_global-error/page": "/_global-error",
18
23
  "/_not-found/page": "/_not-found",
19
24
  "/authorize/failed/page": "/authorize/failed",
@@ -7,9 +7,9 @@
7
7
  "static/chunks/0cz1d0mv5g_q7.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/wnr2MrrQvcto8MOm16D8r/_buildManifest.js",
11
- "static/wnr2MrrQvcto8MOm16D8r/_ssgManifest.js",
12
- "static/wnr2MrrQvcto8MOm16D8r/_clientMiddlewareManifest.js"
10
+ "static/87vMFs_KGRcFD40WWRkFR/_buildManifest.js",
11
+ "static/87vMFs_KGRcFD40WWRkFR/_ssgManifest.js",
12
+ "static/87vMFs_KGRcFD40WWRkFR/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/2hz8yws_wswjz.js",
@@ -201,6 +201,54 @@
201
201
  94553
202
202
  ]
203
203
  },
204
+ "/(console)/slack/page": {
205
+ "otherChunks": [
206
+ "static/chunks/2hz8yws_wswjz.js",
207
+ "static/chunks/3knqujtrdi225.js",
208
+ "static/chunks/0lzisjsmhlhjf.js",
209
+ "static/chunks/41rcj9-d-7p_4.js",
210
+ "static/chunks/2ewacyhp73due.js"
211
+ ],
212
+ "runtimeModuleIds": [
213
+ 94553
214
+ ]
215
+ },
216
+ "/(console)/slack/disconnect/page": {
217
+ "otherChunks": [
218
+ "static/chunks/2hz8yws_wswjz.js",
219
+ "static/chunks/3knqujtrdi225.js",
220
+ "static/chunks/0lzisjsmhlhjf.js",
221
+ "static/chunks/41rcj9-d-7p_4.js",
222
+ "static/chunks/2ewacyhp73due.js"
223
+ ],
224
+ "runtimeModuleIds": [
225
+ 94553
226
+ ]
227
+ },
228
+ "/(console)/slack/expose/page": {
229
+ "otherChunks": [
230
+ "static/chunks/2hz8yws_wswjz.js",
231
+ "static/chunks/3knqujtrdi225.js",
232
+ "static/chunks/0lzisjsmhlhjf.js",
233
+ "static/chunks/41rcj9-d-7p_4.js",
234
+ "static/chunks/2ewacyhp73due.js"
235
+ ],
236
+ "runtimeModuleIds": [
237
+ 94553
238
+ ]
239
+ },
240
+ "/(console)/slack/remove/page": {
241
+ "otherChunks": [
242
+ "static/chunks/2hz8yws_wswjz.js",
243
+ "static/chunks/3knqujtrdi225.js",
244
+ "static/chunks/0lzisjsmhlhjf.js",
245
+ "static/chunks/41rcj9-d-7p_4.js",
246
+ "static/chunks/2ewacyhp73due.js"
247
+ ],
248
+ "runtimeModuleIds": [
249
+ 94553
250
+ ]
251
+ },
204
252
  "/authorize/failed/page": {
205
253
  "otherChunks": [
206
254
  "static/chunks/2hz8yws_wswjz.js",