@aeolus-fleet/gateway 0.36.1 → 0.36.2
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.
- package/dist/adapters/fleet/active-ships.d.ts +8 -0
- package/dist/adapters/fleet/active-ships.js +22 -0
- package/dist/adapters/fleet/active-ships.js.map +1 -0
- package/dist/adapters/fleet/every-listed-ship.d.ts +21 -0
- package/dist/adapters/fleet/every-listed-ship.js +28 -0
- package/dist/adapters/fleet/every-listed-ship.js.map +1 -0
- package/dist/adapters/fleet/fleet-ships.d.ts +1 -3
- package/dist/adapters/fleet/fleet-ships.js +5 -22
- package/dist/adapters/fleet/fleet-ships.js.map +1 -1
- package/dist/adapters/fleet/rest-fleet-door.js +40 -6
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/party-sign-in-routes.d.ts +7 -0
- package/dist/adapters/http/party-sign-in-routes.js +18 -0
- package/dist/adapters/http/party-sign-in-routes.js.map +1 -1
- package/dist/adapters/http/person-tools.js +3 -2
- package/dist/adapters/http/person-tools.js.map +1 -1
- package/dist/adapters/http/slack-routes.d.ts +2 -0
- package/dist/adapters/http/slack-routes.js +12 -4
- package/dist/adapters/http/slack-routes.js.map +1 -1
- package/dist/adapters/mcp/mcp-servers.d.ts +8 -2
- package/dist/adapters/mcp/mcp-servers.js +8 -4
- package/dist/adapters/mcp/mcp-servers.js.map +1 -1
- package/dist/adapters/prisma/basket-entries.js +4 -2
- package/dist/adapters/prisma/basket-entries.js.map +1 -1
- package/dist/adapters/prisma/connected-chats.d.ts +4 -0
- package/dist/adapters/prisma/connected-chats.js +21 -0
- package/dist/adapters/prisma/connected-chats.js.map +1 -0
- package/dist/adapters/prisma/fleet-forgetter.js +1 -1
- package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +6 -1
- package/dist/adapters/prisma/generated/client.d.ts +6 -1
- package/dist/adapters/prisma/generated/internal/class.d.ts +11 -0
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +95 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +19 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +19 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +19 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/BasketEntry.d.ts +114 -18
- package/dist/adapters/prisma/generated/models/ItemOutcome.d.ts +91 -1
- package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +95 -2
- package/dist/adapters/prisma/generated/models/Party.d.ts +32 -1
- package/dist/adapters/prisma/generated/models/SlackLinkStep.d.ts +1005 -0
- package/dist/adapters/prisma/generated/models/SlackLinkStep.js +2 -0
- package/dist/adapters/prisma/generated/models/SlackLinkStep.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +1 -0
- package/dist/adapters/prisma/item-outcomes.d.ts +6 -1
- package/dist/adapters/prisma/item-outcomes.js +19 -3
- package/dist/adapters/prisma/item-outcomes.js.map +1 -1
- package/dist/adapters/prisma/opened-deliveries.js +5 -0
- package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
- package/dist/adapters/prisma/party-store.js +4 -1
- package/dist/adapters/prisma/party-store.js.map +1 -1
- package/dist/adapters/prisma/slack-link-steps.d.ts +8 -0
- package/dist/adapters/prisma/slack-link-steps.js +28 -0
- package/dist/adapters/prisma/slack-link-steps.js.map +1 -0
- package/dist/adapters/prisma/slack-posts.js +4 -3
- package/dist/adapters/prisma/slack-posts.js.map +1 -1
- package/dist/adapters/slack/slack-messages.d.ts +2 -0
- package/dist/adapters/slack/slack-messages.js +124 -18
- package/dist/adapters/slack/slack-messages.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +54 -2
- package/dist/adapters/trpc/router.js +25 -1
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/app.js +39 -13
- package/dist/app.js.map +1 -1
- package/dist/core/mcp-out/grant-calls.js +1 -1
- package/dist/core/mcp-out/grant-calls.js.map +1 -1
- package/dist/core/mcp-out/hand-call.js +1 -1
- package/dist/core/mcp-out/hand-call.js.map +1 -1
- package/dist/core/mcp-out/keep-server-title.d.ts +13 -0
- package/dist/core/mcp-out/keep-server-title.js +14 -0
- package/dist/core/mcp-out/keep-server-title.js.map +1 -0
- package/dist/core/mcp-out/ports.d.ts +10 -0
- package/dist/core/parties/approve-party.js +1 -1
- package/dist/core/parties/approve-party.js.map +1 -1
- package/dist/core/parties/party.d.ts +2 -0
- package/dist/core/parties/party.js.map +1 -1
- package/dist/core/parties/ports.d.ts +5 -0
- package/dist/core/party-grants/listing-connection.js +2 -2
- package/dist/core/party-grants/listing-connection.js.map +1 -1
- package/dist/core/party-grants/tell-sign-in-needed.d.ts +2 -0
- package/dist/core/party-grants/tell-sign-in-needed.js +16 -4
- package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -1
- package/dist/core/people/act-in-place.d.ts +42 -0
- package/dist/core/people/act-in-place.js +26 -0
- package/dist/core/people/act-in-place.js.map +1 -0
- package/dist/core/people/answer-delivery.js +13 -1
- package/dist/core/people/answer-delivery.js.map +1 -1
- package/dist/core/people/basket.d.ts +32 -10
- package/dist/core/people/basket.js +24 -6
- package/dist/core/people/basket.js.map +1 -1
- package/dist/core/people/count-basket.d.ts +4 -3
- package/dist/core/people/count-basket.js +9 -3
- package/dist/core/people/count-basket.js.map +1 -1
- package/dist/core/people/done-delivery.js +1 -1
- package/dist/core/people/done-delivery.js.map +1 -1
- package/dist/core/people/finish-own-step.js +2 -2
- package/dist/core/people/finish-own-step.js.map +1 -1
- package/dist/core/people/inbox-entry.d.ts +17 -1
- package/dist/core/people/inbox-entry.js +28 -1
- package/dist/core/people/inbox-entry.js.map +1 -1
- package/dist/core/people/item-job.d.ts +3 -1
- package/dist/core/people/item-job.js +5 -1
- package/dist/core/people/item-job.js.map +1 -1
- package/dist/core/people/item-outcome.d.ts +21 -2
- package/dist/core/people/item-outcome.js.map +1 -1
- package/dist/core/people/item-places.d.ts +26 -0
- package/dist/core/people/item-places.js +12 -0
- package/dist/core/people/item-places.js.map +1 -0
- package/dist/core/people/open-delivery.d.ts +6 -6
- package/dist/core/people/open-delivery.js +13 -10
- package/dist/core/people/open-delivery.js.map +1 -1
- package/dist/core/people/opened-of.d.ts +5 -1
- package/dist/core/people/opened-of.js +5 -1
- package/dist/core/people/opened-of.js.map +1 -1
- package/dist/core/people/ports.d.ts +40 -3
- package/dist/core/people/put-in-basket.d.ts +8 -6
- package/dist/core/people/put-in-basket.js +16 -5
- package/dist/core/people/put-in-basket.js.map +1 -1
- package/dist/core/people/read-basket.d.ts +8 -3
- package/dist/core/people/read-basket.js +8 -10
- package/dist/core/people/read-basket.js.map +1 -1
- package/dist/core/people/read-bridge-home.d.ts +39 -11
- package/dist/core/people/read-bridge-home.js +74 -12
- package/dist/core/people/read-bridge-home.js.map +1 -1
- package/dist/core/people/read-chats.d.ts +21 -0
- package/dist/core/people/read-chats.js +20 -0
- package/dist/core/people/read-chats.js.map +1 -0
- package/dist/core/people/read-inbox.d.ts +19 -9
- package/dist/core/people/read-inbox.js +57 -15
- package/dist/core/people/read-inbox.js.map +1 -1
- package/dist/core/people/read-record.d.ts +37 -11
- package/dist/core/people/read-record.js +44 -12
- package/dist/core/people/read-record.js.map +1 -1
- package/dist/core/people/read-send-to.d.ts +23 -0
- package/dist/core/people/read-send-to.js +37 -0
- package/dist/core/people/read-send-to.js.map +1 -0
- package/dist/core/people/read-your-fleet.d.ts +19 -0
- package/dist/core/people/read-your-fleet.js +22 -0
- package/dist/core/people/read-your-fleet.js.map +1 -0
- package/dist/core/people/remove-from-basket.d.ts +2 -1
- package/dist/core/people/remove-from-basket.js +4 -1
- package/dist/core/people/remove-from-basket.js.map +1 -1
- package/dist/core/people/routing.d.ts +13 -4
- package/dist/core/people/routing.js +14 -0
- package/dist/core/people/routing.js.map +1 -1
- package/dist/core/people/send-basket.d.ts +11 -7
- package/dist/core/people/send-basket.js +68 -11
- package/dist/core/people/send-basket.js.map +1 -1
- package/dist/core/people/send-message.d.ts +3 -1
- package/dist/core/people/send-message.js +9 -2
- package/dist/core/people/send-message.js.map +1 -1
- package/dist/core/people/send-stored-answers.d.ts +4 -3
- package/dist/core/people/send-stored-answers.js +62 -12
- package/dist/core/people/send-stored-answers.js.map +1 -1
- package/dist/core/people/stale-item.d.ts +40 -0
- package/dist/core/people/stale-item.js +36 -0
- package/dist/core/people/stale-item.js.map +1 -0
- package/dist/core/people/wake-person.d.ts +3 -1
- package/dist/core/people/wake-person.js +4 -2
- package/dist/core/people/wake-person.js.map +1 -1
- package/dist/core/people/your-fleet.d.ts +44 -0
- package/dist/core/people/your-fleet.js +64 -0
- package/dist/core/people/your-fleet.js.map +1 -0
- package/dist/core/slack/answer-in-slack.d.ts +15 -9
- package/dist/core/slack/answer-in-slack.js +43 -18
- package/dist/core/slack/answer-in-slack.js.map +1 -1
- package/dist/core/slack/ask-to-link-slack.d.ts +28 -0
- package/dist/core/slack/ask-to-link-slack.js +31 -0
- package/dist/core/slack/ask-to-link-slack.js.map +1 -0
- package/dist/core/slack/complete-link.d.ts +6 -1
- package/dist/core/slack/complete-link.js +6 -0
- package/dist/core/slack/complete-link.js.map +1 -1
- package/dist/core/slack/done-in-slack.d.ts +36 -0
- package/dist/core/slack/done-in-slack.js +63 -0
- package/dist/core/slack/done-in-slack.js.map +1 -0
- package/dist/core/slack/edit-slack-posts.d.ts +7 -5
- package/dist/core/slack/edit-slack-posts.js +13 -10
- package/dist/core/slack/edit-slack-posts.js.map +1 -1
- package/dist/core/slack/edited-post-of.d.ts +19 -0
- package/dist/core/slack/edited-post-of.js +77 -0
- package/dist/core/slack/edited-post-of.js.map +1 -0
- package/dist/core/slack/ports.d.ts +68 -10
- package/dist/core/slack/pressed-post-of.d.ts +9 -0
- package/dist/core/slack/pressed-post-of.js +18 -0
- package/dist/core/slack/pressed-post-of.js.map +1 -0
- package/dist/core/slack/read-slack-dropped-out.d.ts +23 -0
- package/dist/core/slack/read-slack-dropped-out.js +24 -0
- package/dist/core/slack/read-slack-dropped-out.js.map +1 -0
- package/dist/core/slack/read-slack-link.d.ts +4 -0
- package/dist/core/slack/read-slack-link.js +5 -0
- package/dist/core/slack/read-slack-link.js.map +1 -1
- package/dist/core/slack/show-in-slack.js +8 -7
- package/dist/core/slack/show-in-slack.js.map +1 -1
- package/dist/core/slack/slack-post-of.d.ts +24 -12
- package/dist/core/slack/slack-post-of.js +118 -37
- package/dist/core/slack/slack-post-of.js.map +1 -1
- package/dist/core/slack/slack-post.d.ts +13 -1
- package/dist/core/slack/slack-post.js +16 -1
- package/dist/core/slack/slack-post.js.map +1 -1
- package/dist/core/slack/slack-press.d.ts +1 -1
- package/dist/core/slack/slack-press.js +2 -1
- package/dist/core/slack/slack-press.js.map +1 -1
- package/package.json +2 -1
- package/src/adapters/prisma/migrations/20261104090000_basket_entries_note_alone/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261105090000_slack_link_steps/migration.sql +10 -0
- package/src/adapters/prisma/migrations/20261106090000_opened_deliveries_withdrawn_steps/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261107090000_opened_deliveries_step_link/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261107100000_opened_deliveries_opened_in/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261108090000_item_outcomes_note_and_seen/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261108090000_parties_display_name/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261109090000_basket_entries_option_label/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261109100000_basket_entries_sent/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261110090000_connected_chats_indexes/migration.sql +5 -0
- package/src/adapters/prisma/schema.prisma +41 -6
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +10 -8
- package/web/.next/build-manifest.json +114 -90
- package/web/.next/diagnostics/route-bundle-stats.json +264 -206
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/routes-manifest.json +12 -0
- package/web/.next/server/app/(bridge)/bridge/basket/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/basket/page/server-reference-manifest.json +105 -0
- package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/basket}/page.js +14 -13
- package/web/.next/server/app/(bridge)/bridge/basket/page.js.nft.json +1 -0
- package/web/.next/server/app/(bridge)/bridge/basket/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/changes/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/changes/route.js +8 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/changes/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/done/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/done/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js +15 -14
- package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/done/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/fleet/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/(bridge)/bridge/fleet/page.js +24 -0
- package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/fleet}/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/fleet/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/focus/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/focus/route.js +8 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/focus/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/page/server-reference-manifest.json +95 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js +16 -14
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/page.js +13 -12
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page.js +26 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js +15 -14
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page.js.map +5 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/server-reference-manifest.json +95 -0
- package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/stay-aware}/page.js +15 -14
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.map +5 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.nft.json +1 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/gateway-off/page.js +2 -2
- package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +2 -2
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +16 -16
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +16 -16
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/(console)/outside-parties/add/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/parties/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/(console)/parties/page.js +2 -2
- package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page.js +2 -2
- package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/(console)/slack/disconnect/page.js +2 -2
- package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/(console)/slack/expose/page.js +2 -2
- package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/(console)/slack/page.js +2 -2
- package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/(console)/slack/remove/page.js +4 -4
- package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page.js +2 -2
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
- package/web/.next/server/app/authorize/failed/page/build-manifest.json +4 -4
- package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/failed/page.js +3 -2
- package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/pick/page/build-manifest.json +4 -4
- package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/pick/page.js +7 -5
- package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +4 -4
- package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page.js +3 -2
- package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/icon.svg/route.js.nft.json +1 -1
- package/web/.next/server/app-paths-manifest.json +10 -8
- package/web/.next/server/chunks/0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js +2 -2
- package/web/.next/server/chunks/_0up_7s_05-7vm._.js +3 -0
- package/web/.next/server/chunks/_0up_7s_05-7vm._.js.map +1 -0
- package/web/.next/server/chunks/_0xw0b7avhvg75._.js +1 -1
- package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js +1 -1
- package/web/.next/server/chunks/_1xaed_q500ez6._.js +3 -0
- package/web/.next/server/chunks/_1xaed_q500ez6._.js.map +1 -0
- package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +1 -1
- package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js +3 -0
- package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js.map +1 -0
- package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js +3 -0
- package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js → [root-of-the-server]__04_bc8g0oe4jt._.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js → [root-of-the-server]__179upda-y7uap._.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1j6n8jj7-5t6v._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1j6n8jj7-5t6v._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qtzvez4cn5be._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qtzvez4cn5be._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0cnpz5jm2_9xf._.js +3 -0
- package/web/.next/server/chunks/ssr/_0cnpz5jm2_9xf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js +3 -0
- package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js +3 -0
- package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js +3 -0
- package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js +3 -0
- package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js +3 -0
- package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0vid8-myyy-_4._.js +3 -0
- package/web/.next/server/chunks/ssr/_0vid8-myyy-_4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js +3 -0
- package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js +3 -0
- package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js +3 -0
- package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js +3 -0
- package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js +3 -0
- package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js +3 -0
- package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
- package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js +3 -0
- package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1a9wrl8uw7x-y._.js +3 -0
- package/web/.next/server/chunks/ssr/_1a9wrl8uw7x-y._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_1hmjvjuxx92vo._.js → _1airu8wwf7z1b._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1airu8wwf7z1b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
- package/web/.next/server/chunks/ssr/{_0a_nsm-ye2r6v._.js → _1gbkqq8ra1nei._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1gbkqq8ra1nei._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1i5zdy3tp2ykh._.js +3 -0
- package/web/.next/server/chunks/ssr/_1i5zdy3tp2ykh._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js +3 -0
- package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1iorutn_o9hja._.js +3 -0
- package/web/.next/server/chunks/ssr/_1iorutn_o9hja._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1kdx8a0j5cxyl._.js +3 -0
- package/web/.next/server/chunks/ssr/_1kdx8a0j5cxyl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js +3 -0
- package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js +3 -0
- package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1rfpx4ze-3l8z._.js +3 -0
- package/web/.next/server/chunks/ssr/{web_features_0mi9a9pdzkdji._.js.map → _1rfpx4ze-3l8z._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js +3 -0
- package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js +3 -0
- package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js +3 -0
- package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js +4 -0
- package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1cvjxnw-b3pnv._.js +3 -0
- package/web/.next/server/chunks/ssr/{node_modules_@base-ui_react_1lbvjrzg8s2ox._.js.map → node_modules_@base-ui_react_1cvjxnw-b3pnv._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +2 -2
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +2 -2
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js → web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_features_0f6r-m-dq36vf._.js → web_features_025l9l6m2zkya._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_0f6r-m-dq36vf._.js.map → web_features_025l9l6m2zkya._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_05aos-xwnl3m_._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_05aos-xwnl3m_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0bwqcs9wjf4y8._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0bwqcs9wjf4y8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js → web_features_0f2pobf_t4wjt._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js.map → web_features_0f2pobf_t4wjt._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_0w95y19yk5w14._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_0w95y19yk5w14._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
- package/web/.next/server/chunks/web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js +3 -0
- package/web/.next/server/middleware-build-manifest.js +114 -90
- package/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +14 -6
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/preview-props.json +3 -3
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +165 -103
- package/web/.next/static/chunks/{2z2auwx1s2mgl.js → 0k33n07zesv12.js} +1 -1
- package/web/.next/static/chunks/0ozz8jadgfdrx.js +1 -0
- package/web/.next/static/chunks/{1166rxt6h6ilq.js → 1c8q9h-van9r6.js} +1 -1
- package/web/.next/static/chunks/1nzfw6ajt5nf9.js +55 -0
- package/web/.next/static/chunks/1uhmdmkn5gsk2.js +1 -0
- package/web/.next/static/chunks/1v36iovy1f5cj.js +1 -0
- package/web/.next/static/chunks/1vhvy8bx4fxur.js +1 -0
- package/web/.next/static/chunks/1vhx_nu9nxo1v.js +1 -0
- package/web/.next/static/chunks/{3db90zxmny2y-.js → 23vvtbj-zoa_f.js} +1 -1
- package/web/.next/static/chunks/24vn5i6ojvl8l.js +1 -0
- package/web/.next/static/chunks/2dgbb29jkr_tu.js +1 -0
- package/web/.next/static/chunks/2ewacyhp73due.js +1 -0
- package/web/.next/static/chunks/2fimf0wcjnmpj.js +1 -0
- package/web/.next/static/chunks/2fk9ydkphmyna.js +1 -0
- package/web/.next/static/chunks/2l6hafvocw-rd.js +1 -0
- package/web/.next/static/chunks/2ld8_nap7g_uy.js +1 -0
- package/web/.next/static/chunks/2mpwg-t6pat39.js +1 -0
- package/web/.next/static/chunks/2pvcbql986wln.js +1 -0
- package/web/.next/static/chunks/2s1efgj6gxjgl.js +1 -0
- package/web/.next/static/chunks/2zlx-c_0x38uo.css +3 -0
- package/web/.next/static/chunks/34u_331hqync_.js +1 -0
- package/web/.next/static/chunks/39tst46ewpx_k.js +1 -0
- package/web/.next/static/chunks/{3x0p-z3zdrk_b.js → 3_bb0g4jkqn8q.js} +1 -1
- package/web/.next/static/chunks/3d5z1i-6yksxd.js +1 -0
- package/web/.next/static/chunks/3jq9vu8tr29j2.js +1 -0
- package/web/.next/static/chunks/3kenmp9pjwgf2.js +1 -0
- package/web/.next/static/chunks/3knqujtrdi225.js +1 -0
- package/web/.next/static/chunks/{0lzisjsmhlhjf.js → 3zhaqdsq15d1e.js} +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/routes.d.ts +3 -1
- package/web/.next/types/validator.ts +50 -16
- package/dist/core/people/stale-question.d.ts +0 -28
- package/dist/core/people/stale-question.js +0 -26
- package/dist/core/people/stale-question.js.map +0 -1
- package/web/.next/server/app/(console)/bridge/basket/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/basket/page/server-reference-manifest.json +0 -75
- package/web/.next/server/app/(console)/bridge/basket/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/changes/route/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/changes/route.js +0 -8
- package/web/.next/server/app/(console)/bridge/changes/route_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/done/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/done/page/server-reference-manifest.json +0 -75
- package/web/.next/server/app/(console)/bridge/done/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/focus/route/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/focus/route.js +0 -8
- package/web/.next/server/app/(console)/bridge/focus/route_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/page/server-reference-manifest.json +0 -65
- package/web/.next/server/app/(console)/bridge/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/settings/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/settings/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/build-manifest.json +0 -23
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +0 -11
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/settings/routing/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/settings/routing/page/build-manifest.json +0 -23
- package/web/.next/server/app/(console)/bridge/settings/routing/page/next-font-manifest.json +0 -11
- package/web/.next/server/app/(console)/bridge/settings/routing/page_client-reference-manifest.js +0 -3
- package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js +0 -3
- package/web/.next/server/chunks/_05qgg3__4kdbm._.js +0 -3
- package/web/.next/server/chunks/_05qgg3__4kdbm._.js.map +0 -1
- package/web/.next/server/chunks/_1uap5tql2vvsb._.js +0 -3
- package/web/.next/server/chunks/_1uap5tql2vvsb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js +0 -3
- package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js.map +0 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js +0 -3
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js +0 -3
- package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js +0 -3
- package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +0 -3
- package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_177fdczus39s7._.js +0 -3
- package/web/.next/server/chunks/ssr/_177fdczus39s7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js +0 -3
- package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js +0 -3
- package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js +0 -3
- package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js +0 -3
- package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js +0 -3
- package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js +0 -3
- package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js +0 -3
- package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js +0 -3
- package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js +0 -3
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js +0 -3
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map +0 -1
- package/web/.next/server/chunks/web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js +0 -3
- package/web/.next/static/chunks/0az9upwm-8_q9.js +0 -1
- package/web/.next/static/chunks/0c1tqlbsvq1dj.js +0 -1
- package/web/.next/static/chunks/0fh11dkddwf_2.js +0 -1
- package/web/.next/static/chunks/0gbozvd_yh421.js +0 -1
- package/web/.next/static/chunks/0l9_oie6xi0kd.js +0 -1
- package/web/.next/static/chunks/0m512dxdcrv-b.js +0 -1
- package/web/.next/static/chunks/0zbcy0_3jemrv.js +0 -1
- package/web/.next/static/chunks/1485slb5zus5p.js +0 -1
- package/web/.next/static/chunks/180aowme095ds.js +0 -1
- package/web/.next/static/chunks/24olc0btcvn7q.js +0 -1
- package/web/.next/static/chunks/296w-74ry5lzk.js +0 -1
- package/web/.next/static/chunks/2gghdkr64z9f9.js +0 -1
- package/web/.next/static/chunks/2hoi73vy1wqpo.js +0 -1
- package/web/.next/static/chunks/2mtfca4qk_s34.js +0 -1
- package/web/.next/static/chunks/397zvdr6xr5pq.js +0 -1
- package/web/.next/static/chunks/3ow9h8hreko-p.css +0 -3
- package/web/.next/static/chunks/3pd8pele5x1o9.js +0 -1
- package/web/.next/static/chunks/3srfjz42u14tx.js +0 -1
- package/web/.next/static/chunks/3yq9jt4p_0uid.js +0 -1
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page.js.map +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/build-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/server-reference-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.map +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page.js.map +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/build-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/server-reference-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page.js.map +0 -0
- /package/web/.next/server/chunks/{0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js.map → 0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js.map → [root-of-the-server]__04_bc8g0oe4jt._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js.map → [root-of-the-server]__179upda-y7uap._.js.map} +0 -0
- /package/web/.next/server/chunks/{web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js.map → web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js.map} +0 -0
- /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_buildManifest.js +0 -0
- /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../web/features/bridge/paths.ts","../../../../../web/features/bridge/services/requests.ts","../../../../../web/features/bridge/ui/requests-list.tsx","../../../../../web/features/bridge/ui/status-badge.tsx"],"sourcesContent":["/** Bridge's pages (docs/design/bridge): home, the basket, Done, Bridge's settings and where things show; a module of their own, so a page in the browser names them too. */\nexport const BRIDGE_PATH = '/bridge';\nexport const BRIDGE_BASKET_PATH = '/bridge/basket';\nexport const BRIDGE_DONE_PATH = '/bridge/done';\nexport const BRIDGE_SETTINGS_PATH = '/bridge/settings';\nexport const BRIDGE_ROUTING_PATH = '/bridge/settings/routing';\n","/**\n * How Bridge's settings name and states a request for an outside party (design\n * B, Signal): pure view logic, no React and no API client.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport type { CredentialKind } from '../../forms/server-credential';\n\n/** A request as the API shows it. */\nexport type ShownRequest = inferRouterOutputs<GatewayRouter>['requests']['toDecide'][number];\n\n/** The tones a status shows, from the design tokens; a status always has its words too. */\nexport type Tone = 'waiting' | 'active' | 'ok' | 'attention' | 'ended';\n\nexport interface Status {\n readonly tone: Tone;\n readonly label: string;\n}\n\nconst DAY_MS = 86_400_000;\n\n/** How an outside party is named before it has a proxy ship: a client by its name, a server by its host. */\nexport function subjectName(request: ShownRequest): string {\n switch (request.subject.kind) {\n case 'client':\n return request.subject.clientName;\n case 'server':\n return URL.canParse(request.subject.url) ? new URL(request.subject.url).host : request.subject.url;\n }\n}\n\nexport function subjectKind(request: ShownRequest): string {\n switch (request.subject.kind) {\n case 'client':\n return 'MCP client';\n case 'server':\n return 'MCP server';\n }\n}\n\n/** Days left of the 7 a request is kept, counted up, so its last day reads as such, in the attention tone. */\nexport function daysLeft(request: ShownRequest, now: Date): Status {\n const days = Math.ceil((Date.parse(request.expiresAt) - now.getTime()) / DAY_MS);\n return days <= 1 ? { tone: 'attention', label: 'Last day' } : { tone: 'waiting', label: `${String(days)} d left` };\n}\n\n/** A request's state as the console shows a status; one still pending shows its days left. */\nexport function requestStatus(request: ShownRequest, now: Date): Status {\n switch (request.state) {\n case 'pending':\n return daysLeft(request, now);\n case 'approving':\n return { tone: 'active', label: 'Approving' };\n case 'approved':\n return { tone: 'ok', label: 'Approved' };\n case 'denied':\n return { tone: 'ended', label: 'Denied' };\n case 'expired':\n return { tone: 'ended', label: 'Expired' };\n }\n}\n\n/** A proxy ship's name offered from the party's own: lower case letters, digits and dashes. */\nexport function suggestedName(name: string): string {\n return name\n .toLowerCase()\n .replaceAll(/[^a-z0-9]+/g, '-')\n .replaceAll(/^-+|-+$/g, '');\n}\n\n/** The scopes every app ship gets (0046): shown locked on, and always sent. */\nexport const EVERY_APP_SHIP_SCOPES: readonly string[] = ['messages:send', 'messages:receive'];\n\nconst SCOPE_LABELS: Record<string, string> = {\n 'messages:send': 'Send',\n 'messages:receive': 'Receive',\n 'fleet:read': 'Read the fleet',\n};\n\n/** A scope's plain label, shown beside the scope itself. */\nexport function scopeLabel(scope: string): string {\n return SCOPE_LABELS[scope] ?? scope;\n}\n\n/** The server's credential as the decision form takes it. */\nexport interface ServerCredentialInput {\n readonly credentialKind: CredentialKind;\n readonly token: string;\n readonly clientId: string;\n readonly clientSecret: string;\n readonly issuer: string;\n readonly scope: string;\n readonly concurrencyLimit: number;\n}\n\nexport type DecisionInput = { readonly kind: 'deny' } | { readonly kind: 'approve'; readonly name: string; readonly ownerShipId: string; readonly scopes: readonly string[]; readonly server: ServerCredentialInput | undefined };\n","import { requestStatus, subjectKind, subjectName, type ShownRequest } from '../services/requests';\nimport { StatusBadge } from './status-badge';\n\nfunction PartyMark({ name }: { name: string }) {\n return (\n <span aria-hidden=\"true\" className=\"inline-flex size-8 shrink-0 items-center justify-center rounded-md bg-secondary font-semibold text-secondary-foreground\">\n {name.slice(0, 1).toUpperCase()}\n </span>\n );\n}\n\nfunction RequestRow({ request, now }: { request: ShownRequest; now: Date }) {\n const name = subjectName(request);\n return (\n <>\n <PartyMark name={name} />\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate\">{name}</span>\n <span className=\"text-caption text-muted-foreground\">{subjectKind(request)}</span>\n </span>\n <StatusBadge status={requestStatus(request, now)} />\n </>\n );\n}\n\n/** Requests in a list: each a link to decide it, or, for the person's own, its state alone. */\nexport function RequestsList({ title, requests, now, hrefOf, currentId }: { title: string; requests: readonly ShownRequest[]; now: Date; hrefOf?: (request: ShownRequest) => string; currentId?: string }) {\n return (\n <section className=\"grid gap-2\">\n <h2 className=\"text-section font-semibold\">\n {title} · {requests.length}\n </h2>\n {requests.map((request) =>\n hrefOf === undefined ? (\n <div key={request.requestId} className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3\">\n <RequestRow request={request} now={now} />\n </div>\n ) : (\n <a\n key={request.requestId}\n href={hrefOf(request)}\n aria-current={request.requestId === currentId ? 'true' : undefined}\n data-testid=\"bridge-request\"\n className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3 hover:bg-accent aria-[current=true]:border-ring\"\n >\n <RequestRow request={request} now={now} />\n </a>\n ),\n )}\n </section>\n );\n}\n","import type { Status, Tone } from '../services/requests';\n\nconst TONES: Record<Tone, string> = {\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n active: 'border-tone-active-border bg-tone-active-bg text-tone-active-fg',\n ok: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n attention: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n ended: 'border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg',\n};\n\n/** A status in its tone, always with its words, so it never rests on colour alone. */\nexport function StatusBadge({ status }: { status: Status }) {\n return <span className={`inline-flex shrink-0 items-center rounded-full border px-2 py-0.5 text-caption ${TONES[status.tone]}`}>{status.label}</span>;\n}\n"],"names":["BRIDGE_PATH","BRIDGE_BASKET_PATH","BRIDGE_DONE_PATH","BRIDGE_SETTINGS_PATH","BRIDGE_ROUTING_PATH","DAY_MS","subjectName","request","subject","kind","clientName","URL","canParse","url","host","subjectKind","daysLeft","now","days","Math","ceil","Date","parse","expiresAt","getTime","tone","label","String","requestStatus","state","suggestedName","name","toLowerCase","replaceAll","EVERY_APP_SHIP_SCOPES","SCOPE_LABELS","scopeLabel","scope","TONES","waiting","active","ok","attention","ended","StatusBadge","status","className"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/bridge/paths.ts","../../../../../web/features/bridge/services/requests.ts","../../../../../web/features/bridge/ui/requests-list.tsx","../../../../../web/features/bridge/ui/status-badge.tsx"],"sourcesContent":["/** Bridge's pages (docs/design/bridge): home, the basket, Stay aware, Done, Your fleet, Bridge's settings and where things show; a module of their own, so a page in the browser names them too. */\nexport const BRIDGE_PATH = '/bridge';\nexport const BRIDGE_BASKET_PATH = '/bridge/basket';\nexport const BRIDGE_STAY_AWARE_PATH = '/bridge/stay-aware';\nexport const BRIDGE_DONE_PATH = '/bridge/done';\nexport const BRIDGE_SETTINGS_PATH = '/bridge/settings';\nexport const BRIDGE_ROUTING_PATH = '/bridge/settings/routing';\n","/**\n * How Bridge's settings name and states a request for an outside party (design\n * B, Signal): pure view logic, no React and no API client.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport type { CredentialKind } from '../../forms/server-credential';\n\n/** A request as the API shows it. */\nexport type ShownRequest = inferRouterOutputs<GatewayRouter>['requests']['toDecide'][number];\n\n/** The tones a status shows, from the design tokens; a status always has its words too. */\nexport type Tone = 'waiting' | 'active' | 'ok' | 'attention' | 'ended';\n\nexport interface Status {\n readonly tone: Tone;\n readonly label: string;\n}\n\nconst DAY_MS = 86_400_000;\n\n/** How an outside party is named before it has a proxy ship: a client by its name, a server by its host. */\nexport function subjectName(request: ShownRequest): string {\n switch (request.subject.kind) {\n case 'client':\n return request.subject.clientName;\n case 'server':\n return URL.canParse(request.subject.url) ? new URL(request.subject.url).host : request.subject.url;\n }\n}\n\nexport function subjectKind(request: ShownRequest): string {\n switch (request.subject.kind) {\n case 'client':\n return 'MCP client';\n case 'server':\n return 'MCP server';\n }\n}\n\n/** Days left of the 7 a request is kept, counted up, so its last day reads as such, in the attention tone. */\nexport function daysLeft(request: ShownRequest, now: Date): Status {\n const days = Math.ceil((Date.parse(request.expiresAt) - now.getTime()) / DAY_MS);\n return days <= 1 ? { tone: 'attention', label: 'Last day' } : { tone: 'waiting', label: `${String(days)} d left` };\n}\n\n/** A request's state as the console shows a status; one still pending shows its days left. */\nexport function requestStatus(request: ShownRequest, now: Date): Status {\n switch (request.state) {\n case 'pending':\n return daysLeft(request, now);\n case 'approving':\n return { tone: 'active', label: 'Approving' };\n case 'approved':\n return { tone: 'ok', label: 'Approved' };\n case 'denied':\n return { tone: 'ended', label: 'Denied' };\n case 'expired':\n return { tone: 'ended', label: 'Expired' };\n }\n}\n\n/** A proxy ship's name offered from the party's own: lower case letters, digits and dashes. */\nexport function suggestedName(name: string): string {\n return name\n .toLowerCase()\n .replaceAll(/[^a-z0-9]+/g, '-')\n .replaceAll(/^-+|-+$/g, '');\n}\n\n/** The scopes every app ship gets (0046): shown locked on, and always sent. */\nexport const EVERY_APP_SHIP_SCOPES: readonly string[] = ['messages:send', 'messages:receive'];\n\nconst SCOPE_LABELS: Record<string, string> = {\n 'messages:send': 'Send',\n 'messages:receive': 'Receive',\n 'fleet:read': 'Read the fleet',\n};\n\n/** A scope's plain label, shown beside the scope itself. */\nexport function scopeLabel(scope: string): string {\n return SCOPE_LABELS[scope] ?? scope;\n}\n\n/** The server's credential as the decision form takes it. */\nexport interface ServerCredentialInput {\n readonly credentialKind: CredentialKind;\n readonly token: string;\n readonly clientId: string;\n readonly clientSecret: string;\n readonly issuer: string;\n readonly scope: string;\n readonly concurrencyLimit: number;\n}\n\nexport type DecisionInput = { readonly kind: 'deny' } | { readonly kind: 'approve'; readonly name: string; readonly ownerShipId: string; readonly scopes: readonly string[]; readonly server: ServerCredentialInput | undefined };\n","import { requestStatus, subjectKind, subjectName, type ShownRequest } from '../services/requests';\nimport { StatusBadge } from './status-badge';\n\nfunction PartyMark({ name }: { name: string }) {\n return (\n <span aria-hidden=\"true\" className=\"inline-flex size-8 shrink-0 items-center justify-center rounded-md bg-secondary font-semibold text-secondary-foreground\">\n {name.slice(0, 1).toUpperCase()}\n </span>\n );\n}\n\nfunction RequestRow({ request, now }: { request: ShownRequest; now: Date }) {\n const name = subjectName(request);\n return (\n <>\n <PartyMark name={name} />\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate\">{name}</span>\n <span className=\"text-caption text-muted-foreground\">{subjectKind(request)}</span>\n </span>\n <StatusBadge status={requestStatus(request, now)} />\n </>\n );\n}\n\n/** Requests in a list: each a link to decide it, or, for the person's own, its state alone. */\nexport function RequestsList({ title, requests, now, hrefOf, currentId }: { title: string; requests: readonly ShownRequest[]; now: Date; hrefOf?: (request: ShownRequest) => string; currentId?: string }) {\n return (\n <section className=\"grid gap-2\">\n <h2 className=\"text-section font-semibold\">\n {title} · {requests.length}\n </h2>\n {requests.map((request) =>\n hrefOf === undefined ? (\n <div key={request.requestId} className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3\">\n <RequestRow request={request} now={now} />\n </div>\n ) : (\n <a\n key={request.requestId}\n href={hrefOf(request)}\n aria-current={request.requestId === currentId ? 'true' : undefined}\n data-testid=\"bridge-request\"\n className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3 hover:bg-accent aria-[current=true]:border-ring\"\n >\n <RequestRow request={request} now={now} />\n </a>\n ),\n )}\n </section>\n );\n}\n","import type { Status, Tone } from '../services/requests';\n\nconst TONES: Record<Tone, string> = {\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n active: 'border-tone-active-border bg-tone-active-bg text-tone-active-fg',\n ok: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n attention: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n ended: 'border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg',\n};\n\n/** A status in its tone, always with its words, so it never rests on colour alone. */\nexport function StatusBadge({ status }: { status: Status }) {\n return <span className={`inline-flex shrink-0 items-center rounded-full border px-2 py-0.5 text-caption ${TONES[status.tone]}`}>{status.label}</span>;\n}\n"],"names":["BRIDGE_PATH","BRIDGE_BASKET_PATH","BRIDGE_STAY_AWARE_PATH","BRIDGE_DONE_PATH","BRIDGE_SETTINGS_PATH","BRIDGE_ROUTING_PATH","DAY_MS","subjectName","request","subject","kind","clientName","URL","canParse","url","host","subjectKind","daysLeft","now","days","Math","ceil","Date","parse","expiresAt","getTime","tone","label","String","requestStatus","state","suggestedName","name","toLowerCase","replaceAll","EVERY_APP_SHIP_SCOPES","SCOPE_LABELS","scopeLabel","scope","TONES","waiting","active","ok","attention","ended","StatusBadge","status","className"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[62191,94364,21243,a=>{"use strict";var b=a.i(7997),c=a.i(80845),d=a.i(75879),e=a.i(92277);let f={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};f.node;let g=(0,e.f)(f),h={name:"circle-pause",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]],aliases:["pause-circle"]};h.node;let i=(0,e.f)(h),j={name:"circle-play",size:24,node:[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],aliases:["play-circle"]};j.node;let k=(0,e.f)(j),l={name:"hourglass",size:24,node:[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]};l.node;let m={alert:g,waiting:(0,e.f)(l),working:k,idle:i};function n({state:a}){let c=m[a];return(0,b.jsx)(c,{"aria-hidden":"true",className:"size-3 shrink-0"})}let o={alert:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",waiting:"border-border bg-card text-tone-waiting-fg",working:"border-border bg-card text-tone-ok-fg",idle:"border-border bg-card text-card-foreground"};function p({testId:a,tone:c,value:d,children:e}){return(0,b.jsxs)("div",{"data-testid":a,className:`grid min-w-0 gap-0.5 rounded-md border px-2 py-1.5 max-sm:justify-items-center max-sm:px-0.5 ${c}`,children:[(0,b.jsx)("span",{className:"text-xl leading-6 font-semibold",children:d}),(0,b.jsx)("span",{className:"flex min-w-0 items-center gap-1 whitespace-nowrap text-[11px] text-muted-foreground max-sm:justify-center max-sm:gap-0.5 max-sm:text-[10px]",children:e})]})}a.s(["f",0,function({fleet:a,isShipCountShown:e}){return(0,b.jsxs)("div",{className:`grid gap-1.5 max-sm:gap-1 ${e?"grid-cols-5":"grid-cols-4"}`,children:[e?(0,b.jsxs)(p,{testId:"fleet-number-ships",tone:"border-border bg-card text-card-foreground",value:a.shipCount,children:[(0,b.jsx)(c.f,{"aria-hidden":"true",className:"size-3 shrink-0"}),(0,b.jsx)("span",{children:"Ships"})]}):null,d.X.map(c=>(0,b.jsxs)(p,{testId:`fleet-number-${c}`,tone:o[c],value:a.counts[c],children:[(0,b.jsx)(n,{state:c}),(0,b.jsx)("span",{children:d.c[c]})]},c))]})}],62191),a.s(["f",0,function({message:a}){return(0,b.jsxs)("p",{role:"status","data-testid":"fleet-unreadable",className:"grid gap-0.5 rounded-md border border-border bg-card px-3 py-2 text-caption",children:[(0,b.jsx)("span",{className:"font-semibold",children:"Your fleet cannot be read now"}),(0,b.jsx)("span",{className:"text-muted-foreground",children:a})]})}],94364);let q={name:"network",size:24,node:[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]};q.node;let r=(0,e.f)(q),s={name:"plug",size:24,node:[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]};s.node;let t=(0,e.f)(s),u={name:"square-terminal",size:24,node:[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]],aliases:["terminal-square"]};u.node;let v=(0,e.f)(u),w={name:"users",size:24,node:[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]};w.node;let x={people:(0,e.f)(w),agents:v,plugins:t,throughTheGateway:r},y={alert:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",working:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",idle:"border-border bg-card text-muted-foreground"};function z({tile:a}){let{name:c,state:e,note:f}=a;return(0,b.jsxs)("li",{"data-testid":"fleet-tile",title:null===f?c:`${c}: ${f}`,className:`flex h-13 min-w-0 flex-col justify-between rounded-md border px-2 py-1.5 ${y[e]}`,children:[(0,b.jsx)("span",{className:"truncate text-caption font-semibold text-card-foreground",children:c}),(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[11px]",children:[(0,b.jsx)(n,{state:e}),d.c[e]]})]})}function A({group:a,tiles:c,tileColumns:e}){let f=x[a];return(0,b.jsxs)("section",{className:"grid gap-1.5","aria-label":d.j[a],children:[(0,b.jsxs)("h3",{className:"flex items-center gap-1.5 text-caption font-semibold",children:[(0,b.jsx)(f,{"aria-hidden":"true",className:"size-3.5 shrink-0"}),(0,b.jsx)("span",{children:d.j[a]}),(0,b.jsx)("span",{className:"font-normal text-muted-foreground",children:c.length})]}),(0,b.jsx)("ul",{className:`grid gap-1.5 ${e}`,children:c.map(a=>(0,b.jsx)(z,{tile:a},a.shipId))})]})}a.s(["f",0,function({groups:a,tileColumns:c,className:d}){return(0,b.jsx)("div",{"data-testid":"fleet-wall",className:`${d??""} grid gap-2.5`.trim(),children:a.map(({group:a,tiles:d})=>(0,b.jsx)(A,{group:a,tiles:d,tileColumns:c},a))})}],21243)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/bridge/fleet/ui/fleet-numbers.tsx","../../../../../web/features/bridge/fleet/ui/fleet-unreadable.tsx","../../../../../web/features/bridge/fleet/ui/state-icon.tsx","../../../../../web/features/bridge/fleet/ui/fleet-wall.tsx","../../../../../node_modules/lucide-react/src/icons/users.ts","../../../../../node_modules/lucide-react/src/icons/network.ts","../../../../../node_modules/lucide-react/src/icons/plug.ts","../../../../../node_modules/lucide-react/src/icons/circle-alert.ts","../../../../../node_modules/lucide-react/src/icons/circle-pause.ts","../../../../../node_modules/lucide-react/src/icons/square-terminal.ts","../../../../../node_modules/lucide-react/src/icons/circle-play.ts","../../../../../node_modules/lucide-react/src/icons/hourglass.ts"],"sourcesContent":["import { Ship } from 'lucide-react';\n\nimport { SHIP_STATES, STATE_LABELS, type ShipState, type YourFleet } from '../services/your-fleet';\nimport { StateIcon } from './state-icon';\n\n/** Only Alert is filled in its tone; Waiting and Working say theirs in the number; Idle stays plain. */\nconst NUMBER_TONES: Record<ShipState, string> = {\n alert: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n waiting: 'border-border bg-card text-tone-waiting-fg',\n working: 'border-border bg-card text-tone-ok-fg',\n idle: 'border-border bg-card text-card-foreground',\n};\n\nfunction FleetNumber({ testId, tone, value, children }: { testId: string; tone: string; value: number; children: React.ReactNode }) {\n return (\n <div data-testid={testId} className={`grid min-w-0 gap-0.5 rounded-md border px-2 py-1.5 max-sm:justify-items-center max-sm:px-0.5 ${tone}`}>\n <span className=\"text-xl leading-6 font-semibold\">{value}</span>\n <span className=\"flex min-w-0 items-center gap-1 whitespace-nowrap text-[11px] text-muted-foreground max-sm:justify-center max-sm:gap-0.5 max-sm:text-[10px]\">{children}</span>\n </div>\n );\n}\n\n/**\n * The numbers on top of Your fleet: Alert, Waiting, Working and Idle, each\n * with its icon and word; on the Fleet tab the ships first, as Harbour\n * leads with them.\n */\nexport function FleetNumbers({ fleet, isShipCountShown }: { fleet: YourFleet; isShipCountShown: boolean }) {\n return (\n <div className={`grid gap-1.5 max-sm:gap-1 ${isShipCountShown ? 'grid-cols-5' : 'grid-cols-4'}`}>\n {isShipCountShown ? (\n <FleetNumber testId=\"fleet-number-ships\" tone=\"border-border bg-card text-card-foreground\" value={fleet.shipCount}>\n <Ship aria-hidden=\"true\" className=\"size-3 shrink-0\" />\n <span>Ships</span>\n </FleetNumber>\n ) : null}\n {SHIP_STATES.map((state) => (\n <FleetNumber key={state} testId={`fleet-number-${state}`} tone={NUMBER_TONES[state]} value={fleet.counts[state]}>\n <StateIcon state={state} />\n <span>{STATE_LABELS[state]}</span>\n </FleetNumber>\n ))}\n </div>\n );\n}\n","/** Your fleet cannot be read now: why, in one line; the rest of the page stands. */\nexport function FleetUnreadable({ message }: { message: string }) {\n return (\n <p role=\"status\" data-testid=\"fleet-unreadable\" className=\"grid gap-0.5 rounded-md border border-border bg-card px-3 py-2 text-caption\">\n <span className=\"font-semibold\">Your fleet cannot be read now</span>\n <span className=\"text-muted-foreground\">{message}</span>\n </p>\n );\n}\n","import { CircleAlert, CirclePause, CirclePlay, Hourglass } from 'lucide-react';\n\nimport type { ShipState } from '../services/your-fleet';\n\nconst ICONS = { alert: CircleAlert, waiting: Hourglass, working: CirclePlay, idle: CirclePause } as const;\n\n/** A ship state's mark, as Harbour draws it; always beside its word, so it never rests on the icon alone. */\nexport function StateIcon({ state }: { state: ShipState }) {\n const Icon = ICONS[state];\n return <Icon aria-hidden=\"true\" className=\"size-3 shrink-0\" />;\n}\n","import { Network, Plug, SquareTerminal, Users } from 'lucide-react';\n\nimport { GROUP_LABELS, STATE_LABELS, type FleetGroup, type FleetTile, type ShipState, type YourFleet } from '../services/your-fleet';\nimport { StateIcon } from './state-icon';\n\nconst GROUP_ICONS = { people: Users, agents: SquareTerminal, plugins: Plug, throughTheGateway: Network } as const;\n\n/** A tile is filled in its state's tone; Idle tiles stay plain, so colour marks only what is going on. */\nconst TILE_TONES: Record<ShipState, string> = {\n alert: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n working: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n idle: 'border-border bg-card text-muted-foreground',\n};\n\nfunction Tile({ tile }: { tile: FleetTile }) {\n const { name, state, note } = tile;\n return (\n <li data-testid=\"fleet-tile\" title={note === null ? name : `${name}: ${note}`} className={`flex h-13 min-w-0 flex-col justify-between rounded-md border px-2 py-1.5 ${TILE_TONES[state]}`}>\n <span className=\"truncate text-caption font-semibold text-card-foreground\">{name}</span>\n <span className=\"flex items-center gap-1 text-[11px]\">\n <StateIcon state={state} />\n {STATE_LABELS[state]}\n </span>\n </li>\n );\n}\n\nfunction Group({ group, tiles, tileColumns }: { group: FleetGroup; tiles: readonly FleetTile[]; tileColumns: string }) {\n const Icon = GROUP_ICONS[group];\n return (\n <section className=\"grid gap-1.5\" aria-label={GROUP_LABELS[group]}>\n <h3 className=\"flex items-center gap-1.5 text-caption font-semibold\">\n <Icon aria-hidden=\"true\" className=\"size-3.5 shrink-0\" />\n <span>{GROUP_LABELS[group]}</span>\n <span className=\"font-normal text-muted-foreground\">{tiles.length}</span>\n </h3>\n <ul className={`grid gap-1.5 ${tileColumns}`}>\n {tiles.map((tile) => (\n <Tile key={tile.shipId} tile={tile} />\n ))}\n </ul>\n </section>\n );\n}\n\n/**\n * One tile per ship, grouped People, Agents, Plugins and Through the gateway,\n * each group alerts first; what a ship is doing shows in its tile's title.\n */\nexport function FleetWall({ groups, tileColumns, className }: { groups: YourFleet['groups']; tileColumns: string; className?: string }) {\n return (\n <div data-testid=\"fleet-wall\" className={`${className ?? ''} grid gap-2.5`.trim()}>\n {groups.map(({ group, tiles }) => (\n <Group key={group} group={group} tiles={tiles} tileColumns={tileColumns} />\n ))}\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'users',\n size: 24,\n node: [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon(__iconData);\n\nexport default Users;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'network',\n size: 24,\n node: [\n ['rect', { x: '16', y: '16', width: '6', height: '6', rx: '1', key: '4q2zg0' }],\n ['rect', { x: '2', y: '16', width: '6', height: '6', rx: '1', key: '8cvhb9' }],\n ['rect', { x: '9', y: '2', width: '6', height: '6', rx: '1', key: '1egb70' }],\n ['path', { d: 'M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3', key: '1jsf9p' }],\n ['path', { d: 'M12 12V8', key: '2874zd' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Network\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/network\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Network = createLucideIcon(__iconData);\n\nexport default Network;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'plug',\n size: 24,\n node: [\n ['path', { d: 'M12 22v-5', key: '1ega77' }],\n ['path', { d: 'M15 8V2', key: '18g5xt' }],\n [\n 'path',\n { d: 'M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z', key: '1xoxul' },\n ],\n ['path', { d: 'M9 8V2', key: '14iosj' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Plug\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plug\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plug = createLucideIcon(__iconData);\n\nexport default Plug;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'circle-alert',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n ],\n aliases: ['alert-circle'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleAlert = createLucideIcon(__iconData);\n\nexport default CircleAlert;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'circle-pause',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '10', x2: '10', y1: '15', y2: '9', key: 'c1nkhi' }],\n ['line', { x1: '14', x2: '14', y1: '15', y2: '9', key: 'h65svq' }],\n ],\n aliases: ['pause-circle'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name CirclePause\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-pause\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CirclePause = createLucideIcon(__iconData);\n\nexport default CirclePause;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'square-terminal',\n size: 24,\n node: [\n ['path', { d: 'm7 11 2-2-2-2', key: '1lz0vl' }],\n ['path', { d: 'M11 13h4', key: '1p7l4v' }],\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ],\n aliases: ['terminal-square'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name SquareTerminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/square-terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquareTerminal = createLucideIcon(__iconData);\n\nexport default SquareTerminal;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'circle-play',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z',\n key: 'kmsa83',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ],\n aliases: ['play-circle'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name CirclePlay\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-play\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CirclePlay = createLucideIcon(__iconData);\n\nexport default CirclePlay;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'hourglass',\n size: 24,\n node: [\n ['path', { d: 'M5 22h14', key: 'ehvnwv' }],\n ['path', { d: 'M5 2h14', key: 'pdyrp9' }],\n [\n 'path',\n {\n d: 'M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22',\n key: '1d314k',\n },\n ],\n [\n 'path',\n {\n d: 'M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2',\n key: '1vvvr6',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Hourglass\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/hourglass\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hourglass = createLucideIcon(__iconData);\n\nexport default Hourglass;\n"],"names":["key","x2","name","size","r","y2"],"mappings":"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","ignoreList":[4,5,6,7,8,9,10,11]}
|
package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[43889,a=>{"use strict";var b,c,d=a.i(37936),e=a.i(29517),f=a.i(18558);a.i(70396);var g=a.i(73727),h=a.i(55476),i=a.i(66283),j=a.i(29493),k=a.i(49310),l=a.i(54757),l=l,m=l,n=l,o=a.i(27221),p=a.i(83931),q=a.i(26972),r=l,s=l,t=l,u=l,v=a.i(30174);let w=new TextEncoder;function x(a){return w.encode(a).byteLength}var m=l,y=a.i(89963),z=l,A=l,B=a.i(11365),n=l,l=l,m=l;let C=k.z.enum(["working","blocked","idle"]),D=`A note is one line of at most ${String(200)} characters`;new TextEncoder;let E=z.record(o.z.string(),A.json()),F=q.z.object({kind:o.z.string()}).catchall(A.json()),G=q.z.object({at:B.z.number(),of:B.z.number()});q.z.object({state:C,note:o.z.string().trim().max(200,D).refine(function(a){return!/[\r\n]/.test(a)},D).optional(),details:E.nullable().optional(),detailsPatch:E.nullable().optional(),task:F.nullable().optional(),step:G.nullable().optional()}).refine(a=>void 0===a.details||void 0===a.detailsPatch,{message:"Give details or detailsPatch, not both",path:["detailsPatch"]}),n.strictObject({});let H=q.z.object({state:C,note:o.z.string().nullable(),task:F.nullable(),taskView:q.z.object({canOpen:p.z.boolean(),fleetName:o.z.string().nullable()}).optional(),step:G.nullable(),reportedAt:l.iso.datetime(),reportChangedAt:l.iso.datetime(),detailsVersion:m.int().min(0)}).extend({details:E.nullable()});q.z.object({report:H.nullable(),previousCrew:H.nullable()});let I=k.z.enum(["crew-request-unassigned","delivery-unacknowledged","delivery-overdue","ping-unanswered","report-unchanged","task-not-done"]),J=l.iso.datetime({offset:!0}),K=m.int().min(1),L=n.strictObject({settingsVersion:m.int().min(1),minutes:K,reason:o.z.string().nullable()}),M=n.strictObject({deliveryId:(0,e.f)("delivery"),messageId:(0,e.f)("message"),state:k.z.enum(["pending","received","handed"]),awaitingCrew:p.z.boolean(),minutes:K}),N=n.strictObject({deliveryId:(0,e.f)("delivery"),messageId:(0,e.f)("message"),overdueEventId:(0,e.f)("event")}),O=n.strictObject({deliveryId:(0,e.f)("delivery"),messageId:(0,e.f)("message"),minutes:K}),P=n.strictObject({reportChangedAt:J,state:k.z.enum(["working","blocked"]),minutes:K,setBy:(0,e.f)("ship")}),Q=n.strictObject({task:F,doneBy:J,setBy:(0,e.f)("ship")}),R=[q.z.object({signal:r.literal("crew-request-unassigned"),facts:L}),q.z.object({signal:r.literal("delivery-unacknowledged"),facts:M}),q.z.object({signal:r.literal("delivery-overdue"),facts:N}),q.z.object({signal:r.literal("ping-unanswered"),facts:O}),q.z.object({signal:r.literal("report-unchanged"),facts:P}),q.z.object({signal:r.literal("task-not-done"),facts:Q})],S=s.discriminatedUnion("signal",R);t.intersection(q.z.object({alertId:(0,e.f)("alert"),headline:o.z.string().min(1).max(80),body:o.z.string().refine(a=>2048>=x(a),`A body is at most ${String(2048)} bytes`),ship:q.z.object({id:(0,e.f)("ship"),name:o.z.string()}),fleetId:(0,e.f)("fleet"),toldAs:k.z.enum(["owner","setter"]),since:J,raisedAt:J}),S).refine(a=>8192>=x(JSON.stringify(a)),`An alert message is at most ${String(8192)} bytes`),q.z.object({shipId:(0,e.f)("ship"),signal:I,facts:u.union([L,M,N,O,P,Q]),occurrenceKey:o.z.string().min(1).max(200),since:J}).transform(({shipId:a,signal:b,facts:c,occurrenceKey:d,since:e},f)=>{let g=S.safeParse({signal:b,facts:c});return g.success?{shipId:a,occurrenceKey:d,since:e,...g.data}:(f.addIssue({code:"custom",message:"The facts are not the signal's",path:["facts"]}),v.z.NEVER)}),q.z.object({alertId:(0,e.f)("alert")});let T=k.z.enum(["cleared","retired"]),U=t.intersection(q.z.object({id:(0,e.f)("alert"),ship:q.z.object({id:(0,e.f)("ship"),name:o.z.string()}),occurrenceKey:o.z.string(),ownerShipId:(0,e.f)("ship").nullable(),since:l.iso.datetime(),raisedAt:l.iso.datetime(),cleared:q.z.object({at:l.iso.datetime(),why:T}).nullable()}),S);(b=(0,e.f)("alert"),q.z.object({cursor:b.optional(),limit:m.int().min(1).max(500).optional()})).optional(),c=(0,e.f)("alert"),q.z.object({items:y.z.array(U),nextCursor:c.nullable()});var m=l,V=l,u=l,l=l;function W(a){let[b=""]=a.split(";");return b.trim().toLowerCase()}let X=m.int().min(1),Y=o.z.string().min(1),Z=q.z.object({key:X,label:Y,detail:o.z.string().default("")}),$=q.z.object({id:V.uuid(),title:Y,context:o.z.string(),options:y.z.array(Z).min(1),pick:q.z.object({option:X,why:Y})}).refine(({options:a})=>new Set(a.map(({key:a})=>a)).size===a.length,{message:"Every option has its own number",path:["options"]}).refine(({options:a,pick:b})=>a.some(({key:a})=>a===b.option),{message:"The pick names one of the options",path:["pick","option"]}),_=q.z.object({questionId:V.uuid()}),aa=q.z.object({questionId:V.uuid(),question:$}).refine(({questionId:a,question:b})=>b.id!==a,{message:"The new question has a uuid of its own",path:["question","id"]});u.union([q.z.object({option:X,note:Y.optional()}),q.z.object({note:Y})]);let ab=u.union([q.z.object({questionId:V.uuid(),option:X,note:Y.optional()}),q.z.object({questionId:V.uuid(),note:Y})]),ac=q.z.object({messageId:(0,e.f)("message"),sentAt:l.iso.datetime(),option:X.nullable(),note:o.z.string().nullable()});function ad(a){try{return JSON.parse(a)}catch{return}}q.z.object({id:V.uuid(),title:o.z.string(),context:o.z.string(),options:y.z.array(Z),pick:q.z.object({option:X,why:o.z.string()}),answer:ac.nullable()});var ae=l;let af=q.z.object({title:o.z.string().min(1),why:o.z.string(),link:ae.url({protocol:/^https?$/}).optional()}),ag=new Set(["application/vnd.aeolus.alert+json","application/vnd.aeolus.notice+json"]),ah=q.z.object({body:o.z.string()});var ai=a.i(94705),aj=a.i(29660);async function ak(a,b){let c;try{c={isOk:!0,value:await b(await (0,i.z)(a))}}catch(c){let b=(0,i.U)(c);if("UNAUTHORIZED"===b)return(0,g.redirect)(`/sign-in/start?${new URLSearchParams({return_to:`${aj.P}?${new URLSearchParams({[h.n]:a}).toString()}`}).toString()}`);return{isOk:!1,message:void 0===b?"The gateway did not answer: try again in a moment":(0,i.s)(c)}}return(0,f.revalidatePath)(aj.P,"layout"),c}async function al(a,b){return ak(a,a=>a.people.record.query({cursor:b}))}async function am(a,b){return ak(a,async a=>{let{contentType:c,payload:d,meetingId:e,...f}=await a.people.open.mutate({deliveryId:b});return{...f,payload:d,body:function(a){let[b=""]=a.contentType.split(";");if(!ag.has(b.trim().toLowerCase()))return a.payload;try{return ah.safeParse(JSON.parse(a.payload)).data?.body??a.payload}catch{return a.payload}}({contentType:c,payload:d}),question:function(a){if("application/vnd.aeolus.question+json"!==W(a.contentType))return function({contentType:a,payload:b}){if("application/vnd.aeolus.question-withdrawal+json"===W(a)){let a=_.safeParse(ad(b));return a.success?{questionId:a.data.questionId,replacement:null}:null}if("application/vnd.aeolus.question-replacement+json"===W(a)){let a=aa.safeParse(ad(b));return a.success?{questionId:a.data.questionId,replacement:a.data.question}:null}return null}(a)?.replacement??void 0;try{let b=$.safeParse(JSON.parse(a.payload));return b.success?b.data:void 0}catch{return}}({contentType:c,payload:d}),step:function(a){let[b=""]=a.contentType.split(";");if("application/vnd.aeolus.step+json"===b.trim().toLowerCase())try{let b=af.safeParse(JSON.parse(a.payload));if(!b.success)return;let{title:c,why:d,link:e}=b.data;return{title:c,why:d,link:void 0===e?void 0:{href:e,host:new URL(e).host}}}catch{return}}({contentType:c,payload:d}),meetingId:e??void 0}})}async function an({fleet:a,deliveryId:b,input:c}){let d=function(a){let b=a.note.trim();if(void 0===a.questionId)return""===b?{isOk:!1,message:"Write your answer first"}:{isOk:!0,value:{contentType:"text/plain",payload:b}};let c=ab.safeParse({questionId:a.questionId,...void 0===a.option?{}:{option:a.option},...""===b?{}:{note:b}});return c.success?{isOk:!0,value:{contentType:"application/vnd.aeolus.answer+json",payload:JSON.stringify(c.data)}}:{isOk:!1,message:"Tap an option, or write a note"}}(c);return d.isOk?ak(a,async a=>{await a.people.answer.mutate({deliveryId:b,...d.value})}):d}async function ao({fleet:a,deliveryId:b,option:c,note:d}){return ak(a,async a=>{await a.people.putInBasket.mutate({deliveryId:b,option:c,note:d})})}async function ap(a,b){return ak(a,async a=>{await a.people.removeFromBasket.mutate({questionId:b})})}async function aq(a){return ak(a,a=>a.people.sendBasket.mutate())}async function ar({fleet:a,deliveryId:b,step:c}){return ak(a,async a=>{await a.people.done.mutate(void 0===c?{deliveryId:b}:{deliveryId:b,...c})})}async function as({fleet:a,job:b,place:c,isOn:d}){return ak(a,async a=>{await a.people.turnRoute.mutate({job:b,place:c,isOn:d})})}async function at(a,b){return ak(a,async a=>{await a.people.turnOnWebPush.mutate({endpoint:b.endpoint,keys:{p256dh:b.keys.p256dh,auth:b.keys.auth},browser:b.browser})})}async function au(a,b){return ak(a,async a=>{await a.people.turnOffWebPush.mutate({endpoint:b})})}async function av(a){return ak(a,async a=>{await a.slack.unlink.mutate()})}async function aw({fleet:a,requestId:b,input:c}){if("deny"===c.kind)return ak(a,async a=>{await a.requests.decide.mutate({requestId:b,decision:{kind:"deny"}})});let d=(0,e.f)("ship").safeParse(c.ownerShipId.trim());if(!d.success)return{isOk:!1,message:"The owner's ship id is not a ship id (shp_...)"};let f={name:c.name,ownerShipId:d.data,scopes:[...new Set([...ai._,...c.scopes])]},{server:g}=c,h=void 0===g?void 0:(0,j.y)(g);return ak(a,async a=>{await a.requests.decide.mutate({requestId:b,decision:{kind:"approve",party:f,...void 0===g||void 0===h?{}:{server:{credential:h,concurrencyLimit:g.concurrencyLimit}}}})})}(0,a.i(13095).ensureServerEntryExports)([al,am,an,ao,ap,aq,ar,as,at,au,av,aw]),(0,d.registerServerReference)(al,"601621f5cf585bae9e540db5aa6e2c5d2a6bbcd72c",null),(0,d.registerServerReference)(am,"60c205c99f267754b5cb7b09118fdaf91f419555a5",null),(0,d.registerServerReference)(an,"40312d708ed123f3bff12a0e5d5ab7bdd456131901",null),(0,d.registerServerReference)(ao,"40c05f98915a7c9661aa8f801d392296ba8350eeba",null),(0,d.registerServerReference)(ap,"60cb932106ab7fdcbd18e33041be499ed83080592f",null),(0,d.registerServerReference)(aq,"407bae59090ef46e76fb8d952969288e5bb4583e21",null),(0,d.registerServerReference)(ar,"407cf7e8bf1a43e93e600808ccd1631dfd13c9b490",null),(0,d.registerServerReference)(as,"40d55047d0fa263dfb22afcf17c36e422f88773b7f",null),(0,d.registerServerReference)(at,"606869fb42c6cf9c02d918ac32cc0df0df992ce8e8",null),(0,d.registerServerReference)(au,"601545266cbcd00188699907a363d2d01cacdd7590",null),(0,d.registerServerReference)(av,"4068e0a012962959eed53cdc1898b8acfd21d81a71",null),(0,d.registerServerReference)(aw,"4013cfcec33d2651e37d34a8c0cd6f4b7e2f79d5b8",null),a.s(["q",0,an,"Q",0,aw,"G",0,ar,"v",0,am,"y",0,ao,"F",0,al,"D",0,ap,"K",0,aq,"W",0,au,"z",0,at,"e",0,as,"Z",0,av],43889)}];
|
|
1
|
+
module.exports=[43889,a=>{"use strict";var b,c,d=a.i(37936),e=a.i(29517),f=a.i(18558),g=a.i(5246);a.i(70396);var h=a.i(73727),i=a.i(55476),j=a.i(66283),k=a.i(29493),l=a.i(49310),m=a.i(54757),m=m,n=m,o=m,p=a.i(27221),q=a.i(83931),r=a.i(26972),s=m,t=m,u=m,v=m,w=a.i(30174);let x=new TextEncoder;function y(a){return x.encode(a).byteLength}var n=m,z=a.i(1081),A=m,B=m,C=a.i(11365),o=m,m=m,n=m;let D=l.z.enum(["working","blocked","idle"]),E=`A note is one line of at most ${String(200)} characters`;new TextEncoder;let F=A.record(p.z.string(),B.json()),G=r.z.object({kind:p.z.string()}).catchall(B.json()),H=r.z.object({at:C.z.number(),of:C.z.number()});r.z.object({state:D,note:p.z.string().trim().max(200,E).refine(function(a){return!/[\r\n]/.test(a)},E).optional(),details:F.nullable().optional(),detailsPatch:F.nullable().optional(),task:G.nullable().optional(),step:H.nullable().optional()}).refine(a=>void 0===a.details||void 0===a.detailsPatch,{message:"Give details or detailsPatch, not both",path:["detailsPatch"]}),o.strictObject({});let I=r.z.object({state:D,note:p.z.string().nullable(),task:G.nullable(),taskView:r.z.object({canOpen:q.z.boolean(),fleetName:p.z.string().nullable()}).optional(),step:H.nullable(),reportedAt:m.iso.datetime(),reportChangedAt:m.iso.datetime(),detailsVersion:n.int().min(0)}).extend({details:F.nullable()});r.z.object({report:I.nullable(),previousCrew:I.nullable()});let J="application/vnd.aeolus.alert+json",K=l.z.enum(["crew-request-unassigned","delivery-unacknowledged","delivery-overdue","ping-unanswered","report-unchanged","task-not-done"]),L=m.iso.datetime({offset:!0}),M=n.int().min(1),N=o.strictObject({settingsVersion:n.int().min(1),minutes:M,reason:p.z.string().nullable()}),O=o.strictObject({deliveryId:(0,e.f)("delivery"),messageId:(0,e.f)("message"),state:l.z.enum(["pending","received","handed"]),awaitingCrew:q.z.boolean(),minutes:M}),P=o.strictObject({deliveryId:(0,e.f)("delivery"),messageId:(0,e.f)("message"),overdueEventId:(0,e.f)("event")}),Q=o.strictObject({deliveryId:(0,e.f)("delivery"),messageId:(0,e.f)("message"),minutes:M}),R=o.strictObject({reportChangedAt:L,state:l.z.enum(["working","blocked"]),minutes:M,setBy:(0,e.f)("ship")}),S=o.strictObject({task:G,doneBy:L,setBy:(0,e.f)("ship")}),T=[r.z.object({signal:s.literal("crew-request-unassigned"),facts:N}),r.z.object({signal:s.literal("delivery-unacknowledged"),facts:O}),r.z.object({signal:s.literal("delivery-overdue"),facts:P}),r.z.object({signal:s.literal("ping-unanswered"),facts:Q}),r.z.object({signal:s.literal("report-unchanged"),facts:R}),r.z.object({signal:s.literal("task-not-done"),facts:S})],U=t.discriminatedUnion("signal",T),V=u.intersection(r.z.object({alertId:(0,e.f)("alert"),headline:p.z.string().min(1).max(80),body:p.z.string().refine(a=>2048>=y(a),`A body is at most ${String(2048)} bytes`),ship:r.z.object({id:(0,e.f)("ship"),name:p.z.string()}),fleetId:(0,e.f)("fleet"),toldAs:l.z.enum(["owner","setter"]),since:L,raisedAt:L}),U).refine(a=>8192>=y(JSON.stringify(a)),`An alert message is at most ${String(8192)} bytes`);r.z.object({shipId:(0,e.f)("ship"),signal:K,facts:v.union([N,O,P,Q,R,S]),occurrenceKey:p.z.string().min(1).max(200),since:L}).transform(({shipId:a,signal:b,facts:c,occurrenceKey:d,since:e},f)=>{let g=U.safeParse({signal:b,facts:c});return g.success?{shipId:a,occurrenceKey:d,since:e,...g.data}:(f.addIssue({code:"custom",message:"The facts are not the signal's",path:["facts"]}),w.z.NEVER)}),r.z.object({alertId:(0,e.f)("alert")});let W=l.z.enum(["cleared","retired"]),X=u.intersection(r.z.object({id:(0,e.f)("alert"),ship:r.z.object({id:(0,e.f)("ship"),name:p.z.string()}),occurrenceKey:p.z.string(),ownerShipId:(0,e.f)("ship").nullable(),since:m.iso.datetime(),raisedAt:m.iso.datetime(),cleared:r.z.object({at:m.iso.datetime(),why:W}).nullable()}),U);(b=(0,e.f)("alert"),r.z.object({cursor:b.optional(),limit:n.int().min(1).max(500).optional()})).optional(),c=(0,e.f)("alert"),r.z.object({items:z.z.array(X),nextCursor:c.nullable()});var n=m,Y=m,v=m,m=m;function Z(a){let[b=""]=a.split(";");return b.trim().toLowerCase()}let $=n.int().min(1),_=p.z.string().min(1),aa=r.z.object({key:$,label:_,detail:p.z.string().default("")}),ab=r.z.object({id:Y.uuid(),title:_,context:p.z.string(),options:z.z.array(aa).min(1),pick:r.z.object({option:$,why:_})}).refine(({options:a})=>new Set(a.map(({key:a})=>a)).size===a.length,{message:"Every option has its own number",path:["options"]}).refine(({options:a,pick:b})=>a.some(({key:a})=>a===b.option),{message:"The pick names one of the options",path:["pick","option"]}),ac=r.z.object({questionId:Y.uuid()}),ad=r.z.object({questionId:Y.uuid(),question:ab}).refine(({questionId:a,question:b})=>b.id!==a,{message:"The new question has a uuid of its own",path:["question","id"]});v.union([r.z.object({option:$,note:_.optional()}),r.z.object({note:_})]);let ae=v.union([r.z.object({questionId:Y.uuid(),option:$,note:_.optional()}),r.z.object({questionId:Y.uuid(),note:_})]),af=r.z.object({messageId:(0,e.f)("message"),sentAt:m.iso.datetime(),option:$.nullable(),note:p.z.string().nullable()});function ag(a){try{return JSON.parse(a)}catch{return}}r.z.object({id:Y.uuid(),title:p.z.string(),context:p.z.string(),options:z.z.array(aa),pick:r.z.object({option:$,why:p.z.string()}),answer:af.nullable()});var ah=m;function ai(a){if("application/vnd.aeolus.question+json"!==Z(a.contentType))return function({contentType:a,payload:b}){if("application/vnd.aeolus.question-withdrawal+json"===Z(a)){let a=ac.safeParse(ag(b));return a.success?{questionId:a.data.questionId,replacement:null}:null}if("application/vnd.aeolus.question-replacement+json"===Z(a)){let a=ad.safeParse(ag(b));return a.success?{questionId:a.data.questionId,replacement:a.data.question}:null}return null}(a)?.replacement??void 0;try{let b=ab.safeParse(JSON.parse(a.payload));return b.success?b.data:void 0}catch{return}}let aj=r.z.object({title:p.z.string().min(1),why:p.z.string(),link:ah.url({protocol:/^https?$/}).optional()}),ak=new Map([["application/vnd.aeolus.step+json",aj],["application/vnd.aeolus.step-replacement+json",r.z.object({step:aj}).transform(({step:a})=>a)]]),al=new Set([J,"application/vnd.aeolus.notice+json"]),am=r.z.object({body:p.z.string()});var an=a.i(94705),ao=a.i(75879);let ap=r.z.object({ship:r.z.object({name:p.z.string().min(1)})});var aq=a.i(29660);async function ar(a,b){let c;try{c={isOk:!0,value:await b(await (0,j.z)(a))}}catch(c){let b=(0,j.U)(c);if("UNAUTHORIZED"===b)return(0,h.redirect)(`/sign-in/start?${new URLSearchParams({return_to:`${aq.P}?${new URLSearchParams({[i.n]:a}).toString()}`}).toString()}`);return void 0===b?{isOk:!1,message:"The gateway did not answer: try again in a moment"}:{isOk:!1,message:(0,j.s)(c),code:b}}return(0,f.revalidatePath)(aq.P,"layout"),c}async function as(a,b){return ar(a,a=>a.people.record.query({cursor:b}))}async function at(a,b){let c=(await (0,g.headers)()).get("host")??"";return ar(a,async a=>{let{contentType:d,payload:e,meetingId:f,...g}=await a.people.open.mutate({deliveryId:b});return{...g,payload:e,body:function(a){let[b=""]=a.contentType.split(";");if(!al.has(b.trim().toLowerCase()))return a.payload;try{return am.safeParse(JSON.parse(a.payload)).data?.body??a.payload}catch{return a.payload}}({contentType:d,payload:e}),question:ai({contentType:d,payload:e}),step:function(a,b){let[c=""]=a.contentType.split(";"),d=ak.get(c.trim().toLowerCase());if(void 0!==d)try{let c,e=d.safeParse(JSON.parse(a.payload));if(!e.success)return;let{title:f,why:g,link:h}=e.data;return{title:f,why:g,link:void 0===h?void 0:(c=new URL(h),{href:h,address:`${c.host}${c.pathname.replace(/\/$/,"")}`,isOutside:c.host!==b})}}catch{return}}({contentType:d,payload:e},c),alert:function(a){if(a.contentType===J)try{let b=V.safeParse(JSON.parse(a.payload));return b.success?{ship:b.data.ship,signal:b.data.signal}:void 0}catch{return}}({contentType:d,payload:e}),meetingId:f??void 0,alertShip:function(a){let[b=""]=a.contentType.split(";");if(b.trim().toLowerCase()===J)try{return ap.safeParse(JSON.parse(a.payload)).data?.ship.name}catch{return}}({contentType:d,payload:e})}})}async function au({fleet:a,deliveryId:b,input:c}){let d=function(a){let b=a.note.trim();if(void 0===a.questionId)return""===b?{isOk:!1,message:"Write your answer first"}:{isOk:!0,value:{contentType:"text/plain",payload:b}};let c=ae.safeParse({questionId:a.questionId,...void 0===a.option?{}:{option:a.option},...""===b?{}:{note:b}});return c.success?{isOk:!0,value:{contentType:"application/vnd.aeolus.answer+json",payload:JSON.stringify(c.data)}}:{isOk:!1,message:"Tap an option, or write a note"}}(c);return d.isOk?ar(a,async a=>{await a.people.answer.mutate({deliveryId:b,...d.value})}):d}async function av({fleet:a,deliveryId:b,option:c,optionLabel:d,note:e}){return ar(a,async a=>{let{option:f,note:g}=await a.people.putInBasket.mutate({deliveryId:b,option:c,optionLabel:d,note:e});return{option:f,note:g}})}async function aw({fleet:a,deliveryId:b,option:c}){return ar(a,async a=>{let d=await a.people.open.mutate({deliveryId:b}),e=ai(d)?.options.find(({key:a})=>a===c)?.label??null;await a.people.putInBasket.mutate({deliveryId:b,option:c,optionLabel:e,note:""})})}async function ax(a,b){return ar(a,async a=>{await a.people.removeFromBasket.mutate({questionId:b})})}async function ay(a){return ar(a,a=>a.people.sendBasket.mutate())}async function az({fleet:a,deliveryId:b,step:c}){return ar(a,async a=>{await a.people.done.mutate(void 0===c?{deliveryId:b}:{deliveryId:b,...c})})}async function aA(a){return ar(a,async a=>{var b;let c,d,[e,f]=await Promise.all([a.people.sendTo.query(),a.people.yourFleet.query().catch(()=>void 0)]);return{sentAs:e.sentAs,ships:(b=e.ships,c=new Map((f?.groups??[]).flatMap(({tiles:a})=>a.map(({name:a,state:b})=>[a,b]))),d=a=>null===a?ao.X.length:ao.X.indexOf(a),b.map(a=>({name:a,state:c.get(a)??null})).toSorted((a,b)=>d(a.state)-d(b.state)||a.name.localeCompare(b.name)))}})}async function aB({fleet:a,to:b,payload:c,idempotencyKey:d}){return ar(a,async a=>(await a.people.send.mutate({to:b,payload:c,idempotencyKey:d}),{storedAt:new Date().toISOString()}))}async function aC({fleet:a,job:b,place:c,isOn:d}){return ar(a,async a=>{await a.people.turnRoute.mutate({job:b,place:c,isOn:d})})}async function aD(a,b){return ar(a,async a=>{await a.people.turnOnWebPush.mutate({endpoint:b.endpoint,keys:{p256dh:b.keys.p256dh,auth:b.keys.auth},browser:b.browser})})}async function aE(a,b){return ar(a,async a=>{await a.people.turnOffWebPush.mutate({endpoint:b})})}async function aF(a){return ar(a,async a=>{await a.slack.unlink.mutate()})}async function aG({fleet:a,requestId:b,input:c}){if("deny"===c.kind)return ar(a,async a=>{await a.requests.decide.mutate({requestId:b,decision:{kind:"deny"}})});let d=(0,e.f)("ship").safeParse(c.ownerShipId.trim());if(!d.success)return{isOk:!1,message:"The owner's ship id is not a ship id (shp_...)"};let f={name:c.name,ownerShipId:d.data,scopes:[...new Set([...an._,...c.scopes])]},{server:g}=c,h=void 0===g?void 0:(0,k.y)(g);return ar(a,async a=>{await a.requests.decide.mutate({requestId:b,decision:{kind:"approve",party:f,...void 0===g||void 0===h?{}:{server:{credential:h,concurrencyLimit:g.concurrencyLimit}}}})})}(0,a.i(13095).ensureServerEntryExports)([as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG]),(0,d.registerServerReference)(as,"6003997bc9e9bf872ec8448b9ff9e01847ee173bf1",null),(0,d.registerServerReference)(at,"609a2b2041824dadd08bf54ae421b7d5f7088bab02",null),(0,d.registerServerReference)(au,"40fb3c9b60f409e9d7f4301b0cd5dbbb0079b0b5ea",null),(0,d.registerServerReference)(av,"407a6fe3f2e6041fa40819ae482a35a393193dd1b9",null),(0,d.registerServerReference)(aw,"40b3a7c25633f32ede1058cdd28484f56b049150d9",null),(0,d.registerServerReference)(ax,"6050935e24e32a35e279e7c292c8a9aa38508db651",null),(0,d.registerServerReference)(ay,"400320361887ac212b3589baccdc71146b3f431261",null),(0,d.registerServerReference)(az,"4012c933c13b7b99c26d61a5bed3d60ed41fd5e253",null),(0,d.registerServerReference)(aA,"4053d936439268d18b4bb24ccb80741d4998f4a69e",null),(0,d.registerServerReference)(aB,"4085d7bd3cb14a5b63344a43b7dfdb8f4079e95e2a",null),(0,d.registerServerReference)(aC,"402437ac0c9d46fa502dabec5228a952d7b3b27ed1",null),(0,d.registerServerReference)(aD,"60d16eee56d2a7c0d1b7a0da4bfe794349c6e4a56f",null),(0,d.registerServerReference)(aE,"6004464d6d01803499a8638865f39d917b29db7cf2",null),(0,d.registerServerReference)(aF,"407f924129760376461b283c0cb9547e08664ae1bb",null),(0,d.registerServerReference)(aG,"407ec5a94e3e5f5383c309c1ce9ea498eafeded2c3",null),a.s(["q",0,au,"Q",0,aG,"G",0,az,"v",0,at,"y",0,av,"W",0,aw,"F",0,as,"e",0,aA,"D",0,ax,"K",0,ay,"u",0,aB,"X",0,aE,"z",0,aD,"f",0,aC,"Z",0,aF],43889)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../web/features/bridge/hooks/bridge-actions.ts","../../../../../node_modules/%40aeolus-fleet/common/src/rules/page-size.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/alert.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/question.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/page.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/report.ts","../../../../../node_modules/%40aeolus-fleet/common/src/rules/payload.ts","../../../../../web/features/bridge/services/deliveries.ts"],"sourcesContent":["'use server';\n/**\n * Bridge's actions, each one call of the gateway's API as the signed-in\n * account, on the server (0033): opening, answering and being done with an\n * item, putting an answer in the basket, removing it and sending the basket,\n * reading the next page of the record, and in Bridge's settings where\n * each job shows, web push, the Slack link and deciding a request. The API checks everything; a\n * refusal comes back in its own words for the page to say by the control. A\n * sign-in that ended sends the person to sign in again.\n */\nimport { idSchema } from '@aeolus-fleet/common';\nimport { revalidatePath } from 'next/cache';\nimport { redirect } from 'next/navigation';\n\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { FLEET_PARAMETER } from '../../../lib/gateway-api/page-account';\nimport { refusalCodeOf, refusalMessageOf, requestApi } from '../../../lib/gateway-api/page-api';\nimport { serverCredentialOf } from '../../forms/server-credential';\nimport { answerOf, bodyOf, questionOf, stepOf, type AnswerInput, type FocusedDelivery } from '../services/deliveries';\nimport type { SubscriptionInput } from '../services/web-push';\nimport { EVERY_APP_SHIP_SCOPES, type DecisionInput } from '../services/requests';\nimport type { BasketSent } from '../services/basket';\nimport type { RecordPage } from '../services/items';\nimport type { RoutedJob, RoutedPlace } from '../services/routing';\nimport { BRIDGE_PATH } from '../paths';\n\n/** What an action says when the gateway gave no answer of its own. */\nconst NO_ANSWER = 'The gateway did not answer: try again in a moment';\n\nexport type ActionOutcome<T> = { readonly isOk: true; readonly value: T } | { readonly isOk: false; readonly message: string };\n\nasync function attempt<T>(fleet: string, run: (api: GatewayApi) => Promise<T>): Promise<ActionOutcome<T>> {\n let outcome: ActionOutcome<T>;\n try {\n outcome = { isOk: true, value: await run(await requestApi(fleet)) };\n } catch (error) {\n const code = refusalCodeOf(error);\n if (code === 'UNAUTHORIZED') {\n return redirect(`/sign-in/start?${new URLSearchParams({ return_to: `${BRIDGE_PATH}?${new URLSearchParams({ [FLEET_PARAMETER]: fleet }).toString()}` }).toString()}`);\n }\n return { isOk: false, message: code === undefined ? NO_ANSWER : refusalMessageOf(error) };\n }\n revalidatePath(BRIDGE_PATH, 'layout');\n return outcome;\n}\n\n/** The next page of the person ship's record, after the cursor the last one answered (Done). */\nexport async function readMoreRecord(fleet: string, cursor: string): Promise<ActionOutcome<RecordPage>> {\n return attempt(fleet, (api) => api.people.record.query({ cursor }));\n}\n\n/** Opens an item: the gateway acknowledges it for the person, and it is shown whole, once; an alert or a notice seen is done (CC16). */\nexport async function openDelivery(fleet: string, deliveryId: string): Promise<ActionOutcome<FocusedDelivery>> {\n return attempt(fleet, async (api) => {\n const opened = await api.people.open.mutate({ deliveryId });\n const { contentType, payload, meetingId, ...entry } = opened;\n return { ...entry, payload, body: bodyOf({ contentType, payload }), question: questionOf({ contentType, payload }), step: stepOf({ contentType, payload }), meetingId: meetingId ?? undefined };\n });\n}\n\nexport async function answerDelivery({ fleet, deliveryId, input }: { fleet: string; deliveryId: string; input: AnswerInput }): Promise<ActionOutcome<undefined>> {\n const answer = answerOf(input);\n if (!answer.isOk) {\n return answer;\n }\n return attempt(fleet, async (api) => {\n await api.people.answer.mutate({ deliveryId, ...answer.value });\n return undefined;\n });\n}\n\n/** Puts the person's answer to a question in the basket, or changes it there: nothing is sent (Bridge, section 9). */\nexport async function putInBasket({ fleet, deliveryId, option, note }: { fleet: string; deliveryId: string; option: number; note: string }): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.putInBasket.mutate({ deliveryId, option, note });\n return undefined;\n });\n}\n\n/** Takes an answer out of the basket; one the fleet refused marks its question done, not sent. */\nexport async function removeFromBasket(fleet: string, questionId: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.removeFromBasket.mutate({ questionId });\n return undefined;\n });\n}\n\n/** Send N answers: each entry stored as sending, then sent on its own by the gateway. */\nexport async function sendBasket(fleet: string): Promise<ActionOutcome<BasketSent>> {\n return attempt(fleet, (api) => api.people.sendBasket.mutate());\n}\n\n/** Is done with an item; a step done or cannot, with the person's note if they wrote one, its outcome sent at once (CC14, CC23). */\nexport async function doneDelivery({ fleet, deliveryId, step }: { fleet: string; deliveryId: string; step?: { outcome: 'done' | 'cannot'; note: string } }): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.done.mutate(step === undefined ? { deliveryId } : { deliveryId, ...step });\n return undefined;\n });\n}\n\n/** Turns a place on or off for a job: it applies at once (Bridge, section 8). */\nexport async function turnRoute({ fleet, job, place, isOn }: { fleet: string; job: RoutedJob; place: RoutedPlace; isOn: boolean }): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnRoute.mutate({ job, place, isOn });\n return undefined;\n });\n}\n\n/** Turns web push on for the browser that subscribed (wake a person, W8). */\nexport async function turnOnWebPush(fleet: string, subscription: SubscriptionInput): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnOnWebPush.mutate({ endpoint: subscription.endpoint, keys: { p256dh: subscription.keys.p256dh, auth: subscription.keys.auth }, browser: subscription.browser });\n return undefined;\n });\n}\n\n/** Removes a browser the person turned web push on in. */\nexport async function turnOffWebPush(fleet: string, endpoint: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnOffWebPush.mutate({ endpoint });\n return undefined;\n });\n}\n\n/** Unlinks the person's Slack account (gateway scopes 9.3). */\nexport async function unlinkSlack(fleet: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.slack.unlink.mutate();\n return undefined;\n });\n}\n\n/** Decides a request; approving names the proxy ship, its owner and its scopes, messages:send and messages:receive always among them. */\nexport async function decideRequest({ fleet, requestId, input }: { fleet: string; requestId: string; input: DecisionInput }): Promise<ActionOutcome<undefined>> {\n if (input.kind === 'deny') {\n return attempt(fleet, async (api) => {\n await api.requests.decide.mutate({ requestId, decision: { kind: 'deny' } });\n return undefined;\n });\n }\n const ownerShipId = idSchema('ship').safeParse(input.ownerShipId.trim());\n if (!ownerShipId.success) {\n return { isOk: false, message: \"The owner's ship id is not a ship id (shp_...)\" };\n }\n const party = { name: input.name, ownerShipId: ownerShipId.data, scopes: [...new Set([...EVERY_APP_SHIP_SCOPES, ...input.scopes])] };\n const { server } = input;\n const credential = server === undefined ? undefined : serverCredentialOf(server);\n return attempt(fleet, async (api) => {\n await api.requests.decide.mutate({ requestId, decision: { kind: 'approve', party, ...(server === undefined || credential === undefined ? {} : { server: { credential, concurrencyLimit: server.concurrencyLimit } }) } });\n return undefined;\n });\n}\n","unable to read source [project]/node_modules/@aeolus-fleet/common/src/rules/page-size.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/alert.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/question.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/page.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/report.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/rules/payload.ts","/**\n * An item that reached a person, as Bridge shows it once opened, and the\n * answer its form sends: pure view logic, no React and no API client.\n */\nimport { ALERT_CONTENT_TYPE, ANSWER_CONTENT_TYPE, answerSchema, isQuestionContentType, questionSchema, withdrawalOf, type Question } from '@aeolus-fleet/common';\nimport { z } from 'zod';\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\n\n/** The channels that wake a person when something waits for their person ship, as the API shows them (wake a person, W8). */\nexport type WakeChannels = inferRouterOutputs<GatewayRouter>['people']['wakeChannels'];\n\n/**\n * A delivery in focus: whole, as the person opened it or opened it again,\n * with its question when it is one.\n */\nexport interface FocusedDelivery {\n readonly deliveryId: string;\n readonly from: string;\n readonly title: string;\n readonly sentAt: string;\n readonly payload: string;\n /** What it shows of its payload: an alert's or a notice's body, any other payload as it came. */\n readonly body: string;\n readonly question: Question | undefined;\n /** The step it asks (CC14), when it is one. */\n readonly step: StepView | undefined;\n /** The meeting it was contributed to or tells of, when it belongs to one. */\n readonly meetingId: string | undefined;\n /** Whether its asker withdrew or replaced the question it asks, with the replacement, a new item. */\n readonly stale: Stale | null;\n}\n\n/** A question its asker withdrew or replaced (decision 0038), as the API says it. */\nexport interface Stale {\n readonly kind: 'withdrawn' | 'replaced';\n readonly replacementId: string | null;\n}\n\n/** The question a delivery asks (decision 0038): a question's own, or the new question a replacement asks. */\nexport function questionOf(opened: { contentType: string; payload: string }): Question | undefined {\n if (!isQuestionContentType(opened.contentType)) {\n return withdrawalOf(opened)?.replacement ?? undefined;\n }\n try {\n const question = questionSchema.safeParse(JSON.parse(opened.payload));\n return question.success ? question.data : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** A step as Bridge shows it (CC14): its title, why, and its link with the host it leads to, when it has one. */\nexport interface StepView {\n readonly title: string;\n readonly why: string;\n readonly link: { readonly href: string; readonly host: string } | undefined;\n}\n\n/** The step content type (CC14), as common names it from its release after 0.35.0; it moves to common's constant then. */\nconst STEP_CONTENT_TYPE = 'application/vnd.aeolus.step+json';\n\n/** What Bridge reads of a step, as common's stepSchema words it from its release after 0.35.0 (Bridge B2); it moves to common's then. */\nconst stepSchema = z.object({ title: z.string().min(1), why: z.string(), link: z.url({ protocol: /^https?$/ }).optional() });\n\n/** The step a delivery asks; none for any other message, or one whose payload does not read. */\nexport function stepOf(opened: { contentType: string; payload: string }): StepView | undefined {\n const [essence = ''] = opened.contentType.split(';');\n if (essence.trim().toLowerCase() !== STEP_CONTENT_TYPE) {\n return undefined;\n }\n try {\n const step = stepSchema.safeParse(JSON.parse(opened.payload));\n if (!step.success) {\n return undefined;\n }\n const { title, why, link } = step.data;\n return { title, why, link: link === undefined ? undefined : { href: link, host: new URL(link).host } };\n } catch {\n return undefined;\n }\n}\n\n/** The notice content type (CC15), as common names it from its release after 0.35.0; it moves to common's constant then. */\nconst NOTICE_CONTENT_TYPE = 'application/vnd.aeolus.notice+json';\n\nconst BODIED = new Set([ALERT_CONTENT_TYPE, NOTICE_CONTENT_TYPE]);\n\nconst bodiedSchema = z.object({ body: z.string() });\n\n/** An alert's or a notice's body; any other payload, or one that does not read, as it came. */\nexport function bodyOf(opened: { contentType: string; payload: string }): string {\n const [essence = ''] = opened.contentType.split(';');\n if (!BODIED.has(essence.trim().toLowerCase())) {\n return opened.payload;\n }\n try {\n return bodiedSchema.safeParse(JSON.parse(opened.payload)).data?.body ?? opened.payload;\n } catch {\n return opened.payload;\n }\n}\n\n/** What the person sends: an option they tapped and a note, or a note alone. */\nexport interface AnswerInput {\n readonly questionId: string | undefined;\n readonly option: number | undefined;\n readonly note: string;\n}\n\n/** The answer a form sends: an option and a note, or a note alone, for a question; a note as plain text otherwise. */\nexport function answerOf(input: AnswerInput): { isOk: true; value: { contentType: string; payload: string } } | { isOk: false; message: string } {\n const note = input.note.trim();\n if (input.questionId === undefined) {\n return note === '' ? { isOk: false, message: 'Write your answer first' } : { isOk: true, value: { contentType: 'text/plain', payload: note } };\n }\n const answer = answerSchema.safeParse({ questionId: input.questionId, ...(input.option === undefined ? {} : { option: input.option }), ...(note === '' ? {} : { note }) });\n return answer.success ? { isOk: true, value: { contentType: ANSWER_CONTENT_TYPE, payload: JSON.stringify(answer.data) } } : { isOk: false, message: 'Tap an option, or write a note' };\n}\n"],"names":[],"mappings":"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","ignoreList":[1,2,3,4,5,6]}
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/bridge/hooks/bridge-actions.ts","../../../../../node_modules/%40aeolus-fleet/common/src/rules/page-size.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/alert.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/question.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/page.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/report.ts","../../../../../node_modules/%40aeolus-fleet/common/src/rules/payload.ts","../../../../../web/features/bridge/services/stay-aware.ts","../../../../../web/features/bridge/services/send-message.ts","../../../../../web/features/bridge/services/deliveries.ts"],"sourcesContent":["'use server';\n/**\n * Bridge's actions, each one call of the gateway's API as the signed-in\n * account, on the server (0033): opening, answering and being done with an\n * item, putting an answer in the basket, removing it and sending the basket,\n * sending a ship a message,\n * reading the next page of the record, and in Bridge's settings where\n * each job shows, web push, the Slack link and deciding a request. The API checks everything; a\n * refusal comes back in its own words for the page to say by the control. A\n * sign-in that ended sends the person to sign in again.\n */\nimport { idSchema } from '@aeolus-fleet/common';\nimport { revalidatePath } from 'next/cache';\nimport { headers } from 'next/headers';\nimport { redirect } from 'next/navigation';\n\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { FLEET_PARAMETER } from '../../../lib/gateway-api/page-account';\nimport { refusalCodeOf, refusalMessageOf, requestApi } from '../../../lib/gateway-api/page-api';\nimport { serverCredentialOf } from '../../forms/server-credential';\nimport { answerOf, bodyOf, questionOf, stepOf, type AnswerInput, type FocusedDelivery } from '../services/deliveries';\nimport { alertOf } from '../services/stay-aware';\nimport type { SubscriptionInput } from '../services/web-push';\nimport { EVERY_APP_SHIP_SCOPES, type DecisionInput } from '../services/requests';\nimport type { BasketSent } from '../services/basket';\nimport { alertShipOf, sendableShipsOf, type SendableShip } from '../services/send-message';\nimport type { RecordPage } from '../services/items';\nimport type { RoutedJob, RoutedPlace } from '../services/routing';\nimport { BRIDGE_PATH } from '../paths';\n\n/** What an action says when the gateway gave no answer of its own. */\nconst NO_ANSWER = 'The gateway did not answer: try again in a moment';\n\n/** What an action came to: its value, or why not, with the API's code when the API refused. */\nexport type ActionOutcome<T> = { readonly isOk: true; readonly value: T } | { readonly isOk: false; readonly message: string; readonly code?: string };\n\nasync function attempt<T>(fleet: string, run: (api: GatewayApi) => Promise<T>): Promise<ActionOutcome<T>> {\n let outcome: ActionOutcome<T>;\n try {\n outcome = { isOk: true, value: await run(await requestApi(fleet)) };\n } catch (error) {\n const code = refusalCodeOf(error);\n if (code === 'UNAUTHORIZED') {\n return redirect(`/sign-in/start?${new URLSearchParams({ return_to: `${BRIDGE_PATH}?${new URLSearchParams({ [FLEET_PARAMETER]: fleet }).toString()}` }).toString()}`);\n }\n return code === undefined ? { isOk: false, message: NO_ANSWER } : { isOk: false, message: refusalMessageOf(error), code };\n }\n revalidatePath(BRIDGE_PATH, 'layout');\n return outcome;\n}\n\n/** The next page of the person ship's record, after the cursor the last one answered (Done). */\nexport async function readMoreRecord(fleet: string, cursor: string): Promise<ActionOutcome<RecordPage>> {\n return attempt(fleet, (api) => api.people.record.query({ cursor }));\n}\n\n/** Opens an item: the gateway acknowledges it for the person, and it is shown whole, once; an alert or a notice seen is done (CC16). A step's link leads outside Aeolus unless it leads to the host this page was asked on. */\nexport async function openDelivery(fleet: string, deliveryId: string): Promise<ActionOutcome<FocusedDelivery>> {\n const bridgeHost = (await headers()).get('host') ?? '';\n return attempt(fleet, async (api) => {\n const opened = await api.people.open.mutate({ deliveryId });\n const { contentType, payload, meetingId, ...entry } = opened;\n return { ...entry, payload, body: bodyOf({ contentType, payload }), question: questionOf({ contentType, payload }), step: stepOf({ contentType, payload }, bridgeHost), alert: alertOf({ contentType, payload }), meetingId: meetingId ?? undefined, alertShip: alertShipOf({ contentType, payload }) };\n });\n}\n\nexport async function answerDelivery({ fleet, deliveryId, input }: { fleet: string; deliveryId: string; input: AnswerInput }): Promise<ActionOutcome<undefined>> {\n const answer = answerOf(input);\n if (!answer.isOk) {\n return answer;\n }\n return attempt(fleet, async (api) => {\n await api.people.answer.mutate({ deliveryId, ...answer.value });\n return undefined;\n });\n}\n\n/** Puts the person's answer to a question in the basket, or changes it there, with the option's label as the question shows it: nothing is sent (Bridge, section 9). */\nexport async function putInBasket({ fleet, deliveryId, option, optionLabel, note }: { fleet: string; deliveryId: string; option: number | null; optionLabel: string | null; note: string }): Promise<ActionOutcome<{ option: number | null; note: string | null }>> {\n return attempt(fleet, async (api) => {\n const { option: put, note: written } = await api.people.putInBasket.mutate({ deliveryId, option, optionLabel, note });\n return { option: put, note: written };\n });\n}\n\n/** From a question's row: opens it, as the person's own press, and puts its asker's pick in the basket with no note, named by its label as the question shows it (aeolus-fleet#1535). */\nexport async function putPickInBasket({ fleet, deliveryId, option }: { fleet: string; deliveryId: string; option: number }): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n const opened = await api.people.open.mutate({ deliveryId });\n const optionLabel = questionOf(opened)?.options.find(({ key }) => key === option)?.label ?? null;\n await api.people.putInBasket.mutate({ deliveryId, option, optionLabel, note: '' });\n return undefined;\n });\n}\n\n/** Takes an answer out of the basket; one the fleet refused marks its question done, not sent. */\nexport async function removeFromBasket(fleet: string, questionId: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.removeFromBasket.mutate({ questionId });\n return undefined;\n });\n}\n\n/** Send N answers: each entry stored as sending, then sent on its own by the gateway. */\nexport async function sendBasket(fleet: string): Promise<ActionOutcome<BasketSent>> {\n return attempt(fleet, (api) => api.people.sendBasket.mutate());\n}\n\n/** Is done with an item; a step done or cannot, with the person's note if they wrote one, its outcome sent at once (CC14, CC23). */\nexport async function doneDelivery({ fleet, deliveryId, step }: { fleet: string; deliveryId: string; step?: { outcome: 'done' | 'cannot'; note: string } }): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.done.mutate(step === undefined ? { deliveryId } : { deliveryId, ...step });\n return undefined;\n });\n}\n\n/**\n * Who the person can send a message to (aeolus-fleet #1547): the ships their\n * person ship may send to now, each in its state as Your fleet shows it, and\n * the name it sends as. Your fleet that cannot be read leaves the ships with\n * no state.\n */\nexport async function readSendTo(fleet: string): Promise<ActionOutcome<{ sentAs: string; ships: readonly SendableShip[] }>> {\n return attempt(fleet, async (api) => {\n const [sendTo, fleetRead] = await Promise.all([api.people.sendTo.query(), api.people.yourFleet.query().catch(() => undefined)]);\n return { sentAs: sendTo.sentAs, ships: sendableShipsOf(sendTo.ships, fleetRead) };\n });\n}\n\n/** Sends a ship a message as the person ship, under the form's key; it answers once the fleet stored it, with when the gateway heard so. */\nexport async function sendShipMessage({ fleet, to, payload, idempotencyKey }: { fleet: string; to: string; payload: string; idempotencyKey: string }): Promise<ActionOutcome<{ storedAt: string }>> {\n return attempt(fleet, async (api) => {\n await api.people.send.mutate({ to, payload, idempotencyKey });\n return { storedAt: new Date().toISOString() };\n });\n}\n\n/** Turns a place on or off for a job: it applies at once (Bridge, section 8). */\nexport async function turnRoute({ fleet, job, place, isOn }: { fleet: string; job: RoutedJob; place: RoutedPlace; isOn: boolean }): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnRoute.mutate({ job, place, isOn });\n return undefined;\n });\n}\n\n/** Turns web push on for the browser that subscribed (wake a person, W8). */\nexport async function turnOnWebPush(fleet: string, subscription: SubscriptionInput): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnOnWebPush.mutate({ endpoint: subscription.endpoint, keys: { p256dh: subscription.keys.p256dh, auth: subscription.keys.auth }, browser: subscription.browser });\n return undefined;\n });\n}\n\n/** Removes a browser the person turned web push on in. */\nexport async function turnOffWebPush(fleet: string, endpoint: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnOffWebPush.mutate({ endpoint });\n return undefined;\n });\n}\n\n/** Unlinks the person's Slack account (gateway scopes 9.3). */\nexport async function unlinkSlack(fleet: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.slack.unlink.mutate();\n return undefined;\n });\n}\n\n/** Decides a request; approving names the proxy ship, its owner and its scopes, messages:send and messages:receive always among them. */\nexport async function decideRequest({ fleet, requestId, input }: { fleet: string; requestId: string; input: DecisionInput }): Promise<ActionOutcome<undefined>> {\n if (input.kind === 'deny') {\n return attempt(fleet, async (api) => {\n await api.requests.decide.mutate({ requestId, decision: { kind: 'deny' } });\n return undefined;\n });\n }\n const ownerShipId = idSchema('ship').safeParse(input.ownerShipId.trim());\n if (!ownerShipId.success) {\n return { isOk: false, message: \"The owner's ship id is not a ship id (shp_...)\" };\n }\n const party = { name: input.name, ownerShipId: ownerShipId.data, scopes: [...new Set([...EVERY_APP_SHIP_SCOPES, ...input.scopes])] };\n const { server } = input;\n const credential = server === undefined ? undefined : serverCredentialOf(server);\n return attempt(fleet, async (api) => {\n await api.requests.decide.mutate({ requestId, decision: { kind: 'approve', party, ...(server === undefined || credential === undefined ? {} : { server: { credential, concurrencyLimit: server.concurrencyLimit } }) } });\n return undefined;\n });\n}\n","unable to read source [project]/node_modules/@aeolus-fleet/common/src/rules/page-size.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/alert.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/question.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/page.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/report.ts","unable to read source [project]/node_modules/@aeolus-fleet/common/src/rules/payload.ts","/**\n * Stay aware as Bridge shows it (stay-aware.html, CC16): how many alerts\n * and notices are not seen yet, and an opened alert's ship,\n * its Health in the console and what Aeolus does when it clears (decision\n * 0071). Pure view logic, no React and no API client.\n */\nimport { ALERT_CONTENT_TYPE, alertMessageSchema, type AlertSignal } from '@aeolus-fleet/common';\n\n/** How many are not seen yet: \"1 unseen\". */\nexport function unseenSaidOf(count: number): string {\n return `${String(count)} unseen`;\n}\n\n/** What an opened alert is about: its ship, and the signal that parted. */\nexport interface AlertView {\n readonly ship: { readonly id: string; readonly name: string };\n readonly signal: AlertSignal;\n}\n\n/** The alert a delivery carries; none for a notice, or a payload that does not read as an alert. */\nexport function alertOf(opened: { contentType: string; payload: string }): AlertView | undefined {\n if (opened.contentType !== ALERT_CONTENT_TYPE) {\n return undefined;\n }\n try {\n const alert = alertMessageSchema.safeParse(JSON.parse(opened.payload));\n return alert.success ? { ship: alert.data.ship, signal: alert.data.signal } : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** A ship's Health: its page in the fleet's console, where its open alerts and its state now show (monitoring 4.8). */\nexport function healthHrefOf({ consoleUrl, shipId }: { consoleUrl: string; shipId: string }): string {\n return `${consoleUrl.replace(/\\/$/, '')}/ships/${shipId}`;\n}\n\n/** The info line under an opened alert: Aeolus only tells, the alert clears by itself, and nothing is sent when it does (0071). */\nexport function clearsSaidOf(alert: AlertView): string {\n const clears = alert.signal === 'report-unchanged' ? `The alert clears when ${alert.ship.name} reports again` : 'The alert clears by itself once what it tells of moves';\n return `Aeolus only tells you. ${clears}; nothing is sent on clear, so this stays here as it was.`;\n}\n","/**\n * Bridge's form to send a ship a message (aeolus-fleet #1547,\n * send-message.html): which ships it offers, when Send is on, the key a\n * send carries, why one failed, what the toast says once the fleet stored\n * it, and the ship an opened alert is about. Pure view logic, no React and\n * no API client.\n */\nimport { ALERT_CONTENT_TYPE } from '@aeolus-fleet/common';\nimport type { inferRouterOutputs } from '@trpc/server';\nimport { z } from 'zod';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport { SHIP_STATES, type ShipState, type YourFleet } from '../fleet/services/your-fleet';\n\n/** Who the person can send a message to, as the API answers it: the ships their person ship may send to now, and the name it sends as. */\nexport type SendTo = inferRouterOutputs<GatewayRouter>['people']['sendTo'];\n\n/** A ship the form offers: by name, with its state as Your fleet shows it, none where Your fleet does not show the ship. */\nexport interface SendableShip {\n readonly name: string;\n readonly state: ShipState | null;\n}\n\n/**\n * The ships the person ship may send to, each in its state as Your fleet\n * shows it, in Your fleet's order: alerts first, then waiting, working and\n * idle, ties by name; a ship Your fleet does not show, or every ship when it\n * could not be read, comes after, with no state.\n */\nexport function sendableShipsOf(ships: readonly string[], fleet: YourFleet | undefined): readonly SendableShip[] {\n const states = new Map((fleet?.groups ?? []).flatMap(({ tiles }) => tiles.map(({ name, state }) => [name, state] as const)));\n const rank = (state: ShipState | null) => (state === null ? SHIP_STATES.length : SHIP_STATES.indexOf(state));\n return ships\n .map((name) => ({ name, state: states.get(name) ?? null }))\n .toSorted((one, other) => rank(one.state) - rank(other.state) || one.name.localeCompare(other.name));\n}\n\n/** The ships whose name holds what the person typed, whatever its case; every ship while nothing is typed. */\nexport function shipsMatching(ships: readonly SendableShip[], typed: string): readonly SendableShip[] {\n const sought = typed.trim().toLowerCase();\n return sought === '' ? ships : ships.filter(({ name }) => name.toLowerCase().includes(sought));\n}\n\n/** Send is on once a ship is picked and something is written. */\nexport function isSendable({ to, message }: { to: string | null; message: string }): boolean {\n return to !== null && message.trim() !== '';\n}\n\n/** A send the form made: its key, and the ship and message it carried. */\nexport interface LastSend {\n readonly key: string;\n readonly to: string;\n readonly message: string;\n}\n\n/**\n * The key a send carries: the last send's again while the ship and the\n * message are the same, so a message sent again arrives once; a new one\n * otherwise, as a changed message is a new message.\n */\nexport function keyToSend({ last, to, message, newKey }: { last: LastSend | null; to: string; message: string; newKey: string }): string {\n return last !== null && last.to === to && last.message === message ? last.key : newKey;\n}\n\n/** Why a send failed: the fleet refused it, in its own words, or no answer came, so it may be stored. */\nexport type SendFailure = { readonly kind: 'refused'; readonly reason: string } | { readonly kind: 'noAnswer' };\n\n/** The API's codes for a send the fleet refused: its reason is the person's to read. */\nconst REFUSED_CODES = new Set(['BAD_REQUEST', 'FORBIDDEN']);\n\n/** A refusal when the fleet refused the send; no answer for anything else, as the message may be stored. */\nexport function sendFailureOf({ code, message }: { code?: string | undefined; message: string }): SendFailure {\n return code !== undefined && REFUSED_CODES.has(code) ? { kind: 'refused', reason: message } : { kind: 'noAnswer' };\n}\n\n/** Where a time shows to the minute in an ISO 8601 time: hours and minutes, in UTC. */\nconst MINUTE = { start: 11, end: 16 } as const;\n\n/** What the toast says once the fleet stored the message: to whom, when in UTC as every Bridge time, and as which person ship. */\nexport function sentNoticeOf({ to, sentAs, storedAt }: { to: string; sentAs: string; storedAt: string }): { title: string; description: string } {\n return {\n title: `Sent to ${to}`,\n description: `Stored by the fleet at ${new Date(storedAt).toISOString().slice(MINUTE.start, MINUTE.end)} UTC, sent as ${sentAs}. ${to} receives it when it next looks.`,\n };\n}\n\n/** What Bridge reads of an alert to send its ship a message: the ship, by name. */\nconst alertShipSchema = z.object({ ship: z.object({ name: z.string().min(1) }) });\n\n/** The ship an alert is about, by name; none for any other message, or an alert whose payload does not read. */\nexport function alertShipOf(opened: { contentType: string; payload: string }): string | undefined {\n const [essence = ''] = opened.contentType.split(';');\n if (essence.trim().toLowerCase() !== ALERT_CONTENT_TYPE) {\n return undefined;\n }\n try {\n return alertShipSchema.safeParse(JSON.parse(opened.payload)).data?.ship.name;\n } catch {\n return undefined;\n }\n}\n","/**\n * An item that reached a person, as Bridge shows it once opened, and the\n * answer its form sends: pure view logic, no React and no API client.\n */\nimport { ALERT_CONTENT_TYPE, ANSWER_CONTENT_TYPE, answerSchema, isQuestionContentType, questionSchema, withdrawalOf, type Question } from '@aeolus-fleet/common';\nimport { z } from 'zod';\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport type { AlertView } from './stay-aware';\n\n/** The channels that wake a person when something waits for their person ship, as the API shows them (wake a person, W8). */\nexport type WakeChannels = inferRouterOutputs<GatewayRouter>['people']['wakeChannels'];\n\n/**\n * A delivery in focus: whole, as the person opened it or opened it again,\n * with its question when it is one.\n */\nexport interface FocusedDelivery {\n readonly deliveryId: string;\n readonly from: string;\n readonly title: string;\n readonly sentAt: string;\n readonly payload: string;\n /** What it shows of its payload: an alert's or a notice's body, any other payload as it came. */\n readonly body: string;\n readonly question: Question | undefined;\n /** The step it asks (CC14), when it is one. */\n readonly step: StepView | undefined;\n /** The alert it carries (decision 0071): the ship it is about, when it is one. */\n readonly alert: AlertView | undefined;\n /** The meeting it was contributed to or tells of, when it belongs to one. */\n readonly meetingId: string | undefined;\n /** Whether its asker withdrew or replaced the question or step it asks, with the replacement, a new item. */\n readonly stale: Stale | null;\n /** The ship an alert is about, by name, for the person to send it a message (aeolus-fleet #1547). */\n readonly alertShip?: string | undefined;\n}\n\n/** A question or step its asker withdrew or replaced (decision 0038, CC14), as the API says it: when, and the replacement with its title. */\nexport interface Stale {\n readonly kind: 'withdrawn' | 'replaced';\n readonly replacementId: string | null;\n readonly at: string;\n readonly replacementTitle: string | null;\n}\n\n/** A time of day in UTC to the minute, as a list read on the server says it. */\nfunction utcClockOf(at: string): string {\n return `${new Date(at).toISOString().slice(11, 16)} UTC`;\n}\n\n/**\n * Who withdrew or replaced it and when, and a replacement's title, as the\n * mockups word it (basket.html); the time in UTC unless said otherwise, as\n * an opened item says it in the person's own time.\n */\nexport function staleSaidOf(stale: Stale, { from, clockOf = utcClockOf }: { from: string; clockOf?: (at: string) => string }): string {\n const said = `${stale.kind === 'withdrawn' ? 'Withdrawn' : 'Replaced'} by ${from} at ${clockOf(stale.at)}`;\n return stale.replacementTitle === null ? said : `${said} with “${stale.replacementTitle}”`;\n}\n\n/** The question a delivery asks (decision 0038): a question's own, or the new question a replacement asks. */\nexport function questionOf(opened: { contentType: string; payload: string }): Question | undefined {\n if (!isQuestionContentType(opened.contentType)) {\n return withdrawalOf(opened)?.replacement ?? undefined;\n }\n try {\n const question = questionSchema.safeParse(JSON.parse(opened.payload));\n return question.success ? question.data : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** A step as Bridge shows it (CC14): its title, why, and its link, when it has one. */\nexport interface StepView {\n readonly title: string;\n readonly why: string;\n readonly link: StepLink | undefined;\n}\n\n/** The link where a step is done, shown with where it leads (host and path, as do.html draws it), and whether that is outside Aeolus: any host but the one Bridge is served on (Bridge, section 9). */\nexport interface StepLink {\n readonly href: string;\n readonly address: string;\n readonly isOutside: boolean;\n}\n\nfunction stepLinkOf(href: string, bridgeHost: string): StepLink {\n const url = new URL(href);\n return { href, address: `${url.host}${url.pathname.replace(/\\/$/, '')}`, isOutside: url.host !== bridgeHost };\n}\n\n/** The step and step replacement content types (CC14), as common names them from its release after 0.35.0; they move to common's constants then. */\nconst STEP_CONTENT_TYPE = 'application/vnd.aeolus.step+json';\nconst STEP_REPLACEMENT_CONTENT_TYPE = 'application/vnd.aeolus.step-replacement+json';\n\n/** What Bridge reads of a step, as common's stepSchema words it from its release after 0.35.0 (Bridge B2); it moves to common's then. */\nconst stepSchema = z.object({ title: z.string().min(1), why: z.string(), link: z.url({ protocol: /^https?$/ }).optional() });\n\n/** The schema a step is read with, by content type: a step's own, or the new step a step replacement asks. */\nconst STEP_SCHEMAS = new Map<string, z.ZodType<z.infer<typeof stepSchema>>>([\n [STEP_CONTENT_TYPE, stepSchema],\n [STEP_REPLACEMENT_CONTENT_TYPE, z.object({ step: stepSchema }).transform(({ step }) => step)],\n]);\n\n/** The step a delivery asks: a step's own, or the new step a step replacement asks; none for any other message, or one whose payload does not read. Its link is outside Aeolus unless it leads to the host Bridge is served on. */\nexport function stepOf(opened: { contentType: string; payload: string }, bridgeHost: string): StepView | undefined {\n const [essence = ''] = opened.contentType.split(';');\n const schema = STEP_SCHEMAS.get(essence.trim().toLowerCase());\n if (schema === undefined) {\n return undefined;\n }\n try {\n const step = schema.safeParse(JSON.parse(opened.payload));\n if (!step.success) {\n return undefined;\n }\n const { title, why, link } = step.data;\n return { title, why, link: link === undefined ? undefined : stepLinkOf(link, bridgeHost) };\n } catch {\n return undefined;\n }\n}\n\n/** The notice content type (CC15), as common names it from its release after 0.35.0; it moves to common's constant then. */\nconst NOTICE_CONTENT_TYPE = 'application/vnd.aeolus.notice+json';\n\nconst BODIED = new Set([ALERT_CONTENT_TYPE, NOTICE_CONTENT_TYPE]);\n\nconst bodiedSchema = z.object({ body: z.string() });\n\n/** An alert's or a notice's body; any other payload, or one that does not read, as it came. */\nexport function bodyOf(opened: { contentType: string; payload: string }): string {\n const [essence = ''] = opened.contentType.split(';');\n if (!BODIED.has(essence.trim().toLowerCase())) {\n return opened.payload;\n }\n try {\n return bodiedSchema.safeParse(JSON.parse(opened.payload)).data?.body ?? opened.payload;\n } catch {\n return opened.payload;\n }\n}\n\n/** What the person sends: an option they tapped and a note, or a note alone. */\nexport interface AnswerInput {\n readonly questionId: string | undefined;\n readonly option: number | undefined;\n readonly note: string;\n}\n\n/** The answer a form sends: an option and a note, or a note alone, for a question; a note as plain text otherwise. */\nexport function answerOf(input: AnswerInput): { isOk: true; value: { contentType: string; payload: string } } | { isOk: false; message: string } {\n const note = input.note.trim();\n if (input.questionId === undefined) {\n return note === '' ? { isOk: false, message: 'Write your answer first' } : { isOk: true, value: { contentType: 'text/plain', payload: note } };\n }\n const answer = answerSchema.safeParse({ questionId: input.questionId, ...(input.option === undefined ? {} : { option: input.option }), ...(note === '' ? {} : { note }) });\n return answer.success ? { isOk: true, value: { contentType: ANSWER_CONTENT_TYPE, payload: JSON.stringify(answer.data) } } : { isOk: false, message: 'Tap an option, or write a note' };\n}\n"],"names":[],"mappings":"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","ignoreList":[1,2,3,4,5,6]}
|
package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[80198,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(2305),e=a.i(5050);let f=(0,e.createServerReference)("407bae59090ef46e76fb8d952969288e5bb4583e21",e.callServer,void 0,e.findSourceMapURL,"sendBasket"),g={bridge:"in Bridge",chat:"in a chat",slack:"in Slack",gateway:"by the gateway"},h={withdrawn:"withdrawn",replaced:"replaced",dealtElsewhere:"answered elsewhere"};function i(a){return 1===a?"1 answer":`${String(a)} answers`}var j=a.i(32043),k=a.i(10039),l=a.i(91777);function m({entry:a,opening:c,working:d,onRemove:e}){var f;let{standing:h}=a,i=function(a){let{standing:b}=a;switch(b.kind){case"waiting":return;case"sending":return"Sending... The gateway keeps sending what is stored as sending, with the same key, until it is stored; you can close Bridge.";case"refused":return`Not sent: ${b.reason}. The others were sent.`;case"withdrawn":return`Withdrawn by ${a.from}. Not sent; Send skips it.`;case"replaced":return`Replaced by ${a.from}. Not sent: its options may differ, so answer the new question.`;case"dealtElsewhere":return null===b.option?`Done ${g[b.place]}. Nothing is sent from it.`:`Answered ${g[b.place]}: option ${String(b.option)}. Nothing is sent from it.`}}(a),l=void 0!==d||void 0!==c.openingId,n="replaced"===h.kind?h.replacementId:null;return(0,b.jsxs)("li",{"data-testid":"bridge-basket-entry","data-standing":h.kind,className:`grid min-w-0 gap-2 rounded-md border border-border bg-card p-3 ${"withdrawn"===h.kind||"replaced"===h.kind||"dealtElsewhere"===h.kind?"opacity-60":""}`,children:[(0,b.jsx)("span",{className:"font-medium",children:a.title}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:["to ",a.from," · asked at ",(0,b.jsx)("time",{dateTime:a.sentAt,children:(f=a.sentAt,`${new Date(f).toISOString().slice(0,16).replace("T"," ")} UTC`)})]}),(0,b.jsxs)("span",{children:["Option ",a.option]}),null===a.note?null:(0,b.jsxs)("span",{className:"text-caption",children:["“",a.note,"”"]}),void 0===i?null:(0,b.jsx)("span",{"data-testid":"bridge-basket-standing",className:"text-caption",children:i}),c.failure?.deliveryId===a.deliveryId?(0,b.jsx)(k.f,{message:c.failure.message,isFailure:!0}):null,(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:["waiting"===h.kind?(0,b.jsx)(j.f,{"data-testid":"bridge-basket-change",isPending:c.openingId===a.deliveryId,pendingLabel:"Opening...",disabled:l,onClick:()=>{c.open({deliveryId:a.deliveryId,job:"decide",inBasket:{option:a.option,note:a.note}})},children:"Change"}):null,null===n?null:(0,b.jsx)(j.f,{"data-testid":"bridge-replacement",isPending:c.openingId===n,pendingLabel:"Opening...",disabled:l,onClick:()=>{c.open({deliveryId:n,job:"decide"})},children:"Answer the new question"}),"sending"===h.kind?null:(0,b.jsx)(j.f,{"data-testid":"bridge-basket-remove",isPending:d?.kind==="remove"&&d.questionId===a.questionId,pendingLabel:"Removing...",disabled:l,onClick:()=>{e(a.questionId)},children:"refused"===h.kind?"Remove and mark done":"Remove"})]})]})}a.s(["BasketPanel",0,function({fleetId:a,basket:e}){let[g,n]=(0,c.useState)(),[o,p]=(0,c.useState)(),[,q]=(0,c.useTransition)(),{entries:r,toSend:s}=e,t=b=>{n({kind:"remove",questionId:b}),p(void 0),q(async()=>{let c=await (0,d.f)(a,b);n(void 0),p(c.isOk?void 0:{message:c.message,isFailure:!0})})},u=()=>{n({kind:"send"}),p(void 0),q(async()=>{var b;let c,d=await f(a);n(void 0),p(d.isOk?{message:(c=0===(b=d.value).sending?"Nothing to send.":1===b.sending?"1 answer is being sent.":`${i(b.sending)} are being sent, each on its own, in the order you added them.`,0===b.skipped.length?c:`${c} Not sent: ${b.skipped.map(({title:a,kind:b})=>`“${a}”, ${h[b]}`).join("; ")}.`),isFailure:!1}:{message:d.message,isFailure:!0})})};return(0,b.jsx)(l.f,{fleetId:a,children:a=>(0,b.jsxs)("section",{className:"grid gap-3","aria-labelledby":"bridge-basket-heading",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h1",{id:"bridge-basket-heading",className:"text-heading font-semibold",children:["Basket ",(0,b.jsx)("span",{"data-testid":"bridge-basket-count",children:r.length})]}),(0,b.jsx)("p",{className:"text-muted-foreground",children:"Answers you picked in Bridge, not sent yet. Nothing goes until you press Send."})]}),void 0===o?null:(0,b.jsx)(k.f,{message:o.message,isFailure:o.isFailure}),0===r.length?(0,b.jsxs)("div",{"data-testid":"bridge-basket-empty",className:"grid justify-items-center gap-1 rounded-lg border border-border bg-card p-6 text-center",children:[(0,b.jsx)("span",{className:"font-semibold",children:"The basket is empty"}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"Open a question in Waiting on you and put your answer in the basket."})]}):(0,b.jsx)("ul",{className:"grid gap-2",children:r.map(c=>(0,b.jsx)(m,{entry:c,opening:a,working:g,onRemove:t},c.questionId))}),0===s?null:(0,b.jsxs)("div",{className:"grid gap-1",children:[(0,b.jsx)("p",{className:"text-caption text-muted-foreground",children:"Each asker receives its own answer, as you, as if sent one by one."}),(0,b.jsx)(j.f,{"data-testid":"bridge-basket-send",variant:"primary",className:"justify-self-start",isPending:g?.kind==="send",pendingLabel:"Sending...",disabled:void 0!==g||void 0!==a.openingId,onClick:u,children:`Send ${i(s)}`})]})]})})}],80198)}];
|
|
1
|
+
module.exports=[80198,a=>{"use strict";var b=a.i(87924),c=a.i(64831);let d={name:"arrow-right",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]};d.node;let e=(0,c.f)(d);var f=a.i(70840),g=a.i(52562),h=a.i(93817),i=a.i(97024),j=a.i(2550);let k={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};k.node;let l=(0,c.f)(k);var m=a.i(58983);let n={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};n.node;let o=(0,c.f)(n);var p=a.i(59542),q=a.i(74746),r=a.i(55596),s=a.i(74215),t=a.i(72131),u=a.i(69762),v=a.i(5050);let w=(0,v.createServerReference)("400320361887ac212b3589baccdc71146b3f431261",v.callServer,void 0,v.findSourceMapURL,"sendBasket");function x(a){return`${new Date(a).toISOString().slice(11,16)} UTC`}let y={bridge:"in Bridge",chat:"in a chat",slack:"in Slack",gateway:"by the gateway"};function z(a){return{desktop:a,phone:a}}function A(a){return 1===a?"1 answer":`${String(a)} answers`}function B(a){return a.length<=1?a.join(""):`${a.slice(0,-1).join(", ")} and ${a.at(-1)??""}`}function C(a){return[...new Set(a.map(({from:a})=>a))]}var D=a.i(32043),E=a.i(10039),F=a.i(91777);let G={sent:i.f,sending:m.f,next:l,unanswered:m.f,refused:h.f,withdrawn:f.f,replaced:p.f,elsewhere:g.f},H={ok:"text-tone-ok-fg",waiting:"text-tone-waiting-fg",attention:"text-tone-attention-fg",off:"text-muted-foreground"};function I({words:a}){return a.desktop===a.phone?(0,b.jsx)("span",{children:a.desktop}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"hidden sm:inline",children:a.desktop}),(0,b.jsx)("span",{className:"sm:hidden",children:a.phone})]})}function J({line:a}){let c=G[a.icon];return(0,b.jsxs)("p",{"data-testid":"bridge-basket-standing",className:"col-span-2 col-start-2 flex items-start gap-1.5 text-meta",children:[(0,b.jsx)(c,{"aria-hidden":!0,className:`mt-0.5 size-3.5 shrink-0 ${H[a.tone]}`}),(0,b.jsx)("span",{children:(0,b.jsx)(I,{words:a.words})})]})}function K({entry:a,line:c,opening:d,working:f,onRemove:g}){let{standing:h}=a,i="withdrawn"===h.kind||"replaced"===h.kind||"dealtElsewhere"===h.kind,k=void 0!==f||void 0!==d.openingId,l=f?.kind==="remove"&&f.questionId===a.questionId,m="replaced"===h.kind?h.replacementId:null,n=i?"line-through decoration-muted-foreground":"";return(0,b.jsxs)("li",{"data-testid":"bridge-basket-entry","data-standing":h.kind,className:`grid grid-cols-[18px_1fr_auto] items-start gap-x-2.5 gap-y-1.5 border-t border-border p-3 first:border-t-0 sm:px-3.5 ${i?"bg-muted":""}`,children:[(0,b.jsx)(j.f,{"aria-hidden":!0,className:"mt-0.5 size-4 text-tone-active-fg"}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,b.jsx)("span",{className:`font-medium ${n}`,children:a.title}),(0,b.jsxs)("span",{className:"flex flex-wrap items-center gap-1.5 text-caption text-muted-foreground",children:[(0,b.jsxs)("span",{children:["to ",(0,b.jsx)("b",{className:"font-medium text-foreground",children:a.from})]}),(0,b.jsx)("span",{"aria-hidden":!0,className:"hidden text-border sm:inline",children:"·"}),(0,b.jsxs)("span",{className:"hidden sm:inline",children:["asked at ",(0,b.jsx)("time",{dateTime:a.sentAt,children:x(a.sentAt)})]})]}),(0,b.jsxs)("span",{className:`${i?"hidden sm:flex":"flex"} items-center gap-1.5 text-meta ${n}`,children:[(0,b.jsx)(e,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-primary"}),null===a.option?"Note alone":null===a.optionLabel?`Option ${String(a.option)}`:`${String(a.option)}. ${a.optionLabel}`]}),null===a.note?null:(0,b.jsxs)("span",{className:"text-caption italic text-muted-foreground",children:['"',a.note,'"']})]}),"waiting"===h.kind?(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)(D.i,{"data-testid":"bridge-basket-change",size:"small","aria-label":"Change",isPending:d.openingId===a.deliveryId,pendingLabel:"Opening...",disabled:k,onClick:()=>{d.open({deliveryId:a.deliveryId,job:"decide",inBasket:{option:a.option,note:a.note}})},children:[(0,b.jsx)(o,{"aria-hidden":!0,className:"size-3.5"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:"Change"})]}),(0,b.jsxs)(D.i,{"data-testid":"bridge-basket-remove",size:"small",variant:"ghost","aria-label":"Remove",isPending:l,pendingLabel:"Removing...",disabled:k,onClick:()=>{g(a.questionId)},children:[(0,b.jsx)(s.X,{"aria-hidden":!0,className:"size-4 sm:hidden"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:"Remove"})]})]}):(0,b.jsx)("span",{}),void 0===c?null:(0,b.jsx)(J,{line:c}),d.failure?.deliveryId===a.deliveryId?(0,b.jsx)("div",{className:"col-span-2 col-start-2",children:(0,b.jsx)(E.f,{message:d.failure.message,isFailure:!0})}):null,"withdrawn"===h.kind||"replaced"===h.kind||"dealtElsewhere"===h.kind||"refused"===h.kind?(0,b.jsxs)("div",{className:"col-span-2 col-start-2 flex flex-wrap items-center gap-1.5",children:[null===m?null:(0,b.jsxs)(D.i,{"data-testid":"bridge-replacement",size:"small",isPending:d.openingId===m,pendingLabel:"Opening...",disabled:k,onClick:()=>{d.open({deliveryId:m,job:"decide"})},children:[(0,b.jsx)(e,{"aria-hidden":!0,className:"size-3.5"}),"Answer the new question"]}),(0,b.jsx)(D.i,{"data-testid":"bridge-basket-remove",size:"small",variant:"replaced"===h.kind?"ghost":"secondary",isPending:l,pendingLabel:"Removing...",disabled:k,onClick:()=>{g(a.questionId)},children:"refused"===h.kind?"Remove and mark done":"Remove"})]}):null]})}function L({foot:a,isSending:c,isWorking:d,onSend:e}){return"none"===a.kind?null:(0,b.jsxs)("div",{"data-testid":"bridge-basket-foot",className:"flex flex-col items-stretch gap-2 border-t border-border bg-card p-3 sm:flex-row sm:items-center sm:gap-3 sm:px-3.5",children:[(0,b.jsx)("p",{className:"flex-1 text-caption text-muted-foreground",children:(0,b.jsx)(I,{words:a.words})}),"send"===a.kind?(0,b.jsxs)(D.i,{"data-testid":"bridge-basket-send",variant:"primary",className:"justify-center",isPending:c,pendingLabel:"Sending...",disabled:d,onClick:e,children:[(0,b.jsx)(q.f,{"aria-hidden":!0,className:"size-4"}),a.label]}):null,"sending"===a.kind?(0,b.jsxs)("button",{type:"button","data-testid":"bridge-basket-sending",disabled:!0,"aria-busy":"true",className:"inline-flex h-9 items-center justify-center gap-2 rounded-md border border-border bg-card px-4 font-medium text-card-foreground",children:[(0,b.jsx)(m.f,{"aria-hidden":!0,className:"size-4 animate-spin"}),a.progress]}):null]})}function M({summary:a}){return(0,b.jsxs)("div",{"data-testid":"bridge-basket-sent",role:"status",className:"flex max-w-[620px] items-start gap-3 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-lg",children:[(0,b.jsx)(i.f,{"aria-hidden":!0,className:"mt-0.5 size-4 shrink-0 text-tone-ok-fg"}),(0,b.jsxs)("span",{className:"grid gap-1",children:[(0,b.jsx)("span",{className:"font-medium",children:a.title}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:a.description})]})]})}function N(){return(0,b.jsxs)("div",{"data-testid":"bridge-basket-empty",className:"grid max-w-[820px] justify-items-center gap-3 rounded-lg border border-dashed border-border bg-card px-6 py-10 text-center",children:[(0,b.jsx)("span",{className:"inline-flex size-11 items-center justify-center rounded-lg bg-secondary text-muted-foreground",children:(0,b.jsx)(r.f,{"aria-hidden":!0,className:"size-5"})}),(0,b.jsx)("span",{className:"text-heading font-semibold",children:"The basket is empty"}),(0,b.jsx)("span",{className:"max-w-[360px] text-muted-foreground",children:"Pick an option on a question and put it in the basket; it waits here until you send it."})]})}a.s(["BasketPanel",0,function({fleetId:a,basket:c}){let d,e,[f,g]=(0,t.useState)(),[h,i]=(0,t.useState)(),[,j]=(0,t.useTransition)(),k=(d=c.entries.some(({standing:a})=>"sent"===a.kind),e=c.entries.find(({standing:a})=>"sending"===a.kind&&!a.isUnanswered),c.entries.map(a=>(function(a,b){let{standing:c,from:d}=a;switch(c.kind){case"waiting":return;case"sent":{let a=x(c.at);return{icon:"sent",tone:"ok",words:{desktop:`Sent at ${a} and stored. Done.`,phone:`Sent at ${a}. Done.`}}}case"sending":if(c.isUnanswered)return{icon:"unanswered",tone:"waiting",words:{desktop:"The fleet did not answer. Sending again with the same key until it is stored; it arrives once.",phone:"No answer from the fleet. Sending again, same key."}};return b.isSendingNow?{icon:"sending",tone:"waiting",words:z("Sending...")}:{icon:"next",tone:"waiting",words:{desktop:"Next, in the order you added it",phone:"Next"}};case"refused":{let a=`Not sent: ${c.reason}.`,[d=c.reason]=c.reason.split(", so ");return{icon:"refused",tone:"attention",words:{desktop:b.isAnySent?`${a} The others were sent.`:a,phone:`Not sent: ${d}.`}}}case"withdrawn":return{icon:"withdrawn",tone:"off",words:{desktop:`Withdrawn by ${d} at ${x(c.at)}. Not sent; Send skips it.`,phone:`Withdrawn by ${d}. Not sent.`}};case"replaced":{let a=null===c.replacementTitle?".":` with "${c.replacementTitle}"`;return{icon:"replaced",tone:"off",words:{desktop:`Replaced by ${d} at ${x(c.at)}${a} Not sent: its options differ, so answer the new one.`,phone:`Replaced by ${d}. Not sent.`}}}case"dealtElsewhere":return{icon:"elsewhere",tone:"off",words:z(null===c.option?`Done ${y[c.place]}. Nothing is sent from it.`:`Answered ${y[c.place]}: option ${String(c.option)}. Nothing is sent from it.`)}}})(a,{isAnySent:d,isSendingNow:a===e}))),l=function(a){let{entries:b}=a;if(0===b.length||b.some(({standing:a})=>"sent"!==a.kind))return;let c=`To ${B(C(b))}, as you;`;return{title:`${A(b.length)} sent`,description:1===b.length?`${c} stored, and in Done.`:`${c} each stored, each in Done.`}}(c),m=b=>{g({kind:"remove",questionId:b}),i(void 0),j(async()=>{let c=await (0,u.f)(a,b);g(void 0),i(c.isOk?void 0:c.message)})},n=()=>{g({kind:"send"}),i(void 0),j(async()=>{let b=await w(a);g(void 0),i(b.isOk?void 0:b.message)})};return(0,b.jsx)(F.f,{fleetId:a,children:a=>(0,b.jsxs)("section",{className:"grid gap-4","aria-labelledby":"bridge-basket-heading",children:[(0,b.jsxs)("div",{className:"hidden sm:block",children:[(0,b.jsxs)("h1",{id:"bridge-basket-heading",className:"text-heading font-semibold",children:["Basket ",(0,b.jsx)("span",{"data-testid":"bridge-basket-count",className:"text-primary",children:c.count})]}),(0,b.jsx)("p",{className:"text-caption text-muted-foreground",children:"Answers you picked in Bridge, not sent yet. Nothing goes until you press Send."})]}),void 0===h?null:(0,b.jsx)(E.f,{message:h,isFailure:!0}),void 0===l?null:(0,b.jsx)(M,{summary:l}),0===c.entries.length||void 0!==l?(0,b.jsx)(N,{}):(0,b.jsxs)("div",{className:"max-w-[820px] overflow-hidden rounded-lg border border-border bg-card",children:[(0,b.jsx)("ul",{children:c.entries.map((c,d)=>(0,b.jsx)(K,{entry:c,line:k[d],opening:a,working:f,onRemove:m},c.questionId))}),(0,b.jsx)(L,{foot:function(a){if(a.toSend>0)return function(a){var b;let c=function(a){let b=b=>a.filter(({standing:a})=>a.kind===b).length,c=["withdrawn","replaced"].map(a=>({kind:a,count:b(a)})).filter(({count:a})=>a>0),d=c.map(({kind:a,count:b},d)=>b>1?`the ${String(b)} ${a}`:d===c.length-1?`the ${a} one`:`the ${a}`),e=b("dealtElsewhere"),f=0===e?d:[...d,1===e?"the one answered elsewhere":`the ${String(e)} answered elsewhere`];if(0===f.length)return;let g=B(f),h=1===c.reduce((a,{count:b})=>a+b,e);return`${g.charAt(0).toUpperCase()}${g.slice(1)} ${h?"is":"are"} not sent.`}(a.entries),d=(b=a.toSend,`Send ${A(b)}`);if(void 0!==c)return{kind:"send",words:{desktop:`${String(a.toSend)} to send. ${c}`,phone:c},label:d};let e=a.entries.filter(({standing:a})=>"waiting"===a.kind),f=C(e),g=f.length>1?"each receive their own answer":e.length>1?"receives its own answer to each":"receives its own answer";return{kind:"send",words:{desktop:`${B(f)} ${g}, as you, as if sent one by one.`,phone:"Each asker receives its own answer."},label:d}}(a);let b=a.entries.map(({standing:a})=>a),c=b.filter(({kind:a})=>"sent"===a).length,d=b.filter(({kind:a})=>"sending"===a).length,e=b.filter(({kind:a})=>"refused"===a).length,f=b.some(a=>"sending"===a.kind&&a.isUnanswered);if(d>0&&0===e&&!f)return{kind:"sending",words:{desktop:"You can close Bridge: the gateway keeps sending what is stored as sending.",phone:"You can close Bridge; the gateway keeps sending."},progress:`Sending ${String(c+1)} of ${String(c+d)}`};if(0===d&&0===e)return{kind:"none"};let g=(a,b)=>0===a?[]:[`${String(a)} ${b}`];return{kind:"summary",words:{desktop:`${[...g(c,"sent"),...g(d,"still sending"),...g(e,"not sent")].join(", ")}.`,phone:`${[...g(c,"sent"),...g(d,"sending"),...g(e,"not sent")].join(", ")}.`}}}(c),isSending:f?.kind==="send",isWorking:void 0!==f||void 0!==a.openingId,onSend:n})]})]})})}],80198)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map
|