@aeolus-fleet/gateway 0.35.0 → 0.36.1

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 (732) 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/person-waiters.js +3 -1
  225. package/dist/person-waiters.js.map +1 -1
  226. package/dist/round-worker.d.ts +23 -0
  227. package/dist/round-worker.js +38 -0
  228. package/dist/round-worker.js.map +1 -0
  229. package/package.json +3 -3
  230. package/src/adapters/prisma/migrations/20261101090000_item_outcomes/migration.sql +12 -0
  231. package/src/adapters/prisma/migrations/20261101091000_opened_deliveries_content_type/migration.sql +2 -0
  232. package/src/adapters/prisma/migrations/20261101120000_opened_deliveries_questions/migration.sql +3 -0
  233. package/src/adapters/prisma/migrations/20261101150000_basket_entries/migration.sql +25 -0
  234. package/src/adapters/prisma/migrations/20261101180000_opened_deliveries_steps/migration.sql +2 -0
  235. package/src/adapters/prisma/migrations/20261101181000_party_sign_in_notices_steps/migration.sql +2 -0
  236. package/src/adapters/prisma/migrations/20261102090000_routes/migration.sql +11 -0
  237. package/src/adapters/prisma/migrations/20261102091000_slack_posts_unacknowledged/migration.sql +3 -0
  238. package/src/adapters/prisma/migrations/20261102092000_slack_links_routed/migration.sql +2 -0
  239. package/src/adapters/prisma/migrations/20261102093000_email_channels_routed/migration.sql +2 -0
  240. package/src/adapters/prisma/migrations/20261103090000_slack_posts_edited/migration.sql +5 -0
  241. package/src/adapters/prisma/schema.prisma +71 -15
  242. package/web/.next/BUILD_ID +1 -1
  243. package/web/.next/app-path-routes-manifest.json +8 -4
  244. package/web/.next/build-manifest.json +127 -79
  245. package/web/.next/diagnostics/route-bundle-stats.json +215 -143
  246. package/web/.next/fallback-build-manifest.json +3 -3
  247. package/web/.next/prerender-manifest.json +3 -3
  248. package/web/.next/routes-manifest.json +50 -26
  249. package/web/.next/server/app/(console)/bridge/basket/page/app-paths-manifest.json +3 -0
  250. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/basket}/page/build-manifest.json +4 -4
  251. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/basket}/page/next-font-manifest.json +1 -1
  252. package/web/.next/server/app/(console)/bridge/basket/page/server-reference-manifest.json +75 -0
  253. package/web/.next/server/app/(console)/bridge/basket/page.js +25 -0
  254. package/web/.next/server/app/(console)/bridge/basket/page.js.nft.json +1 -0
  255. package/web/.next/server/app/(console)/bridge/basket/page_client-reference-manifest.js +3 -0
  256. package/web/.next/server/app/(console)/bridge/changes/route/app-paths-manifest.json +3 -0
  257. package/web/.next/server/app/(console)/bridge/changes/route.js +8 -0
  258. package/web/.next/server/app/(console)/{overview/focus → bridge/changes}/route.js.nft.json +1 -1
  259. package/web/.next/server/app/(console)/{overview/focus → bridge/changes}/route_client-reference-manifest.js +1 -1
  260. package/web/.next/server/app/(console)/bridge/done/page/app-paths-manifest.json +3 -0
  261. package/web/.next/server/app/(console)/bridge/done/page/build-manifest.json +23 -0
  262. package/web/.next/server/app/(console)/bridge/done/page/next-font-manifest.json +11 -0
  263. package/web/.next/server/app/(console)/bridge/done/page/server-reference-manifest.json +75 -0
  264. package/web/.next/server/app/(console)/bridge/done/page.js +25 -0
  265. package/web/.next/server/app/(console)/bridge/done/page.js.nft.json +1 -0
  266. package/web/.next/server/app/(console)/bridge/done/page_client-reference-manifest.js +3 -0
  267. package/web/.next/server/app/(console)/bridge/focus/route/app-paths-manifest.json +3 -0
  268. package/web/.next/server/app/(console)/bridge/focus/route.js +8 -0
  269. package/web/.next/server/app/(console)/{overview/changes → bridge/focus}/route.js.nft.json +1 -1
  270. package/web/.next/server/app/(console)/bridge/focus/route_client-reference-manifest.js +3 -0
  271. package/web/.next/server/app/(console)/bridge/page/app-paths-manifest.json +3 -0
  272. package/web/.next/server/app/(console)/{overview → bridge}/page/build-manifest.json +4 -4
  273. package/web/.next/server/app/(console)/{overview → bridge}/page/next-font-manifest.json +1 -1
  274. package/web/.next/server/app/(console)/bridge/page/react-loadable-manifest.json +1 -0
  275. package/web/.next/server/app/(console)/bridge/page/server-reference-manifest.json +65 -0
  276. package/web/.next/server/app/(console)/{overview → bridge}/page.js +11 -11
  277. package/web/.next/server/app/(console)/bridge/page.js.map +5 -0
  278. package/web/.next/server/app/(console)/{overview → bridge}/page.js.nft.json +1 -1
  279. package/web/.next/server/app/(console)/bridge/page_client-reference-manifest.js +3 -0
  280. package/web/.next/server/app/(console)/bridge/settings/page/app-paths-manifest.json +3 -0
  281. package/web/.next/server/app/(console)/bridge/settings/page/build-manifest.json +23 -0
  282. package/web/.next/server/app/(console)/bridge/settings/page/next-font-manifest.json +11 -0
  283. package/web/.next/server/app/(console)/bridge/settings/page/react-loadable-manifest.json +1 -0
  284. package/web/.next/server/app/(console)/bridge/settings/page/server-reference-manifest.json +15 -0
  285. package/web/.next/server/app/(console)/bridge/settings/page.js +23 -0
  286. package/web/.next/server/app/(console)/bridge/settings/page.js.map +5 -0
  287. package/web/.next/server/app/(console)/bridge/settings/page.js.nft.json +1 -0
  288. package/web/.next/server/app/(console)/bridge/settings/page_client-reference-manifest.js +3 -0
  289. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +3 -0
  290. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/build-manifest.json +23 -0
  291. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +11 -0
  292. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/react-loadable-manifest.json +1 -0
  293. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +25 -0
  294. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js +25 -0
  295. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js.map +5 -0
  296. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page.js.nft.json +1 -0
  297. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +3 -0
  298. package/web/.next/server/app/(console)/bridge/settings/routing/page/app-paths-manifest.json +3 -0
  299. package/web/.next/server/app/(console)/bridge/settings/routing/page/build-manifest.json +23 -0
  300. package/web/.next/server/app/(console)/bridge/settings/routing/page/next-font-manifest.json +11 -0
  301. package/web/.next/server/app/(console)/bridge/settings/routing/page/react-loadable-manifest.json +1 -0
  302. package/web/.next/server/app/(console)/bridge/settings/routing/page/server-reference-manifest.json +55 -0
  303. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/settings/routing}/page.js +12 -12
  304. package/web/.next/server/app/(console)/bridge/settings/routing/page.js.map +5 -0
  305. package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/settings/routing}/page.js.nft.json +1 -1
  306. package/web/.next/server/app/(console)/bridge/settings/routing/page_client-reference-manifest.js +3 -0
  307. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +4 -4
  308. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  309. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  310. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  311. package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +4 -4
  312. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  313. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +1 -1
  314. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  315. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  316. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +4 -4
  317. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +16 -16
  318. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  319. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  320. package/web/.next/server/app/(console)/outside-parties/[name]/page/build-manifest.json +4 -4
  321. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +8 -8
  322. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  323. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  324. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +4 -4
  325. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +16 -16
  326. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  327. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  328. package/web/.next/server/app/(console)/outside-parties/add/page/build-manifest.json +4 -4
  329. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +10 -10
  330. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  331. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  332. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +4 -4
  333. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  334. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  335. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  336. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +4 -4
  337. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  338. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  339. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  340. package/web/.next/server/app/(console)/outside-parties/page/build-manifest.json +4 -4
  341. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  342. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  343. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  344. package/web/.next/server/app/(console)/parties/page/build-manifest.json +4 -4
  345. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
  346. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  347. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  348. package/web/.next/server/app/(console)/sign-in/failed/page/build-manifest.json +4 -4
  349. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  350. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  351. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  352. package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +4 -4
  353. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +8 -8
  354. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
  355. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
  356. package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +4 -4
  357. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +8 -8
  358. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
  359. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  360. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
  361. package/web/.next/server/app/(console)/slack/page/build-manifest.json +4 -4
  362. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +8 -8
  363. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  364. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  365. package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +4 -4
  366. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +8 -8
  367. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  368. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  369. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  370. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  371. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  372. package/web/.next/server/app/_global-error.html +1 -1
  373. package/web/.next/server/app/_global-error.rsc +1 -1
  374. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  375. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  376. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  377. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  378. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  379. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  380. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  381. package/web/.next/server/app/authorize/failed/page/build-manifest.json +4 -4
  382. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  383. package/web/.next/server/app/authorize/failed/page.js +1 -1
  384. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  385. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  386. package/web/.next/server/app/authorize/pick/page/build-manifest.json +4 -4
  387. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  388. package/web/.next/server/app/authorize/pick/page.js +1 -1
  389. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  390. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  391. package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +4 -4
  392. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  393. package/web/.next/server/app/authorize/waiting/approval/page.js +1 -1
  394. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  395. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  396. package/web/.next/server/app-paths-manifest.json +8 -4
  397. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js +3 -0
  398. package/web/.next/server/chunks/{[root-of-the-server]__1tfyrijwfgqlk._.js → [root-of-the-server]__13mh3krxil59c._.js} +2 -2
  399. package/web/.next/server/chunks/[root-of-the-server]__13mh3krxil59c._.js.map +1 -0
  400. package/web/.next/server/chunks/_05qgg3__4kdbm._.js +3 -0
  401. package/web/.next/server/chunks/_05qgg3__4kdbm._.js.map +1 -0
  402. package/web/.next/server/chunks/_0_um96p6psnqx._.js +4 -4
  403. package/web/.next/server/chunks/_0_um96p6psnqx._.js.map +1 -1
  404. package/web/.next/server/chunks/_1uap5tql2vvsb._.js +3 -0
  405. package/web/.next/server/chunks/{_04is-uopj3op9._.js.map → _1uap5tql2vvsb._.js.map} +1 -1
  406. package/web/.next/server/chunks/_1xf83h9norhws._.js +4 -4
  407. package/web/.next/server/chunks/_1xf83h9norhws._.js.map +1 -1
  408. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +1 -1
  409. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -1
  410. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js +3 -0
  411. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js.map +1 -0
  412. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js +3 -0
  413. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js.map +1 -0
  414. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  415. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  416. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  417. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  418. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  419. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  420. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  421. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  422. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  423. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  424. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
  425. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
  426. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js +3 -0
  427. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js.map +1 -0
  428. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +1 -1
  429. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
  430. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
  431. package/web/.next/server/chunks/ssr/{[root-of-the-server]__179upda-y7uap._.js → [root-of-the-server]__0gnfxe62edx95._.js} +1 -1
  432. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js +3 -0
  433. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js.map +1 -0
  434. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  435. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  436. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
  437. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
  438. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
  439. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
  440. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  441. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  442. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js +4 -0
  443. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js.map +1 -0
  444. package/web/.next/server/chunks/ssr/[root-of-the-server]__1iqxg48po42ig._.js +3 -0
  445. package/web/.next/server/chunks/ssr/[root-of-the-server]__1iqxg48po42ig._.js.map +1 -0
  446. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
  447. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
  448. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js +3 -0
  449. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js.map +1 -0
  450. package/web/.next/server/chunks/ssr/{[root-of-the-server]__04_bc8g0oe4jt._.js → [root-of-the-server]__1yyaeeylnezpi._.js} +1 -1
  451. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  452. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  453. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +4 -4
  454. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  455. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js +4 -0
  456. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js.map +1 -0
  457. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js +3 -0
  458. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js.map +1 -0
  459. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  460. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  461. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  462. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  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/{_1oy13966tft2_._.js → _10-gn6g9yc63s._.js} +2 -2
  466. package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js.map +1 -0
  467. package/web/.next/server/chunks/ssr/{_1pf8x2exvfl1z._.js → _177fdczus39s7._.js} +2 -2
  468. package/web/.next/server/chunks/ssr/_177fdczus39s7._.js.map +1 -0
  469. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  470. package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
  471. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js +1 -1
  472. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +1 -1
  473. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js +3 -0
  474. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js.map +1 -0
  475. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  476. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  477. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js +3 -0
  478. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js.map +1 -0
  479. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  480. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  481. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js +3 -0
  482. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js.map +1 -0
  483. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js +3 -0
  484. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js.map +1 -0
  485. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js +3 -0
  486. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js.map +1 -0
  487. 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
  488. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +1 -0
  489. 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
  490. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js.map +1 -0
  491. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js +3 -0
  492. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js.map +1 -0
  493. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js +3 -0
  494. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js.map +1 -0
  495. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js +3 -0
  496. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js.map +1 -0
  497. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js +3 -0
  498. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js.map +1 -0
  499. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js +3 -0
  500. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js.map +1 -0
  501. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js +3 -0
  502. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js.map +1 -0
  503. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js +3 -0
  504. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js.map +1 -0
  505. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js +1 -1
  506. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js.map +1 -1
  507. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js +3 -0
  508. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js.map +1 -0
  509. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  510. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  511. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js +3 -0
  512. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js.map +1 -0
  513. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js +3 -0
  514. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js.map +1 -0
  515. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js +3 -0
  516. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js.map +1 -0
  517. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js +3 -0
  518. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js.map +1 -0
  519. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js +3 -0
  520. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js.map +1 -0
  521. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js +3 -0
  522. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js.map +1 -0
  523. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js +3 -0
  524. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js.map +1 -0
  525. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js +3 -0
  526. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js.map +1 -0
  527. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js +3 -0
  528. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js.map +1 -0
  529. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js +3 -0
  530. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js.map +1 -0
  531. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js +1 -1
  532. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js +1 -1
  533. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js +3 -0
  534. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js.map +1 -0
  535. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js +3 -0
  536. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js.map +1 -0
  537. package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js +3 -0
  538. package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js.map +1 -0
  539. package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js +3 -0
  540. package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js.map +1 -0
  541. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js +3 -0
  542. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js.map +1 -0
  543. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  544. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  545. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  546. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  547. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  548. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  549. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js +3 -0
  550. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js.map +1 -0
  551. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js +3 -0
  552. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js.map +1 -0
  553. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js +3 -0
  554. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js.map +1 -0
  555. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js +3 -0
  556. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js.map +1 -0
  557. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +3 -0
  558. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map +1 -0
  559. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js +3 -0
  560. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js.map +1 -0
  561. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +3 -0
  562. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -0
  563. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +3 -0
  564. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -0
  565. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +3 -0
  566. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -0
  567. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js +3 -0
  568. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js.map +1 -0
  569. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js +3 -0
  570. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map +1 -0
  571. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js +3 -0
  572. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js.map +1 -0
  573. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  574. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -1
  575. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  576. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  577. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  578. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  579. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  580. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  581. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  582. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  583. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  584. package/web/.next/server/chunks/web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js +3 -0
  585. package/web/.next/server/middleware-build-manifest.js +127 -79
  586. package/web/.next/server/next-font-manifest.js +1 -1
  587. package/web/.next/server/next-font-manifest.json +24 -8
  588. package/web/.next/server/pages/500.html +1 -1
  589. package/web/.next/server/preview-props.json +3 -3
  590. package/web/.next/server/server-reference-manifest.js +1 -1
  591. package/web/.next/server/server-reference-manifest.json +218 -132
  592. package/web/.next/static/chunks/0az9upwm-8_q9.js +1 -0
  593. package/web/.next/static/chunks/0c1tqlbsvq1dj.js +1 -0
  594. package/web/.next/static/chunks/0fh11dkddwf_2.js +1 -0
  595. package/web/.next/static/chunks/0gbozvd_yh421.js +1 -0
  596. package/web/.next/static/chunks/0l9_oie6xi0kd.js +1 -0
  597. package/web/.next/static/chunks/0m512dxdcrv-b.js +1 -0
  598. package/web/.next/static/chunks/1166rxt6h6ilq.js +1 -0
  599. package/web/.next/static/chunks/1485slb5zus5p.js +1 -0
  600. package/web/.next/static/chunks/180aowme095ds.js +1 -0
  601. package/web/.next/static/chunks/{03239gtej3tj0.js → 24olc0btcvn7q.js} +1 -1
  602. package/web/.next/static/chunks/296w-74ry5lzk.js +1 -0
  603. package/web/.next/static/chunks/2hoi73vy1wqpo.js +1 -0
  604. package/web/.next/static/chunks/2mtfca4qk_s34.js +1 -0
  605. package/web/.next/static/chunks/{3ceatffqhpgpu.js → 2z2auwx1s2mgl.js} +1 -1
  606. package/web/.next/static/chunks/397zvdr6xr5pq.js +1 -0
  607. package/web/.next/static/chunks/{2_e-puldye2do.js → 3db90zxmny2y-.js} +1 -1
  608. package/web/.next/static/chunks/3ow9h8hreko-p.css +3 -0
  609. package/web/.next/static/chunks/3pd8pele5x1o9.js +1 -0
  610. package/web/.next/static/chunks/3srfjz42u14tx.js +1 -0
  611. package/web/.next/static/chunks/{0tmvd_zw45u96.js → 3x0p-z3zdrk_b.js} +1 -1
  612. package/web/.next/static/chunks/3yq9jt4p_0uid.js +1 -0
  613. package/web/.next/trace +1 -1
  614. package/web/.next/trace-build +1 -1
  615. package/web/.next/types/routes.d.ts +10 -6
  616. package/web/.next/types/validator.ts +108 -40
  617. package/web/public/wake-worker.js +4 -4
  618. package/dist/adapters/prisma/email-channels.d.ts +0 -4
  619. package/dist/adapters/prisma/email-channels.js +0 -14
  620. package/dist/adapters/prisma/email-channels.js.map +0 -1
  621. package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +0 -946
  622. package/dist/adapters/prisma/generated/models/EmailChannel.js +0 -2
  623. package/dist/adapters/prisma/generated/models/EmailChannel.js.map +0 -1
  624. package/dist/core/people/turn-email-channel.d.ts +0 -21
  625. package/dist/core/people/turn-email-channel.js +0 -22
  626. package/dist/core/people/turn-email-channel.js.map +0 -1
  627. package/dist/core/slack/show-all-in-slack.d.ts +0 -16
  628. package/dist/core/slack/show-all-in-slack.js +0 -18
  629. package/dist/core/slack/show-all-in-slack.js.map +0 -1
  630. package/web/.next/server/app/(console)/overview/changes/route/app-paths-manifest.json +0 -3
  631. package/web/.next/server/app/(console)/overview/changes/route.js +0 -8
  632. package/web/.next/server/app/(console)/overview/changes/route_client-reference-manifest.js +0 -3
  633. package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +0 -3
  634. package/web/.next/server/app/(console)/overview/focus/route.js +0 -8
  635. package/web/.next/server/app/(console)/overview/page/app-paths-manifest.json +0 -3
  636. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +0 -95
  637. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +0 -3
  638. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/app-paths-manifest.json +0 -3
  639. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +0 -25
  640. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +0 -3
  641. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +0 -3
  642. package/web/.next/server/chunks/1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js +0 -3
  643. package/web/.next/server/chunks/[root-of-the-server]__1tfyrijwfgqlk._.js.map +0 -1
  644. package/web/.next/server/chunks/_04is-uopj3op9._.js +0 -3
  645. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +0 -3
  646. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +0 -1
  647. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +0 -3
  648. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +0 -1
  649. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js +0 -4
  650. package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js.map +0 -1
  651. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js +0 -3
  652. package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js.map +0 -1
  653. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js +0 -3
  654. package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js.map +0 -1
  655. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +0 -3
  656. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +0 -1
  657. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js +0 -3
  658. package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js.map +0 -1
  659. package/web/.next/server/chunks/ssr/_1oy13966tft2_._.js.map +0 -1
  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/3l5jtag3-fukc.js +0 -1
  714. package/web/.next/static/chunks/3rxg2mdhxd6yt.js +0 -1
  715. package/web/.next/static/chunks/3v6tr952p9dba.js +0 -1
  716. /package/web/.next/server/app/(console)/{overview → bridge/basket}/page/react-loadable-manifest.json +0 -0
  717. /package/web/.next/server/app/(console)/{overview → bridge/basket}/page.js.map +0 -0
  718. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route/build-manifest.json +0 -0
  719. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route/server-reference-manifest.json +0 -0
  720. /package/web/.next/server/app/(console)/{overview → bridge}/changes/route.js.map +0 -0
  721. /package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/done}/page/react-loadable-manifest.json +0 -0
  722. /package/web/.next/server/app/(console)/{overview/requests/[requestId] → bridge/done}/page.js.map +0 -0
  723. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route/build-manifest.json +0 -0
  724. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route/server-reference-manifest.json +0 -0
  725. /package/web/.next/server/app/(console)/{overview → bridge}/focus/route.js.map +0 -0
  726. /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
  727. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__179upda-y7uap._.js.map → [root-of-the-server]__0gnfxe62edx95._.js.map} +0 -0
  728. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__04_bc8g0oe4jt._.js.map → [root-of-the-server]__1yyaeeylnezpi._.js.map} +0 -0
  729. /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
  730. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → CMppMkysNciqc8k4TWwia}/_buildManifest.js +0 -0
  731. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → CMppMkysNciqc8k4TWwia}/_clientMiddlewareManifest.js +0 -0
  732. /package/web/.next/static/{R_nPUtDcDp1BPV3QHhaMZ → CMppMkysNciqc8k4TWwia}/_ssgManifest.js +0 -0
