@aeolus-fleet/gateway 0.36.2 → 0.36.3
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/README.md +4 -0
- package/dist/adapters/fleet/actor-door.d.ts +8 -1
- package/dist/adapters/fleet/actor-door.js +12 -5
- package/dist/adapters/fleet/actor-door.js.map +1 -1
- package/dist/adapters/fleet/argo-inbox-door.d.ts +4 -0
- package/dist/adapters/fleet/argo-inbox-door.js +81 -0
- package/dist/adapters/fleet/argo-inbox-door.js.map +1 -0
- package/dist/adapters/fleet/rest-fleet-door.d.ts +14 -0
- package/dist/adapters/fleet/rest-fleet-door.js +11 -1
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/front-door.js +3 -1
- package/dist/adapters/http/front-door.js.map +1 -1
- package/dist/adapters/http/live.d.ts +10 -1
- package/dist/adapters/http/live.js +10 -1
- package/dist/adapters/http/live.js.map +1 -1
- package/dist/adapters/pagasae/email-channel.js +5 -3
- package/dist/adapters/pagasae/email-channel.js.map +1 -1
- package/dist/adapters/pagasae/pagasae-client.js +1 -0
- package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
- package/dist/adapters/pagasae/shared-sign-in.js +2 -2
- package/dist/adapters/pagasae/shared-sign-in.js.map +1 -1
- package/dist/adapters/prisma/argo-accounts.d.ts +4 -0
- package/dist/adapters/prisma/argo-accounts.js +17 -0
- package/dist/adapters/prisma/argo-accounts.js.map +1 -0
- package/dist/adapters/prisma/argo-slack-posts.d.ts +4 -0
- package/dist/adapters/prisma/argo-slack-posts.js +30 -0
- package/dist/adapters/prisma/argo-slack-posts.js.map +1 -0
- package/dist/adapters/prisma/argo-wakes.d.ts +4 -0
- package/dist/adapters/prisma/argo-wakes.js +54 -0
- package/dist/adapters/prisma/argo-wakes.js.map +1 -0
- package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
- package/dist/adapters/prisma/fleet-forgetter.js +2 -2
- package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +20 -0
- package/dist/adapters/prisma/generated/client.d.ts +20 -0
- package/dist/adapters/prisma/generated/internal/class.d.ts +44 -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 +334 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +30 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +33 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +30 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/ArgoAccount.d.ts +946 -0
- package/dist/adapters/prisma/generated/models/ArgoAccount.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoAccount.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ArgoMessageCovered.d.ts +947 -0
- package/dist/adapters/prisma/generated/models/ArgoMessageCovered.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoMessageCovered.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ArgoSlackPost.d.ts +1065 -0
- package/dist/adapters/prisma/generated/models/ArgoSlackPost.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoSlackPost.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ArgoWakeSent.d.ts +975 -0
- package/dist/adapters/prisma/generated/models/ArgoWakeSent.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoWakeSent.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +4 -0
- package/dist/adapters/slack/slack-messages.js +5 -4
- package/dist/adapters/slack/slack-messages.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +24 -0
- package/dist/adapters/trpc/router.js +11 -0
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/adapters/web-push/web-push.js +1 -1
- package/dist/adapters/web-push/web-push.js.map +1 -1
- package/dist/app.js +89 -2
- package/dist/app.js.map +1 -1
- package/dist/core/account-sign-in/account-of-sign-in.d.ts +7 -2
- package/dist/core/account-sign-in/account-of-sign-in.js +9 -3
- package/dist/core/account-sign-in/account-of-sign-in.js.map +1 -1
- package/dist/core/account-sign-in/ports.d.ts +2 -0
- package/dist/core/argo-inbox/argo-inbox.d.ts +31 -0
- package/dist/core/argo-inbox/argo-inbox.js +23 -0
- package/dist/core/argo-inbox/argo-inbox.js.map +1 -0
- package/dist/core/argo-inbox/argo-slack-message.d.ts +17 -0
- package/dist/core/argo-inbox/argo-slack-message.js +40 -0
- package/dist/core/argo-inbox/argo-slack-message.js.map +1 -0
- package/dist/core/argo-inbox/argo-slack-post.d.ts +21 -0
- package/dist/core/argo-inbox/argo-slack-post.js +2 -0
- package/dist/core/argo-inbox/argo-slack-post.js.map +1 -0
- package/dist/core/argo-inbox/follow-argo-inbox.d.ts +33 -0
- package/dist/core/argo-inbox/follow-argo-inbox.js +133 -0
- package/dist/core/argo-inbox/follow-argo-inbox.js.map +1 -0
- package/dist/core/argo-inbox/note-argo-account.d.ts +19 -0
- package/dist/core/argo-inbox/note-argo-account.js +18 -0
- package/dist/core/argo-inbox/note-argo-account.js.map +1 -0
- package/dist/core/argo-inbox/ports.d.ts +123 -0
- package/dist/core/argo-inbox/ports.js +2 -0
- package/dist/core/argo-inbox/ports.js.map +1 -0
- package/dist/core/argo-inbox/read-argo-inbox-notice.d.ts +34 -0
- package/dist/core/argo-inbox/read-argo-inbox-notice.js +20 -0
- package/dist/core/argo-inbox/read-argo-inbox-notice.js.map +1 -0
- package/dist/core/argo-inbox/read-argo-section.d.ts +54 -0
- package/dist/core/argo-inbox/read-argo-section.js +67 -0
- package/dist/core/argo-inbox/read-argo-section.js.map +1 -0
- package/dist/core/argo-inbox/show-argo-inbox-in-slack.d.ts +36 -0
- package/dist/core/argo-inbox/show-argo-inbox-in-slack.js +125 -0
- package/dist/core/argo-inbox/show-argo-inbox-in-slack.js.map +1 -0
- package/dist/core/argo-inbox/wake-for-argo.d.ts +37 -0
- package/dist/core/argo-inbox/wake-for-argo.js +139 -0
- package/dist/core/argo-inbox/wake-for-argo.js.map +1 -0
- package/dist/core/oauth/exchange-id-jag.d.ts +4 -1
- package/dist/core/oauth/exchange-id-jag.js +5 -2
- package/dist/core/oauth/exchange-id-jag.js.map +1 -1
- package/dist/core/people/person-wakes.d.ts +49 -0
- package/dist/core/people/person-wakes.js +27 -0
- package/dist/core/people/person-wakes.js.map +1 -0
- package/dist/core/people/ports.d.ts +6 -2
- package/dist/core/people/wake-person.js +1 -1
- package/dist/core/people/wake-person.js.map +1 -1
- package/dist/core/people/web-push-channel.js +2 -2
- package/dist/core/people/web-push-channel.js.map +1 -1
- package/dist/core/sign-in/account-token.d.ts +5 -1
- package/dist/core/sign-in/account-token.js +8 -2
- package/dist/core/sign-in/account-token.js.map +1 -1
- package/dist/core/sign-in/complete-sign-in.d.ts +4 -1
- package/dist/core/sign-in/complete-sign-in.js +5 -2
- package/dist/core/sign-in/complete-sign-in.js.map +1 -1
- package/dist/core/sign-in/ports.d.ts +2 -0
- package/dist/core/slack/edited-post-of.d.ts +2 -0
- package/dist/core/slack/edited-post-of.js +1 -1
- package/dist/core/slack/edited-post-of.js.map +1 -1
- package/dist/core/slack/ports.d.ts +6 -4
- package/package.json +3 -2
- package/src/adapters/prisma/migrations/20261109090000_argo_accounts/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261110090000_argo_slack_posts/migration.sql +12 -0
- package/src/adapters/prisma/migrations/20261110100000_argo_wakes/migration.sql +18 -0
- package/src/adapters/prisma/schema.prisma +47 -0
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +3 -3
- package/web/.next/diagnostics/route-bundle-stats.json +130 -128
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/server/app/(bridge)/bridge/basket/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/(bridge)/bridge/basket/page.js +6 -6
- package/web/.next/server/app/(bridge)/bridge/basket/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/basket/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(bridge)/bridge/done/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(bridge)/bridge/done/page.js +6 -6
- package/web/.next/server/app/(bridge)/bridge/done/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/done/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(bridge)/bridge/fleet/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/fleet/page.js +6 -6
- package/web/.next/server/app/(bridge)/bridge/fleet/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/fleet/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(bridge)/bridge/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/(bridge)/bridge/page.js +6 -6
- package/web/.next/server/app/(bridge)/bridge/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/page.js +7 -7
- package/web/.next/server/app/(bridge)/bridge/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page.js +6 -6
- package/web/.next/server/app/(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 +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/server-reference-manifest.json +5 -5
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page.js +4 -4
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js +5 -5
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page_client-reference-manifest.js +1 -1
- 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/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/server-reference-manifest.json +15 -15
- 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/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/server-reference-manifest.json +15 -15
- 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/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/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/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/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/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/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/server-reference-manifest.json +11 -11
- 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/server-reference-manifest.json +11 -11
- 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/page/server-reference-manifest.json +11 -11
- 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/server-reference-manifest.json +11 -11
- package/web/.next/server/app/(console)/slack/remove/page.js +2 -2
- 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.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/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/authorize/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/failed/page.js +3 -4
- 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/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/pick/page.js +3 -4
- 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/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page.js +3 -4
- 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/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js +1 -1
- package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js.map +1 -1
- package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js +1 -1
- package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js.map +1 -1
- 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]__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 +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js.map +1 -1
- 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.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js +1 -1
- 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 +1 -1
- 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]__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]__1qtzvez4cn5be._.js → [root-of-the-server]__1ektgsnjg4btl._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1j6n8jj7-5t6v._.js → [root-of-the-server]__1nfpyr3ynmwks._.js} +1 -1
- 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]__1ul9rrs2g66lm._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_00fvst5icgei4._.js +3 -0
- package/web/.next/server/chunks/ssr/_00fvst5icgei4._.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/_02mwdj1oj1zgm._.js +3 -0
- package/web/.next/server/chunks/ssr/_02mwdj1oj1zgm._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0fqd23gyia_8g._.js +3 -0
- package/web/.next/server/chunks/ssr/_0fqd23gyia_8g._.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/_0pyd1_y7w8ngp._.js +1 -1
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0u0u0owpxx_37._.js +3 -0
- package/web/.next/server/chunks/ssr/_0u0u0owpxx_37._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js +1 -1
- package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0x5-_917zcaj9._.js +3 -0
- package/web/.next/server/chunks/ssr/_0x5-_917zcaj9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0cnpz5jm2_9xf._.js → _0xajzaside0sw._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0cnpz5jm2_9xf._.js.map → _0xajzaside0sw._.js.map} +1 -1
- 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/_0yhvyj-yts7qi._.js +3 -0
- package/web/.next/server/chunks/ssr/_0yhvyj-yts7qi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_104ilzyn58zw_._.js +3 -0
- package/web/.next/server/chunks/ssr/_104ilzyn58zw_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_1a9wrl8uw7x-y._.js → _13_ady-a4058y._.js} +1 -1
- package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js +1 -1
- package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
- package/web/.next/server/chunks/ssr/{_1iorutn_o9hja._.js → _1cc4ie_s4tycq._.js} +1 -1
- package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
- package/web/.next/server/chunks/ssr/_1gbkqq8ra1nei._.js +1 -1
- package/web/.next/server/chunks/ssr/_1gbkqq8ra1nei._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_1kdx8a0j5cxyl._.js → _1gnk2vqna6c6u._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_1kdx8a0j5cxyl._.js.map → _1gnk2vqna6c6u._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_1k2b80m058vgx._.js +3 -0
- package/web/.next/server/chunks/ssr/_1k2b80m058vgx._.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/_1qbsmlji34yph._.js +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js +1 -1
- package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_1i5zdy3tp2ykh._.js → _1xgivp19ts9hn._.js} +1 -1
- package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js +1 -1
- package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_05ni_zu0e0w44._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_05ni_zu0e0w44._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_07vtvfyfo0a6i._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_07vtvfyfo0a6i._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_12euo0ncdx1pn._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_12euo0ncdx1pn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_1722-epjft-rn._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_1722-epjft-rn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js → node_modules_@aeolus-fleet_ui_dist_11tn8gozt2_c3._.js} +2 -2
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_ui_dist_11tn8gozt2_c3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_ui_dist_16j49enf275ln._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_ui_dist_16j49enf275ln._.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_19e_nxxf4a88q._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_0qgev3ti257yj._.js +1 -1
- 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 +1 -1
- package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js +1 -1
- package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js +1 -1
- package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js +1 -1
- package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js.map +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js.map +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js +1 -1
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js +1 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +1 -1
- package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js +1 -1
- package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{web_features_0bwqcs9wjf4y8._.js → web_features_06f9kfi0c4nf8._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_05aos-xwnl3m_._.js.map → web_features_06f9kfi0c4nf8._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js +1 -1
- package/web/.next/server/chunks/ssr/{web_features_05aos-xwnl3m_._.js → web_features_12b-75qfhurxi._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_0bwqcs9wjf4y8._.js.map → web_features_12b-75qfhurxi._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_1m5g9a6mwrsd-._.js +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_authorize_137wk0n1nu3cn._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{web_features_bridge_0w95y19yk5w14._.js → web_features_bridge_0msm42qwm0-jq._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_bridge_0w95y19yk5w14._.js.map → web_features_bridge_0msm42qwm0-jq._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js.map +1 -1
- 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_025l9l6m2zkya._.js → web_features_forms_1u0akr22eh_x_._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_frame_01uyck6q56an2._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_frame_01uyck6q56an2._.js.map +1 -0
- 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_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_1-lre9nfakki7._.js +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/middleware-build-manifest.js +3 -3
- 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 +49 -49
- package/web/.next/static/chunks/030kay14jcn_y.js +1 -0
- package/web/.next/static/chunks/0ben53l12lrh1.js +1 -0
- package/web/.next/static/chunks/0d1u4n5okodee.css +3 -0
- package/web/.next/static/chunks/0dg4cy4rae-3o.js +1 -0
- package/web/.next/static/chunks/0jwils_670syn.js +1 -0
- package/web/.next/static/chunks/0lnew3mjkd54b.js +1 -0
- package/web/.next/static/chunks/0m95j-t2qmnd_.js +1 -0
- package/web/.next/static/chunks/0r5ujkp-5utsu.js +1 -0
- package/web/.next/static/chunks/{23vvtbj-zoa_f.js → 1jyiwl5szsvgn.js} +1 -1
- package/web/.next/static/chunks/{0k33n07zesv12.js → 1lkcm-iwggfae.js} +1 -1
- package/web/.next/static/chunks/1ml6wx1ya9wwo.js +1 -0
- package/web/.next/static/chunks/22wtc73dzqm8f.js +1 -0
- package/web/.next/static/chunks/2drwxc7-hry0u.js +1 -0
- package/web/.next/static/chunks/{07j7jnfe13wx6.js → 2ich96rzec753.js} +1 -1
- package/web/.next/static/chunks/{3d5z1i-6yksxd.js → 2khjzepn4_2a-.js} +1 -1
- package/web/.next/static/chunks/{1uhmdmkn5gsk2.js → 2ui6n5-n032a3.js} +1 -1
- package/web/.next/static/chunks/2wvdu6-tx1h0l.js +1 -0
- package/web/.next/static/chunks/33qpc2y76i927.js +1 -0
- package/web/.next/static/chunks/3h8spyc73a438.js +1 -0
- package/web/.next/static/chunks/{2dgbb29jkr_tu.js → 3v8s571padqcz.js} +1 -1
- package/web/.next/static/chunks/3wg9zn3lyhf-b.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/public/argo-wake-icon.svg +1 -0
- package/web/public/wake-worker.js +8 -2
- package/web/public/wake-worker.test.ts +52 -0
- package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js +0 -3
- package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0vid8-myyy-_4._.js +0 -3
- package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js +0 -3
- package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js +0 -3
- package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1airu8wwf7z1b._.js +0 -3
- package/web/.next/server/chunks/ssr/_1airu8wwf7z1b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1i5zdy3tp2ykh._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js +0 -3
- package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js +0 -3
- package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_025l9l6m2zkya._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js.map +0 -1
- package/web/.next/static/chunks/0ozz8jadgfdrx.js +0 -1
- package/web/.next/static/chunks/1v36iovy1f5cj.js +0 -1
- package/web/.next/static/chunks/1vhvy8bx4fxur.js +0 -1
- package/web/.next/static/chunks/1vhx_nu9nxo1v.js +0 -1
- package/web/.next/static/chunks/24vn5i6ojvl8l.js +0 -1
- package/web/.next/static/chunks/2l6hafvocw-rd.js +0 -1
- package/web/.next/static/chunks/2ld8_nap7g_uy.js +0 -1
- package/web/.next/static/chunks/2pvcbql986wln.js +0 -1
- package/web/.next/static/chunks/2s1efgj6gxjgl.js +0 -1
- package/web/.next/static/chunks/2zlx-c_0x38uo.css +0 -3
- package/web/.next/static/chunks/34u_331hqync_.js +0 -1
- package/web/.next/static/chunks/3_bb0g4jkqn8q.js +0 -1
- package/web/.next/static/chunks/3jq9vu8tr29j2.js +0 -1
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1qtzvez4cn5be._.js.map → [root-of-the-server]__1ektgsnjg4btl._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1j6n8jj7-5t6v._.js.map → [root-of-the-server]__1nfpyr3ynmwks._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{_1a9wrl8uw7x-y._.js.map → _13_ady-a4058y._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{_1iorutn_o9hja._.js.map → _1cc4ie_s4tycq._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{_0vid8-myyy-_4._.js.map → _1xgivp19ts9hn._.js.map} +0 -0
- /package/web/.next/static/{2O8_FQX7YN47L5_OxojXH → 79SqN0pBIJ0D-DK1jZmK6}/_buildManifest.js +0 -0
- /package/web/.next/static/{2O8_FQX7YN47L5_OxojXH → 79SqN0pBIJ0D-DK1jZmK6}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{2O8_FQX7YN47L5_OxojXH → 79SqN0pBIJ0D-DK1jZmK6}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../web/features/bridge/ui/place-icons.tsx","../../../../../web/features/bridge/hooks/data%3A2f3335%20%3Ctext/javascript%3E","../../../../../node_modules/lucide-react/src/icons/message-circle-question-mark.ts","../../../../../web/features/bridge/hooks/data%3Af81039%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3Ae31610%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A93bb16%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/use-web-push.ts","../../../../../web/features/bridge/ui/place-card.tsx","../../../../../web/features/bridge/state/places-panel.tsx","../../../../../web/features/bridge/hooks/slack-link-path.ts","../../../../../node_modules/lucide-react/src/icons/circle-pause.ts","../../../../../web/features/bridge/services/web-push.ts","../../../../../web/features/bridge/state/routing-panel.tsx","../../../../../web/features/bridge/ui/routing-switch.tsx"],"sourcesContent":["import { Bell, CircleQuestionMark, Hand, Hash, Mail, MessageCircleQuestionMark, Ship, Sparkles, type LucideIcon } from 'lucide-react';\n\nimport type { RoutedJob, RoutedPlace } from '../services/routing';\n\n/** Each job's icon in its tone, as the routing mockup draws it: Decide active, Do waiting, the others muted. */\nexport const JOB_ICONS: Readonly<Record<RoutedJob, { readonly Icon: LucideIcon; readonly tone: string }>> = {\n decide: { Icon: CircleQuestionMark, tone: 'text-tone-active-fg' },\n do: { Icon: Hand, tone: 'text-tone-waiting-fg' },\n 'stay-aware': { Icon: Bell, tone: 'text-muted-foreground' },\n 'everything-else': { Icon: MessageCircleQuestionMark, tone: 'text-muted-foreground' },\n};\n\n/** Bridge's icon, the mark of the sidebar. */\nexport const BRIDGE_ICON: LucideIcon = Ship;\n\n/** Each place's icon, as the routing mockup draws it. */\nexport const PLACE_ICONS: Readonly<Record<RoutedPlace, LucideIcon>> = { slack: Hash, chat: Sparkles, 'web-push': Bell, email: Mail };\n","/* __next_internal_action_entry_do_not_use__ [{\"402437ac0c9d46fa502dabec5228a952d7b3b27ed1\":{\"name\":\"turnRoute\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_10=/*#__PURE__*/createServerReference(\"402437ac0c9d46fa502dabec5228a952d7b3b27ed1\",callServer,void 0,findSourceMapURL,\"turnRoute\");export{$$RSC_SERVER_ACTION_10 as turnRoute};","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'message-circle-question-mark',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719',\n key: '1sd12s',\n },\n ],\n ['path', { d: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3', key: '1u773s' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n ],\n aliases: ['message-circle-question'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name MessageCircleQuestionMark\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/message-circle-question-mark\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 MessageCircleQuestionMark = createLucideIcon(__iconData);\n\nexport default MessageCircleQuestionMark;\n","/* __next_internal_action_entry_do_not_use__ [{\"6004464d6d01803499a8638865f39d917b29db7cf2\":{\"name\":\"turnOffWebPush\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_12=/*#__PURE__*/createServerReference(\"6004464d6d01803499a8638865f39d917b29db7cf2\",callServer,void 0,findSourceMapURL,\"turnOffWebPush\");export{$$RSC_SERVER_ACTION_12 as turnOffWebPush};","/* __next_internal_action_entry_do_not_use__ [{\"60d16eee56d2a7c0d1b7a0da4bfe794349c6e4a56f\":{\"name\":\"turnOnWebPush\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_11=/*#__PURE__*/createServerReference(\"60d16eee56d2a7c0d1b7a0da4bfe794349c6e4a56f\",callServer,void 0,findSourceMapURL,\"turnOnWebPush\");export{$$RSC_SERVER_ACTION_11 as turnOnWebPush};","/* __next_internal_action_entry_do_not_use__ [{\"407f924129760376461b283c0cb9547e08664ae1bb\":{\"name\":\"unlinkSlack\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_13=/*#__PURE__*/createServerReference(\"407f924129760376461b283c0cb9547e08664ae1bb\",callServer,void 0,findSourceMapURL,\"unlinkSlack\");export{$$RSC_SERVER_ACTION_13 as unlinkSlack};","'use client';\n\nimport { useEffect, useState, useTransition } from 'react';\n\nimport type { WakeChannels } from '../services/deliveries';\nimport { applicationServerKeyOf, browserNameOf, subscriptionInputOf } from '../services/web-push';\nimport { turnOffWebPush, turnOnWebPush } from './bridge-actions';\n\n/** The service worker that shows a wake and opens Bridge when it is pressed. */\nconst WORKER_PATH = '/wake-worker.js';\n\n/** Whether this browser takes web push at all. */\nfunction isPushTaken(): boolean {\n return 'serviceWorker' in navigator && 'PushManager' in window && 'Notification' in window;\n}\n\n/** This browser's own push subscription with the gateway's worker, if it has one. */\nasync function ownSubscription(): Promise<PushSubscription | null> {\n const registration = await navigator.serviceWorker.getRegistration(WORKER_PATH);\n return (await registration?.pushManager.getSubscription()) ?? null;\n}\n\n/** Asks the browser's permission, then subscribes it with the gateway's key: the subscription to send, or why there is none. */\nasync function subscribed(webPushKey: string): Promise<{ readonly isOk: true; readonly value: PushSubscription } | { readonly isOk: false; readonly message: string }> {\n if ((await Notification.requestPermission()) !== 'granted') {\n return { isOk: false, message: 'Your browser did not allow notifications from this site: allow them, then turn web push on again' };\n }\n const registration = await navigator.serviceWorker.register(WORKER_PATH);\n await navigator.serviceWorker.ready;\n return { isOk: true, value: await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: applicationServerKeyOf(webPushKey) }) };\n}\n\n/**\n * Web push in this browser (wake a person, W8): whether it takes web push,\n * its own subscription, turning it on, which asks the browser's permission\n * first, and removing a browser, this one or another.\n */\nexport function useWebPush({ fleetId, webPushKey }: { fleetId: string; webPushKey: string | null }) {\n const [isTaken, setIsTaken] = useState(true);\n const [ownEndpoint, setOwnEndpoint] = useState<string | undefined>();\n const [working, setWorking] = useState<string | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n\n useEffect(() => {\n if (!isPushTaken()) {\n setIsTaken(false);\n return;\n }\n void ownSubscription().then((own) => {\n setOwnEndpoint(own?.endpoint);\n });\n }, []);\n\n const turnOn = () => {\n if (webPushKey === null) {\n return;\n }\n setWorking('on');\n setFailure(undefined);\n startTransition(async () => {\n try {\n const subscription = await subscribed(webPushKey);\n if (!subscription.isOk) {\n setFailure(subscription.message);\n return;\n }\n const input = subscriptionInputOf(subscription.value.toJSON(), browserNameOf(navigator.userAgent));\n if (input === undefined) {\n setFailure('Your browser gave no push subscription: try again');\n return;\n }\n const outcome = await turnOnWebPush(fleetId, input);\n if (outcome.isOk) {\n setOwnEndpoint(input.endpoint);\n } else {\n setFailure(outcome.message);\n }\n } catch {\n setFailure('Your browser could not turn web push on: try again');\n } finally {\n setWorking(undefined);\n }\n });\n };\n\n const remove = (endpoint: string) => {\n setWorking(endpoint);\n setFailure(undefined);\n startTransition(async () => {\n if (endpoint === ownEndpoint) {\n await (await ownSubscription())?.unsubscribe();\n setOwnEndpoint(undefined);\n }\n const outcome = await turnOffWebPush(fleetId, endpoint);\n setWorking(undefined);\n if (!outcome.isOk) {\n setFailure(outcome.message);\n }\n });\n };\n\n return { isTaken, ownEndpoint, working, failure, turnOn, remove };\n}\n\nexport type WebPushBrowsers = WakeChannels['webPush']['browsers'];\n","import { CircleCheck, CirclePause, type LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport type { PlaceCard as PlaceCardState } from '../services/routing';\n\n/**\n * A place on top of Where things show (the routing mockup): its icon and\n * name, its state on the right, what it does, and its one action below.\n */\nexport function PlaceCard({ place, name, Icon, card, children }: { place: string; name: string; Icon: LucideIcon; card: PlaceCardState; children?: ReactNode }) {\n const StateIcon = card.state.isOk ? CircleCheck : CirclePause;\n return (\n <div data-testid={`bridge-place-${place}`} className=\"flex flex-col gap-1.5 rounded-lg border border-border bg-card px-3 py-2.5\">\n <span className=\"flex items-center gap-2 font-medium\">\n <Icon aria-hidden className=\"size-4 shrink-0\" />\n {name}\n <span data-testid={`bridge-place-${place}-state`} className={`ml-auto inline-flex items-center gap-1 text-caption font-medium ${card.state.isOk ? 'text-tone-ok-fg' : 'text-muted-foreground'}`}>\n <StateIcon aria-hidden className=\"size-3.5\" />\n {card.state.label}\n </span>\n </span>\n <span className=\"text-caption text-muted-foreground\">{card.description}</span>\n {children === undefined ? null : <span className=\"mt-auto flex flex-col items-start gap-1.5\">{children}</span>}\n </div>\n );\n}\n","'use client';\n\nimport { useState, useTransition } from 'react';\n\nimport { turnRoute, unlinkSlack } from '../hooks/bridge-actions';\nimport type { SlackLink } from '../hooks/read-bridge';\nimport { SLACK_LINK_PATH } from '../hooks/slack-link-path';\nimport { useWebPush } from '../hooks/use-web-push';\nimport type { WakeChannels } from '../services/deliveries';\nimport { chatCardOf, emailCardOf, emailTurnsOf, PLACE_NAMES, slackCardOf, webPushCardOf, type RoutingView } from '../services/routing';\nimport { ActionButton } from '../ui/action-button';\nimport { Notice } from '../ui/notice';\nimport { PlaceCard } from '../ui/place-card';\nimport { PLACE_ICONS } from '../ui/place-icons';\n\nfunction SlackPlace({ fleetId, slackLink }: { fleetId: string; slackLink: SlackLink | null }) {\n const [isUnlinking, startTransition] = useTransition();\n const [failure, setFailure] = useState<string | undefined>();\n const card = slackCardOf(slackLink);\n\n const unlink = () => {\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await unlinkSlack(fleetId);\n if (!outcome.isOk) {\n setFailure(outcome.message);\n }\n });\n };\n\n return (\n <PlaceCard place=\"slack\" name={PLACE_NAMES.slack} Icon={PLACE_ICONS.slack} card={card}>\n {card.action === 'link' ? (\n <a\n href={`${SLACK_LINK_PATH}?${new URLSearchParams({ fleet: fleetId }).toString()}`}\n data-testid=\"bridge-slack-link\"\n className=\"inline-flex h-7 items-center rounded-md bg-primary px-2.5 text-caption font-medium text-primary-foreground hover:bg-primary-hover\"\n >\n Link Slack\n </a>\n ) : null}\n {card.action === 'unlink' ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-slack-unlink\" isPending={isUnlinking} pendingLabel=\"Unlinking...\" onClick={unlink}>\n Unlink\n </ActionButton>\n ) : null}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </PlaceCard>\n );\n}\n\nfunction WebPushPlace({ fleetId, webPush }: { fleetId: string; webPush: WakeChannels['webPush'] | undefined }) {\n const browsers = webPush?.browsers ?? [];\n const { isTaken, ownEndpoint, working, failure, turnOn, remove } = useWebPush({ fleetId, webPushKey: webPush?.publicKey ?? null });\n const card = webPushCardOf({ isOffered: webPush !== undefined && webPush.publicKey !== null, isTaken, ownEndpoint, browsers });\n const others = browsers.filter(({ endpoint }) => card.action !== 'remove' || endpoint !== ownEndpoint);\n return (\n <PlaceCard place=\"web-push\" name={PLACE_NAMES['web-push']} Icon={PLACE_ICONS['web-push']} card={card}>\n {card.action === 'remove' && ownEndpoint !== undefined ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-web-push-remove\" isPending={working === ownEndpoint} pendingLabel=\"Removing...\" disabled={working !== undefined} onClick={() => { remove(ownEndpoint); }}>\n Remove\n </ActionButton>\n ) : null}\n {card.action === 'turnOn' ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-web-push-on\" isPending={working === 'on'} pendingLabel=\"Turning on...\" disabled={working !== undefined} onClick={turnOn}>\n Turn on\n </ActionButton>\n ) : null}\n {others.map(({ endpoint, browser, isGone }) => (\n <span key={endpoint} data-testid=\"bridge-web-push-browser\" className=\"flex w-full items-center gap-2 text-caption text-muted-foreground\">\n <span className=\"min-w-0 flex-1\">{isGone ? `${browser}: no longer takes wakes` : `Also on in ${browser}`}</span>\n <button type=\"button\" data-testid=\"bridge-web-push-remove-other\" disabled={working !== undefined} onClick={() => { remove(endpoint); }} className=\"underline hover:text-foreground disabled:opacity-50\">\n {working === endpoint ? 'Removing...' : 'Remove'}\n </button>\n </span>\n ))}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </PlaceCard>\n );\n}\n\nfunction EmailPlace({ fleetId, routing }: { fleetId: string; routing: RoutingView }) {\n const [isTurning, startTransition] = useTransition();\n const [failure, setFailure] = useState<string | undefined>();\n const card = emailCardOf({ isOffered: routing.offered.email, isOnForAnyJob: routing.jobs.some(({ places }) => places.email) });\n\n const turn = (isOn: boolean) => {\n setFailure(undefined);\n startTransition(async () => {\n for (const change of emailTurnsOf(routing, isOn)) {\n const outcome = await turnRoute({ fleet: fleetId, ...change });\n if (!outcome.isOk) {\n setFailure(outcome.message);\n return;\n }\n }\n });\n };\n\n return (\n <PlaceCard place=\"email\" name={PLACE_NAMES.email} Icon={PLACE_ICONS.email} card={card}>\n {card.action === 'turnOn' || card.action === 'turnOff' ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-email-turn\" isPending={isTurning} pendingLabel={card.action === 'turnOn' ? 'Turning on...' : 'Turning off...'} onClick={() => { turn(card.action === 'turnOn'); }}>\n {card.action === 'turnOn' ? 'Turn on' : 'Turn off'}\n </ActionButton>\n ) : null}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </PlaceCard>\n );\n}\n\n/**\n * The places on top of Where things show (Bridge, section 8; the routing\n * mockup), each with its state and its one action: Slack linked or not, the\n * chats connected through the gateway, web push in this browser, and email.\n */\nexport function PlacesPanel({\n fleetId,\n routing,\n slackLink,\n chats,\n webPush,\n}: {\n fleetId: string;\n routing: RoutingView;\n slackLink: SlackLink | null;\n chats: readonly string[];\n webPush: WakeChannels['webPush'] | undefined;\n}) {\n return (\n <section aria-label=\"The places\" className=\"grid gap-2.5 sm:grid-cols-2 lg:grid-cols-4\">\n <SlackPlace fleetId={fleetId} slackLink={slackLink} />\n <PlaceCard place=\"chat\" name={PLACE_NAMES.chat} Icon={PLACE_ICONS.chat} card={chatCardOf(chats)} />\n <WebPushPlace fleetId={fleetId} webPush={webPush} />\n <EmailPlace fleetId={fleetId} routing={routing} />\n </section>\n );\n}\n","/** Where Link Slack starts (gateway scopes 9.3): the button in Bridge's settings and the button in a bot's answer in Slack (src/core/slack/take-slack-event.ts). */\nexport const SLACK_LINK_PATH = '/slack/link';\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","/**\n * What the section of wakes of Bridge's settings works out in the browser (wake a\n * person, W8): the name a browser it turns web push on in is listed by, the\n * gateway's push key as the browser's push manager takes it, and the\n * subscription the browser sends the gateway.\n */\n\n/** A browser's push subscription as the gateway takes it, with the browser's name. */\nexport interface SubscriptionInput {\n readonly endpoint: string;\n readonly keys: { readonly p256dh: string; readonly auth: string };\n readonly browser: string;\n}\n\n/** The browsers and systems a name is made of, the first that matches counting: Edge and Chrome also say Safari, and Chrome says Chrome. */\nconst BROWSERS: readonly (readonly [RegExp, string])[] = [\n [/Edg\\//, 'Edge'],\n [/Firefox\\//, 'Firefox'],\n [/Chrome\\//, 'Chrome'],\n [/Safari\\//, 'Safari'],\n];\nconst SYSTEMS: readonly (readonly [RegExp, string])[] = [\n [/iPhone|iPad/, 'iOS'],\n [/Android/, 'Android'],\n [/Mac OS X/, 'macOS'],\n [/Windows/, 'Windows'],\n [/Linux/, 'Linux'],\n];\n\nconst firstOf = (userAgent: string, names: readonly (readonly [RegExp, string])[]): string | undefined => names.find(([pattern]) => pattern.test(userAgent))?.[1];\n\n/** The name a browser is listed by, such as Firefox on Linux, from its user agent. */\nexport function browserNameOf(userAgent: string): string {\n const browser = firstOf(userAgent, BROWSERS);\n const system = firstOf(userAgent, SYSTEMS);\n if (browser === undefined) {\n return 'A browser';\n }\n return system === undefined ? browser : `${browser} on ${system}`;\n}\n\n/** The bytes a base64url key stands for, as the browser's push manager takes the gateway's key. */\nexport function applicationServerKeyOf(key: string): Uint8Array<ArrayBuffer> {\n const binary = atob(key.replaceAll('-', '+').replaceAll('_', '/'));\n return Uint8Array.from(binary, (character) => character.charCodeAt(0));\n}\n\n/** The subscription to send, from the push manager's own, or none when it gave no endpoint or keys. */\nexport function subscriptionInputOf(subscription: { endpoint?: string; keys?: Record<string, string> }, browser: string): SubscriptionInput | undefined {\n const { endpoint, keys } = subscription;\n const p256dh = keys?.p256dh;\n const auth = keys?.auth;\n return endpoint === undefined || p256dh === undefined || auth === undefined ? undefined : { endpoint, keys: { p256dh, auth }, browser };\n}\n","'use client';\n\nimport { CircleCheck } from 'lucide-react';\nimport { useState, useTransition } from 'react';\n\nimport { turnRoute } from '../hooks/bridge-actions';\nimport { JOB_NAMES, PLACE_NAMES, ROUTED_PLACES, turnedToastOf, type RoutedJob, type RoutedPlace, type RoutingToast, type RoutingView, type WaitingByJob } from '../services/routing';\nimport { Notice } from '../ui/notice';\nimport { BRIDGE_ICON, JOB_ICONS, PLACE_ICONS } from '../ui/place-icons';\nimport { RoutingSwitch } from '../ui/routing-switch';\n\n/** Six columns on desktop: the job, Bridge, then each place. */\nconst ROW = 'sm:grid sm:grid-cols-[1.6fr_repeat(5,1fr)] sm:items-center sm:gap-3';\n\n/** The toast after a change (the routing mockup): what the place now shows. */\nfunction Toast({ toast }: { toast: RoutingToast }) {\n return (\n <div role=\"status\" data-testid=\"bridge-routing-toast\" className=\"flex max-w-[720px] gap-3 rounded-lg border border-border bg-popover py-3.5 pr-3.5 pl-4 text-popover-foreground shadow-lg\">\n <CircleCheck aria-hidden className=\"mt-0.5 size-4 shrink-0 text-tone-ok-fg\" />\n <span className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <span className=\"font-medium\">{toast.title}</span>\n <span className=\"text-caption text-muted-foreground\">{toast.detail}</span>\n </span>\n </div>\n );\n}\n\n/** A place's cell: on desktop the switch in its column, on the phone a line with the place's name and the switch. */\nfunction PlaceCell({ name, children }: { name: string; children: React.ReactNode }) {\n return (\n <span className=\"flex items-center justify-between sm:block\">\n <span className=\"sm:hidden\">{name}</span>\n {children}\n </span>\n );\n}\n\n/**\n * Routing per job (Bridge, section 8; the routing mockup): per job, the\n * places that show it besides Bridge, which always does. A switch turns a\n * place on or off at once; the toast then says what it shows (CC20). A\n * place the gateway does not offer, or Slack before it is linked, cannot be\n * turned on; one on can always be turned off. On desktop a table, on the\n * phone a card per job.\n */\nexport function RoutingPanel({ fleetId, routing, isSlackLinked, waitingByJob }: { fleetId: string; routing: RoutingView; isSlackLinked: boolean; waitingByJob: WaitingByJob }) {\n const [isTurning, startTransition] = useTransition();\n const [turning, setTurning] = useState<string | undefined>();\n const [toast, setToast] = useState<RoutingToast | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const isUsable = (place: RoutedPlace): boolean => routing.offered[place] && (place !== 'slack' || isSlackLinked);\n\n const turn = (change: { job: RoutedJob; place: RoutedPlace; isOn: boolean; isChatOn: boolean }) => {\n setToast(undefined);\n setFailure(undefined);\n setTurning(`${change.job}-${change.place}`);\n startTransition(async () => {\n const { isChatOn, ...route } = change;\n const outcome = await turnRoute({ fleet: fleetId, ...route });\n if (outcome.isOk) {\n setToast(turnedToastOf({ ...route, waiting: waitingByJob[route.job], isChatOn }));\n } else {\n setFailure(outcome.message);\n }\n });\n };\n\n return (\n <section className=\"grid gap-3\" aria-label=\"Per job\">\n <div className=\"grid gap-3 sm:gap-0 sm:overflow-hidden sm:rounded-lg sm:border sm:border-border sm:bg-card\">\n <div aria-hidden className={`hidden min-h-8 bg-muted px-4 text-caption font-medium text-muted-foreground ${ROW}`}>\n <span>Job</span>\n <span className=\"inline-flex items-center gap-1.5\">\n <BRIDGE_ICON className=\"size-3.5\" />\n Bridge\n </span>\n {ROUTED_PLACES.map((place) => {\n const Icon = PLACE_ICONS[place];\n return (\n <span key={place} className=\"inline-flex items-center gap-1.5\">\n <Icon className=\"size-3.5\" />\n {PLACE_NAMES[place]}\n </span>\n );\n })}\n </div>\n {routing.jobs.map(({ job, places }) => {\n const { Icon, tone } = JOB_ICONS[job];\n return (\n <div\n key={job}\n data-testid=\"bridge-routing-job\"\n className={`flex flex-col gap-2 rounded-lg border border-border bg-card p-3 sm:min-h-[52px] sm:rounded-none sm:border-0 sm:border-t sm:px-4 sm:py-1.5 ${ROW}`}\n >\n <span className=\"flex flex-col gap-0.5\">\n <span className=\"inline-flex items-center gap-1.5 font-semibold sm:font-medium\">\n <Icon aria-hidden className={`size-4 shrink-0 ${tone}`} />\n {JOB_NAMES[job].name}\n </span>\n <span className=\"text-caption text-muted-foreground max-sm:hidden\">{JOB_NAMES[job].holds}</span>\n </span>\n <PlaceCell name=\"Bridge\">\n <RoutingSwitch isOn label={`Bridge for ${JOB_NAMES[job].name}`} isDisabled aside=\"Always\" testId={`bridge-routing-${job}-bridge`} />\n </PlaceCell>\n {ROUTED_PLACES.map((place) => {\n const isOn = places[place];\n const key = `${job}-${place}`;\n return (\n <PlaceCell key={place} name={PLACE_NAMES[place]}>\n <RoutingSwitch\n isOn={isOn}\n label={`${PLACE_NAMES[place]} for ${JOB_NAMES[job].name}`}\n isDisabled={isTurning || (!isOn && !isUsable(place))}\n isBusy={isTurning && turning === key}\n {...(job === 'everything-else' && place === 'slack' && !isOn ? { aside: 'Bots only' } : {})}\n testId={`bridge-routing-${key}`}\n onTurn={() => {\n turn({ job, place, isOn: !isOn, isChatOn: places.chat });\n }}\n />\n </PlaceCell>\n );\n })}\n </div>\n );\n })}\n </div>\n {toast === undefined ? null : <Toast toast={toast} />}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n <p className=\"text-caption text-muted-foreground max-sm:hidden\">While a Bridge page is open in focus, web push and email do not wake you. Slack still posts: you turned it on, and the views stay in step.</p>\n </section>\n );\n}\n","/**\n * A switch for one place of one job (the routing mockup): on or off, small;\n * Bridge's is on and cannot be turned, said beside it as Always; Slack's for\n * everything else, while off, says Bots only beside it.\n */\nexport function RoutingSwitch({\n isOn,\n label,\n isDisabled,\n isBusy = false,\n aside,\n testId,\n onTurn,\n}: {\n isOn: boolean;\n label: string;\n isDisabled: boolean;\n isBusy?: boolean;\n aside?: string;\n testId: string;\n onTurn?: () => void;\n}) {\n return (\n <span className=\"inline-flex items-center gap-2.5\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={isOn}\n aria-label={label}\n aria-busy={isBusy}\n disabled={isDisabled}\n data-testid={testId}\n onClick={onTurn}\n className=\"group inline-flex h-4 w-7 shrink-0 items-center rounded-full bg-input p-0.5 aria-checked:bg-primary disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <span aria-hidden className=\"size-3 rounded-full bg-card shadow-sm transition-transform group-aria-checked:translate-x-3\" />\n </button>\n {aside === undefined ? null : <span className=\"text-caption text-muted-foreground\">{aside}</span>}\n </span>\n );\n}\n"],"names":["$$RSC_SERVER_ACTION_10","$$RSC_SERVER_ACTION_13","RoutingSwitch","isOn","label","isDisabled","isBusy","aside","testId","onTurn","className","type","role","disabled","onClick","undefined"],"mappings":"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","ignoreList":[2,10]}
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/bridge/ui/place-icons.tsx","../../../../../web/features/bridge/hooks/data%3A08717d%20%3Ctext/javascript%3E","../../../../../node_modules/lucide-react/src/icons/message-circle-question-mark.ts","../../../../../web/features/bridge/hooks/data%3Abb060a%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3Ab7a1f8%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A7bd101%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/use-web-push.ts","../../../../../web/features/bridge/ui/place-card.tsx","../../../../../web/features/bridge/state/places-panel.tsx","../../../../../web/features/bridge/hooks/slack-link-path.ts","../../../../../node_modules/lucide-react/src/icons/circle-pause.ts","../../../../../web/features/bridge/services/web-push.ts","../../../../../web/features/bridge/state/routing-panel.tsx","../../../../../web/features/bridge/ui/routing-switch.tsx"],"sourcesContent":["import { Bell, CircleQuestionMark, Hand, Hash, Mail, MessageCircleQuestionMark, Ship, Sparkles, type LucideIcon } from 'lucide-react';\n\nimport type { RoutedJob, RoutedPlace } from '../services/routing';\n\n/** Each job's icon in its tone, as the routing mockup draws it: Decide active, Do waiting, the others muted. */\nexport const JOB_ICONS: Readonly<Record<RoutedJob, { readonly Icon: LucideIcon; readonly tone: string }>> = {\n decide: { Icon: CircleQuestionMark, tone: 'text-tone-active-fg' },\n do: { Icon: Hand, tone: 'text-tone-waiting-fg' },\n 'stay-aware': { Icon: Bell, tone: 'text-muted-foreground' },\n 'everything-else': { Icon: MessageCircleQuestionMark, tone: 'text-muted-foreground' },\n};\n\n/** Bridge's icon, the mark of the sidebar. */\nexport const BRIDGE_ICON: LucideIcon = Ship;\n\n/** Each place's icon, as the routing mockup draws it. */\nexport const PLACE_ICONS: Readonly<Record<RoutedPlace, LucideIcon>> = { slack: Hash, chat: Sparkles, 'web-push': Bell, email: Mail };\n","/* __next_internal_action_entry_do_not_use__ [{\"40539b9dd02cbeb747d537f17ad3afbeb5fa086c7e\":{\"name\":\"turnRoute\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_10=/*#__PURE__*/createServerReference(\"40539b9dd02cbeb747d537f17ad3afbeb5fa086c7e\",callServer,void 0,findSourceMapURL,\"turnRoute\");export{$$RSC_SERVER_ACTION_10 as turnRoute};","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'message-circle-question-mark',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719',\n key: '1sd12s',\n },\n ],\n ['path', { d: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3', key: '1u773s' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n ],\n aliases: ['message-circle-question'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name MessageCircleQuestionMark\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/message-circle-question-mark\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 MessageCircleQuestionMark = createLucideIcon(__iconData);\n\nexport default MessageCircleQuestionMark;\n","/* __next_internal_action_entry_do_not_use__ [{\"6028739f485a26b4fc9b642cdfc74a0a41dad8d9e2\":{\"name\":\"turnOffWebPush\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_12=/*#__PURE__*/createServerReference(\"6028739f485a26b4fc9b642cdfc74a0a41dad8d9e2\",callServer,void 0,findSourceMapURL,\"turnOffWebPush\");export{$$RSC_SERVER_ACTION_12 as turnOffWebPush};","/* __next_internal_action_entry_do_not_use__ [{\"6069429f9cb1a1d9efa5d9f753e10f1b9cef5dd9ce\":{\"name\":\"turnOnWebPush\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_11=/*#__PURE__*/createServerReference(\"6069429f9cb1a1d9efa5d9f753e10f1b9cef5dd9ce\",callServer,void 0,findSourceMapURL,\"turnOnWebPush\");export{$$RSC_SERVER_ACTION_11 as turnOnWebPush};","/* __next_internal_action_entry_do_not_use__ [{\"40289328a2de0ea128b784901853f4de7221583bc7\":{\"name\":\"unlinkSlack\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_13=/*#__PURE__*/createServerReference(\"40289328a2de0ea128b784901853f4de7221583bc7\",callServer,void 0,findSourceMapURL,\"unlinkSlack\");export{$$RSC_SERVER_ACTION_13 as unlinkSlack};","'use client';\n\nimport { useEffect, useState, useTransition } from 'react';\n\nimport type { WakeChannels } from '../services/deliveries';\nimport { applicationServerKeyOf, browserNameOf, subscriptionInputOf } from '../services/web-push';\nimport { turnOffWebPush, turnOnWebPush } from './bridge-actions';\n\n/** The service worker that shows a wake and opens Bridge when it is pressed. */\nconst WORKER_PATH = '/wake-worker.js';\n\n/** Whether this browser takes web push at all. */\nfunction isPushTaken(): boolean {\n return 'serviceWorker' in navigator && 'PushManager' in window && 'Notification' in window;\n}\n\n/** This browser's own push subscription with the gateway's worker, if it has one. */\nasync function ownSubscription(): Promise<PushSubscription | null> {\n const registration = await navigator.serviceWorker.getRegistration(WORKER_PATH);\n return (await registration?.pushManager.getSubscription()) ?? null;\n}\n\n/** Asks the browser's permission, then subscribes it with the gateway's key: the subscription to send, or why there is none. */\nasync function subscribed(webPushKey: string): Promise<{ readonly isOk: true; readonly value: PushSubscription } | { readonly isOk: false; readonly message: string }> {\n if ((await Notification.requestPermission()) !== 'granted') {\n return { isOk: false, message: 'Your browser did not allow notifications from this site: allow them, then turn web push on again' };\n }\n const registration = await navigator.serviceWorker.register(WORKER_PATH);\n await navigator.serviceWorker.ready;\n return { isOk: true, value: await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: applicationServerKeyOf(webPushKey) }) };\n}\n\n/**\n * Web push in this browser (wake a person, W8): whether it takes web push,\n * its own subscription, turning it on, which asks the browser's permission\n * first, and removing a browser, this one or another.\n */\nexport function useWebPush({ fleetId, webPushKey }: { fleetId: string; webPushKey: string | null }) {\n const [isTaken, setIsTaken] = useState(true);\n const [ownEndpoint, setOwnEndpoint] = useState<string | undefined>();\n const [working, setWorking] = useState<string | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n\n useEffect(() => {\n if (!isPushTaken()) {\n setIsTaken(false);\n return;\n }\n void ownSubscription().then((own) => {\n setOwnEndpoint(own?.endpoint);\n });\n }, []);\n\n const turnOn = () => {\n if (webPushKey === null) {\n return;\n }\n setWorking('on');\n setFailure(undefined);\n startTransition(async () => {\n try {\n const subscription = await subscribed(webPushKey);\n if (!subscription.isOk) {\n setFailure(subscription.message);\n return;\n }\n const input = subscriptionInputOf(subscription.value.toJSON(), browserNameOf(navigator.userAgent));\n if (input === undefined) {\n setFailure('Your browser gave no push subscription: try again');\n return;\n }\n const outcome = await turnOnWebPush(fleetId, input);\n if (outcome.isOk) {\n setOwnEndpoint(input.endpoint);\n } else {\n setFailure(outcome.message);\n }\n } catch {\n setFailure('Your browser could not turn web push on: try again');\n } finally {\n setWorking(undefined);\n }\n });\n };\n\n const remove = (endpoint: string) => {\n setWorking(endpoint);\n setFailure(undefined);\n startTransition(async () => {\n if (endpoint === ownEndpoint) {\n await (await ownSubscription())?.unsubscribe();\n setOwnEndpoint(undefined);\n }\n const outcome = await turnOffWebPush(fleetId, endpoint);\n setWorking(undefined);\n if (!outcome.isOk) {\n setFailure(outcome.message);\n }\n });\n };\n\n return { isTaken, ownEndpoint, working, failure, turnOn, remove };\n}\n\nexport type WebPushBrowsers = WakeChannels['webPush']['browsers'];\n","import { CircleCheck, CirclePause, type LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport type { PlaceCard as PlaceCardState } from '../services/routing';\n\n/**\n * A place on top of Where things show (the routing mockup): its icon and\n * name, its state on the right, what it does, and its one action below.\n */\nexport function PlaceCard({ place, name, Icon, card, children }: { place: string; name: string; Icon: LucideIcon; card: PlaceCardState; children?: ReactNode }) {\n const StateIcon = card.state.isOk ? CircleCheck : CirclePause;\n return (\n <div data-testid={`bridge-place-${place}`} className=\"flex flex-col gap-1.5 rounded-lg border border-border bg-card px-3 py-2.5\">\n <span className=\"flex items-center gap-2 font-medium\">\n <Icon aria-hidden className=\"size-4 shrink-0\" />\n {name}\n <span data-testid={`bridge-place-${place}-state`} className={`ml-auto inline-flex items-center gap-1 text-caption font-medium ${card.state.isOk ? 'text-tone-ok-fg' : 'text-muted-foreground'}`}>\n <StateIcon aria-hidden className=\"size-3.5\" />\n {card.state.label}\n </span>\n </span>\n <span className=\"text-caption text-muted-foreground\">{card.description}</span>\n {children === undefined ? null : <span className=\"mt-auto flex flex-col items-start gap-1.5\">{children}</span>}\n </div>\n );\n}\n","'use client';\n\nimport { useState, useTransition } from 'react';\n\nimport { turnRoute, unlinkSlack } from '../hooks/bridge-actions';\nimport type { SlackLink } from '../hooks/read-bridge';\nimport { SLACK_LINK_PATH } from '../hooks/slack-link-path';\nimport { useWebPush } from '../hooks/use-web-push';\nimport type { WakeChannels } from '../services/deliveries';\nimport { chatCardOf, emailCardOf, emailTurnsOf, PLACE_NAMES, slackCardOf, webPushCardOf, type RoutingView } from '../services/routing';\nimport { ActionButton } from '../ui/action-button';\nimport { Notice } from '../ui/notice';\nimport { PlaceCard } from '../ui/place-card';\nimport { PLACE_ICONS } from '../ui/place-icons';\n\nfunction SlackPlace({ fleetId, slackLink }: { fleetId: string; slackLink: SlackLink | null }) {\n const [isUnlinking, startTransition] = useTransition();\n const [failure, setFailure] = useState<string | undefined>();\n const card = slackCardOf(slackLink);\n\n const unlink = () => {\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await unlinkSlack(fleetId);\n if (!outcome.isOk) {\n setFailure(outcome.message);\n }\n });\n };\n\n return (\n <PlaceCard place=\"slack\" name={PLACE_NAMES.slack} Icon={PLACE_ICONS.slack} card={card}>\n {card.action === 'link' ? (\n <a\n href={`${SLACK_LINK_PATH}?${new URLSearchParams({ fleet: fleetId }).toString()}`}\n data-testid=\"bridge-slack-link\"\n className=\"inline-flex h-7 items-center rounded-md bg-primary px-2.5 text-caption font-medium text-primary-foreground hover:bg-primary-hover\"\n >\n Link Slack\n </a>\n ) : null}\n {card.action === 'unlink' ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-slack-unlink\" isPending={isUnlinking} pendingLabel=\"Unlinking...\" onClick={unlink}>\n Unlink\n </ActionButton>\n ) : null}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </PlaceCard>\n );\n}\n\nfunction WebPushPlace({ fleetId, webPush }: { fleetId: string; webPush: WakeChannels['webPush'] | undefined }) {\n const browsers = webPush?.browsers ?? [];\n const { isTaken, ownEndpoint, working, failure, turnOn, remove } = useWebPush({ fleetId, webPushKey: webPush?.publicKey ?? null });\n const card = webPushCardOf({ isOffered: webPush !== undefined && webPush.publicKey !== null, isTaken, ownEndpoint, browsers });\n const others = browsers.filter(({ endpoint }) => card.action !== 'remove' || endpoint !== ownEndpoint);\n return (\n <PlaceCard place=\"web-push\" name={PLACE_NAMES['web-push']} Icon={PLACE_ICONS['web-push']} card={card}>\n {card.action === 'remove' && ownEndpoint !== undefined ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-web-push-remove\" isPending={working === ownEndpoint} pendingLabel=\"Removing...\" disabled={working !== undefined} onClick={() => { remove(ownEndpoint); }}>\n Remove\n </ActionButton>\n ) : null}\n {card.action === 'turnOn' ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-web-push-on\" isPending={working === 'on'} pendingLabel=\"Turning on...\" disabled={working !== undefined} onClick={turnOn}>\n Turn on\n </ActionButton>\n ) : null}\n {others.map(({ endpoint, browser, isGone }) => (\n <span key={endpoint} data-testid=\"bridge-web-push-browser\" className=\"flex w-full items-center gap-2 text-caption text-muted-foreground\">\n <span className=\"min-w-0 flex-1\">{isGone ? `${browser}: no longer takes wakes` : `Also on in ${browser}`}</span>\n <button type=\"button\" data-testid=\"bridge-web-push-remove-other\" disabled={working !== undefined} onClick={() => { remove(endpoint); }} className=\"underline hover:text-foreground disabled:opacity-50\">\n {working === endpoint ? 'Removing...' : 'Remove'}\n </button>\n </span>\n ))}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </PlaceCard>\n );\n}\n\nfunction EmailPlace({ fleetId, routing }: { fleetId: string; routing: RoutingView }) {\n const [isTurning, startTransition] = useTransition();\n const [failure, setFailure] = useState<string | undefined>();\n const card = emailCardOf({ isOffered: routing.offered.email, isOnForAnyJob: routing.jobs.some(({ places }) => places.email) });\n\n const turn = (isOn: boolean) => {\n setFailure(undefined);\n startTransition(async () => {\n for (const change of emailTurnsOf(routing, isOn)) {\n const outcome = await turnRoute({ fleet: fleetId, ...change });\n if (!outcome.isOk) {\n setFailure(outcome.message);\n return;\n }\n }\n });\n };\n\n return (\n <PlaceCard place=\"email\" name={PLACE_NAMES.email} Icon={PLACE_ICONS.email} card={card}>\n {card.action === 'turnOn' || card.action === 'turnOff' ? (\n <ActionButton size=\"xs\" data-testid=\"bridge-email-turn\" isPending={isTurning} pendingLabel={card.action === 'turnOn' ? 'Turning on...' : 'Turning off...'} onClick={() => { turn(card.action === 'turnOn'); }}>\n {card.action === 'turnOn' ? 'Turn on' : 'Turn off'}\n </ActionButton>\n ) : null}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n </PlaceCard>\n );\n}\n\n/**\n * The places on top of Where things show (Bridge, section 8; the routing\n * mockup), each with its state and its one action: Slack linked or not, the\n * chats connected through the gateway, web push in this browser, and email.\n */\nexport function PlacesPanel({\n fleetId,\n routing,\n slackLink,\n chats,\n webPush,\n}: {\n fleetId: string;\n routing: RoutingView;\n slackLink: SlackLink | null;\n chats: readonly string[];\n webPush: WakeChannels['webPush'] | undefined;\n}) {\n return (\n <section aria-label=\"The places\" className=\"grid gap-2.5 sm:grid-cols-2 lg:grid-cols-4\">\n <SlackPlace fleetId={fleetId} slackLink={slackLink} />\n <PlaceCard place=\"chat\" name={PLACE_NAMES.chat} Icon={PLACE_ICONS.chat} card={chatCardOf(chats)} />\n <WebPushPlace fleetId={fleetId} webPush={webPush} />\n <EmailPlace fleetId={fleetId} routing={routing} />\n </section>\n );\n}\n","/** Where Link Slack starts (gateway scopes 9.3): the button in Bridge's settings and the button in a bot's answer in Slack (src/core/slack/take-slack-event.ts). */\nexport const SLACK_LINK_PATH = '/slack/link';\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","/**\n * What the section of wakes of Bridge's settings works out in the browser (wake a\n * person, W8): the name a browser it turns web push on in is listed by, the\n * gateway's push key as the browser's push manager takes it, and the\n * subscription the browser sends the gateway.\n */\n\n/** A browser's push subscription as the gateway takes it, with the browser's name. */\nexport interface SubscriptionInput {\n readonly endpoint: string;\n readonly keys: { readonly p256dh: string; readonly auth: string };\n readonly browser: string;\n}\n\n/** The browsers and systems a name is made of, the first that matches counting: Edge and Chrome also say Safari, and Chrome says Chrome. */\nconst BROWSERS: readonly (readonly [RegExp, string])[] = [\n [/Edg\\//, 'Edge'],\n [/Firefox\\//, 'Firefox'],\n [/Chrome\\//, 'Chrome'],\n [/Safari\\//, 'Safari'],\n];\nconst SYSTEMS: readonly (readonly [RegExp, string])[] = [\n [/iPhone|iPad/, 'iOS'],\n [/Android/, 'Android'],\n [/Mac OS X/, 'macOS'],\n [/Windows/, 'Windows'],\n [/Linux/, 'Linux'],\n];\n\nconst firstOf = (userAgent: string, names: readonly (readonly [RegExp, string])[]): string | undefined => names.find(([pattern]) => pattern.test(userAgent))?.[1];\n\n/** The name a browser is listed by, such as Firefox on Linux, from its user agent. */\nexport function browserNameOf(userAgent: string): string {\n const browser = firstOf(userAgent, BROWSERS);\n const system = firstOf(userAgent, SYSTEMS);\n if (browser === undefined) {\n return 'A browser';\n }\n return system === undefined ? browser : `${browser} on ${system}`;\n}\n\n/** The bytes a base64url key stands for, as the browser's push manager takes the gateway's key. */\nexport function applicationServerKeyOf(key: string): Uint8Array<ArrayBuffer> {\n const binary = atob(key.replaceAll('-', '+').replaceAll('_', '/'));\n return Uint8Array.from(binary, (character) => character.charCodeAt(0));\n}\n\n/** The subscription to send, from the push manager's own, or none when it gave no endpoint or keys. */\nexport function subscriptionInputOf(subscription: { endpoint?: string; keys?: Record<string, string> }, browser: string): SubscriptionInput | undefined {\n const { endpoint, keys } = subscription;\n const p256dh = keys?.p256dh;\n const auth = keys?.auth;\n return endpoint === undefined || p256dh === undefined || auth === undefined ? undefined : { endpoint, keys: { p256dh, auth }, browser };\n}\n","'use client';\n\nimport { CircleCheck } from 'lucide-react';\nimport { useState, useTransition } from 'react';\n\nimport { turnRoute } from '../hooks/bridge-actions';\nimport { JOB_NAMES, PLACE_NAMES, ROUTED_PLACES, turnedToastOf, type RoutedJob, type RoutedPlace, type RoutingToast, type RoutingView, type WaitingByJob } from '../services/routing';\nimport { Notice } from '../ui/notice';\nimport { BRIDGE_ICON, JOB_ICONS, PLACE_ICONS } from '../ui/place-icons';\nimport { RoutingSwitch } from '../ui/routing-switch';\n\n/** Six columns on desktop: the job, Bridge, then each place. */\nconst ROW = 'sm:grid sm:grid-cols-[1.6fr_repeat(5,1fr)] sm:items-center sm:gap-3';\n\n/** The toast after a change (the routing mockup): what the place now shows. */\nfunction Toast({ toast }: { toast: RoutingToast }) {\n return (\n <div role=\"status\" data-testid=\"bridge-routing-toast\" className=\"flex max-w-[720px] gap-3 rounded-lg border border-border bg-popover py-3.5 pr-3.5 pl-4 text-popover-foreground shadow-lg\">\n <CircleCheck aria-hidden className=\"mt-0.5 size-4 shrink-0 text-tone-ok-fg\" />\n <span className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <span className=\"font-medium\">{toast.title}</span>\n <span className=\"text-caption text-muted-foreground\">{toast.detail}</span>\n </span>\n </div>\n );\n}\n\n/** A place's cell: on desktop the switch in its column, on the phone a line with the place's name and the switch. */\nfunction PlaceCell({ name, children }: { name: string; children: React.ReactNode }) {\n return (\n <span className=\"flex items-center justify-between sm:block\">\n <span className=\"sm:hidden\">{name}</span>\n {children}\n </span>\n );\n}\n\n/**\n * Routing per job (Bridge, section 8; the routing mockup): per job, the\n * places that show it besides Bridge, which always does. A switch turns a\n * place on or off at once; the toast then says what it shows (CC20). A\n * place the gateway does not offer, or Slack before it is linked, cannot be\n * turned on; one on can always be turned off. On desktop a table, on the\n * phone a card per job.\n */\nexport function RoutingPanel({ fleetId, routing, isSlackLinked, waitingByJob }: { fleetId: string; routing: RoutingView; isSlackLinked: boolean; waitingByJob: WaitingByJob }) {\n const [isTurning, startTransition] = useTransition();\n const [turning, setTurning] = useState<string | undefined>();\n const [toast, setToast] = useState<RoutingToast | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const isUsable = (place: RoutedPlace): boolean => routing.offered[place] && (place !== 'slack' || isSlackLinked);\n\n const turn = (change: { job: RoutedJob; place: RoutedPlace; isOn: boolean; isChatOn: boolean }) => {\n setToast(undefined);\n setFailure(undefined);\n setTurning(`${change.job}-${change.place}`);\n startTransition(async () => {\n const { isChatOn, ...route } = change;\n const outcome = await turnRoute({ fleet: fleetId, ...route });\n if (outcome.isOk) {\n setToast(turnedToastOf({ ...route, waiting: waitingByJob[route.job], isChatOn }));\n } else {\n setFailure(outcome.message);\n }\n });\n };\n\n return (\n <section className=\"grid gap-3\" aria-label=\"Per job\">\n <div className=\"grid gap-3 sm:gap-0 sm:overflow-hidden sm:rounded-lg sm:border sm:border-border sm:bg-card\">\n <div aria-hidden className={`hidden min-h-8 bg-muted px-4 text-caption font-medium text-muted-foreground ${ROW}`}>\n <span>Job</span>\n <span className=\"inline-flex items-center gap-1.5\">\n <BRIDGE_ICON className=\"size-3.5\" />\n Bridge\n </span>\n {ROUTED_PLACES.map((place) => {\n const Icon = PLACE_ICONS[place];\n return (\n <span key={place} className=\"inline-flex items-center gap-1.5\">\n <Icon className=\"size-3.5\" />\n {PLACE_NAMES[place]}\n </span>\n );\n })}\n </div>\n {routing.jobs.map(({ job, places }) => {\n const { Icon, tone } = JOB_ICONS[job];\n return (\n <div\n key={job}\n data-testid=\"bridge-routing-job\"\n className={`flex flex-col gap-2 rounded-lg border border-border bg-card p-3 sm:min-h-[52px] sm:rounded-none sm:border-0 sm:border-t sm:px-4 sm:py-1.5 ${ROW}`}\n >\n <span className=\"flex flex-col gap-0.5\">\n <span className=\"inline-flex items-center gap-1.5 font-semibold sm:font-medium\">\n <Icon aria-hidden className={`size-4 shrink-0 ${tone}`} />\n {JOB_NAMES[job].name}\n </span>\n <span className=\"text-caption text-muted-foreground max-sm:hidden\">{JOB_NAMES[job].holds}</span>\n </span>\n <PlaceCell name=\"Bridge\">\n <RoutingSwitch isOn label={`Bridge for ${JOB_NAMES[job].name}`} isDisabled aside=\"Always\" testId={`bridge-routing-${job}-bridge`} />\n </PlaceCell>\n {ROUTED_PLACES.map((place) => {\n const isOn = places[place];\n const key = `${job}-${place}`;\n return (\n <PlaceCell key={place} name={PLACE_NAMES[place]}>\n <RoutingSwitch\n isOn={isOn}\n label={`${PLACE_NAMES[place]} for ${JOB_NAMES[job].name}`}\n isDisabled={isTurning || (!isOn && !isUsable(place))}\n isBusy={isTurning && turning === key}\n {...(job === 'everything-else' && place === 'slack' && !isOn ? { aside: 'Bots only' } : {})}\n testId={`bridge-routing-${key}`}\n onTurn={() => {\n turn({ job, place, isOn: !isOn, isChatOn: places.chat });\n }}\n />\n </PlaceCell>\n );\n })}\n </div>\n );\n })}\n </div>\n {toast === undefined ? null : <Toast toast={toast} />}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n <p className=\"text-caption text-muted-foreground max-sm:hidden\">While a Bridge page is open in focus, web push and email do not wake you. Slack still posts: you turned it on, and the views stay in step.</p>\n </section>\n );\n}\n","/**\n * A switch for one place of one job (the routing mockup): on or off, small;\n * Bridge's is on and cannot be turned, said beside it as Always; Slack's for\n * everything else, while off, says Bots only beside it.\n */\nexport function RoutingSwitch({\n isOn,\n label,\n isDisabled,\n isBusy = false,\n aside,\n testId,\n onTurn,\n}: {\n isOn: boolean;\n label: string;\n isDisabled: boolean;\n isBusy?: boolean;\n aside?: string;\n testId: string;\n onTurn?: () => void;\n}) {\n return (\n <span className=\"inline-flex items-center gap-2.5\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={isOn}\n aria-label={label}\n aria-busy={isBusy}\n disabled={isDisabled}\n data-testid={testId}\n onClick={onTurn}\n className=\"group inline-flex h-4 w-7 shrink-0 items-center rounded-full bg-input p-0.5 aria-checked:bg-primary disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <span aria-hidden className=\"size-3 rounded-full bg-card shadow-sm transition-transform group-aria-checked:translate-x-3\" />\n </button>\n {aside === undefined ? null : <span className=\"text-caption text-muted-foreground\">{aside}</span>}\n </span>\n );\n}\n"],"names":["$$RSC_SERVER_ACTION_10","$$RSC_SERVER_ACTION_13","RoutingSwitch","isOn","label","isDisabled","isBusy","aside","testId","onTurn","className","type","role","disabled","onClick","undefined"],"mappings":"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","ignoreList":[2,10]}
|
|
@@ -1,3 +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:
|
|
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="border-border bg-card text-card-foreground",p={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:o};function q({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)(q,{testId:"fleet-number-ships",tone:o,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)(q,{testId:`fleet-number-${c}`,tone:a.counts[c]>0?p[c]:o,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 r={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"}]]};r.node;let s=(0,e.f)(r),t={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"}]]};t.node;let u=(0,e.f)(t),v={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"]};v.node;let w=(0,e.f)(v),x={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"}]]};x.node;let y={people:(0,e.f)(x),agents:w,plugins:u,throughTheGateway:s},z={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 A({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 ${z[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 B({group:a,tiles:c,tileColumns:e}){let f=y[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)(A,{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)(B,{group:a,tiles:d,tileColumns:c},a))})}],21243)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js.map
|
|
@@ -1 +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":"mEAAA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,iOOSE,QAAA,0FCJe,GAAA,mLAuBjB,CJAA,AMjBI,AFiBJ,AFjB2C,AGiB3C,AEjBa,ANK+B,AEY5C,CCAA,AFjB2C,ACiB3C,AEAA,AJZ4C,AML/B,ADAT,ANiBJ,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,kDMpBW,2GACE,CCAP,EDGF,cAAiB,wBAA8B,QAAA,CAAU,CAAA,CAC3D,CLgBF,AMjBM,SDEM,CAAA,AJI2C,CIJ3C,AJI2C,YIJ9B,IAM8B,CAAA,CAAA,CAAA,CAAA,CAavD,CAAA,ACjBM,CDiBN,ACjBM,CDiBN,ACjBM,CDiBN,ACjBM,CDiBN,ACjBM,CAAA,CAAA,EDiBa,CAAA,AChBR,CDgBQ,AChBR,ADgBQ,CAAA,AChBR,CAAA,ADgBQ,CAAA,AChBR,ADgBQ,CAAA,AChBR,CDgBQ,AChBR,CAAA,ADgBQ,CChBR,ADgBQ,CAAA,AChBR,CAAA,ADgBQ,CChBR,ADgBQ,CChBR,ADgBQ,CAAA,AChBR,CAAA,ADgBQ,+GCvBR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,oFAGP,SAGE,CDIsC,CAAA,CAAA,CAAA,wECFpC,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CACF,AAEJ,CAAA,CAK4C,CAAA,CAAA,AAAW,CAAX,AAAW,GAAA,CTzBvD,IAAM,EAAQ,CAAE,MAAO,EAAa,QSsCpC,CAAA,ATtC6C,ESsC3B,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CTtCqB,ASsCrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,ETtC8B,EAAY,KAAM,CAAY,EAGxF,SAAS,EAAU,OAAE,CAAK,CAAwB,EACvD,IAAM,EAAO,CAAK,CAAC,EAAM,CACzB,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,cAAY,OAAOK,UAAUL,mBAC5C,CFJA,IAAM,EAA0CI,CAC9C,MAAO,2EACP,QAAS,6CACT,QAAS,wCACT,KAAM,4CACR,EAEA,SAAS,EAAY,QAAE,CAAM,MAAE,CAAI,OAAE,CAAK,UAAE,CAAQ,CAA8E,EAChI,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,cAAa,EAAQ,UAAW,CAAC,6FAA6F,EAAE,EAAA,CAAM,WACzI,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,2CAAmC,IACnD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uJAA+I,MAGrK,YAOO,SAAS,AAAa,OAAE,CAAK,CAAE,kBAAgB,CAAmD,EACvG,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAW,CAAC,0BAA0B,EAAE,EAAmB,cAAgB,cAAA,CAAe,WAC5F,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CAAY,OAAO,qBAAqB,KAAK,6CAA6C,MAAO,EAAM,SAAS,WAC/G,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAI,CAAA,CAAC,cAAY,OAAO,UAAU,oBACnC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,aAEN,KACH,EAAA,CAAW,CAAC,GAAG,CAAE,AAAD,GACf,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CAAwB,OAAQ,CAAC,aAAa,EAAE,EAAA,CAAO,CAAE,KAAM,CAAY,CAAC,EAAM,CAAE,MAAO,EAAM,MAAM,CAAC,EAAM,WAC7G,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,MAAO,IAClB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,EAAA,CAAY,CAAC,EAAM,KAFV,MAO1B,qBC3CO,SAAS,AAAgB,SAAE,CAAO,CAAuB,EAC9D,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,KAAK,SAAS,cAAY,mBAAmB,UAAU,wFACxD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yBAAgBJ,kCAChCC,CAAAA,EAAAA,EAAAA,GAAAA,EAAC,OAAA,CAAK,UAAU,iCAAyB,MAG/C,qGIDwE,CDAJ,ACAI,CAAA,ADAJ,CCAI,ADAJ,CCAI,MAAU,4CACzB,CAAA,AEAH,ACAA,AJAA,EAAA,QCAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,sBAClD,CIAH,AFAC,ACAA,AHAE,ADAb,CKAU,AJAG,AEAF,ACAA,AJAX,CCAa,ADAb,AGAW,GAAA,4FFCkC,CAAA,AKApD,CLAoD,AKApD,CLAoD,AKApD,CLAoD,AKApD,qCLCwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,KAOU,IAAA,KAajD,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CCpBhC,CAAA,gLAAyE,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,cAEvE,CKAL,ALAK,CAAA,AKAL,CLAK,MAAU,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,SAOY,CIJ3C,CAAA,CAAA,CAAA,CAAA,KJiBC,CAAA,CAAA,CAAA,CAAA,CAAiB,AAAjB,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAA2B,CAAA,8JGxBsB,yBAA6B,+DLLnF,CMAA,ACAA,APAA,AIAA,ADAA,ADAA,ADAA,AIAA,CHAA,ADAA,AGAA,ADAA,AEAA,ACAA,ACAA,APAA,WACA,CGAA,AGAA,AFAA,AJAA,AOAA,AFAA,AHAA,ADAA,CKAA,ANAA,ACAA,AGAA,ADAA,AIAA,ALAA,AGAA,kBLEU,CKAA,AEAA,AJAD,AHAC,AIAD,AHAC,ACAA,CAAA,AKAA,AFAA,AJAA,AGAD,AJAC,AGAD,0CHA8C,CCAD,ADAC,CCAD,ADAC,CCAD,ADAC,CAAK,CAAA,ACAD,CDAC,ACAD,CAAA,ADAC,OAAU,0CAC7B,CGAD,ACAC,AJAA,CIAA,ADAD,AHAC,EAAK,CCAF,AEAE,ACAA,AJAA,CGAA,ACAA,AHAF,ADAE,oBACpC,2CAA6C,mBACrC,GAAI,CAAA,ACAZ,AKAP,KNA2B,CMA3B,ALAO,ADAoB,CAAA,AMA3B,ALAO,CDAoB,ACApB,AKAP,CAAA,ALAO,ADAyB,CAAA,ACAzB,AKAP,CLAO,AKAP,ANAgC,CMAhC,ALAO,ADAyB,CMAhC,ALAO,ADAyB,AAAK,CCA9B,AKAP,CAAA,ALAO,CKAP,ALAO,CKAP,ALAO,CKAP,ALAO,CAAA,AKAP,CNAqC,ACA9B,AKAP,KNOiC,COLjC,APKiC,AKAA,AJJ5C,ACDI,AIAE,AFKsC,ADAA,CILjC,AHKiC,ADAA,AGLtC,ANKsC,AKAA,AHLxC,AFKmD,CGAX,ADLxC,AKAO,AHKiC,ACAA,ALAA,AMLtC,GNKiD,KDZjDC,EAAc,CAAE,QAAQC,ECyBhB,EAAA,CAAA,EAAiB,CIAX,ADAA,AGhBW,ADgBR,ALAQ,CAAA,AIAX,ADAA,AEAG,AChBQ,CHgBX,AEAG,ALAQ,AMhBA,AFgBX,ALzBiB,CCyBN,AGAX,AEAG,AChBQ,AFgBX,MLzByB,EAAgB,QAAS,EAAM,kBAAmB,CAAQ,EAGjG,EAAwC,CAC5C,MAAO,2EACP,QAAS,qEACT,QAAS,sDACT,KAAM,6CACR,EAEA,SAAS,EAAK,MAAE,CAAI,CAAuB,EACzC,GAAM,MAAE,CAAI,OAAE,CAAK,MAAE,CAAI,CAAE,CAAG,EAC9B,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,cAAY,aAAa,MAAgB,OAAT,EAAgB,EAAO,CAAA,EAAG,EAAK,EAAE,EAAE,EAAA,CAAM,CAAE,UAAW,CAAC,yEAAyE,EAAE,CAAU,CAAC,EAAM,CAAA,CAAE,WACvL,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oEAA4D,IAC5E,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,gDACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,MAAO,IACjB,EAAA,CAAY,CAAC,EAAM,MAI5B,CAEA,SAAS,EAAM,OAAE,CAAK,OAAE,CAAK,aAAE,CAAW,CAA2E,EACnH,IAAM,EAAO,CAAW,CAAC,EAAM,CAC/B,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,eAAe,aAAY,EAAA,CAAY,CAAC,EAAM,WAC/D,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,iEACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,cAAY,OAAO,UAAU,sBACnC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,EAAA,CAAY,CAAC,EAAM,GAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6CAAqC,EAAM,MAAM,MAEnE,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAW,CAAC,aAAa,EAAE,EAAA,CAAa,UACzC,EAAM,GAAG,CAAC,AAAC,GACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAuB,KAAM,GAAnB,EAAK,MAAM,OAKhC,YAMO,SAAS,AAAU,QAAE,CAAM,aAAE,CAAW,WAAE,CAAS,CAA4E,EACpI,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,cAAY,aAAa,UAAW,CAAA,EAAG,GAAa,GAAG,aAAa,CAAC,CAAC,IAAI,YAC5E,EAAO,GAAG,CAAC,CAAC,OAAE,CAAK,OAAE,CAAK,CAAE,GAC3B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAkB,MAAO,EAAO,MAAO,EAAO,YAAa,GAAhD,KAIpB","ignoreList":[4,5,6,7,8,9,10,11]}
|
|
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/hourglass.ts","../../../../../node_modules/lucide-react/src/icons/network.ts","../../../../../node_modules/lucide-react/src/icons/circle-pause.ts","../../../../../node_modules/lucide-react/src/icons/plug.ts","../../../../../node_modules/lucide-react/src/icons/square-terminal.ts","../../../../../node_modules/lucide-react/src/icons/circle-alert.ts","../../../../../node_modules/lucide-react/src/icons/circle-play.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\nconst PLAIN = 'border-border bg-card text-card-foreground';\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: PLAIN,\n};\n\n/** A count takes its tone only above 0: a zero is drawn plain, so it does not draw the eye. */\nfunction toneOf(state: ShipState, count: number): string {\n return count > 0 ? NUMBER_TONES[state] : PLAIN;\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={PLAIN} 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={toneOf(state, fleet.counts[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: '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","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: '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: '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: '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-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-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"],"names":["key","x2","name","size","y2"],"mappings":"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FAb,CMAW,AHAA,ADAE,AGAH,ALAV,CMAW,AJAE,AFAb,GAAA,0BEAoD,kEACP,CKApD,ALAoD,CKApD,ALAoD,CKApD,ALAoD,CKApD,ALAoD,qCAC5B,CAAA,CAAA,CAAA,CAAA,IAAA,CAAU,CAAA,KAOU,IAAA,KAajD,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CEpBhC,CAAA,gLAAyE,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,cAEvE,CHAL,AGAK,CAAA,AHAL,CGAK,MAAU,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,SAOY,CAavD,AGjBY,CNAR,AMCJ,AHgBA,AGjBY,CNAR,AGiBJ,AGjBY,CNAR,AGiBJ,AGjBY,CAAA,AHiBZ,AHjBI,AGiBE,CHjBF,AGiBJ,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,8HCxBlB,yDAAqE,6FLF9E,CEAA,ACAR,ACAQ,ACAA,ACAR,ANAQ,AAAE,ACAF,CCAE,AIAA,AHAA,CHAG,CAAA,AMAD,AHAA,ADAC,AEAA,AHAA,AIAA,CCAD,ALAC,AIAA,AHAA,AFAA,AGAD,ACAC,0CJA6C,CAAA,AEAD,CFAC,AEAD,CAAA,AFAC,CAAK,CEAD,AFAC,CAAA,AEAD,CAAA,AFAC,OAAU,0CAC7B,CGAA,AGAD,ANAC,CMAD,AHAC,AHAA,EAAA,sBAC/B,6BAA8B,IAAA,UAAe,WAChD,QAAW,GAAI,CAAA,AOAnB,ALAO,KFAoB,COA3B,ALAO,AFAoB,COA3B,ALAO,AFAoB,COA3B,ALAO,AFAoB,COA3B,ALAO,AFAyB,CAAA,AOAhC,ALAO,CKAP,ALAO,AFAyB,COAhC,ALAO,AFAyB,CAAK,COArC,ALAO,CKAP,ALAO,CAAA,AKAP,CLAO,AKAP,CAAA,ALAO,CAAA,AKAP,CAAA,APAqC,AEA9B,OFOqC,IAAA,KDZjDC,EAAc,CAAE,QAAQC,ECyBhB,EAAA,CAAA,EAAA,GDzBuB,OAAQ,EAAgB,QAAS,EAAM,kBAAmB,CAAQ,EAGjG,EAAwC,CAC5C,MAAO,2EACP,QAAS,qEACT,QAAS,sDACT,KAAM,6CACR,EAEA,SAAS,EAAK,MAAE,CAAI,CAAuB,EACzC,GAAM,CAAE,MAAI,OAAE,CAAK,CAAE,MAAI,CAAE,CAAG,EAC9B,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,cAAY,aAAa,MAAO,AAAS,SAAO,EAAO,CAAA,EAAG,EAAK,EAAE,EAAE,EAAA,CAAM,CAAE,UAAW,CAAC,yEAAyE,EAAE,CAAU,CAAC,EAAM,CAAA,CAAE,WACvL,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oEAA4D,IAC5E,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,gDACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,MAAO,IACjB,EAAA,CAAY,CAAC,EAAM,MAI5B,CAEA,SAAS,EAAM,CAAE,OAAK,CAAE,OAAK,CAAE,aAAW,CAA2E,EACnH,IAAM,EAAO,CAAW,CAAC,EAAM,CAC/B,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,eAAe,aAAY,EAAA,CAAY,CAAC,EAAM,WAC/D,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,iEACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,cAAY,OAAO,UAAU,sBACnC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,EAAA,CAAY,CAAC,EAAM,GAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6CAAqC,EAAM,MAAM,MAEnE,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAW,CAAC,aAAa,EAAE,EAAA,CAAa,UACzC,EAAM,GAAG,CAAC,AAAC,GACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAuB,KAAM,GAAnB,EAAK,MAAM,OAKhC,YAMO,SAAS,AAAU,CAAE,QAAM,CAAE,aAAW,WAAE,CAAS,CAA4E,EACpI,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,cAAY,aAAa,UAAW,CAAA,EAAG,GAAa,GAAG,aAAa,CAAC,CAAC,IAAI,YAC5E,EAAO,GAAG,CAAC,CAAC,OAAE,CAAK,OAAE,CAAK,CAAE,GAC3B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAkB,MAAO,EAAO,MAAO,EAAO,YAAa,GAAhD,KAIpB","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),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)}];
|
|
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,"609a5ac69aa505e32ba8526374707f2533926942f8",null),(0,d.registerServerReference)(at,"60a206312560da7e8d3118b69c571db7006f3401ec",null),(0,d.registerServerReference)(au,"4001ea780db1ead1cb2c7ef9e012482be9e1166c90",null),(0,d.registerServerReference)(av,"409fc33bee7fa9990c372a16941b80a35aef4a2974",null),(0,d.registerServerReference)(aw,"40c4bdf099ebf75c7f472730d1a2313320401d4ebd",null),(0,d.registerServerReference)(ax,"600027e660d1eb6aa8b21edba45ec532d962d5bb53",null),(0,d.registerServerReference)(ay,"4006354f8379bf619098ee9df9d054aa021ed8dc89",null),(0,d.registerServerReference)(az,"406cdc77dbf870c019aab6c37c746129540f7344b4",null),(0,d.registerServerReference)(aA,"400284782d121950f35e1ce856d3d8f0158fbb10f4",null),(0,d.registerServerReference)(aB,"4000cf62bc21b02b0dec545692328f576b09e289a7",null),(0,d.registerServerReference)(aC,"40539b9dd02cbeb747d537f17ad3afbeb5fa086c7e",null),(0,d.registerServerReference)(aD,"6069429f9cb1a1d9efa5d9f753e10f1b9cef5dd9ce",null),(0,d.registerServerReference)(aE,"6028739f485a26b4fc9b642cdfc74a0a41dad8d9e2",null),(0,d.registerServerReference)(aF,"40289328a2de0ea128b784901853f4de7221583bc7",null),(0,d.registerServerReference)(aG,"400f35eac74c153e6bb2ce4504da9237c9f8088cf0",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
|