@aeolus-fleet/gateway 0.35.0 → 0.36.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 (731) hide show
  1. package/README.md +12 -9
  2. package/dist/adapters/fleet/core-version.d.ts +1 -1
  3. package/dist/adapters/fleet/core-version.js +1 -1
  4. package/dist/adapters/fleet/rest-fleet-door.js +51 -7
  5. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  6. package/dist/adapters/http/front-door.d.ts +1 -1
  7. package/dist/adapters/http/front-door.js +5 -3
  8. package/dist/adapters/http/front-door.js.map +1 -1
  9. package/dist/adapters/http/person-tools.js +27 -9
  10. package/dist/adapters/http/person-tools.js.map +1 -1
  11. package/dist/adapters/http/slack-routes.d.ts +2 -0
  12. package/dist/adapters/http/slack-routes.js +11 -10
  13. package/dist/adapters/http/slack-routes.js.map +1 -1
  14. package/dist/adapters/pagasae/email-channel.d.ts +1 -2
  15. package/dist/adapters/pagasae/email-channel.js +3 -3
  16. package/dist/adapters/pagasae/email-channel.js.map +1 -1
  17. package/dist/adapters/prisma/basket-entries.d.ts +4 -0
  18. package/dist/adapters/prisma/basket-entries.js +53 -0
  19. package/dist/adapters/prisma/basket-entries.js.map +1 -0
  20. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  21. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  22. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  23. package/dist/adapters/prisma/generated/browser.d.ts +15 -4
  24. package/dist/adapters/prisma/generated/client.d.ts +15 -4
  25. package/dist/adapters/prisma/generated/internal/class.d.ts +26 -4
  26. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  27. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  28. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +228 -43
  29. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +42 -9
  30. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  31. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +42 -7
  32. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +42 -9
  33. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  34. package/dist/adapters/prisma/generated/models/BasketEntry.d.ts +1303 -0
  35. package/dist/adapters/prisma/generated/models/BasketEntry.js +2 -0
  36. package/dist/adapters/prisma/generated/models/BasketEntry.js.map +1 -0
  37. package/dist/adapters/prisma/generated/models/ItemOutcome.d.ts +1106 -0
  38. package/dist/adapters/prisma/generated/models/ItemOutcome.js +2 -0
  39. package/dist/adapters/prisma/generated/models/ItemOutcome.js.map +1 -0
  40. package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +125 -1
  41. package/dist/adapters/prisma/generated/models/PartySignInNotice.d.ts +32 -1
  42. package/dist/adapters/prisma/generated/models/Route.d.ts +1038 -0
  43. package/dist/adapters/prisma/generated/models/Route.js +2 -0
  44. package/dist/adapters/prisma/generated/models/Route.js.map +1 -0
  45. package/dist/adapters/prisma/generated/models/SlackLink.d.ts +1 -32
  46. package/dist/adapters/prisma/generated/models/SlackPost.d.ts +33 -58
  47. package/dist/adapters/prisma/generated/models.d.ts +3 -1
  48. package/dist/adapters/prisma/item-outcomes.d.ts +4 -0
  49. package/dist/adapters/prisma/item-outcomes.js +28 -0
  50. package/dist/adapters/prisma/item-outcomes.js.map +1 -0
  51. package/dist/adapters/prisma/opened-deliveries.js +4 -0
  52. package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
  53. package/dist/adapters/prisma/routes.d.ts +4 -0
  54. package/dist/adapters/prisma/routes.js +19 -0
  55. package/dist/adapters/prisma/routes.js.map +1 -0
  56. package/dist/adapters/prisma/sign-in-notices.js +11 -5
  57. package/dist/adapters/prisma/sign-in-notices.js.map +1 -1
  58. package/dist/adapters/prisma/slack-links.js +0 -4
  59. package/dist/adapters/prisma/slack-links.js.map +1 -1
  60. package/dist/adapters/prisma/slack-posts.js +37 -3
  61. package/dist/adapters/prisma/slack-posts.js.map +1 -1
  62. package/dist/adapters/slack/slack-messages.d.ts +2 -0
  63. package/dist/adapters/slack/slack-messages.js +29 -3
  64. package/dist/adapters/slack/slack-messages.js.map +1 -1
  65. package/dist/adapters/trpc/router.d.ts +88 -20
  66. package/dist/adapters/trpc/router.js +47 -18
  67. package/dist/adapters/trpc/router.js.map +1 -1
  68. package/dist/adapters/web-push/web-push.js +1 -1
  69. package/dist/adapters/web-push/web-push.js.map +1 -1
  70. package/dist/app.d.ts +7 -0
  71. package/dist/app.js +88 -22
  72. package/dist/app.js.map +1 -1
  73. package/dist/bin/aeolus-gateway.js +1 -0
  74. package/dist/bin/aeolus-gateway.js.map +1 -1
  75. package/dist/config.d.ts +8 -1
  76. package/dist/config.js +21 -0
  77. package/dist/config.js.map +1 -1
  78. package/dist/core/account-sign-in/start-account-sign-in.d.ts +1 -1
  79. package/dist/core/account-sign-in/start-account-sign-in.js +1 -1
  80. package/dist/core/account-sign-in/start-account-sign-in.js.map +1 -1
  81. package/dist/core/mcp-in/collect-replies.d.ts +2 -0
  82. package/dist/core/mcp-in/collect-replies.js +11 -3
  83. package/dist/core/mcp-in/collect-replies.js.map +1 -1
  84. package/dist/core/mcp-in/ports.d.ts +2 -1
  85. package/dist/core/mcp-out/run-party.d.ts +3 -1
  86. package/dist/core/mcp-out/run-party.js +9 -2
  87. package/dist/core/mcp-out/run-party.js.map +1 -1
  88. package/dist/core/party-grants/complete-party-sign-in.d.ts +5 -3
  89. package/dist/core/party-grants/complete-party-sign-in.js +7 -3
  90. package/dist/core/party-grants/complete-party-sign-in.js.map +1 -1
  91. package/dist/core/party-grants/ports.d.ts +17 -3
  92. package/dist/core/party-grants/tell-sign-in-needed.d.ts +9 -6
  93. package/dist/core/party-grants/tell-sign-in-needed.js +28 -12
  94. package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -1
  95. package/dist/core/people/answer-delivery.d.ts +9 -13
  96. package/dist/core/people/answer-delivery.js +23 -6
  97. package/dist/core/people/answer-delivery.js.map +1 -1
  98. package/dist/core/people/basket.d.ts +104 -0
  99. package/dist/core/people/basket.js +42 -0
  100. package/dist/core/people/basket.js.map +1 -0
  101. package/dist/core/people/count-basket.d.ts +16 -0
  102. package/dist/core/people/count-basket.js +14 -0
  103. package/dist/core/people/count-basket.js.map +1 -0
  104. package/dist/core/people/done-delivery.d.ts +21 -13
  105. package/dist/core/people/done-delivery.js +34 -4
  106. package/dist/core/people/done-delivery.js.map +1 -1
  107. package/dist/core/people/finish-own-step.d.ts +27 -0
  108. package/dist/core/people/finish-own-step.js +67 -0
  109. package/dist/core/people/finish-own-step.js.map +1 -0
  110. package/dist/core/people/inbox-entry.js +1 -1
  111. package/dist/core/people/inbox-entry.js.map +1 -1
  112. package/dist/core/people/item-job.d.ts +9 -0
  113. package/dist/core/people/item-job.js +38 -0
  114. package/dist/core/people/item-job.js.map +1 -0
  115. package/dist/core/people/item-outcome.d.ts +37 -0
  116. package/dist/core/people/item-outcome.js +21 -0
  117. package/dist/core/people/item-outcome.js.map +1 -0
  118. package/dist/core/people/item-state.d.ts +10 -0
  119. package/dist/core/people/item-state.js +17 -0
  120. package/dist/core/people/item-state.js.map +1 -0
  121. package/dist/core/people/open-delivery.d.ts +29 -14
  122. package/dist/core/people/open-delivery.js +108 -19
  123. package/dist/core/people/open-delivery.js.map +1 -1
  124. package/dist/core/people/opened-of.d.ts +30 -9
  125. package/dist/core/people/opened-of.js +25 -4
  126. package/dist/core/people/opened-of.js.map +1 -1
  127. package/dist/core/people/person-crew.d.ts +5 -1
  128. package/dist/core/people/person-crew.js +7 -0
  129. package/dist/core/people/person-crew.js.map +1 -1
  130. package/dist/core/people/ports.d.ts +42 -19
  131. package/dist/core/people/put-in-basket.d.ts +39 -0
  132. package/dist/core/people/put-in-basket.js +57 -0
  133. package/dist/core/people/put-in-basket.js.map +1 -0
  134. package/dist/core/people/read-basket.d.ts +54 -0
  135. package/dist/core/people/read-basket.js +57 -0
  136. package/dist/core/people/read-basket.js.map +1 -0
  137. package/dist/core/people/read-bridge-home.d.ts +47 -0
  138. package/dist/core/people/read-bridge-home.js +53 -0
  139. package/dist/core/people/read-bridge-home.js.map +1 -0
  140. package/dist/core/people/read-inbox.d.ts +11 -6
  141. package/dist/core/people/read-inbox.js +17 -10
  142. package/dist/core/people/read-inbox.js.map +1 -1
  143. package/dist/core/people/read-record.d.ts +48 -0
  144. package/dist/core/people/read-record.js +44 -0
  145. package/dist/core/people/read-record.js.map +1 -0
  146. package/dist/core/people/read-routing.d.ts +26 -0
  147. package/dist/core/people/read-routing.js +22 -0
  148. package/dist/core/people/read-routing.js.map +1 -0
  149. package/dist/core/people/read-wake-channels.d.ts +7 -8
  150. package/dist/core/people/read-wake-channels.js +4 -4
  151. package/dist/core/people/read-wake-channels.js.map +1 -1
  152. package/dist/core/people/remove-from-basket.d.ts +20 -0
  153. package/dist/core/people/remove-from-basket.js +52 -0
  154. package/dist/core/people/remove-from-basket.js.map +1 -0
  155. package/dist/core/people/routing.d.ts +50 -0
  156. package/dist/core/people/routing.js +35 -0
  157. package/dist/core/people/routing.js.map +1 -0
  158. package/dist/core/people/send-basket.d.ts +40 -0
  159. package/dist/core/people/send-basket.js +60 -0
  160. package/dist/core/people/send-basket.js.map +1 -0
  161. package/dist/core/people/send-stored-answers.d.ts +33 -0
  162. package/dist/core/people/send-stored-answers.js +96 -0
  163. package/dist/core/people/send-stored-answers.js.map +1 -0
  164. package/dist/core/people/stale-question.d.ts +28 -0
  165. package/dist/core/people/stale-question.js +26 -0
  166. package/dist/core/people/stale-question.js.map +1 -0
  167. package/dist/core/people/step-outcome.d.ts +18 -0
  168. package/dist/core/people/step-outcome.js +18 -0
  169. package/dist/core/people/step-outcome.js.map +1 -0
  170. package/dist/core/people/turn-route.d.ts +34 -0
  171. package/dist/core/people/turn-route.js +42 -0
  172. package/dist/core/people/turn-route.js.map +1 -0
  173. package/dist/core/people/wake-person.d.ts +15 -7
  174. package/dist/core/people/wake-person.js +54 -28
  175. package/dist/core/people/wake-person.js.map +1 -1
  176. package/dist/core/people/web-push-channel.d.ts +2 -2
  177. package/dist/core/people/web-push-channel.js +3 -3
  178. package/dist/core/people/web-push-channel.js.map +1 -1
  179. package/dist/core/requests/ask-owners.d.ts +1 -1
  180. package/dist/core/requests/ask-owners.js +4 -4
  181. package/dist/core/requests/ask-owners.js.map +1 -1
  182. package/dist/core/requests/list-mine.d.ts +1 -1
  183. package/dist/core/requests/list-mine.js +1 -1
  184. package/dist/core/requests/list-to-decide.d.ts +1 -1
  185. package/dist/core/requests/list-to-decide.js +1 -1
  186. package/dist/core/requests/list-to-decide.js.map +1 -1
  187. package/dist/core/shared/errors.d.ts +1 -1
  188. package/dist/core/shared/errors.js.map +1 -1
  189. package/dist/core/slack/answer-in-slack.d.ts +18 -15
  190. package/dist/core/slack/answer-in-slack.js +39 -20
  191. package/dist/core/slack/answer-in-slack.js.map +1 -1
  192. package/dist/core/slack/complete-link.js +3 -3
  193. package/dist/core/slack/complete-link.js.map +1 -1
  194. package/dist/core/slack/edit-slack-posts.d.ts +23 -0
  195. package/dist/core/slack/edit-slack-posts.js +49 -0
  196. package/dist/core/slack/edit-slack-posts.js.map +1 -0
  197. package/dist/core/slack/ports.d.ts +28 -9
  198. package/dist/core/slack/read-slack-link.d.ts +2 -3
  199. package/dist/core/slack/read-slack-link.js +2 -2
  200. package/dist/core/slack/read-slack-link.js.map +1 -1
  201. package/dist/core/slack/see-in-slack.d.ts +34 -0
  202. package/dist/core/slack/see-in-slack.js +48 -0
  203. package/dist/core/slack/see-in-slack.js.map +1 -0
  204. package/dist/core/slack/send-slack-events.js +1 -1
  205. package/dist/core/slack/send-slack-events.js.map +1 -1
  206. package/dist/core/slack/show-in-slack.d.ts +20 -15
  207. package/dist/core/slack/show-in-slack.js +36 -45
  208. package/dist/core/slack/show-in-slack.js.map +1 -1
  209. package/dist/core/slack/slack-link.d.ts +0 -2
  210. package/dist/core/slack/slack-post-of.d.ts +9 -9
  211. package/dist/core/slack/slack-post-of.js +12 -3
  212. package/dist/core/slack/slack-post-of.js.map +1 -1
  213. package/dist/core/slack/slack-post.d.ts +13 -7
  214. package/dist/core/slack/slack-post.js +2 -2
  215. package/dist/core/slack/slack-post.js.map +1 -1
  216. package/dist/core/slack/slack-press.d.ts +45 -0
  217. package/dist/core/slack/slack-press.js +26 -0
  218. package/dist/core/slack/slack-press.js.map +1 -0
  219. package/dist/core/slack/start-link.d.ts +1 -1
  220. package/dist/core/slack/start-link.js +1 -1
  221. package/dist/core/slack/unlink-slack.d.ts +1 -1
  222. package/dist/core/slack/unlink-slack.js +1 -1
  223. package/dist/core/slack/unlink-slack.js.map +1 -1
  224. package/dist/round-worker.d.ts +23 -0
  225. package/dist/round-worker.js +38 -0
  226. package/dist/round-worker.js.map +1 -0
  227. package/package.json +3 -3
  228. package/src/adapters/prisma/migrations/20261101090000_item_outcomes/migration.sql +12 -0
  229. package/src/adapters/prisma/migrations/20261101091000_opened_deliveries_content_type/migration.sql +2 -0
  230. package/src/adapters/prisma/migrations/20261101120000_opened_deliveries_questions/migration.sql +3 -0
  231. package/src/adapters/prisma/migrations/20261101150000_basket_entries/migration.sql +25 -0
  232. package/src/adapters/prisma/migrations/20261101180000_opened_deliveries_steps/migration.sql +2 -0
  233. package/src/adapters/prisma/migrations/20261101181000_party_sign_in_notices_steps/migration.sql +2 -0
  234. package/src/adapters/prisma/migrations/20261102090000_routes/migration.sql +11 -0
  235. package/src/adapters/prisma/migrations/20261102091000_slack_posts_unacknowledged/migration.sql +3 -0
  236. package/src/adapters/prisma/migrations/20261102092000_slack_links_routed/migration.sql +2 -0
  237. package/src/adapters/prisma/migrations/20261102093000_email_channels_routed/migration.sql +2 -0
  238. package/src/adapters/prisma/migrations/20261103090000_slack_posts_edited/migration.sql +5 -0
  239. package/src/adapters/prisma/schema.prisma +71 -15
  240. package/web/.next/BUILD_ID +1 -1
  241. package/web/.next/app-path-routes-manifest.json +8 -4
  242. package/web/.next/build-manifest.json +127 -79
  243. package/web/.next/diagnostics/route-bundle-stats.json +215 -143
  244. package/web/.next/fallback-build-manifest.json +3 -3
  245. package/web/.next/prerender-manifest.json +3 -3
  246. package/web/.next/routes-manifest.json +50 -26
  247. package/web/.next/server/app/(console)/bridge/basket/page/app-paths-manifest.json +3 -0
  248. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/basket}/page/build-manifest.json +4 -4
  249. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/basket}/page/next-font-manifest.json +1 -1
  250. package/web/.next/server/app/(console)/bridge/basket/page/server-reference-manifest.json +75 -0
  251. package/web/.next/server/app/(console)/bridge/basket/page.js +25 -0
  252. package/web/.next/server/app/(console)/bridge/basket/page.js.nft.json +1 -0
  253. package/web/.next/server/app/(console)/bridge/basket/page_client-reference-manifest.js +3 -0
  254. package/web/.next/server/app/(console)/bridge/changes/route/app-paths-manifest.json +3 -0
  255. package/web/.next/server/app/(console)/bridge/changes/route.js +8 -0
  256. package/web/.next/server/app/(console)/{overview/focus → bridge/changes}/route.js.nft.json +1 -1
  257. package/web/.next/server/app/(console)/{overview/focus → bridge/changes}/route_client-reference-manifest.js +1 -1
  258. package/web/.next/server/app/(console)/bridge/done/page/app-paths-manifest.json +3 -0
  259. package/web/.next/server/app/(console)/bridge/done/page/build-manifest.json +23 -0
  260. package/web/.next/server/app/(console)/bridge/done/page/next-font-manifest.json +11 -0
  261. package/web/.next/server/app/(console)/bridge/done/page/server-reference-manifest.json +75 -0
  262. package/web/.next/server/app/(console)/bridge/done/page.js +25 -0
  263. package/web/.next/server/app/(console)/bridge/done/page.js.nft.json +1 -0
  264. package/web/.next/server/app/(console)/bridge/done/page_client-reference-manifest.js +3 -0
  265. package/web/.next/server/app/(console)/bridge/focus/route/app-paths-manifest.json +3 -0
  266. package/web/.next/server/app/(console)/bridge/focus/route.js +8 -0
  267. package/web/.next/server/app/(console)/{overview/changes → bridge/focus}/route.js.nft.json +1 -1
  268. package/web/.next/server/app/(console)/bridge/focus/route_client-reference-manifest.js +3 -0
  269. package/web/.next/server/app/(console)/bridge/page/app-paths-manifest.json +3 -0
  270. package/web/.next/server/app/(console)/{overview → bridge}/page/build-manifest.json +4 -4
  271. package/web/.next/server/app/(console)/{overview → bridge}/page/next-font-manifest.json +1 -1
  272. package/web/.next/server/app/(console)/bridge/page/react-loadable-manifest.json +1 -0
  273. package/web/.next/server/app/(console)/bridge/page/server-reference-manifest.json +65 -0
  274. package/web/.next/server/app/(console)/{overview → bridge}/page.js +11 -11
  275. package/web/.next/server/app/(console)/bridge/page.js.map +5 -0
  276. package/web/.next/server/app/(console)/{overview → bridge}/page.js.nft.json +1 -1
  277. package/web/.next/server/app/(console)/bridge/page_client-reference-manifest.js +3 -0
  278. package/web/.next/server/app/(console)/bridge/settings/page/app-paths-manifest.json +3 -0
  279. package/web/.next/server/app/(console)/bridge/settings/page/build-manifest.json +23 -0
  280. package/web/.next/server/app/(console)/bridge/settings/page/next-font-manifest.json +11 -0
  281. package/web/.next/server/app/(console)/bridge/settings/page/react-loadable-manifest.json +1 -0
  282. package/web/.next/server/app/(console)/bridge/settings/page/server-reference-manifest.json +15 -0
  283. package/web/.next/server/app/(console)/bridge/settings/page.js +23 -0
  284. package/web/.next/server/app/(console)/bridge/settings/page.js.map +5 -0
  285. package/web/.next/server/app/(console)/bridge/settings/page.js.nft.json +1 -0
  286. package/web/.next/server/app/(console)/bridge/settings/page_client-reference-manifest.js +3 -0
  287. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +3 -0
  288. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/build-manifest.json +23 -0
  289. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +11 -0
  290. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/react-loadable-manifest.json +1 -0
  291. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +25 -0
  292. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js +25 -0
  293. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js.map +5 -0
  294. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js.nft.json +1 -0
  295. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +3 -0
  296. package/web/.next/server/app/(console)/bridge/settings/routing/page/app-paths-manifest.json +3 -0
  297. package/web/.next/server/app/(console)/bridge/settings/routing/page/build-manifest.json +23 -0
  298. package/web/.next/server/app/(console)/bridge/settings/routing/page/next-font-manifest.json +11 -0
  299. package/web/.next/server/app/(console)/bridge/settings/routing/page/react-loadable-manifest.json +1 -0
  300. package/web/.next/server/app/(console)/bridge/settings/routing/page/server-reference-manifest.json +55 -0
  301. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/settings/routing}/page.js +12 -12
  302. package/web/.next/server/app/(console)/bridge/settings/routing/page.js.map +5 -0
  303. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/settings/routing}/page.js.nft.json +1 -1
  304. package/web/.next/server/app/(console)/bridge/settings/routing/page_client-reference-manifest.js +3 -0
  305. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +4 -4
  306. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  307. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  308. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  309. package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +4 -4
  310. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  311. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +1 -1
  312. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  313. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  314. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +4 -4
  315. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +15 -15
  316. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  317. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  318. package/web/.next/server/app/(console)/outside-parties/[name]/page/build-manifest.json +4 -4
  319. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +8 -8
  320. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  321. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  322. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +4 -4
  323. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +15 -15
  324. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  325. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  326. package/web/.next/server/app/(console)/outside-parties/add/page/build-manifest.json +4 -4
  327. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +10 -10
  328. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  329. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  330. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +4 -4
  331. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  332. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  333. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  334. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +4 -4
  335. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  336. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  337. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  338. package/web/.next/server/app/(console)/outside-parties/page/build-manifest.json +4 -4
  339. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  340. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  341. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  342. package/web/.next/server/app/(console)/parties/page/build-manifest.json +4 -4
  343. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +9 -9
  344. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  345. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  346. package/web/.next/server/app/(console)/sign-in/failed/page/build-manifest.json +4 -4
  347. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  348. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  349. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  350. package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +4 -4
  351. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +10 -10
  352. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
  353. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
  354. package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +4 -4
  355. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +10 -10
  356. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
  357. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  358. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
  359. package/web/.next/server/app/(console)/slack/page/build-manifest.json +4 -4
  360. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +10 -10
  361. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  362. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  363. package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +4 -4
  364. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +10 -10
  365. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  366. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  367. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  368. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  369. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  370. package/web/.next/server/app/_global-error.html +1 -1
  371. package/web/.next/server/app/_global-error.rsc +1 -1
  372. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  373. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  374. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  375. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  376. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  377. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  378. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  379. package/web/.next/server/app/authorize/failed/page/build-manifest.json +4 -4
  380. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  381. package/web/.next/server/app/authorize/failed/page.js +1 -1
  382. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  383. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  384. package/web/.next/server/app/authorize/pick/page/build-manifest.json +4 -4
  385. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  386. package/web/.next/server/app/authorize/pick/page.js +1 -1
  387. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  388. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  389. package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +4 -4
  390. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  391. package/web/.next/server/app/authorize/waiting/approval/page.js +1 -1
  392. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  393. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  394. package/web/.next/server/app-paths-manifest.json +8 -4
  395. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js +3 -0
  396. package/web/.next/server/chunks/{[root-of-the-server]__1tfyrijwfgqlk._.js → [root-of-the-server]__13mh3krxil59c._.js} +2 -2
  397. package/web/.next/server/chunks/[root-of-the-server]__13mh3krxil59c._.js.map +1 -0
  398. package/web/.next/server/chunks/_05qgg3__4kdbm._.js +3 -0
  399. package/web/.next/server/chunks/_05qgg3__4kdbm._.js.map +1 -0
  400. package/web/.next/server/chunks/_0_um96p6psnqx._.js +4 -4
  401. package/web/.next/server/chunks/_0_um96p6psnqx._.js.map +1 -1
  402. package/web/.next/server/chunks/_1uap5tql2vvsb._.js +3 -0
  403. package/web/.next/server/chunks/{_04is-uopj3op9._.js.map → _1uap5tql2vvsb._.js.map} +1 -1
  404. package/web/.next/server/chunks/_1xf83h9norhws._.js +4 -4
  405. package/web/.next/server/chunks/_1xf83h9norhws._.js.map +1 -1
  406. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +1 -1
  407. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -1
  408. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js +3 -0
  409. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js.map +1 -0
  410. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js +3 -0
  411. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js.map +1 -0
  412. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  413. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  414. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  415. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  416. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  417. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  418. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  419. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  420. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  421. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  422. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
  423. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
  424. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js +3 -0
  425. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js.map +1 -0
  426. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +1 -1
  427. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
  428. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
  429. package/web/.next/server/chunks/ssr/{[root-of-the-server]__179upda-y7uap._.js → [root-of-the-server]__0gnfxe62edx95._.js} +1 -1
  430. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js +3 -0
  431. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js.map +1 -0
  432. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  433. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  434. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
  435. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
  436. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
  437. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
  438. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  439. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  440. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js +4 -0
  441. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js.map +1 -0
  442. package/web/.next/server/chunks/ssr/[root-of-the-server]__1iqxg48po42ig._.js +3 -0
  443. package/web/.next/server/chunks/ssr/[root-of-the-server]__1iqxg48po42ig._.js.map +1 -0
  444. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
  445. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
  446. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js +3 -0
  447. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js.map +1 -0
  448. package/web/.next/server/chunks/ssr/{[root-of-the-server]__04_bc8g0oe4jt._.js → [root-of-the-server]__1yyaeeylnezpi._.js} +1 -1
  449. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  450. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  451. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +4 -4
  452. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  453. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js +4 -0
  454. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js.map +1 -0
  455. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js +3 -0
  456. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js.map +1 -0
  457. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  458. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  459. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  460. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  461. package/web/.next/server/chunks/ssr/_0swrejvekuzfx._.js +3 -0
  462. package/web/.next/server/chunks/ssr/_0swrejvekuzfx._.js.map +1 -0
  463. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  464. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  465. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  466. package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
  467. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js +1 -1
  468. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +1 -1
  469. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js +3 -0
  470. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js.map +1 -0
  471. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  472. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  473. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js +3 -0
  474. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js.map +1 -0
  475. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  476. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  477. package/web/.next/server/chunks/ssr/_1qdpkpsskm5wj._.js +3 -0
  478. package/web/.next/server/chunks/ssr/_1qdpkpsskm5wj._.js.map +1 -0
  479. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js +3 -0
  480. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js.map +1 -0
  481. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js +3 -0
  482. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js.map +1 -0
  483. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js +3 -0
  484. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js.map +1 -0
  485. package/web/.next/server/chunks/ssr/{node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js → node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js} +2 -2
  486. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +1 -0
  487. package/web/.next/server/chunks/ssr/{node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js → node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js} +2 -2
  488. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js.map +1 -0
  489. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js +3 -0
  490. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js.map +1 -0
  491. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js +3 -0
  492. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js.map +1 -0
  493. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js +3 -0
  494. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js.map +1 -0
  495. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js +3 -0
  496. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js.map +1 -0
  497. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js +3 -0
  498. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js.map +1 -0
  499. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js +3 -0
  500. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js.map +1 -0
  501. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js +3 -0
  502. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js.map +1 -0
  503. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js +1 -1
  504. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js.map +1 -1
  505. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js +3 -0
  506. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js.map +1 -0
  507. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  508. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  509. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js +3 -0
  510. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js.map +1 -0
  511. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js +3 -0
  512. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js.map +1 -0
  513. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js +3 -0
  514. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js.map +1 -0
  515. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js +3 -0
  516. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js.map +1 -0
  517. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js +3 -0
  518. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js.map +1 -0
  519. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js +3 -0
  520. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js.map +1 -0
  521. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js +3 -0
  522. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js.map +1 -0
  523. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js +3 -0
  524. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js.map +1 -0
  525. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js +3 -0
  526. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js.map +1 -0
  527. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js +3 -0
  528. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js.map +1 -0
  529. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js +1 -1
  530. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js +1 -1
  531. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js +3 -0
  532. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js.map +1 -0
  533. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js +3 -0
  534. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js.map +1 -0
  535. package/web/.next/server/chunks/ssr/web_features_1je122n6carea._.js +3 -0
  536. package/web/.next/server/chunks/ssr/web_features_1je122n6carea._.js.map +1 -0
  537. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js +3 -0
  538. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js.map +1 -0
  539. package/web/.next/server/chunks/ssr/web_features_1nrnskep6p8ci._.js +3 -0
  540. package/web/.next/server/chunks/ssr/web_features_1nrnskep6p8ci._.js.map +1 -0
  541. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  542. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  543. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  544. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  545. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  546. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  547. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js +3 -0
  548. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js.map +1 -0
  549. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js +3 -0
  550. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js.map +1 -0
  551. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js +3 -0
  552. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js.map +1 -0
  553. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js +3 -0
  554. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js.map +1 -0
  555. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +3 -0
  556. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map +1 -0
  557. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js +3 -0
  558. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js.map +1 -0
  559. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +3 -0
  560. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -0
  561. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +3 -0
  562. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -0
  563. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +3 -0
  564. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -0
  565. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js +3 -0
  566. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js.map +1 -0
  567. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js +3 -0
  568. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map +1 -0
  569. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js +3 -0
  570. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js.map +1 -0
  571. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  572. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -1
  573. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  574. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  575. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  576. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  577. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  578. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  579. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  580. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  581. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  582. package/web/.next/server/chunks/web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js +3 -0
  583. package/web/.next/server/middleware-build-manifest.js +127 -79
  584. package/web/.next/server/next-font-manifest.js +1 -1
  585. package/web/.next/server/next-font-manifest.json +24 -8
  586. package/web/.next/server/pages/500.html +1 -1
  587. package/web/.next/server/preview-props.json +3 -3
  588. package/web/.next/server/server-reference-manifest.js +1 -1
  589. package/web/.next/server/server-reference-manifest.json +219 -133
  590. package/web/.next/static/chunks/0c1tqlbsvq1dj.js +1 -0
  591. package/web/.next/static/chunks/0fh11dkddwf_2.js +1 -0
  592. package/web/.next/static/chunks/0fu7je2vzzzh7.js +1 -0
  593. package/web/.next/static/chunks/1166rxt6h6ilq.js +1 -0
  594. package/web/.next/static/chunks/180aowme095ds.js +1 -0
  595. package/web/.next/static/chunks/1ehmzxr697ifa.js +1 -0
  596. package/web/.next/static/chunks/1lyv8ukt_q3ph.js +1 -0
  597. package/web/.next/static/chunks/1ymfhxs-xqiy6.js +1 -0
  598. package/web/.next/static/chunks/2799kv0y5g2va.js +1 -0
  599. package/web/.next/static/chunks/2hoi73vy1wqpo.js +1 -0
  600. package/web/.next/static/chunks/{3l5jtag3-fukc.js → 2jr8r6g9kk42a.js} +1 -1
  601. package/web/.next/static/chunks/2mtfca4qk_s34.js +1 -0
  602. package/web/.next/static/chunks/{0tmvd_zw45u96.js → 322fzslly9wpf.js} +1 -1
  603. package/web/.next/static/chunks/{03239gtej3tj0.js → 36fnm0ezsx1eh.js} +1 -1
  604. package/web/.next/static/chunks/3f2trjz7_wrzh.js +1 -0
  605. package/web/.next/static/chunks/{2_e-puldye2do.js → 3hvw5n04pbwg8.js} +1 -1
  606. package/web/.next/static/chunks/3ow9h8hreko-p.css +3 -0
  607. package/web/.next/static/chunks/3pd8pele5x1o9.js +1 -0
  608. package/web/.next/static/chunks/3rt603msircrl.js +1 -0
  609. package/web/.next/static/chunks/3srfjz42u14tx.js +1 -0
  610. package/web/.next/static/chunks/{3ceatffqhpgpu.js → 40j58bya72xh1.js} +1 -1
  611. package/web/.next/trace +1 -1
  612. package/web/.next/trace-build +1 -1
  613. package/web/.next/types/routes.d.ts +10 -6
  614. package/web/.next/types/validator.ts +108 -40
  615. package/web/public/wake-worker.js +4 -4
  616. package/dist/adapters/prisma/email-channels.d.ts +0 -4
  617. package/dist/adapters/prisma/email-channels.js +0 -14
  618. package/dist/adapters/prisma/email-channels.js.map +0 -1
  619. package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +0 -946
  620. package/dist/adapters/prisma/generated/models/EmailChannel.js +0 -2
  621. package/dist/adapters/prisma/generated/models/EmailChannel.js.map +0 -1
  622. package/dist/core/people/turn-email-channel.d.ts +0 -21
  623. package/dist/core/people/turn-email-channel.js +0 -22
  624. package/dist/core/people/turn-email-channel.js.map +0 -1
  625. package/dist/core/slack/show-all-in-slack.d.ts +0 -16
  626. package/dist/core/slack/show-all-in-slack.js +0 -18
  627. package/dist/core/slack/show-all-in-slack.js.map +0 -1
  628. package/web/.next/server/app/(console)/overview/changes/route/app-paths-manifest.json +0 -3
  629. package/web/.next/server/app/(console)/overview/changes/route.js +0 -8
  630. package/web/.next/server/app/(console)/overview/changes/route_client-reference-manifest.js +0 -3
  631. package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +0 -3
  632. package/web/.next/server/app/(console)/overview/focus/route.js +0 -8
  633. package/web/.next/server/app/(console)/overview/page/app-paths-manifest.json +0 -3
  634. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +0 -95
  635. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +0 -3
  636. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/app-paths-manifest.json +0 -3
  637. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +0 -25
  638. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +0 -3
  639. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +0 -3
  640. package/web/.next/server/chunks/1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js +0 -3
  641. package/web/.next/server/chunks/[root-of-the-server]__1tfyrijwfgqlk._.js.map +0 -1
  642. package/web/.next/server/chunks/_04is-uopj3op9._.js +0 -3
  643. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +0 -3
  644. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +0 -1
  645. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +0 -3
  646. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +0 -1
  647. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js +0 -4
  648. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js.map +0 -1
  649. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js +0 -3
  650. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js.map +0 -1
  651. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js +0 -3
  652. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js.map +0 -1
  653. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +0 -3
  654. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +0 -1
  655. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js +0 -3
  656. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js.map +0 -1
  657. package/web/.next/server/chunks/ssr/_1oy13966tft2_._.js +0 -3
  658. package/web/.next/server/chunks/ssr/_1oy13966tft2_._.js.map +0 -1
  659. package/web/.next/server/chunks/ssr/_1pf8x2exvfl1z._.js +0 -3
  660. package/web/.next/server/chunks/ssr/_1pf8x2exvfl1z._.js.map +0 -1
  661. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js +0 -3
  662. package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js.map +0 -1
  663. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js +0 -3
  664. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js.map +0 -1
  665. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +0 -3
  666. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +0 -1
  667. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js +0 -3
  668. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js.map +0 -1
  669. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js.map +0 -1
  670. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +0 -1
  671. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js +0 -3
  672. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js.map +0 -1
  673. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js +0 -3
  674. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js.map +0 -1
  675. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js +0 -3
  676. package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js.map +0 -1
  677. package/web/.next/server/chunks/ssr/web_1loiet18xbddu._.js +0 -3
  678. package/web/.next/server/chunks/ssr/web_1loiet18xbddu._.js.map +0 -1
  679. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +0 -3
  680. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +0 -1
  681. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_087e7ba8loavc._.js +0 -3
  682. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_087e7ba8loavc._.js.map +0 -1
  683. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js +0 -3
  684. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js.map +0 -1
  685. package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js +0 -3
  686. package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js.map +0 -1
  687. package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js +0 -3
  688. package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js.map +0 -1
  689. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js +0 -3
  690. package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js.map +0 -1
  691. package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js +0 -3
  692. package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js.map +0 -1
  693. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js +0 -3
  694. package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js.map +0 -1
  695. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +0 -3
  696. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +0 -1
  697. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js +0 -3
  698. package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js.map +0 -1
  699. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +0 -3
  700. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +0 -1
  701. package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js +0 -3
  702. package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js.map +0 -1
  703. package/web/.next/static/chunks/0nhopjmnw_dqt.js +0 -1
  704. package/web/.next/static/chunks/0vlawcs6_kjs1.js +0 -1
  705. package/web/.next/static/chunks/1se0j0htjyep6.js +0 -1
  706. package/web/.next/static/chunks/26vlpatu47xtw.css +0 -3
  707. package/web/.next/static/chunks/287ofedoj_6xl.js +0 -1
  708. package/web/.next/static/chunks/2cd4e71s711ad.js +0 -1
  709. package/web/.next/static/chunks/2ewacyhp73due.js +0 -1
  710. package/web/.next/static/chunks/34kulpk3a-cka.js +0 -1
  711. package/web/.next/static/chunks/3fd167c0-ot3u.js +0 -1
  712. package/web/.next/static/chunks/3knqujtrdi225.js +0 -1
  713. package/web/.next/static/chunks/3rxg2mdhxd6yt.js +0 -1
  714. package/web/.next/static/chunks/3v6tr952p9dba.js +0 -1
  715. /package/web/.next/server/app/(console)/{overview → bridge/basket}/page/react-loadable-manifest.json +0 -0
  716. /package/web/.next/server/app/(console)/{overview → bridge/basket}/page.js.map +0 -0
  717. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route/build-manifest.json +0 -0
  718. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route/server-reference-manifest.json +0 -0
  719. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route.js.map +0 -0
  720. /package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/done}/page/react-loadable-manifest.json +0 -0
  721. /package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/done}/page.js.map +0 -0
  722. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route/build-manifest.json +0 -0
  723. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route/server-reference-manifest.json +0 -0
  724. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route.js.map +0 -0
  725. /package/web/.next/server/chunks/{0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js.map → 0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js.map} +0 -0
  726. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__179upda-y7uap._.js.map → [root-of-the-server]__0gnfxe62edx95._.js.map} +0 -0
  727. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__04_bc8g0oe4jt._.js.map → [root-of-the-server]__1yyaeeylnezpi._.js.map} +0 -0
  728. /package/web/.next/server/chunks/{1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js.map → web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js.map} +0 -0
  729. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → IMWKx2sJwt7EwwpStr8tb}/_buildManifest.js +0 -0
  730. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → IMWKx2sJwt7EwwpStr8tb}/_clientMiddlewareManifest.js +0 -0
  731. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → IMWKx2sJwt7EwwpStr8tb}/_ssgManifest.js +0 -0