@@ -1,8 +1,11 @@
1
1
  import { refuse } from '../shared/errors.js';
2
2
  import { ok } from '../shared/result.js';
3
3
  import { inboxEntryOf, titleOf } from './inbox-entry.js';
4
- import { asPersonCrew, withOwnRefusal } from './person-crew.js';
4
+ import { asPersonCrew, KEY_UNAVAILABLE, SEALED_MESSAGE, withOwnRefusal } from './person-crew.js';
5
+ import { jobOf } from './item-job.js';
6
+ import { handledOf } from './opened-of.js';
5
7
  import { waitingFor } from './read-inbox.js';
8
+ import { replacedBy, staleBy, withdrawerOf } from './stale-question.js';
6
9
  /**
7
10
  * Use case: a person opens one delivery that waits for their person ship
8
11
  * (Q20). Opening is their own act, so the gateway, as the ship's crew,
@@ -12,39 +15,117 @@ import { waitingFor } from './read-inbox.js';
12
15
  * opened, from any client, opens again whole as the fleet reads it again,
13
16
  * never from a copy, until they answer it or are done (aeolus-fleet #1046).
14
17
  * Once acknowledged, the person's pages are told their inbox changed.
18
+ * Seeing an alert or a notice is all it asks (Bridge, CC16): it is reported
19
+ * handled at once, seen where the person saw it; one the fleet did not take
20
+ * handled for stays opened, and opening it again tries once more. So is
21
+ * looking at a question its asker withdrew or replaced (Bridge, section 9):
22
+ * it is shown stale and is done, withdrawn with its withdrawal, or replaced;
23
+ * the replacement is a new item that still waits. Opening a replacement is
24
+ * done with the question it replaces too.
15
25
  */