@@ -0,0 +1,52 @@
1
+ import { refuse } from '../shared/errors.js';
2
+ import { ok } from '../shared/result.js';
3
+ import { handledOf } from './opened-of.js';
4
+ import { standingBasketOf } from './read-basket.js';
5
+ import { takeOutUnsent } from './send-basket.js';
6
+ /**
7
+ * Use case: the person removes an entry from the basket (section 9). One
8
+ * waiting leaves it, and its question still waits on them. One the fleet
9
+ * refused leaves it and its question is done, as not sent; kept while the
10
+ * fleet does not take that, so they can remove it again. One whose question
11
+ * its asker withdrew or replaced leaves it, and the question is done as
12
+ * such; one answered elsewhere just leaves. One being sent goes as stored.
13
+ */
14
+ export function createRemoveFromBasket(deps) {
15
+ return async ({ caller, questionId }) => {
16
+ const basket = await standingBasketOf(deps, caller);
17
+ if (!basket.isOk) {
18
+ return basket;
19
+ }
20
+ const found = basket.value.entries.find(({ entry }) => entry.questionId === questionId);
21
+ if (found === undefined) {
22
+ return refuse('NOT_IN_BASKET', 'That answer is not in your basket: read it again');
23
+ }
24
+ const { entry, standing } = found;
25
+ switch (standing.kind) {
26
+ case 'sending':
27
+ return refuse('CONFLICT', 'This answer is being sent: it goes as it was put in the basket');
28
+ case 'refused': {
29
+ const question = basket.value.opened.find(({ deliveryId }) => deliveryId === entry.deliveryId);
30
+ if (question !== undefined) {
31
+ const handled = await handledOf(deps, { caller, delivery: question, as: { place: 'bridge', kind: 'notSent', option: entry.option } });
32
+ if (!handled.isOk) {
33
+ return handled;
34
+ }
35
+ }
36
+ await deps.entries.remove(entry.fleetId, { shipId: entry.shipId, questionId });
37
+ break;
38
+ }
39
+ case 'waiting':
40
+ await deps.entries.remove(entry.fleetId, { shipId: entry.shipId, questionId });
41
+ break;
42
+ case 'withdrawn':
43
+ case 'replaced':
44
+ case 'dealtElsewhere':
45
+ await takeOutUnsent(deps, { caller, basket: basket.value, entry, standing });
46
+ break;
47
+ }
48
+ await deps.changes.tell({ fleetId: caller.fleetId, shipId: basket.value.crew.shipId });
49
+ return ok({ questionId });
50
+ };
51
+ }
52
+ //# sourceMappingURL=remove-from-basket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-from-basket.js","sourceRoot":"","sources":["../../../src/core/people/remove-from-basket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAkC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA2B;IAChE,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;QACxF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,eAAe,EAAE,kDAAkD,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAClC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,SAAS;gBACZ,OAAO,MAAM,CAAC,UAAU,EAAE,gEAAgE,CAAC,CAAC;YAC9F,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC/F,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACtI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBAClB,OAAO,OAAO,CAAC;oBACjB,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC/E,MAAM;YACR,CAAC;YACD,KAAK,SAAS;gBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC/E,MAAM;YACR,KAAK,WAAW,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,gBAAgB;gBACnB,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7E,MAAM;QACV,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Routing per job (docs/design/bridge, section 8): per fleet, person ship,
3
+ * job and place, whether the place shows the job's items besides Bridge,
4
+ * which always does. The person's own choice counts over the default from
5
+ * the gateway's configuration (CC5, CC19). A pull place, a chat, is a view:
6
+ * turned on, it shows every item of the job. A push place, Slack or a wake,
7
+ * shows only what arrives after it was turned on for the job (CC20).
8
+ */
9
+ import type { FleetId, ShipId } from '@aeolus-fleet/common';
10
+ import { type ItemJob } from './item-job.js';
11
+ import type { PersonShip } from './ports.js';
12
+ /** The places a person routes a job to besides Bridge (CC5). */
13
+ export type RoutingPlace = 'slack' | 'chat' | 'web-push' | 'email';
14
+ export declare const ITEM_JOBS: readonly ItemJob[];
15
+ export declare const ROUTING_PLACES: readonly RoutingPlace[];
16
+ /** A person's own choice for one job and place, with when they made it. */
17
+ export interface Route {
18
+ readonly fleetId: FleetId;
19
+ readonly shipId: ShipId;
20
+ readonly job: ItemJob;
21
+ readonly place: RoutingPlace;
22
+ readonly isOn: boolean;
23
+ readonly changedAt: Date;
24
+ }
25
+ /** The jobs and places on while a person made no choice of their own, from the gateway's configuration (CC19). */
26
+ export interface RoutingDefaults {
27
+ readonly onByDefault: ReadonlySet<string>;
28
+ }
29
+ /** Outbound port: each person's own choices, by fleet and person ship. */
30
+ export interface Routes {
31
+ list(ship: PersonShip): Promise<Route[]>;
32
+ /** Keeps it, or keeps it anew for its job and place. */
33
+ save(route: Route): Promise<void>;
34
+ }
35
+ /** Where a person's items show, by job and place. */
36
+ export interface Routing {
37
+ isOn(job: ItemJob, place: RoutingPlace): boolean;
38
+ /** Whether the place shows the item: its job on there, and for a push place sent since it was turned on. */
39
+ isShowing(place: RoutingPlace, item: {
40
+ readonly contentType: string;
41
+ readonly sentAt: Date;
42
+ }): boolean;
43
+ }
44
+ /** Whether the place only shows what the person asks it for, so it costs nothing to show what is already there (CC20). */
45
+ export declare function isPullPlace(place: RoutingPlace): boolean;
46
+ export declare function routingDefaultsOf(onByDefault: readonly {
47
+ readonly job: ItemJob;
48
+ readonly place: RoutingPlace;
49
+ }[]): RoutingDefaults;
50
+ export declare function routingOf(routes: readonly Route[], defaults: RoutingDefaults): Routing;
@@ -0,0 +1,35 @@
1
+ import { jobOf } from './item-job.js';
2
+ export const ITEM_JOBS = ['decide', 'do', 'stay-aware', 'everything-else'];
3
+ export const ROUTING_PLACES = ['slack', 'chat', 'web-push', 'email'];
4
+ const keyOf = (job, place) => `${job}:${place}`;
5
+ /** Whether the place only shows what the person asks it for, so it costs nothing to show what is already there (CC20). */
6
+ export function isPullPlace(place) {
7
+ switch (place) {
8
+ case 'chat':
9
+ return true;
10
+ case 'slack':
11
+ case 'web-push':
12
+ case 'email':
13
+ return false;
14
+ }
15
+ }
16
+ export function routingDefaultsOf(onByDefault) {
17
+ return { onByDefault: new Set(onByDefault.map(({ job, place }) => keyOf(job, place))) };
18
+ }
19
+ export function routingOf(routes, defaults) {
20
+ const own = new Map(routes.map((route) => [keyOf(route.job, route.place), route]));
21
+ const isOn = (job, place) => own.get(keyOf(job, place))?.isOn ?? defaults.onByDefault.has(keyOf(job, place));
22
+ return {
23
+ isOn,
24
+ isShowing: (place, { contentType, sentAt }) => {
25
+ const job = jobOf(contentType);
26
+ if (!isOn(job, place)) {
27
+ return false;
28
+ }
29
+ // On by default, a place was never turned on later: it shows everything.
30
+ const turnedOnAt = own.get(keyOf(job, place))?.changedAt;
31
+ return isPullPlace(place) || turnedOnAt === undefined || sentAt.getTime() >= turnedOnAt.getTime();
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/core/people/routing.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAMpD,MAAM,CAAC,MAAM,SAAS,GAAuB,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;AAC/F,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AA+B9F,MAAM,KAAK,GAAG,CAAC,GAAY,EAAE,KAAmB,EAAU,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AAE/E,0HAA0H;AAC1H,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAA+E;IAC/G,OAAO,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAwB,EAAE,QAAyB;IAC3E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,CAAC,GAAY,EAAE,KAAmB,EAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7I,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;YAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,yEAAyE;YACzE,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YACzD,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACpG,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { type Result } from '../shared/result.js';
2
+ import type { BasketEntry, BasketStanding } from './basket.js';
3
+ import type { DealDeps } from './opened-of.js';
4
+ import type { PersonCaller, PersonCrewError } from './person-crew.js';
5
+ import { type BasketDeps, type StandingBasket } from './read-basket.js';
6
+ /** An entry Send skipped and took out: its question withdrawn or replaced by its asker, or dealt with elsewhere first. */
7
+ export interface Skipped {
8
+ readonly questionId: string;
9
+ readonly title: string;
10
+ readonly kind: 'withdrawn' | 'replaced' | 'dealtElsewhere';
11
+ }
12
+ /** What Send did: how many answers are being sent, and the entries it skipped. */
13
+ export interface BasketSent {
14
+ readonly sending: number;
15
+ readonly skipped: Skipped[];
16
+ }
17
+ export type SendBasket = (caller: PersonCaller) => Promise<Result<BasketSent, PersonCrewError>>;
18
+ /**
19
+ * Use case: the person presses Send N answers (section 9, rule 3); no clock
20
+ * sends the basket. Each entry waiting is first stored as sending, then the
21
+ * gateway's sender is woken to send them, each on its own, so a closed page
22
+ * or a restart loses none. An entry whose question its asker withdrew or
23
+ * replaced, or that was answered elsewhere first, is not sent: Send skips it,
24
+ * says so, and takes it out; the question is done as a withdrawn or replaced
25
+ * one is (rule 5). One the fleet refused stays until removed.
26
+ */
27
+ export declare function createSendBasket(deps: BasketDeps & DealDeps & {
28
+ sendNow: () => void;
29
+ }): SendBasket;
30
+ /**
31
+ * Takes an entry not to be sent out of the basket; a question its asker
32
+ * withdrew or replaced, still opened, is done as such, as when the person
33
+ * looks at it (section 9).
34
+ */
35
+ export declare function takeOutUnsent(deps: BasketDeps & DealDeps, taken: {
36
+ caller: PersonCaller;
37
+ basket: StandingBasket;
38
+ entry: BasketEntry;
39
+ standing: BasketStanding;
40
+ }): Promise<void>;
@@ -0,0 +1,60 @@
1
+ import { ok } from '../shared/result.js';
2
+ import { doneIfStale } from './open-delivery.js';
3
+ import { standingBasketOf } from './read-basket.js';
4
+ /**
5
+ * Use case: the person presses Send N answers (section 9, rule 3); no clock
6
+ * sends the basket. Each entry waiting is first stored as sending, then the
7
+ * gateway's sender is woken to send them, each on its own, so a closed page
8
+ * or a restart loses none. An entry whose question its asker withdrew or
9
+ * replaced, or that was answered elsewhere first, is not sent: Send skips it,
10
+ * says so, and takes it out; the question is done as a withdrawn or replaced
11
+ * one is (rule 5). One the fleet refused stays until removed.
12
+ */
13
+ export function createSendBasket(deps) {
14
+ return async (caller) => {
15
+ const basket = await standingBasketOf(deps, caller);
16
+ if (!basket.isOk) {
17
+ return basket;
18
+ }
19
+ const skipped = [];
20
+ let sending = 0;
21
+ for (const { entry, standing } of basket.value.entries) {
22
+ switch (standing.kind) {
23
+ case 'waiting':
24
+ await deps.entries.save({ ...entry, state: 'sending' });
25
+ sending += 1;
26
+ break;
27
+ case 'sending':
28
+ sending += 1;
29
+ break;
30
+ case 'refused':
31
+ break;
32
+ case 'withdrawn':
33
+ case 'replaced':
34
+ case 'dealtElsewhere':
35
+ await takeOutUnsent(deps, { caller, basket: basket.value, entry, standing });
36
+ skipped.push({ questionId: entry.questionId, title: entry.title, kind: standing.kind });
37
+ break;
38
+ }
39
+ }
40
+ if (sending > 0) {
41
+ deps.sendNow();
42
+ }
43
+ await deps.changes.tell({ fleetId: caller.fleetId, shipId: basket.value.crew.shipId });
44
+ return ok({ sending, skipped });
45
+ };
46
+ }
47
+ /**
48
+ * Takes an entry not to be sent out of the basket; a question its asker
49
+ * withdrew or replaced, still opened, is done as such, as when the person
50
+ * looks at it (section 9).
51
+ */
52
+ export async function takeOutUnsent(deps, taken) {
53
+ const { caller, basket, entry, standing } = taken;
54
+ await deps.entries.remove(entry.fleetId, { shipId: entry.shipId, questionId: entry.questionId });
55
+ const looked = basket.opened.find(({ deliveryId }) => deliveryId === entry.deliveryId);
56
+ if (looked !== undefined && (standing.kind === 'withdrawn' || standing.kind === 'replaced')) {
57
+ await doneIfStale(deps, { caller, crew: basket.crew, looked, waiting: basket.waiting, place: 'bridge' });
58
+ }
59
+ }
60
+ //# sourceMappingURL=send-basket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-basket.js","sourceRoot":"","sources":["../../../src/core/people/send-basket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { Clock } from '../shared/clock.js';
2
+ import { type BasketEntries } from './basket.js';
3
+ import type { ItemOutcomes } from './item-outcome.js';
4
+ import type { InboxChanges, OpenedDeliveries, PersonCrews, PersonShipDoor } from './ports.js';
5
+ /** What a round did: answers the fleet stored, kept sending for the next round, and refused. */
6
+ export type SendStoredAnswers = () => Promise<{
7
+ sent: number;
8
+ kept: number;
9
+ refused: number;
10
+ }>;
11
+ interface SendDeps {
12
+ entries: BasketEntries;
13
+ crews: Pick<PersonCrews, 'find'>;
14
+ door: Pick<PersonShipDoor, 'reply' | 'handled'>;
15
+ opened: OpenedDeliveries;
16
+ outcomes: ItemOutcomes;
17
+ changes: InboxChanges;
18
+ clock: Clock;
19
+ }
20
+ /**
21
+ * Use case: the gateway sends what the basket stores as sending (section 9,
22
+ * rule 3), each person ship's entries on its own, in the order added, as
23
+ * the person ship's crew: an answer in reply to its question, under the
24
+ * question's key, so however often it is sent, the fleet stores it once. Each
25
+ * the fleet stored is reported handled, kept answered in Bridge, and out of
26
+ * the basket; one the fleet did not answer stays sending for the next round;
27
+ * one it refused stays in the basket, not sent, saying why. A question
28
+ * answered elsewhere first, or handled before a stop, is sent nothing. It
29
+ * runs at every round and after a restart: what was stored as sending goes
30
+ * on with the same keys, so nothing is lost and nothing is sent twice.
31
+ */
32
+ export declare function createSendStoredAnswers(deps: SendDeps): SendStoredAnswers;
33
+ export {};
@@ -0,0 +1,96 @@
1
+ import { ANSWER_CONTENT_TYPE } from '@aeolus-fleet/common';
2
+ import { answerKeyOf, answerOf } from './basket.js';
3
+ import { isEndedCrew, KEY_UNAVAILABLE } from './person-crew.js';
4
+ /** How many person ships a round reads at a time. */
5
+ const SHIPS_PAGE = 100;
6
+ /**
7
+ * The fleet's codes for a call it did not answer, or could not take now: the
8
+ * answer may have been stored or not, so it is sent again under its key.
9
+ */
10
+ const NOT_ANSWERED = new Set(['UNAVAILABLE', 'SERVICE_UNAVAILABLE', 'INTERNAL_SERVER_ERROR', KEY_UNAVAILABLE]);
11
+ function isNotAnswered(refusal) {
12
+ return NOT_ANSWERED.has(refusal.code) || isEndedCrew(refusal);
13
+ }
14
+ /**
15
+ * Use case: the gateway sends what the basket stores as sending (section 9,
16
+ * rule 3), each person ship's entries on its own, in the order added, as
17
+ * the person ship's crew: an answer in reply to its question, under the
18
+ * question's key, so however often it is sent, the fleet stores it once. Each
19
+ * the fleet stored is reported handled, kept answered in Bridge, and out of
20
+ * the basket; one the fleet did not answer stays sending for the next round;
21
+ * one it refused stays in the basket, not sent, saying why. A question
22
+ * answered elsewhere first, or handled before a stop, is sent nothing. It
23
+ * runs at every round and after a restart: what was stored as sending goes
24
+ * on with the same keys, so nothing is lost and nothing is sent twice.
25
+ */
26
+ export function createSendStoredAnswers(deps) {
27
+ return async () => {
28
+ const counted = { sent: 0, kept: 0, refused: 0 };
29
+ let after = null;
30
+ for (;;) {
31
+ const ships = await deps.entries.sendingShips({ after, limit: SHIPS_PAGE });
32
+ for (const ship of ships) {
33
+ for (const sent of await sendShip(deps, ship)) {
34
+ if (sent !== 'dealtElsewhere') {
35
+ counted[sent] += 1;
36
+ }
37
+ }
38
+ }
39
+ const last = ships.at(-1);
40
+ if (last === undefined || ships.length < SHIPS_PAGE) {
41
+ return counted;
42
+ }
43
+ after = last;
44
+ }
45
+ };
46
+ }
47
+ /** Sends one person ship's entries stored as sending, in the order added, and tells its pages when any changed. */
48
+ async function sendShip(deps, ship) {
49
+ const sending = (await deps.entries.list(ship.fleetId, ship.shipId)).filter(({ state }) => state === 'sending');
50
+ const crew = await deps.crews.find(ship.fleetId, ship.shipId);
51
+ if (crew === undefined) {
52
+ return sending.map(() => 'kept');
53
+ }
54
+ const outcomes = await deps.outcomes.findMany(ship.fleetId, { shipId: ship.shipId, deliveryIds: sending.map(({ deliveryId }) => deliveryId) });
55
+ const isDealt = new Set(outcomes.map(({ deliveryId }) => deliveryId));
56
+ const done = [];
57
+ for (const entry of sending) {
58
+ if (isDealt.has(entry.deliveryId)) {
59
+ await takeOut(deps, entry);
60
+ done.push('dealtElsewhere');
61
+ }
62
+ else {
63
+ done.push(await sendEntry(deps, { crewToken: crew.crewToken, entry }));
64
+ }
65
+ }
66
+ if (done.some((sent) => sent !== 'kept')) {
67
+ await deps.changes.tell(ship);
68
+ }
69
+ return done;
70
+ }
71
+ /** One answer under its question's key; once stored, reported handled and out of the basket. */
72
+ async function sendEntry(deps, sending) {
73
+ const { crewToken, entry } = sending;
74
+ const replied = await deps.door.reply(crewToken, { to: entry.senderShipId, inReplyTo: entry.messageId, contentType: ANSWER_CONTENT_TYPE, payload: JSON.stringify(answerOf(entry)), idempotencyKey: answerKeyOf(entry) });
75
+ if (!replied.isOk && isNotAnswered(replied.error)) {
76
+ return 'kept';
77
+ }
78
+ if (!replied.isOk) {
79
+ await deps.entries.save({ ...entry, state: 'refused', refusal: `${entry.from} did not take the answer: ${replied.error.message}` });
80
+ return 'refused';
81
+ }
82
+ const handled = await deps.door.handled(crewToken, entry.deliveryId);
83
+ // Not answered, it is sent again under its key and reported handled at the next round; refused for good, the answer is stored all the same.
84
+ if (!handled.isOk && isNotAnswered(handled.error)) {
85
+ return 'kept';
86
+ }
87
+ await deps.outcomes.save({ fleetId: entry.fleetId, shipId: entry.shipId, deliveryId: entry.deliveryId, place: 'bridge', kind: 'answered', option: entry.option, at: deps.clock.now() });
88
+ await takeOut(deps, entry);
89
+ return 'sent';
90
+ }
91
+ /** Takes an entry out of the basket with the opened question it answers, which nothing waits on any more. */
92
+ async function takeOut(deps, entry) {
93
+ await deps.opened.remove(entry.fleetId, { shipId: entry.shipId, deliveryId: entry.deliveryId });
94
+ await deps.entries.remove(entry.fleetId, { shipId: entry.shipId, questionId: entry.questionId });
95
+ }
96
+ //# sourceMappingURL=send-stored-answers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-stored-answers.js","sourceRoot":"","sources":["../../../src/core/people/send-stored-answers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * A question its asker withdrew or replaced (decision 0038; Bridge,
3
+ * section 9): stale, no longer answerable, out of the count. A withdrawal
4
+ * or a replacement names the question by its uuid, and only from the ship
5
+ * that asked it. A replacement asks a new question: it is a new item, and
6
+ * the replaced question links to it.
7
+ */
8
+ import type { DeliveryId, ShipId } from '@aeolus-fleet/common';
9
+ export interface Stale {
10
+ readonly kind: 'withdrawn' | 'replaced';
11
+ /** The delivery of the replacement, a new item; none for a withdrawn question. */
12
+ readonly replacementId: DeliveryId | null;
13
+ }
14
+ /** What a delivery to the person ship asks and withdraws, by question uuid, and who sent it. */
15
+ export interface Asking {
16
+ readonly deliveryId: DeliveryId;
17
+ readonly senderShipId: ShipId;
18
+ readonly askedQuestionId: string | null;
19
+ readonly withdrawnQuestionId: string | null;
20
+ }
21
+ /** The delivery that withdraws or replaces the question this one asks, among these; none while it is open. */
22
+ export declare function withdrawerOf(question: Asking, among: readonly Asking[]): Asking | undefined;
23
+ /** Whether the question this one asks is withdrawn or replaced by one of these, and by which replacement. */
24
+ export declare function staleOf(question: Asking, among: readonly Asking[]): Stale | null;
25
+ /** How a question is stale by the delivery that withdraws or replaces it. */
26
+ export declare function staleBy(withdrawer: Asking): Stale;
27
+ /** The question a replacement replaces, among these, from the same asker; none for any other delivery. */
28
+ export declare function replacedBy(replacement: Asking, among: readonly Asking[]): Asking | undefined;
@@ -0,0 +1,26 @@
1
+ /** The delivery that withdraws or replaces the question this one asks, among these; none while it is open. */
2
+ export function withdrawerOf(question, among) {
3
+ const asked = question.askedQuestionId;
4
+ if (asked === null) {
5
+ return undefined;
6
+ }
7
+ return among.find(({ deliveryId, senderShipId, withdrawnQuestionId }) => deliveryId !== question.deliveryId && senderShipId === question.senderShipId && withdrawnQuestionId === asked);
8
+ }
9
+ /** Whether the question this one asks is withdrawn or replaced by one of these, and by which replacement. */
10
+ export function staleOf(question, among) {
11
+ const withdrawer = withdrawerOf(question, among);
12
+ return withdrawer === undefined ? null : staleBy(withdrawer);
13
+ }
14
+ /** How a question is stale by the delivery that withdraws or replaces it. */
15
+ export function staleBy(withdrawer) {
16
+ return withdrawer.askedQuestionId === null ? { kind: 'withdrawn', replacementId: null } : { kind: 'replaced', replacementId: withdrawer.deliveryId };
17
+ }
18
+ /** The question a replacement replaces, among these, from the same asker; none for any other delivery. */
19
+ export function replacedBy(replacement, among) {
20
+ const { askedQuestionId, withdrawnQuestionId } = replacement;
21
+ if (askedQuestionId === null || withdrawnQuestionId === null) {
22
+ return undefined;
23
+ }
24
+ return among.find(({ deliveryId, senderShipId, askedQuestionId: asked }) => deliveryId !== replacement.deliveryId && senderShipId === replacement.senderShipId && asked === withdrawnQuestionId);
25
+ }
26
+ //# sourceMappingURL=stale-question.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stale-question.js","sourceRoot":"","sources":["../../../src/core/people/stale-question.ts"],"names":[],"mappings":"AAuBA,8GAA8G;AAC9G,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAwB;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC;IACvC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,YAAY,KAAK,QAAQ,CAAC,YAAY,IAAI,mBAAmB,KAAK,KAAK,CAAC,CAAC;AAC1L,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,OAAO,CAAC,QAAgB,EAAE,KAAwB;IAChE,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,OAAO,CAAC,UAAkB;IACxC,OAAO,UAAU,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;AACvJ,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,UAAU,CAAC,WAAmB,EAAE,KAAwB;IACtE,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC;IAC7D,IAAI,eAAe,KAAK,IAAI,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,WAAW,CAAC,UAAU,IAAI,YAAY,KAAK,WAAW,CAAC,YAAY,IAAI,KAAK,KAAK,mBAAmB,CAAC,CAAC;AACnM,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * A step outcome (Bridge, CC14): how a step the person was asked ended,
3
+ * done or cannot, with their note if they wrote one, sent to its asker in
4
+ * reply to the step. Its content type and payload are common's
5
+ * stepOutcomeSchema in its release after 0.35.0 (Bridge B2); they move to
6
+ * common's then.
7
+ */
8
+ export declare const STEP_OUTCOME_CONTENT_TYPE = "application/vnd.aeolus.step-outcome+json";
9
+ /** How a step ended: the person did it, or cannot. */
10
+ export type StepOutcomeKind = 'done' | 'cannot';
11
+ /** A note with text, trimmed; none for one empty or of spaces only, so the outcome goes without one. */
12
+ export declare function noteOf(note: string | undefined): string | null;
13
+ /** The step outcome's payload: the step's uuid, the outcome, and the note only when there is one. */
14
+ export declare function stepOutcomePayloadOf(outcome: {
15
+ stepId: string;
16
+ kind: StepOutcomeKind;
17
+ note: string | null;
18
+ }): string;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * A step outcome (Bridge, CC14): how a step the person was asked ended,
3
+ * done or cannot, with their note if they wrote one, sent to its asker in
4
+ * reply to the step. Its content type and payload are common's
5
+ * stepOutcomeSchema in its release after 0.35.0 (Bridge B2); they move to
6
+ * common's then.
7
+ */
8
+ export const STEP_OUTCOME_CONTENT_TYPE = 'application/vnd.aeolus.step-outcome+json';
9
+ /** A note with text, trimmed; none for one empty or of spaces only, so the outcome goes without one. */
10
+ export function noteOf(note) {
11
+ const trimmed = note?.trim() ?? '';
12
+ return trimmed === '' ? null : trimmed;
13
+ }
14
+ /** The step outcome's payload: the step's uuid, the outcome, and the note only when there is one. */
15
+ export function stepOutcomePayloadOf(outcome) {
16
+ return JSON.stringify(outcome.note === null ? { stepId: outcome.stepId, outcome: outcome.kind } : { stepId: outcome.stepId, outcome: outcome.kind, note: outcome.note });
17
+ }
18
+ //# sourceMappingURL=step-outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-outcome.js","sourceRoot":"","sources":["../../../src/core/people/step-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,0CAA0C,CAAC;AAKpF,wGAAwG;AACxG,MAAM,UAAU,MAAM,CAAC,IAAwB;IAC7C,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,oBAAoB,CAAC,OAAuE;IAC1G,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3K,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Clock } from '../shared/clock.js';
2
+ import { type DomainError } from '../shared/errors.js';
3
+ import { type Result } from '../shared/result.js';
4
+ import type { CrewPersonShip } from './crew-person-ship.js';
5
+ import type { ItemJob } from './item-job.js';
6
+ import { type PersonCaller, type PersonCrewError } from './person-crew.js';
7
+ import { type RoutingDefaults, type RoutingPlace, type Routes } from './routing.js';
8
+ export type TurnRoute = (turn: {
9
+ caller: PersonCaller;
10
+ job: ItemJob;
11
+ place: RoutingPlace;
12
+ isOn: boolean;
13
+ }) => Promise<Result<undefined, PersonCrewError | DomainError<'CHANNEL_NOT_OFFERED'>>>;
14
+ /** Whether the gateway can show anything in the place: email where it asks pagasae to send it, web push where it holds push keys. */
15
+ export declare function isOfferedPlace(place: RoutingPlace, offered: {
16
+ isEmailOffered: boolean;
17
+ isWebPushOffered: boolean;
18
+ }): boolean;
19
+ /**
20
+ * Use case: a person turns a place on or off for a job (Bridge, section 8),
21
+ * kept by fleet, person ship, job and place; it applies at once, as the
22
+ * waiter and the chat read it anew each time. A place already as asked is
23
+ * kept as it is, so a push place turned on keeps showing what arrived since
24
+ * then (CC20). Turning a place on is refused where the gateway cannot show
25
+ * anything there.
26
+ */
27
+ export declare function createTurnRoute(deps: {
28
+ crewPersonShip: CrewPersonShip;
29
+ routes: Routes;
30
+ defaults: RoutingDefaults;
31
+ isEmailOffered: boolean;
32
+ isWebPushOffered: boolean;
33
+ clock: Clock;
34
+ }): TurnRoute;
@@ -0,0 +1,42 @@
1
+ import { refuse } from '../shared/errors.js';
2
+ import { ok } from '../shared/result.js';
3
+ import { personCrewOf } from './person-crew.js';
4
+ import { routingOf } from './routing.js';
5
+ /** Whether the gateway can show anything in the place: email where it asks pagasae to send it, web push where it holds push keys. */
6
+ export function isOfferedPlace(place, offered) {
7
+ switch (place) {
8
+ case 'email':
9
+ return offered.isEmailOffered;
10
+ case 'web-push':
11
+ return offered.isWebPushOffered;
12
+ case 'slack':
13
+ case 'chat':
14
+ return true;
15
+ }
16
+ }
17
+ /**
18
+ * Use case: a person turns a place on or off for a job (Bridge, section 8),
19
+ * kept by fleet, person ship, job and place; it applies at once, as the
20
+ * waiter and the chat read it anew each time. A place already as asked is
21
+ * kept as it is, so a push place turned on keeps showing what arrived since
22
+ * then (CC20). Turning a place on is refused where the gateway cannot show
23
+ * anything there.
24
+ */
25
+ export function createTurnRoute(deps) {
26
+ return async ({ caller, job, place, isOn }) => {
27
+ if (isOn && !isOfferedPlace(place, deps)) {
28
+ return refuse('CHANNEL_NOT_OFFERED', place === 'email' ? 'This gateway sends no email' : 'This gateway sends no web push');
29
+ }
30
+ const crew = await personCrewOf(deps.crewPersonShip, caller);
31
+ if (!crew.isOk) {
32
+ return crew;
33
+ }
34
+ const ship = { fleetId: caller.fleetId, shipId: crew.value.shipId };
35
+ if (routingOf(await deps.routes.list(ship), deps.defaults).isOn(job, place) === isOn) {
36
+ return ok(undefined);
37
+ }
38
+ await deps.routes.save({ ...ship, job, place, isOn, changedAt: deps.clock.now() });
39
+ return ok(undefined);
40
+ };
41
+ }
42
+ //# sourceMappingURL=turn-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-route.js","sourceRoot":"","sources":["../../../src/core/people/turn-route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAA2C,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAwD,MAAM,cAAc,CAAC;AAI/F,qIAAqI;AACrI,MAAM,UAAU,cAAc,CAAC,KAAmB,EAAE,OAA+D;IACjH,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,cAAc,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,OAAO,CAAC,gBAAgB,CAAC;QAClC,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAqJ;IACnL,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5C,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC,qBAAqB,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;QAC7H,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpE,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACrF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}