16
26
  export function createOpenDelivery(deps) {
17
- return async ({ caller, deliveryId }) => {
27
+ return async ({ caller, deliveryId, place }) => {
18
28
  const waiting = await waitingFor(deps, caller);
19
29
  if (!waiting.isOk) {
20
30
  return waiting;
21
31
  }
22
32
  const delivery = waiting.value.deliveries.find((each) => each.deliveryId === deliveryId);
23
33
  if (!delivery) {
24
- return openedAgain(deps, { caller, crew: waiting.value.crew, deliveryId });
34
+ return openedAgain(deps, { caller, crew: waiting.value.crew, deliveryId, place, waiting: waiting.value.deliveries });
25
35
  }
26
- await deps.opened.save({
27
- fleetId: caller.fleetId,
28
- shipId: waiting.value.crew.shipId,
29
- deliveryId: delivery.deliveryId,
30
- messageId: delivery.messageId,
31
- senderShipId: delivery.senderShipId,
32
- from: delivery.senderName,
33
- title: titleOf(delivery),
34
- sentAt: delivery.sentAt,
35
- openedAt: deps.clock.now(),
36
- });
37
- const acknowledged = await asPersonCrew(deps, { caller, run: (crew) => deps.door.ack(crew.crewToken, delivery.deliveryId) });
36
+ const kept = keptOf(deps, { caller, shipId: waiting.value.crew.shipId, delivery });
37
+ const acknowledged = await seenNow(deps, { caller, kept });
38
38
  if (!acknowledged.isOk) {
39
39
  return acknowledged;
40
40
  }
41
- await deps.changes.tell({ fleetId: caller.fleetId, shipId: waiting.value.crew.shipId });
42
- return ok(viewOf(delivery));
41
+ await seenIfAllItAsks(deps, { caller, opened: kept, place });
42
+ const stale = await doneIfStale(deps, { caller, crew: waiting.value.crew, looked: kept, waiting: waiting.value.deliveries, place });
43
+ return ok({ ...viewOf(delivery), stale });
43
44
  };
44
45
  }
46
+ /** What the gateway keeps of a delivery the person opens: what their answer and their lists need, never its payload. */
47
+ function keptOf(deps, opening) {
48
+ const { caller, shipId, delivery } = opening;
49
+ return {
50
+ fleetId: caller.fleetId,
51
+ shipId,
52
+ deliveryId: delivery.deliveryId,
53
+ messageId: delivery.messageId,
54
+ senderShipId: delivery.senderShipId,
55
+ from: delivery.senderName,
56
+ title: titleOf(delivery),
57
+ contentType: delivery.contentType,
58
+ askedQuestionId: delivery.askedQuestionId,
59
+ withdrawnQuestionId: delivery.withdrawnQuestionId,
60
+ stepId: delivery.stepId,
61
+ sentAt: delivery.sentAt,
62
+ openedAt: deps.clock.now(),
63
+ };
64
+ }
65
+ /** Keeps it opened, then acknowledges it for the person and tells their pages their inbox changed. */
66
+ async function seenNow(deps, seen) {
67
+ const { caller, kept } = seen;
68
+ await deps.opened.save(kept);
69
+ const acknowledged = await asPersonCrew(deps, { caller, run: (crew) => deps.door.ack(crew.crewToken, kept.deliveryId) });
70
+ if (!acknowledged.isOk) {
71
+ return acknowledged;
72
+ }
73
+ await deps.changes.tell({ fleetId: caller.fleetId, shipId: kept.shipId });
74
+ return ok(undefined);
75
+ }
76
+ /**
77
+ * The person looked at a delivery (Bridge, section 9): a question its asker
78
+ * withdrew is done as withdrawn, and its withdrawal as seen; one replaced is
79
+ * done as replaced. A replacement is done with the question it replaces.
80
+ * What the fleet does not take now waits for the next look.
81
+ */
82
+ export async function doneIfStale(deps, look) {
83
+ const { caller, crew, looked, waiting, place } = look;
84
+ const opened = await deps.opened.list(caller.fleetId, crew.shipId);
85
+ const among = [...waiting, ...opened.filter(({ deliveryId }) => deliveryId !== looked.deliveryId)];
86
+ const withEach = { caller, crew, waiting, opened, place };
87
+ const replaced = replacedBy(looked, among);
88
+ if (replaced !== undefined) {
89
+ await doneWith(deps, { ...withEach, deliveryId: replaced.deliveryId, kind: 'replaced' });
90
+ }
91
+ const withdrawer = withdrawerOf(looked, among);
92
+ if (withdrawer === undefined) {
93
+ return null;
94
+ }
95
+ const stale = staleBy(withdrawer);
96
+ await handledOf(deps, { caller, delivery: looked, as: { place, kind: stale.kind, option: null } });
97
+ if (stale.kind === 'withdrawn') {
98
+ await doneWith(deps, { ...withEach, deliveryId: withdrawer.deliveryId, kind: 'seen' });
99
+ }
100
+ return stale;
101
+ }
102
+ /** Reports a delivery the person did not open themselves handled, acknowledging it first while it still waits. */
103
+ async function doneWith(deps, done) {
104
+ const { caller, crew, waiting, opened, deliveryId, kind, place } = done;
105
+ let kept = opened.find((each) => each.deliveryId === deliveryId);
106
+ if (kept === undefined) {
107
+ const delivery = waiting.find((each) => each.deliveryId === deliveryId);
108
+ if (delivery === undefined) {
109
+ return;
110
+ }
111
+ kept = keptOf(deps, { caller, shipId: crew.shipId, delivery });
112
+ const acknowledged = await seenNow(deps, { caller, kept });
113
+ if (!acknowledged.isOk) {
114
+ return;
115
+ }
116
+ }
117
+ await handledOf(deps, { caller, delivery: kept, as: { place, kind, option: null } });
118
+ }
119
+ /** Reports an alert or a notice handled once seen (CC16); any other delivery waits on the person still. */
120
+ async function seenIfAllItAsks(deps, seen) {
121
+ const { caller, opened, place } = seen;
122
+ if (opened.contentType !== null && jobOf(opened.contentType) === 'stay-aware') {
123
+ await handledOf(deps, { caller, delivery: opened, as: { place, kind: 'seen', option: null } });
124
+ }
125
+ }
45
126
  /** A delivery the person opened before, as the fleet reads it again, acknowledging nothing. */
46
127
  async function openedAgain(deps, asked) {
47
- const { caller, crew, deliveryId } = asked;
128
+ const { caller, crew, deliveryId, place, waiting } = asked;
48
129
  const opened = await deps.opened.find(caller.fleetId, { shipId: crew.shipId, deliveryId });
49
130
  if (!opened) {
50
131
  return refuse('NO_SUCH_DELIVERY', `No delivery ${deliveryId} waits for you or is opened: read your inbox again`);
@@ -54,7 +135,15 @@ async function openedAgain(deps, asked) {
54
135
  return reread;
55
136
  }
56
137
  const delivery = reread.value.value;
57
- return delivery.isOk ? ok(viewOf(delivery.value)) : refuse('NO_SUCH_DELIVERY', `The fleet no longer holds it opened: ${delivery.error.message}`);
138
+ if (!delivery.isOk && delivery.error.code === KEY_UNAVAILABLE) {
139
+ return refuse('KEY_UNAVAILABLE', SEALED_MESSAGE);
140
+ }
141
+ if (!delivery.isOk) {
142
+ return refuse('NO_SUCH_DELIVERY', `The fleet no longer holds it opened: ${delivery.error.message}`);
143
+ }
144
+ await seenIfAllItAsks(deps, { caller, opened, place });
145
+ const stale = await doneIfStale(deps, { caller, crew, looked: opened, waiting, place });
146
+ return ok({ ...viewOf(delivery.value), stale });
58
147
  }
59
148
  function viewOf(delivery) {
60
149
  return { ...inboxEntryOf(delivery), contentType: delivery.contentType, payload: delivery.payload, meetingId: delivery.meetingId };
@@ -1 +1 @@
1
- {"version":3,"file":"open-delivery.js","sourceRoot":"","sources":["../../../src/core/people/open-delivery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open-delivery.js","sourceRoot":"","sources":["../../../src/core/people/open-delivery.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,55 @@
1
+ import type { Clock } from '../shared/clock.js';
1
2
  import { type DomainError } from '../shared/errors.js';
2
3
  import { type Result } from '../shared/result.js';
3
4
  import type { CrewPersonShip } from './crew-person-ship.js';
4
5
  import { type PersonCaller, type PersonCrewError } from './person-crew.js';
6
+ import { type ItemOutcome, type ItemOutcomes, type OutcomeKind, type Place } from './item-outcome.js';
5
7
  import type { InboxChanges, OpenedDeliveries, OpenedDelivery, PersonCrews, PersonShipDoor } from './ports.js';
6
8
  /** What a person dealt with a delivery as: answered, or done with it. */
7
9
  export interface Dealt {
8
10
  readonly deliveryId: string;
9
11
  readonly isHandled: true;
10
12
  }
11
- export type DealtError = PersonCrewError | DomainError<'NO_SUCH_DELIVERY'>;
12
- /** A delivery the caller opened on their person ship. */
13
+ export type DealtError = PersonCrewError | DomainError<'NO_SUCH_DELIVERY' | 'ALREADY_DECIDED'>;
14
+ /**
15
+ * A delivery the caller opened on their person ship, to act on. One whose
16
+ * job another place ended first, such as a question answered in Slack, is
17
+ * refused saying where, so nothing is sent twice: one answer per question
18
+ * (Bridge, section 9). Seen alone ends nothing but a stay-aware item's job.
19
+ */
13
20
  export declare function openedOf(deps: {
14
21
  crewPersonShip: CrewPersonShip;
15
22
  opened: OpenedDeliveries;
23
+ outcomes: Pick<ItemOutcomes, 'findMany'>;
16
24
  }, asked: {
17
25
  caller: PersonCaller;
18
26
  deliveryId: string;
19
27
  }): Promise<Result<OpenedDelivery, DealtError>>;
20
- /**
21
- * Reports the delivery handled, then forgets it and tells the person's pages
22
- * their inbox changed; kept while the fleet does not take it, so the person
23
- * can go on again.
24
- */
25
- export declare function handledOf(deps: {
28
+ /** Where and how another place ended an item first, as the person is told when they act on it again: Already answered in Slack: option 2. */
29
+ export declare function alreadyTextOf(outcome: Pick<ItemOutcome, 'place' | 'kind' | 'option'>): string;
30
+ /** What the person did with a delivery, and where (Bridge, CC4). */
31
+ export interface DealtAs {
32
+ readonly place: Place;
33
+ readonly kind: OutcomeKind;
34
+ readonly option: number | null;
35
+ }
36
+ /** What dealing with a delivery needs: the fleet as the person ship's crew, what the person opened, their pages, and the outcomes kept. */
37
+ export interface DealDeps {
26
38
  crewPersonShip: CrewPersonShip;
27
39
  crews: PersonCrews;
28
40
  door: PersonShipDoor;
29
41
  opened: OpenedDeliveries;
30
42
  changes: InboxChanges;
31
- }, dealt: {
43
+ outcomes: ItemOutcomes;
44
+ clock: Clock;
45
+ }
46
+ /**
47
+ * Reports the delivery handled, then keeps what came of it and where,
48
+ * forgets it and tells the person's pages their inbox changed; kept while
49
+ * the fleet does not take it, so the person can go on again.
50
+ */
51
+ export declare function handledOf(deps: DealDeps, dealt: {
32
52
  caller: PersonCaller;
33
53
  delivery: OpenedDelivery;
54
+ as: DealtAs;
34
55
  }): Promise<Result<Dealt, DealtError>>;
@@ -1,23 +1,43 @@
1
+ import { idSchema } from '@aeolus-fleet/common';
1
2
  import { refuse } from '../shared/errors.js';
2
3
  import { ok } from '../shared/result.js';
3
4
  import { asPersonCrew, personCrewOf, withOwnRefusal } from './person-crew.js';
4
- /** A delivery the caller opened on their person ship. */
5
+ import { outcomeTextOf } from './item-outcome.js';
6
+ /** The words with their first letter small, as they go on in a sentence. */
7
+ function lowerFirst(text) {
8
+ return text.charAt(0).toLowerCase() + text.slice(1);
9
+ }
10
+ /**
11
+ * A delivery the caller opened on their person ship, to act on. One whose
12
+ * job another place ended first, such as a question answered in Slack, is
13
+ * refused saying where, so nothing is sent twice: one answer per question
14
+ * (Bridge, section 9). Seen alone ends nothing but a stay-aware item's job.
15
+ */
5
16
  export async function openedOf(deps, asked) {
6
17
  const { caller, deliveryId } = asked;
7
18
  const crew = await personCrewOf(deps.crewPersonShip, caller);
8
19
  if (!crew.isOk) {
9
20
  return crew;
10
21
  }
22
+ const named = idSchema('delivery').safeParse(deliveryId);
23
+ const [earlier] = named.success ? await deps.outcomes.findMany(caller.fleetId, { shipId: crew.value.shipId, deliveryIds: [named.data] }) : [];
24
+ if (earlier !== undefined && earlier.kind !== 'seen') {
25
+ return refuse('ALREADY_DECIDED', alreadyTextOf(earlier));
26
+ }
11
27
  const delivery = await deps.opened.find(caller.fleetId, { shipId: crew.value.shipId, deliveryId });
12
28
  if (!delivery) {
13
29
  return refuse('NO_SUCH_DELIVERY', `You have no opened delivery ${deliveryId}: open it from your inbox first`);
14
30
  }
15
31
  return ok(delivery);
16
32
  }
33
+ /** Where and how another place ended an item first, as the person is told when they act on it again: Already answered in Slack: option 2. */
34
+ export function alreadyTextOf(outcome) {
35
+ return `Already ${lowerFirst(outcomeTextOf(outcome))}. Nothing is sent.`;
36
+ }
17
37
  /**
18
- * Reports the delivery handled, then forgets it and tells the person's pages
19
- * their inbox changed; kept while the fleet does not take it, so the person
20
- * can go on again.
38
+ * Reports the delivery handled, then keeps what came of it and where,
39
+ * forgets it and tells the person's pages their inbox changed; kept while
40
+ * the fleet does not take it, so the person can go on again.
21
41
  */
22
42
  export async function handledOf(deps, dealt) {
23
43
  const { caller, delivery } = dealt;
@@ -28,6 +48,7 @@ export async function handledOf(deps, dealt) {
28
48
  if (!handled.value.value.isOk) {
29
49
  return refuse('FLEET_UNAVAILABLE', `The fleet did not take that you dealt with it: ${handled.value.value.error.message}. Try again`);
30
50
  }
51
+ await deps.outcomes.save({ fleetId: delivery.fleetId, shipId: delivery.shipId, deliveryId: delivery.deliveryId, ...dealt.as, at: deps.clock.now() });
31
52
  await deps.opened.remove(delivery.fleetId, { shipId: delivery.shipId, deliveryId: delivery.deliveryId });
32
53
  await deps.changes.tell({ fleetId: delivery.fleetId, shipId: delivery.shipId });
33
54
  return ok({ deliveryId: delivery.deliveryId, isHandled: true });
@@ -1 +1 @@
1
- {"version":3,"file":"opened-of.js","sourceRoot":"","sources":["../../../src/core/people/opened-of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAA2C,MAAM,kBAAkB,CAAC;AAWvH,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAkE,EAClE,KAAmD;IAEnD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,UAAU,iCAAiC,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAmI,EACnI,KAAyD;IAEzD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5I,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,mBAAmB,EAAE,kDAAkD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IACvI,CAAC;IACD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACzG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"opened-of.js","sourceRoot":"","sources":["../../../src/core/people/opened-of.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export interface PersonCrewToken {
26
26
  readonly shipId: ShipId;
27
27
  readonly crewToken: string;
28
28
  }
29
- export type PersonCrewError = DomainError<'NOT_A_PERSON' | 'SIGNED_OUT' | 'FLEET_UNAVAILABLE'>;
29
+ export type PersonCrewError = DomainError<'NOT_A_PERSON' | 'SIGNED_OUT' | 'FLEET_UNAVAILABLE' | 'KEY_UNAVAILABLE'>;
30
30
  /** Whether the fleet refused a call because the crew token no longer works. */
31
31
  export declare function isEndedCrew(refusal: FleetRefusal): boolean;
32
32
  /** The crew of the caller's person ship, or why there is none, said so the person's model can tell them. */
@@ -46,6 +46,10 @@ export declare function asPersonCrew<T>(deps: {
46
46
  crew: PersonCrewToken;
47
47
  value: T;
48
48
  }, PersonCrewError>>;
49
+ /** The fleet's code for a sealed fleet whose company key core cannot reach (decision 0068): nothing was claimed, so the message waits. */
50
+ export declare const KEY_UNAVAILABLE = "KEY_UNAVAILABLE";
51
+ /** What a person is told when the fleet cannot unseal a message now. */
52
+ export declare const SEALED_MESSAGE = "The message is sealed and the fleet's company key is not reachable: try again later. Nothing is lost; it waits.";
49
53
  /**
50
54
  * A fleet call whose refusal the caller says itself, as a value: only a crew
51
55
  * that no longer works stays a refusal, so asPersonCrew crews again.
@@ -51,7 +51,14 @@ export async function asPersonCrew(deps, call) {
51
51
  const retried = await run(again.value);
52
52
  return retried.isOk ? ok({ crew: again.value, value: retried.value }) : fleetDidNotAnswer(retried.error);
53
53
  }
54
+ /** The fleet's code for a sealed fleet whose company key core cannot reach (decision 0068): nothing was claimed, so the message waits. */
55
+ export const KEY_UNAVAILABLE = 'KEY_UNAVAILABLE';
56
+ /** What a person is told when the fleet cannot unseal a message now. */
57
+ export const SEALED_MESSAGE = "The message is sealed and the fleet's company key is not reachable: try again later. Nothing is lost; it waits.";
54
58
  function fleetDidNotAnswer(refusal) {
59
+ if (refusal.code === KEY_UNAVAILABLE) {
60
+ return refuse('KEY_UNAVAILABLE', SEALED_MESSAGE);
61
+ }
55
62
  return refuse('FLEET_UNAVAILABLE', `The fleet did not answer: ${refusal.message}`);
56
63
  }
57
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"person-crew.js","sourceRoot":"","sources":["../../../src/core/people/person-crew.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"person-crew.js","sourceRoot":"","sources":["../../../src/core/people/person-crew.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,11 @@
3
3
  * messaging (decisions 0054, 0057): the fleet's calls it makes as their
4
4
  * account, and the one crew every client of the person shares.
5
5
  */
6
- import type { DeliveryId, FleetId, MeetingId, MessageId, ShipId, ShipKind } from '@aeolus-fleet/common';
6
+ import type { DeliveryId, DeliveryState, FleetId, MeetingId, MessageId, ShipId, ShipKind } from '@aeolus-fleet/common';
7
7
  import type { FleetRefusal } from '../connection/ports.js';
8
8
  import type { DiscoveredStatement } from '../mcp-in/ports.js';
9
9
  import type { Result } from '../shared/result.js';
10
+ import type { Routing } from './routing.js';
10
11
  /** A call the gateway makes for an account: the account's token beside the gateway's own crew token, so the account acts through the gateway's ship. */
11
12
  export interface AccountCall {
12
13
  readonly crewToken: string;
@@ -74,8 +75,14 @@ export interface PersonDelivery {
74
75
  readonly senderName: string;
75
76
  readonly contentType: string;
76
77
  readonly payload: string;
77
- /** The title of a question (the question content type), read at the edge; none for any other message. */
78
- readonly questionTitle: string | null;
78
+ /** The headline of a question (its title), a step (its title), an alert or a notice, read at the edge; none for any other message. */
79
+ readonly headline: string | null;
80
+ /** The uuid of the question it asks (decision 0038): a question's own, a replacement's new one; none for any other message. */
81
+ readonly askedQuestionId: string | null;
82
+ /** The uuid of the question it withdraws or replaces, from the same asker; none for any other message. */
83
+ readonly withdrawnQuestionId: string | null;
84
+ /** The uuid of the step it asks (Bridge, CC14); none for any other message. */
85
+ readonly stepId: string | null;
79
86
  readonly sentAt: Date;
80
87
  readonly inReplyTo: MessageId | null;
81
88
  /** The meeting its message was contributed to or tells of; none outside a meeting (decision 0061). */
@@ -85,6 +92,16 @@ export interface PersonDelivery {
85
92
  export interface PushedPersonDelivery extends PersonDelivery {
86
93
  readonly handOverNumber: number | null;
87
94
  }
95
+ /** A delivery as the person ship's record answers it: with its state; in a sealed fleet, a payload whose key cannot be had is empty and marked unreadable. */
96
+ export interface RecordedPersonDelivery extends PersonDelivery {
97
+ readonly state: DeliveryState;
98
+ readonly isPayloadUnreadable: boolean;
99
+ }
100
+ /** A page of the person ship's record, newest first, and the cursor of the next; null on the last. */
101
+ export interface RecordPage {
102
+ readonly items: readonly RecordedPersonDelivery[];
103
+ readonly nextCursor: DeliveryId | null;
104
+ }
88
105
  /** What a person ship may send to now, as the fleet's discover answers it: each ship by name, with what it offers, and each type. */
89
106
  export interface PersonDiscovery {
90
107
  readonly ships: readonly {
@@ -128,6 +145,11 @@ export interface PersonShipDoor {
128
145
  max: number;
129
146
  shouldSkipHanded?: boolean;
130
147
  }): Promise<Result<PushedPersonDelivery[], FleetRefusal>>;
148
+ /** A page of the ship's record (Bridge, CC12): its deliveries in every state and across its leases, newest first, after the cursor; records nothing. */
149
+ record(crewToken: string, page: {
150
+ cursor: DeliveryId | null;
151
+ limit: number;
152
+ }): Promise<Result<RecordPage, FleetRefusal>>;
131
153
  /** Acknowledges a delivery the person opened: their own act confirms it (interop 5.1). */
132
154
  ack(crewToken: string, deliveryId: DeliveryId): Promise<Result<undefined, FleetRefusal>>;
133
155
  /** Reads a delivery the ship acknowledged again, whole, while it is not handled, recording nothing (decision 0040). */
@@ -164,7 +186,7 @@ export interface PersonShipDoor {
164
186
  * A delivery a person opened, as the gateway keeps it until they deal with
165
187
  * it (Q28 (a)): what their answer needs once the delivery is acknowledged,
166
188
  * its message and sender, and what their inbox lists, its title and when it
167
- * was sent, never its payload. It is the person ship's, so every client of
189
+ * was sent, and the questions it asks and withdraws, never its payload. It is the person ship's, so every client of
168
190
  * the person finds it.
169
191
  */
170
192
  export interface OpenedDelivery {
@@ -175,6 +197,13 @@ export interface OpenedDelivery {
175
197
  readonly senderShipId: ShipId;
176
198
  readonly from: string;
177
199
  readonly title: string;
200
+ /** Its content type, which names its job (Bridge, CC10); none for one opened before the gateway kept it. */
201
+ readonly contentType: string | null;
202
+ /** The uuid of the question it asks, and of the one it withdraws or replaces (decision 0038), as its payload named them; none otherwise. */
203
+ readonly askedQuestionId: string | null;
204
+ readonly withdrawnQuestionId: string | null;
205
+ /** The uuid of the step it asks (Bridge, CC14), as its payload named it; none otherwise. */
206
+ readonly stepId: string | null;
178
207
  readonly sentAt: Date;
179
208
  readonly openedAt: Date;
180
209
  }
@@ -204,12 +233,14 @@ export type WakeChannelName = 'email' | 'web-push';
204
233
  export interface ShownElsewhere {
205
234
  /**
206
235
  * Finishes what an earlier wake left unfinished, then shows what it shows
207
- * of the fresh deliveries: the ones it showed, and whether any is left
208
- * unfinished, so the wake is tried again.
236
+ * of the fresh deliveries, as the person routed their jobs (Bridge,
237
+ * section 8): the ones it showed, and whether any is left unfinished, so
238
+ * the wake is tried again.
209
239
  */
210
240
  show(ship: PersonShip, wake: {
211
241
  crewToken: string;
212
242
  fresh: readonly PushedPersonDelivery[];
243
+ routing: Routing;
213
244
  }): Promise<Result<ShownThere, FleetRefusal>>;
214
245
  }
215
246
  /** What a place beyond the pages showed at a wake. */
@@ -225,14 +256,14 @@ export interface WakeWindow {
225
256
  }
226
257
  /**
227
258
  * Outbound port: one way to wake a person (wake a person, W1, W4): it says
228
- * only that something waits in the fleet, with the overview's link, and
259
+ * only that something waits in the fleet, with Bridge's link, and
229
260
  * goes out at most once per its window (W3, W10).
230
261
  */
231
262
  export interface WakeChannel {
232
263
  readonly name: WakeChannelName;
233
264
  /** The least time between two wakes it sends one person ship, from the gateway's configuration (W10). */
234
265
  readonly windowMs: number;
235
- /** Whether the person turned it on (W8): nothing is on by default. */
266
+ /** Whether it reaches the person now, as web push does while a browser of theirs takes wakes; which jobs it wakes for is routed per job (Bridge, section 8). */
236
267
  isOn(ship: PersonShip): Promise<boolean>;
237
268
  /**
238
269
  * Sends the wake: whether it went out. A refusal for good (refused) cannot be fixed by trying again; unavailable can succeed later.
@@ -252,14 +283,6 @@ export interface WakesSent {
252
283
  sentAt: Date;
253
284
  }): Promise<void>;
254
285
  }
255
- /** Outbound port: whether each person turned email on to be woken for their person ship (W8), by fleet and person ship. */
256
- export interface EmailChannels {
257
- isOn(ship: PersonShip): Promise<boolean>;
258
- turn(ship: PersonShip, switched: {
259
- isOn: boolean;
260
- at: Date;
261
- }): Promise<void>;
262
- }
263
286
  /** A page of a person in focus (wake a person, W6): by its own id, with when it was last seen in focus. */
264
287
  export interface FocusedPage {
265
288
  readonly fleetId: FleetId;
@@ -279,7 +302,7 @@ export interface FocusedPages {
279
302
  * A browser a person turned web push on in (wake a person, W8): its push
280
303
  * service's endpoint and keys, and the fleet's name its wakes say, as the
281
304
  * person's sign-in named it when they turned it on. A subscription its push
282
- * service said is gone takes no wake again, and the overview says so.
305
+ * service said is gone takes no wake again, and Bridge's settings say so.
283
306
  */
284
307
  export interface WebPushSubscription {
285
308
  readonly fleetId: FleetId;
@@ -311,10 +334,10 @@ export interface WebPushSubscriptions {
311
334
  endpoint: string;
312
335
  }): Promise<void>;
313
336
  }
314
- /** What a wake says (W4): something waits in the fleet, by its name, and the link to the gateway's overview. Nothing else. */
337
+ /** What a wake says (W4): something waits in the fleet, by its name, and the link to Bridge. Nothing else. */
315
338
  export interface Wake {
316
339
  readonly fleetName: string;
317
- readonly overviewUrl: string;
340
+ readonly bridgeUrl: string;
318
341
  }
319
342
  /** How a push service took a wake: sent, gone (it answered 404 or 410: the subscription ended), or failed otherwise. */
320
343
  export type WebPushSent = 'sent' | 'gone' | 'failed';
@@ -0,0 +1,39 @@
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 BasketEntries } from './basket.js';
5
+ import type { CrewPersonShip } from './crew-person-ship.js';
6
+ import type { ItemOutcomes } from './item-outcome.js';
7
+ import { type DealtError } from './opened-of.js';
8
+ import type { PersonCaller } from './person-crew.js';
9
+ import type { InboxChanges, OpenedDeliveries } from './ports.js';
10
+ /** What the basket holds for a question once put: its option and its note, none when the person wrote none. */
11
+ export interface PutEntry {
12
+ readonly questionId: string;
13
+ readonly option: number;
14
+ readonly note: string | null;
15
+ }
16
+ export type PutInBasket = (input: {
17
+ caller: PersonCaller;
18
+ deliveryId: string;
19
+ option: number;
20
+ note: string;
21
+ }) => Promise<Result<PutEntry, DealtError | DomainError<'NOT_A_QUESTION' | 'INVALID_ARGUMENTS' | 'CONFLICT'>>>;
22
+ /**
23
+ * Use case: a person puts their answer to a question they opened in Bridge
24
+ * into the basket (section 9, rule 1): its option and a note if they wrote
25
+ * one. Nothing is sent; the question still waits on them. One entry per
26
+ * question: picking again changes it, in its place in the order added. An
27
+ * entry being sent goes as stored, and one the fleet refused is removed,
28
+ * not sent again, so neither changes. A question answered elsewhere first
29
+ * is refused saying where. Every page of the person reads the
30
+ * basket again.
31
+ */
32
+ export declare function createPutInBasket(deps: {
33
+ crewPersonShip: CrewPersonShip;
34
+ opened: OpenedDeliveries;
35
+ entries: BasketEntries;
36
+ outcomes: Pick<ItemOutcomes, 'findMany'>;
37
+ changes: InboxChanges;
38
+ clock: Clock;
39
+ }): PutInBasket;
@@ -0,0 +1,57 @@
1
+ import { answerSchema } from '@aeolus-fleet/common';
2
+ import { refuse } from '../shared/errors.js';
3
+ import { ok } from '../shared/result.js';
4
+ import { answerOf } from './basket.js';
5
+ import { openedOf } from './opened-of.js';
6
+ /**
7
+ * Use case: a person puts their answer to a question they opened in Bridge
8
+ * into the basket (section 9, rule 1): its option and a note if they wrote
9
+ * one. Nothing is sent; the question still waits on them. One entry per
10
+ * question: picking again changes it, in its place in the order added. An
11
+ * entry being sent goes as stored, and one the fleet refused is removed,
12
+ * not sent again, so neither changes. A question answered elsewhere first
13
+ * is refused saying where. Every page of the person reads the
14
+ * basket again.
15
+ */
16
+ export function createPutInBasket(deps) {
17
+ return async ({ caller, deliveryId, option, note }) => {
18
+ const opened = await openedOf(deps, { caller, deliveryId });
19
+ if (!opened.isOk) {
20
+ return opened;
21
+ }
22
+ const question = opened.value;
23
+ const questionId = question.askedQuestionId;
24
+ if (questionId === null) {
25
+ return refuse('NOT_A_QUESTION', 'Only an answer to a question goes in the basket');
26
+ }
27
+ const written = note.trim();
28
+ const entry = { questionId, option, note: written === '' ? null : written };
29
+ if (!answerSchema.safeParse(answerOf(entry)).success) {
30
+ return refuse('INVALID_ARGUMENTS', 'Pick one of the options, numbered from 1');
31
+ }
32
+ const kept = await deps.entries.find(caller.fleetId, { shipId: question.shipId, questionId });
33
+ if (kept?.state === 'sending') {
34
+ return refuse('CONFLICT', 'This answer is being sent: it goes as it was put in the basket');
35
+ }
36
+ if (kept?.state === 'refused') {
37
+ return refuse('CONFLICT', 'The fleet refused this answer: remove it from the basket');
38
+ }
39
+ await deps.entries.save({
40
+ fleetId: question.fleetId,
41
+ shipId: question.shipId,
42
+ deliveryId: question.deliveryId,
43
+ messageId: question.messageId,
44
+ senderShipId: question.senderShipId,
45
+ from: question.from,
46
+ title: question.title,
47
+ sentAt: question.sentAt,
48
+ ...entry,
49
+ addedAt: kept?.addedAt ?? deps.clock.now(),
50
+ state: 'waiting',
51
+ refusal: null,
52
+ });
53
+ await deps.changes.tell({ fleetId: question.fleetId, shipId: question.shipId });
54
+ return ok(entry);
55
+ };
56
+ }
57
+ //# sourceMappingURL=put-in-basket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"put-in-basket.js","sourceRoot":"","sources":["../../../src/core/people/put-in-basket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAE,QAAQ,EAAmB,MAAM,gBAAgB,CAAC;AAa3D;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAyK;IACzM,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC;QAC5C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9F,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,UAAU,EAAE,gEAAgE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,UAAU,EAAE,0DAA0D,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACtB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAC1C,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAChF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC"}