@aeolus-fleet/console 0.33.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/packages/console/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/console/.next/app-path-routes-manifest.json +3 -0
- package/.next/standalone/packages/console/.next/build-manifest.json +3 -3
- package/.next/standalone/packages/console/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/console/.next/routes-manifest.json +22 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/labels/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/labels/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/labels/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/labels/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page/build-manifest.json +20 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page/next-font-manifest.json +11 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page/server-reference-manifest.json +181 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page.js +21 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page.js.nft.json +1 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/messages/[messageId]/page_client-reference-manifest.js +3 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/network/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/network/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/network/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/network/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/packages/console/.next/server/app/(console)/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/scopes/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/scopes/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/scopes/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/scopes/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page/build-manifest.json +20 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page/next-font-manifest.json +11 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page/server-reference-manifest.json +181 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page.js +21 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page.js.nft.json +1 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/sealing/page_client-reference-manifest.js +3 -0
- package/.next/standalone/packages/console/.next/server/app/(console)/settings/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/settings/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/settings/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page/server-reference-manifest.json +16 -16
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page.js +5 -4
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/packages/console/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/console/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/console/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/console/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/console/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/api/analytics/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/api/analytics/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/api/reads/[read]/route.js +6 -4
- package/.next/standalone/packages/console/.next/server/app/api/reads/[read]/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/api/reports/[procedure]/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/console/.next/server/app/api/reports/[procedure]/route/build-manifest.json +12 -0
- package/.next/standalone/packages/console/.next/server/app/api/reports/[procedure]/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/console/.next/server/app/api/reports/[procedure]/route.js +9 -0
- package/.next/standalone/packages/console/.next/server/app/api/reports/[procedure]/route.js.nft.json +1 -0
- package/.next/standalone/packages/console/.next/server/app/api/reports/[procedure]/route_client-reference-manifest.js +3 -0
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/confirm/page.js +3 -3
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/confirm/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/confirm/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/out/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/out/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/refused/page.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/refused/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/refused/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/argo/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/done/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/done/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/enter/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/enter/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/failed/page.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/failed/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/failed/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/no-rights/page.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/no-rights/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/no-rights/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/nothing-to-manage/page.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/nothing-to-manage/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/nothing-to-manage/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/out/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/out/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/page.js +3 -3
- package/.next/standalone/packages/console/.next/server/app/sign-in/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/renew/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/renew/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/start/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/start/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/unreachable/page.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/sign-in/unreachable/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/unreachable/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/version/route.js +2 -2
- package/.next/standalone/packages/console/.next/server/app/version/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/0ysl_console__next-internal_server_app_api_reports_[procedure]_route_actions_05t2e7n.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/{[root-of-the-server]__0-62e1t._.js → [root-of-the-server]__00a6img._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__00cwjlc._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__05oe0nd._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__0d_eifo._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__0iil-mz._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__0sloo9r._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1f7_zn_._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1izl__9._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1j4sirx._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1omlvpl._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1xenjbd._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/_040yqm9._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/_1uqphll._.js +3 -1
- package/.next/standalone/packages/console/.next/server/chunks/packages_common_dist_0ylb6d5._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/packages_common_dist_1uxixk0._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/{_02-7tdl._.js → packages_console_lib_pagasae_ts_1lymniu._.js} +6 -6
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{0ysl_console_features_squadrons_ui_organisms_form-squadron-dialog_tsx_1th4quy._.js → 0ysl_console_features_squadrons_ui_organisms_form-squadron-dialog_tsx_21bx36_._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{[root-of-the-server]__1f3129h._.js → [root-of-the-server]__0-69gpm._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0-fs8eq._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__001826u._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__00pq4xq._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__06r6uyg._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0_5-gic._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0ezyuq9._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0fhuse2._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0n5l6a2._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0pq5c10._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0rr_3hk._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0v6rvvn._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__17yys10._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__18-ugi1._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1989bpk._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{[root-of-the-server]__09znqpv._.js → [root-of-the-server]__19k36ht._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{[root-of-the-server]__1zbr21v._.js → [root-of-the-server]__1d7yivv._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1f2p4sl._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1i__mr9._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1tx_00g._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0eh_-17._.js → _0-h91oz._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_028x02l._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0_cizz3._.js → _02g6i1z._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_03-t1kl._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_03zya74._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0fkqg44._.js → _04_mq1p._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_04q3386._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0e28ysf._.js → _06ohyn8._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1g327a5._.js → _06qoh8j._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_06y_rl1._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_093ww39._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0_9au8n._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0aaptvm._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0ax_4fn._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0dzrmp4._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_142u8s0._.js → _0eyj3k9._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0femtjm._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0g5bn5i._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0gb01eo._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0h05ihf._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0h81m7p._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0j2nlg2._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0kcn91k._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0knwrje._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0loy7p7._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0lupanq._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0m-mbvy._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0u_xmpx._.js → _0mwga7s._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0of498-._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0p8rjhd._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0sugvmr._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_20u8c82._.js → _0uyemno._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{node_modules_16ifz1a._.js → _0v4-iyb._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1cet9p0._.js → _0w6po9a._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0wv9wb4._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0z15gvd._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0dmnshs._.js → _0zclqlc._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1-bllc0._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1-l1b5d._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_10028fp._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1187kt4._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_11s_rd3._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_11sz8jt._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_12_rbf_._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_12dgb07._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_13ryx3s._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_17bb6sl._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_183-gaz._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0q5-u3a._.js → _1a-_-7n._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1b7cg69._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_04q8k0c._.js → _1b_j5u1._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1c17fan._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1dk1deo._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0mjq1cb._.js → _1f0el24._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1gpfbt1._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1h1ovnm._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_055rsih._.js → _1hhy2bk._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1ioroqt._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1j6s2t-._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1jvj-fh._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1no_h7r._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1o_tct4._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1prq2d6._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0nn5y-v._.js → _1qv5zsp._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1s8c70o._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1t20h08._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1tiva4e._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1txxs-k._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1u0h4gj._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1u8q--q._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1vmzi92._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1vourv7._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0ictsnq._.js → _1wsg8mh._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1xt1-iw._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1ym8zdv._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_20ud1ca._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0qa_oo2._.js → node_modules_1ahhebg._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/node_modules_zod_v4_classic_external_15fmmz3.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_0k1f2rl._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_03-f8b4._.js → packages_1-u7hx2._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_15ka30f._.js → packages_16kw6t9._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_1v4ntbp._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_common_dist_schemas_0e83q-i._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_common_dist_schemas_0lo2f_f._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_common_dist_schemas_fleet_1a-bnwh.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_00qg_s6._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_02v53na._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_02wkudy._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_04rox65._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_05zitd2._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_065nea1._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0h_376h._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0hs6kp-._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0ko_ogs._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0n5j7eu._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0sr2-oa._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0ysbad7._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_108sez2._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_12a-76h._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_0qf-zqf._.js → packages_console_1em8nyt._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1fw0efr._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1jy5-0g._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1n8w8x0._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1os5z9a._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1oz8iu7._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1rdu3gt._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_0_9qnut._.js → packages_console_1s_0n2s._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_1rhomt6._.js → packages_console_1vdvjs0._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1yfimad._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_0nxeyp_._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_fleet-health_page_tsx_0vcosw1._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_inbox_inbox-page_tsx_1lm_c0k._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_network_network-page_tsx_0qc3h-9._.js +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_overview-page_tsx_15siba6._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_sealing_sealing-page_tsx_0rhc98z._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_ships_[shipId]_ship-page_tsx_0oahz0r._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_squadrons_[squadronId]_page_tsx_0f8nmsh._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_providers_tsx_06ai92n._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_components_11gbpyo._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_components_1eyc9r5._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_components_1mu-90h._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_components_molecules_payload-not-reachable_tsx_1kgueq6._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_components_organisms_crew-line-dialog_tsx_1h-qcrg._.js → packages_console_components_organisms_crew-line-dialog_tsx_03g79i2._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_10vhz5u._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_ship_ui_organisms_message-sheet_tsx_08bg9ly._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_trierarchs_ui_organisms_1y5ngsc._.js +3 -0
- package/.next/standalone/packages/console/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/packages/console/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/next-font-manifest.json +8 -0
- package/.next/standalone/packages/console/.next/server/pages/500.html +1 -1
- package/.next/standalone/packages/console/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/console/.next/server/server-reference-manifest.json +177 -17
- package/.next/standalone/packages/console/.next/static/chunks/00or1rnno9kvz.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/00ssnnsuu6nfq.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/03hmf_b_ld3qs.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{042xy9nj5-p6m.js → 0542u2vnfi3tu.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/06_s2toj_8vrc.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/077ct64w6ygh8.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0__1t562w-7bd.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0bnnjycjxxf3p.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0bro559jr38od.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0e1ggtqqoymi1.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{153phemqeeak4.js → 0fiweiztxhfx4.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/0g3wovh6dy_4j.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0jgsxj2m59nna.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{06mq07jbul8uh.js → 0kxruqvdjvu2r.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/0q-tv8cl4qj7m.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0u4n04zxjft4l.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0u9l_17sbicln.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0vhkganv303ja.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0yyyqt5ih7yiv.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/0zn5gpgm2grzo.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/11ewkg-bull_b.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/15zm3w3oloxrm.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/16d_a5mrx4kr_.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{27qi3k10y-0hf.js → 17yltd0_u64h7.js} +2 -2
- package/.next/standalone/packages/console/.next/static/chunks/18mk91gj9vatw.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1d7vneo_33mh8.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1deg_zv7km6ye.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1ei-bzq6sq7qb.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1fmhopit2c_22.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1fvvvxmvm5kem.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1h4dlldmc34os.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1mlqceia_ckhz.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{0sxq4cfwpdd6i.js → 1pwpgo2o1lc6d.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/1qgzmqkam3mcu.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1rwryuny2bqtd.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1vpmnwq7h1-n-.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1wovyzm-ky4o4.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1x_zeay4p3zgh.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1yi4w4v56kuu8.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1zmmq_r7ebxfc.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2--iu4pqdnts_.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{11e-iym4h5t19.js → 2-h98p2e7oa0m.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/21y3y04f7v0v7.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/29u299jfgty5q.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2cjo-sd4uvu9f.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2d94szwvh0ewo.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2doc8bh2g45nb.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2hq2efhqjivj_.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2hzog76du9u6v.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2ivxs2o9pb-kw.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2kyswtcr0ggp0.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{3cum2ng-ccy2k.js → 2nv0yg_t-0e_v.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/{39v7yufdqy1ko.js → 2p7vafqkawo-3.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/2r9_0pwtrooqi.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2rq3-3nwhsejj.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2siilxaudcgji.css +3 -0
- package/.next/standalone/packages/console/.next/static/chunks/2sv4rppn3u-m3.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2tiqv1af2pm1s.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2v42jicty6jdj.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2w1iethb5d9g4.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2z4_rzzj4hn7o.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3-kj7_42zjq75.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3-mrs3k436e6k.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3002v18i_zga3.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/31cpcjvjaz3g5.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/32rpwgopmscan.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{23dflsn8x9e4t.js → 34f3f2p74ws0s.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/{2cv5dpjoblo-6.js → 3brr_gw2bjeon.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/3d7-5ogsf3dpc.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3e_fhm8rx4-ty.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3i6ko-lythqj8.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3ly-uap2hqb02.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{1h7b86lgq9lv7.js → 3mw4nwm-4wmyn.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/3q3f-zh4nri1y.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3q3utwrduexxk.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3u1p2h86n493d.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3wwuiilyz-7be.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3xd75gi9c1sik.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{1k-ba5pqi2r-w.js → 3y60h9gvxwvf7.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/3zzs644nig73r.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/40p35de66_1j2.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/40zjvpn9i6pqd.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/41pfgi-3fufiq.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/4274hs-la_giy.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{1jjwuh7isdk3m.js → 449ymry_z342v.js} +1 -1
- package/.next/standalone/packages/console/package.json +3 -3
- package/README.md +4 -4
- package/package.json +3 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__0-b_d8j._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__0komqne._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__0nr0jcj._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__0w4s32w._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1-09egt._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__11n_f2o._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__179ym17._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1c0qgbj._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/_0l8ph40._.js +0 -60
- package/.next/standalone/packages/console/.next/server/chunks/_16i3nlz._.js +0 -60
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__04pqzqs._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0bvx015._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0hnb5xn._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0nyiifk._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0pvwbtv._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0up8t8p._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0wid7l7._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1047sj3._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__15t_tm7._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__197gd9r._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__19b3u9l._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1c0gcvn._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1fk81--._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1ohwquq._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__1wxlfud._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_023dmpu._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_02sf-6u._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_030hi2b._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_05in8ls._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0607-_6._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_06lx89w._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_06ly0m8._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0c2cfln._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0cd_chc._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0chpnwx._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0mq-55x._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0o53uwe._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0oe2gqy._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0qe8f-w._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0w5l_7h._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0wc8h9a._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0wrm2to._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0xfzttf._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0ydu2av._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1-4ded7._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_11g5bnb._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_13zizty._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_13zwdui._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1b_x7o3._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1c8_t28._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1eruh8n._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1k9mt5a._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1kf28sa._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1m5wn-m._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1n8dahj._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1r8_v_g._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1su9voz._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1tbw5cc._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1y1x0jn._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_10js6wa._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_common_dist_schemas_account-token_1wsycr8.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_06tqha0._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0l5mn5a._.js +0 -3
- package/.next/standalone/packages/console/.next/static/chunks/0-yrn88mejsr-.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/01d9xxtkfuj2v.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/027maws9rvn-z.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/02udxgdv5tuim.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0c88w1-7epscc.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0dtiejrfyjxji.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0hhsy6ra8bzk3.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0i0-pz23n01tq.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0ij3s_9_0m8zf.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0rnxbow_f9hdj.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/119gnlkv5o5qi.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/14rt-9-qmmsd6.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/153epobb5qlio.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/17mtrygfuyta6.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1alqr4fmqmu1o.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1e3q_35y2oo1k.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1fve7-1xawl_f.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1k3vukm179xyz.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1p9gwv5c8kw8w.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1t4hkt4i-g6cx.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1tlvti3bwzfeq.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/21_wx8xffofh0.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/29xv6oo61myhv.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2e2rgjb800j69.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2ena4r9l20ldm.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2gcef1g7rprfw.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2ikzq12uoatg5.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2kwli36lpyk6h.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2l4c43lqjex_d.css +0 -3
- package/.next/standalone/packages/console/.next/static/chunks/2njyd_fhl_fmf.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2rkqd-n295a3_.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2tl4z611_8awi.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2twpd7o-xmyvk.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2wdgva0npwf-f.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/30uk516nxj7-y.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/33pld-8scs565.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3416tqe_hi9gt.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/359n0u5b59fd1.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/39e1d90jlbiw-.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3_uxo69_fvryi.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3api14s-8v5qv.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3bwv42p8mj_u3.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3gg4swg14czsn.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3gp-2eifnshyl.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3hjoi2bzqj60i.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3ikr_bgx42nz8.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3ozw534sw8er_.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3qit4ovphls7e.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3tfmgvn3khg2w.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3vp8zttvdsc56.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3w-b8b8a-w8xa.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3zdjw8fopo0gd.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/43fc04wo9rnfn.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/44z7dfqca15nv.js +0 -1
- /package/.next/standalone/packages/console/.next/static/{bALUvjOMkmhxleGSGcze5 → -UkcMmco5sVUDyDk12-HF}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/console/.next/static/{bALUvjOMkmhxleGSGcze5 → -UkcMmco5sVUDyDk12-HF}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/packages/console/.next/static/{bALUvjOMkmhxleGSGcze5 → -UkcMmco5sVUDyDk12-HF}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[271915,a=>{"use strict";var b=a.i(187924),c=a.i(265913),d=a.i(50944),e=a.i(572131),f=a.i(88191),g=a.i(24173),h=a.i(240392),i=a.i(350808),j=a.i(139353),k=a.i(176166),l=a.i(945469);let m={argo:"You turn it on or off.",rules:"Applying rules turns it off; applying none turns it on again."};function n({rows:a,error:c,onRetry:d,isTurning:e,turnError:f,onViewerReadChange:g}){let o;return o=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read the built-in rules",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"list",rows:3,label:"Loading the built-in rules"}):(0,b.jsx)("ul",{className:"flex flex-col divide-y divide-border",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":"network-built-in-rule",className:"flex items-start justify-between gap-3 py-2 first:pt-0 last:pb-0",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-body font-medium","data-testid":"network-built-in-rule-name",children:a.name}),(0,b.jsxs)("span",{className:"text-meta text-muted-foreground",children:[a.meaning," ","never"===a.turnedBy?null:m[a.turnedBy]]})]}),"argo"===a.turnedBy?(0,b.jsx)(l.Switch,{checked:a.isOn,disabled:e,"aria-label":`${a.name}: ${a.isOn?"on":"off"}`,"data-testid":"network-built-in-viewer-read",onCheckedChange:a=>{g(a)}}):(0,b.jsx)(k.Badge,{variant:"outline","data-testid":"network-built-in-rule-state",children:"never"===a.turnedBy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(j.Lock,{"aria-hidden":!0}),"Never off"]}):a.isOn?"On":"Off"})]},a.key))}),(0,b.jsxs)("section",{"aria-labelledby":"network-built-in","data-testid":"network-built-in",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-built-in",className:"text-body font-semibold",children:"Built-in rules"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"The fleet’s own rules, beside yours and the declared ones. They hold before any rule below."}),o,void 0===f?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t turn the viewer reading",description:f})]})}var o=a.i(818783),p=a.i(793817),q=a.i(156757),r=a.i(902811),s=a.i(592225),t=a.i(817914),u=a.i(580511);let v=q.z.union([(0,r.idSchema)("labelValue"),q.z.object({labelId:(0,r.idSchema)("label"),value:q.z.enum(["*","#"])}),q.z.object({owner:q.z.union([(0,r.idSchema)("ship"),q.z.enum(["*","#"])])})]);function w(a){return"string"!=typeof a&&"owner"in a}let x=q.z.array(v),y=["send","read","manage"],z=q.z.object({verb:q.z.enum(y),from:x,to:x}),A=q.z.array(z).nullable();q.z.object({rules:A}),q.z.object({savedAgainstVersion:q.z.int().min(0)}),q.z.object({version:q.z.int().min(0)}),q.z.object({applied:q.z.object({rules:A,version:q.z.int().min(0)}),draft:q.z.object({rules:A,savedAt:q.z.iso.datetime(),savedAgainstVersion:q.z.int().min(0)}).nullable()}),q.z.object({});let B=["argo","owner","answer","pluginRead","meeting","viewerRead","installation","open"];q.z.object({rule:q.z.enum(B),isOn:q.z.boolean()});let C=q.z.object({rule:q.z.enum(B),isOn:q.z.boolean()});q.z.array(C),q.z.object({version:q.z.int().min(0)}),q.z.object({rules:q.z.array(z)}),q.z.object({rules:q.z.int().min(0)});let D=q.z.discriminatedUnion("kind",[q.z.object({kind:q.z.literal("ship"),shipId:(0,r.idSchema)("ship")}),q.z.object({kind:q.z.literal("installation")})]);q.z.array(q.z.object({declarer:D,rules:q.z.array(z)}));let E=q.z.object({id:(0,r.idSchema)("ship"),name:q.z.string(),labels:q.z.array(t.carriedLabelSchema),owner:q.z.object({id:(0,r.idSchema)("ship"),name:q.z.string()}).nullable()}),F=q.z.discriminatedUnion("kind",[E.extend({kind:q.z.literal("ship")}),q.z.object({kind:q.z.literal("account"),accountId:s.accountIdSchema,labels:q.z.array(t.carriedLabelSchema),personShip:q.z.object({id:(0,r.idSchema)("ship"),name:q.z.string()}).nullable()}),q.z.object({kind:q.z.literal("installation")})]),G=q.z.object({id:(0,r.idSchema)("reachRefusal"),at:q.z.iso.datetime(),sender:F,askedBy:E.nullable(),recipient:q.z.discriminatedUnion("kind",[q.z.object({kind:q.z.literal("ship"),ship:E}),q.z.object({kind:q.z.literal("type"),type:q.z.string(),ships:q.z.array(E)})]),verb:q.z.enum(y),settingsVersion:q.z.int().min(1)});(0,u.pageInputOf)((0,r.idSchema)("reachRefusal")),(0,u.pageOutputOf)(G,(0,r.idSchema)("reachRefusal")),q.z.object({fromShipId:(0,r.idSchema)("ship"),toShipId:(0,r.idSchema)("ship").optional(),against:q.z.enum(["applied","draft"]).optional()});let H=q.z.union([q.z.object({builtIn:q.z.enum(B)}),q.z.object({rule:q.z.int().min(0)}),q.z.object({declared:D,index:q.z.int().min(0)})]),I=q.z.array(q.z.object({shipId:(0,r.idSchema)("ship"),rule:H}));q.z.object({send:I,read:I,manage:I});let J=q.z.array(q.z.object({fromShipId:(0,r.idSchema)("ship"),toShipId:(0,r.idSchema)("ship"),rule:H}));q.z.object({send:q.z.object({gained:J,lost:J}),read:q.z.object({gained:J,lost:J}),manage:q.z.object({gained:J,lost:J})});var K=a.i(565230);let L={send:"May send to",read:"May read",manage:"May manage"};function M(a,b){return null===a?{kind:"all-to-all"}:{kind:"rules",rules:a.map(a=>({key:b(),verb:a.verb,from:[...a.from],to:[...a.to]}))}}function N(a){return"all-to-all"===a.kind?null:a.rules.map(a=>({verb:a.verb,from:[...a.from],to:[...a.to]}))}function O(a,b){return b?"rules"===a.kind?a:{kind:"rules",rules:[]}:{kind:"all-to-all"}}function P(a,b){return"all-to-all"===a.kind?a:{kind:"rules",rules:a.rules.map(a=>a.key===b.key?b.change(a):a)}}function Q(a,b){return R(a)===R(b)}function R(a){return"string"==typeof a?a:w(a)?`owner=${a.owner}`:`${a.labelId}=${a.value}`}let S={"*":"Any value","#":"The same value as the other side"},T={"*":"Any owner","#":"The same owner as the other side"};function U(a,b){let c=[],d=[],e=[];for(let f of a){if(w(f)){let a=function(a,b){if("*"===a.owner||"#"===a.owner)return{term:a,text:`owner=${a.owner}`};let c=b.ships.find(b=>b.id===a.owner);return void 0===c?void 0:{term:a,text:`owner=${c.name}`}}(f,b);void 0===a?e.push(f):d.push(a);continue}let a=function(a,b){if("string"==typeof a){let[c]=(0,K.pickedChips)([a],b);return void 0===c?void 0:{labelId:c.labelId,key:c.key,value:c.value,mark:c.mark,ownerName:c.ownerName,term:a}}let c=b.labels.find(b=>b.id===a.labelId);if(void 0===c)return;let d=b.ownerOf.get(c.id);return{labelId:c.id,key:c.key,value:a.value,mark:d?.mark??"ship",ownerName:d?.name??(0,K.labelOwnerName)(c.owner),term:a}}(f,b);void 0===a?e.push(f):c.push(a)}return{chips:c,owners:d,unknown:e}}function V(a,b){let c=a["from"===b?"to":"from"];return a[b].filter(a=>"string"!=typeof a&&!w(a)&&"#"===a.value&&!c.some(b=>Q(b,a)))}function W(a,b){let c=a=>a.some(a=>w(a)&&"#"===a.owner);return c(a[b])&&!c(a["from"===b?"to":"from"])}var X=a.i(136501);let Y=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}];function Z({declared:a,error:c,onRetry:d,context:e}){let f;return f=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read the declared rules",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"list",rows:2,label:"Loading the declared rules"}):0===a.length?(0,b.jsx)(g.EmptyState,{variant:"section",title:"Nothing declares rules."}):(0,b.jsx)("ul",{className:"flex flex-col gap-3",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":"network-declared-plugin",className:"flex flex-col gap-2",children:[(0,b.jsxs)("h3",{className:"text-meta font-medium","data-testid":"network-declared-by",children:["Declared by ",a.declaredBy]}),(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:a.rules.map(a=>(0,b.jsx)("li",{"data-testid":"network-declared-rule",className:"flex flex-col gap-2 rounded-md border border-border p-3 sm:flex-row sm:items-start sm:gap-3",children:Y.map(({side:c,label:d})=>(0,b.jsxs)("div",{className:"flex min-w-0 grow basis-0 items-start gap-3",children:["to"===c?(0,b.jsx)("span",{className:"mt-6 shrink-0 text-meta text-muted-foreground","data-testid":"network-declared-rule-verb",children:L[a.verb]}):null,"to"===c?(0,b.jsx)(o.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)($,{label:d,terms:a[c],context:e,testId:`network-declared-rule-${c}`})]},c))},JSON.stringify(a)))})]},a.declarerId))}),(0,b.jsxs)("section",{"aria-labelledby":"network-declared","data-testid":"network-declared",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-declared",className:"text-body font-semibold",children:"Declared by plugins and the installation"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Rules plugins and the installation need on the labels they own. The networking plugin adds them to your rules; while every ship may message every ship, they change nothing. Only their declarer changes them, and switching a plugin off withdraws its rules."}),f]})}function $({label:a,terms:c,context:d,testId:f}){let{chips:g,unknown:h}=U(c,d);return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":f,children:[(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:a}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[g.length+h.length===0?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,g.map((a,c)=>(0,b.jsxs)(e.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(X.LabelChip,{chip:a,testId:`${f}-value`,..."string"==typeof a.term?{}:{meaning:S[a.term.value]}})]},R(a.term))),h.map(a=>(0,b.jsxs)("span",{"data-testid":`${f}-unknown`,title:`${R(a)}: no longer in this fleet`,className:"inline-flex h-5.5 items-center gap-1 rounded-sm border border-tone-attention-border bg-tone-attention-bg px-1.5 text-id text-tone-attention-fg [&_svg]:size-3",children:[(0,b.jsx)(p.CircleAlert,{"aria-hidden":!0}),"A removed label"]},R(a)))]})]})}var _=a.i(70840),aa=a.i(752562),ab=a.i(164831);let ac={name:"crosshair",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]};ac.node;let ad=(0,ab.default)(ac);var ae=a.i(233540),af=a.i(831856),ag=a.i(483556);function ah(a){return a.send.map(a=>a.shipId)}let ai=-Math.PI/2,aj=2*Math.PI;function ak(a){return a.filter(a=>"retired"!==a.status&&"viewer"!==a.kind).map(a=>({id:a.id,name:a.name,isOperator:"operator"===a.kind})).sort((a,b)=>Number(b.isOperator)-Number(a.isOperator)||a.name.localeCompare(b.name))}function al(a){return Math.round(100*a)/100}var am=a.i(78398),an=a.i(994777),ao=a.i(918691);let ap=["applied","draft"],aq={picked:"picked",reached:"may be messaged",unreached:"out of reach"};function ar({ships:a,search:c,sailingShipCount:d,pickedShipId:e,reachableShipIds:f,reachError:g,onPick:i,onRetry:j,against:k="applied",onAgainstChange:l}){var m;let n=(m=void 0===e?void 0:{pickedShipId:e,reachableShipIds:void 0===g?f:void 0},a.map((b,c)=>{var d,e;let f=ai+aj*c/a.length,g=1===a.length;return{ship:b,x:g?50:al(50+38*Math.cos(f)),y:g?50:al(50+38*Math.sin(f)),mark:(d=b.id,void 0===(e=m)?"none":d===e.pickedShipId?"picked":void 0===e.reachableShipIds?"none":e.reachableShipIds.includes(d)?"reached":"unreached")}})),o=n.find(a=>"picked"===a.mark),p=n.filter(a=>"reached"===a.mark);return(0,b.jsxs)("section",{"aria-labelledby":"network-reach","data-testid":"network-reach",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-reach",className:"text-body font-semibold",children:"Reach"}),(0,b.jsxs)("p",{className:"text-meta text-muted-foreground",children:["draft"===k?"The fleet as the draft would leave it once applied: pick a ship to see which ships the draft lets it message.":"The fleet as it stands now: pick a ship to see which ships the rules let it message."," ","Argo reaches every ship, and every ship reaches argo."]}),void 0===l?null:(0,b.jsx)(an.Tabs,{value:k,onValueChange:a=>{let b=ap.find(b=>b===a);void 0!==b&&l(b)},children:(0,b.jsxs)(an.TabsList,{"aria-label":"Explain reach against",children:[(0,b.jsx)(an.TabsTrigger,{value:"applied","data-testid":"network-reach-applied",children:"Applied rules"}),(0,b.jsx)(an.TabsTrigger,{value:"draft","data-testid":"network-reach-draft",children:"Draft"})]})}),void 0===c?null:(0,b.jsx)(am.Combobox,{options:c.ships.map(a=>({value:a.id,label:a.name})),value:null,onValueChange:a=>{let b=c.ships.find(b=>b.id===a);void 0!==b&&i(b.id)},toQuery:ao.asHandle,onQueryChange:c.onQueryChange,groupLabel:"Ships",emptyText:a=>`No ship matches "${a}". Retired ships are not listed.`,leadingIcon:(0,b.jsx)(ae.Search,{}),placeholder:"Find a ship to pick","aria-label":"Find a ship to pick","data-testid":"network-reach-search"}),(0,b.jsxs)("div",{className:"relative flex flex-wrap gap-2 md:mx-auto md:block md:aspect-square md:w-full md:max-w-xl","data-testid":"network-reach-graph",children:[void 0===o?null:(0,b.jsx)("svg",{"aria-hidden":!0,viewBox:"0 0 100 100",preserveAspectRatio:"none",className:"pointer-events-none absolute inset-0 hidden size-full md:block",children:p.map(a=>(0,b.jsx)("line",{x1:o.x,y1:o.y,x2:a.x,y2:a.y,vectorEffect:"non-scaling-stroke",className:"stroke-muted-foreground",strokeWidth:1.5},a.ship.id))}),n.map(a=>(0,b.jsx)(as,{node:a,onPick:()=>{i("picked"===a.mark?void 0:a.ship.id)}},a.ship.id))]}),void 0===g?(0,b.jsx)("p",{className:"text-body",role:"status","data-testid":"network-reach-summary",children:function(a,b=a.length){let c=a.find(a=>"picked"===a.mark);if(void 0===c)return"Pick a ship to see which ships it may message.";let d=Math.max(b,a.length)-1,e=a.filter(a=>"reached"===a.mark).map(a=>a.ship.name);return a.every(a=>"picked"===a.mark||"none"===a.mark)?0===d?`${c.ship.name} is the only ship of the fleet.`:`Finding the ships ${c.ship.name} may message…`:e.length===d?`${c.ship.name} may message every other ship (${String(d)}).`:0===e.length?`${c.ship.name} may message no other ship.`:`${c.ship.name} may message ${String(e.length)} of ${String(d)} ships: ${e.join(", ")}.`}(n,d)}):(0,b.jsx)(h.InlineError,{title:"Couldn’t explain this ship’s reach",description:g,onRetry:j})]})}function as({node:a,onPick:c}){let{ship:d,mark:e}=a;return(0,b.jsx)(af.Button,{size:"sm",variant:"secondary","aria-pressed":"picked"===e,"aria-label":"none"===e?d.name:`${d.name}, ${aq[e]}`,icon:function(a){switch(a){case"picked":return(0,b.jsx)(ad,{"aria-hidden":!0});case"reached":return(0,b.jsx)(aa.Check,{"aria-hidden":!0});case"unreached":return(0,b.jsx)(_.Ban,{"aria-hidden":!0});case"none":return}}(e),"data-testid":"network-reach-ship","data-mark":e,style:{left:`${String(a.x)}%`,top:`${String(a.y)}%`},className:(0,ag.classNames)("md:absolute md:-translate-x-1/2 md:-translate-y-1/2","picked"===e&&"bg-accent ring-2 ring-ring","unreached"===e&&"opacity-45"),onClick:c,children:d.name})}var at=a.i(659613),au=a.i(771736);let av={apply:{title:"Apply the draft?",description:"Every send, read and manage is checked against the draft from now on, and the rules before it are gone.",action:"Apply draft"},discard:{title:"Discard the draft?",description:"The draft is gone; the applied rules stay as they are.",action:"Discard draft"}};function aw({draft:a,appliedVersion:c,isApplying:d,applyError:f,onApply:g,isDiscarding:i,discardError:j,onDiscard:k}){let[l,m]=(0,e.useState)(null),n=d||i;return(0,b.jsxs)("section",{"aria-labelledby":"network-rules-apply","data-testid":"network-rules-apply",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-rules-apply",className:"text-body font-semibold",children:"Apply"}),null===a?(0,b.jsx)("p",{className:"text-meta text-muted-foreground","data-testid":"network-rules-apply-state",children:"No draft: the applied rules are the ones above. Save a draft to apply it."}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-body","data-testid":"network-rules-apply-state",children:["A draft is saved. Every send, read and manage is checked against the applied rules, at version ",c,", until it is applied."]}),a.savedAgainstVersion===c?null:(0,b.jsxs)("p",{className:"text-meta text-muted-foreground","data-testid":"network-rules-apply-moved",children:["The settings moved from version ",a.savedAgainstVersion," since the draft was saved."]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(af.Button,{variant:"primary",isLoading:d,disabled:i,"data-testid":"network-rules-apply-open",onClick:()=>{m("apply")},children:"Apply draft"}),(0,b.jsx)(af.Button,{variant:"ghost",isLoading:i,disabled:d,"data-testid":"network-rules-discard-open",onClick:()=>{m("discard")},children:"Discard draft"})]})]}),void 0===f?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t apply the draft",description:f}),void 0===j?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t discard the draft",description:j}),(0,b.jsx)(at.AlertDialog,{open:null!==l,onOpenChange:a=>{a||n||m(null)},children:null===l?null:(0,b.jsxs)(at.AlertDialogContent,{"data-testid":`network-rules-${l}-dialog`,className:au.dialogSurface.phoneSheet,children:[(0,b.jsxs)(at.AlertDialogHeader,{children:[(0,b.jsx)(at.AlertDialogTitle,{children:av[l].title}),(0,b.jsx)(at.AlertDialogDescription,{children:av[l].description})]}),(0,b.jsxs)(at.AlertDialogFooter,{children:[(0,b.jsx)(at.AlertDialogClose,{render:(0,b.jsx)(af.Button,{disabled:n}),children:"Cancel"}),(0,b.jsx)(af.Button,{variant:"apply"===l?"primary":"destructive",isLoading:n,"data-testid":`network-rules-${l}-confirm`,onClick:()=>{m(null),"apply"===l?g():k()},children:av[l].action})]})]})})]})}let ax={argo:"argo",owner:"Owner",answer:"Answer",pluginRead:"Connected plugins read",meeting:"Meeting",viewerRead:"Viewer reads",installation:"Installation manages",open:"Open"};function ay(a){switch(a.rule){case"argo":return{key:a.rule,name:ax[a.rule],meaning:"argo sends to, reads and manages every ship, and every ship reaches argo.",isOn:a.isOn,turnedBy:"never"};case"owner":return{key:a.rule,name:ax[a.rule],meaning:"A ship’s owner sends to, reads and manages the ships it owns.",isOn:a.isOn,turnedBy:"never"};case"answer":return{key:a.rule,name:ax[a.rule],meaning:"A ship may always answer the sender of a message it received.",isOn:a.isOn,turnedBy:"never"};case"pluginRead":return{key:a.rule,name:ax[a.rule],meaning:"A plugin argo connected reads every ship, whatever the rules.",isOn:a.isOn,turnedBy:"never"};case"meeting":return{key:a.rule,name:ax[a.rule],meaning:"The participants of a meeting reach each other in it, whatever the rules: its owner reached each when it joined.",isOn:a.isOn,turnedBy:"never"};case"viewerRead":return{key:a.rule,name:ax[a.rule],meaning:"The viewer reads every ship.",isOn:a.isOn,turnedBy:"argo"};case"installation":return{key:a.rule,name:ax[a.rule],meaning:"The installation manages person ships and the ships they own, so a leaver is always released.",isOn:a.isOn,turnedBy:"never"};case"open":return{key:a.rule,name:ax[a.rule],meaning:"Every ship may send to, read and manage every ship.",isOn:a.isOn,turnedBy:"rules"}}}function az({changes:a,error:c,onRetry:d}){let e;return e=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read what the draft changes",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"detail",rows:3,label:"Loading what the draft changes"}):a.every(({gained:a,lost:b})=>0===a.length&&0===b.length)?(0,b.jsx)("p",{className:"text-meta text-muted-foreground","data-testid":"network-draft-changes-none",children:"The draft changes no reach."}):a.filter(({gained:a,lost:b})=>a.length+b.length>0).map(({verb:a,gained:c,lost:d})=>(0,b.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"network-draft-changes-verb",children:[(0,b.jsx)("h3",{className:"text-meta font-semibold",children:L[a]}),(0,b.jsx)(aA,{title:"Gains",rows:c,testId:"network-draft-gained"}),(0,b.jsx)(aA,{title:"Loses",rows:d,testId:"network-draft-lost"})]},a)),(0,b.jsxs)("section",{"aria-labelledby":"network-draft-changes","data-testid":"network-draft-changes",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-draft-changes",className:"text-body font-semibold",children:"What the draft changes"}),e]})}function aA({title:a,rows:c,testId:d}){return 0===c.length?null:(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsxs)("p",{className:"text-meta text-muted-foreground",children:[a," ",c.length," ",1===c.length?"pair":"pairs"]}),(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("li",{"data-testid":d,className:"flex flex-wrap items-center gap-x-2 text-body",children:[(0,b.jsx)("span",{children:a.from}),(0,b.jsx)(o.ArrowRight,{"aria-label":"to",className:"size-4 text-muted-foreground"}),(0,b.jsx)("span",{children:a.to}),(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:a.rule})]},a.key))})]})}var aB=a.i(403512),aC=a.i(951675),aD=a.i(248136),aE=a.i(387005),aF=a.i(474215),aG=a.i(819721),aH=a.i(238246),aI=a.i(860275);let aJ=(0,aG.default)(async()=>{},{loadableGenerated:{modules:[259068]},ssr:!1});function aK({label:a,picked:c,owners:d,ownerChoices:f,unknown:g,groups:h,max:i,isDisabled:j,problem:k,onAdd:l,onRemove:m,testId:n,popoverTestId:o}){let[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1),u=c.length+d.length+g.length,v=new Set(d.map(a=>R(a.term))),w=[...["*","#"].map(a=>({term:{owner:a},text:T[a]})),...f.map(a=>({term:{owner:a.shipId},text:a.name}))];return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":n,children:[(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:a}),(0,b.jsxs)("div",{className:"flex min-h-(--size-control-sm) flex-wrap items-center gap-1.5",children:[0===u?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,c.map((a,c)=>(0,b.jsxs)(e.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(X.LabelChip,{chip:a,testId:`${n}-value`,..."string"==typeof a.term?{}:{meaning:S[a.term.value]},...j?{}:{onRemove:()=>{m(a.term)}}})]},R(a.term))),d.map((a,d)=>(0,b.jsxs)(e.Fragment,{children:[0===d&&0===c.length?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(aL,{owner:a,testId:`${n}-owner`,...!0===j?{}:{onRemove:()=>{m(a.term)}}})]},R(a.term))),g.map(a=>(0,b.jsxs)("span",{"data-testid":`${n}-unknown`,title:`${R(a)}: no longer in this fleet`,className:"inline-flex h-5.5 items-center gap-1 rounded-sm border border-tone-attention-border bg-tone-attention-bg px-1.5 text-id text-tone-attention-fg [&_svg]:size-3",children:[(0,b.jsx)(p.CircleAlert,{"aria-hidden":!0}),"string"!=typeof a&&"owner"in a?"A removed owner":"A removed label",!0===j?null:(0,b.jsx)("button",{type:"button","aria-label":"string"!=typeof a&&"owner"in a?"Remove the removed owner":"Remove the removed label",onClick:()=>{m(a)},className:"-mr-1 ml-0.5 inline-flex size-4 items-center justify-center rounded-xs hover:bg-accent focus-visible:outline-2 focus-visible:outline-ring",children:(0,b.jsx)(aF.X,{"aria-hidden":!0})})]},R(a))),u>=i?null:(0,b.jsxs)(aI.Popover,{open:q,onOpenChange:r,children:[(0,b.jsx)(aI.PopoverTrigger,{render:(0,b.jsx)(af.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(aB.Plus,{}),disabled:j,"data-testid":`${n}-add`}),children:"Add label"}),(0,b.jsxs)(aI.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":o,children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:a}),(0,b.jsx)(aJ,{groups:h,pickedValueIds:c.flatMap(a=>"string"==typeof a.term?[a.term]:[]),onPick:a=>{r(!1),l(a)},terms:{picked:c.flatMap(a=>"string"==typeof a.term?[]:[a.term]),onPick:a=>{r(!1),l(a)}}}),(0,b.jsxs)("p",{className:"mt-2 flex items-center justify-between gap-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:["All must hold. * is any value, # the same as the other side.",(0,b.jsx)(aH.default,{href:"/labels",className:"font-medium text-foreground hover:underline",children:"Manage labels"})]})]})]}),u>=i?null:(0,b.jsxs)(aI.Popover,{open:s,onOpenChange:t,children:[(0,b.jsx)(aI.PopoverTrigger,{render:(0,b.jsx)(af.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(aB.Plus,{}),disabled:j,"data-testid":`${n}-owner-add`}),children:"Add owner"}),(0,b.jsxs)(aI.PopoverContent,{align:"start",sideOffset:6,className:"w-72 p-2","data-testid":`${o}-owner`,children:[(0,b.jsxs)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:[a," the owner"]}),(0,b.jsx)("ul",{className:"flex flex-col",children:w.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",disabled:v.has(R(a.term)),"data-testid":`${n}-owner-option`,onClick:()=>{t(!1),l(a.term)},className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-body hover:bg-accent focus-visible:outline-2 focus-visible:outline-ring disabled:text-muted-foreground disabled:hover:bg-transparent",children:[(0,b.jsx)(aE.UserRound,{"aria-hidden":!0,className:"size-(--size-icon) shrink-0 text-muted-foreground"}),a.text]})},R(a.term)))}),(0,b.jsx)("p",{className:"mt-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:"An owner is argo or a person’s ship. # is the same owner as the other side."})]})]})]}),void 0===k?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-tone-attention-fg","data-testid":`${n}-problem`,children:k}),0===g.length?null:(0,b.jsx)("p",{role:"alert",className:"text-meta text-tone-attention-fg",children:"A label or owner here was removed from the fleet: this side matches no ship until you remove it."})]})}function aL({owner:a,onRemove:c,testId:d}){let{owner:e}=a.term,f="*"===e||"#"===e?`${a.text}. ${T[e]}`:`${a.text}: ships it owns`;return(0,b.jsxs)("span",{role:"group","aria-label":f,title:f,"data-testid":d,className:"inline-flex h-5.5 max-w-full min-w-0 shrink-0 items-center gap-1 rounded-sm border border-border bg-secondary px-1.5 font-mono text-id whitespace-nowrap text-foreground [&_svg]:size-3 [&_svg]:shrink-0 [&_svg]:text-muted-foreground",children:[(0,b.jsx)(aE.UserRound,{"aria-hidden":!0}),(0,b.jsxs)("span",{className:"truncate",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"owner="}),(0,b.jsx)("span",{className:"font-medium",children:a.text.slice(6)})]}),void 0===c?null:(0,b.jsx)("button",{type:"button","aria-label":`Remove ${a.text}`,onClick:c,className:"-mr-1 ml-0.5 inline-flex size-4 items-center justify-center rounded-xs text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring",children:(0,b.jsx)(aF.X,{"aria-hidden":!0})})]})}let aM=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}],aN=()=>crypto.randomUUID();function aO({rules:a,context:c,limits:d,isSaving:f,saveError:g,savedNote:i,onSave:j}){let[k,l]=(0,e.useState)(()=>M(a,aN)),m=(0,K.filterGroupsOf)(c),n=c.ships.filter(a=>("operator"===a.kind||"person"===a.kind)&&"retired"!==a.status).map(a=>({shipId:a.id,name:a.name})),p=JSON.stringify(N(k))!==JSON.stringify(a);return(0,b.jsxs)("section",{"aria-labelledby":"network-rules","data-testid":"network-rules",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-rules",className:"text-body font-semibold",children:"Rules"}),"all-to-all"===k.kind?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"network-rules-state",children:"No rules: every ship may send to, read and manage every ship."}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"With rules, a ship may send to, read or manage another only when a rule of that verb or a built-in rule allows it."}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(af.Button,{variant:p?"secondary":"primary",icon:(0,b.jsx)(aB.Plus,{"aria-hidden":!0}),disabled:f,"data-testid":"network-rules-on",onClick:()=>{l(O(k,!0))},children:"Set rules"}),p?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(af.Button,{variant:"primary",isLoading:f,"data-testid":"network-rules-save",onClick:()=>{j(null)},children:"Save draft"}),(0,b.jsx)(af.Button,{disabled:f,"data-testid":"network-rules-discard",onClick:()=>{l(M(a,aN))},children:"Discard changes"})]}):null]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"network-rules-state",children:0===k.rules.length?"No rule allows anything yet: once saved, only the built-in rules hold.":"A ship may send to, read or manage another only when a rule of that verb or a built-in rule allows it."}),0===k.rules.length?null:(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:k.rules.map((a,e)=>(0,b.jsxs)("li",{"data-testid":"network-rule",className:"flex flex-col gap-2 rounded-md border border-border p-3 sm:flex-row sm:items-start sm:gap-3",children:[aM.map(({side:g,label:h})=>{let i,j=U(a[g],c);return(0,b.jsxs)("div",{className:"flex min-w-0 grow basis-0 items-start gap-3",children:["to"===g?(0,b.jsxs)("div",{className:"flex shrink-0 flex-col gap-1",children:[(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"Verb"}),(0,b.jsxs)(aD.Select,{items:L,value:a.verb,disabled:f,onValueChange:b=>{var c;y.some(a=>a===b)&&l(P(k,{key:(c={rule:a.key,verb:b}).rule,change:a=>({...a,verb:c.verb})}))},children:[(0,b.jsx)(aD.SelectTrigger,{"aria-label":`Verb of rule ${String(e+1)}`,"data-testid":"network-rule-verb",size:"sm",children:(0,b.jsx)(aD.SelectValue,{})}),(0,b.jsx)(aD.SelectContent,{children:y.map(a=>(0,b.jsx)(aD.SelectItem,{value:a,children:L[a]},a))})]})]}):null,"to"===g?(0,b.jsx)(o.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)(aK,{label:h,picked:j.chips,owners:j.owners,ownerChoices:n,unknown:j.unknown,groups:m,max:d.selectorMax,isDisabled:f,...void 0===(i=function(a,b){let[c]=V(a,b.side);if(void 0===c)return W(a,b.side)?"owner=# needs owner=# on the other side: # matches the same owner there.":void 0;let d=b.context.labels.find(a=>a.id===c.labelId)?.key??c.labelId;return`${d}=# needs ${d}=# on the other side: # matches the same value there.`}(a,{side:g,context:c}))?{}:{problem:i},testId:`network-rule-${g}`,popoverTestId:"network-rule-popover",onAdd:b=>{var c;l(P(k,{key:(c={rule:a.key,side:g,term:b,limits:d}).rule,change:a=>{let b=a[c.side];return b.some(a=>Q(a,c.term))||b.length>=c.limits.selectorMax?a:{...a,[c.side]:[...b,c.term]}}}))},onRemove:b=>{var c;l(P(k,{key:(c={rule:a.key,side:g,term:b}).rule,change:a=>({...a,[c.side]:a[c.side].filter(a=>!Q(a,c.term))})}))}})]},g)}),(0,b.jsx)(af.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(aC.Trash2,{"aria-hidden":!0}),disabled:f,"aria-label":`Remove rule ${String(e+1)}`,"data-testid":"network-rule-remove",onClick:()=>{var b;l((b=a.key,"all-to-all"===k.kind?k:{kind:"rules",rules:k.rules.filter(a=>a.key!==b)}))}})]},a.key))}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[k.rules.length>=d.rulesMax?null:(0,b.jsx)(af.Button,{size:"sm",icon:(0,b.jsx)(aB.Plus,{"aria-hidden":!0}),disabled:f,"data-testid":"network-rules-add",onClick:()=>{var a;l((a={newKey:aN,limits:d},"all-to-all"===k.kind||k.rules.length>=a.limits.rulesMax?k:{kind:"rules",rules:[...k.rules,{key:a.newKey(),verb:"send",from:[],to:[]}]}))},children:"Add rule"}),(0,b.jsxs)("span",{className:"text-meta text-muted-foreground tabular-nums","data-testid":"network-rules-count",children:[k.rules.length," of ",d.rulesMax," rules"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-t border-border pt-3",children:[(0,b.jsx)(af.Button,{variant:"primary",isLoading:f,disabled:!p||"rules"===k.kind&&k.rules.some(a=>V(a,"from").length+V(a,"to").length>0||W(a,"from")||W(a,"to")),"data-testid":"network-rules-save",onClick:()=>{j(N(k))},children:"Save draft"}),p?(0,b.jsx)(af.Button,{disabled:f,"data-testid":"network-rules-discard",onClick:()=>{l(M(a,aN))},children:"Discard changes"}):null,(0,b.jsx)(af.Button,{variant:"ghost",className:"ml-auto",disabled:f,"data-testid":"network-rules-off",onClick:()=>{l(O(k,!1))},children:"Remove all rules"})]})]}),void 0===g?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t save the rules",description:g}),void 0===i||p?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-muted-foreground","data-testid":"network-rules-note",children:i})]})}var aP=a.i(597024);let aQ={name:"file-up",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]]};aQ.node;let aR=(0,ab.default)(aQ);var aS=a.i(145098),aT=a.i(172309),aU=a.i(132865);function aV(a){return"label"in a?`${a.label}=${a.value}`:`owner=${a.owner}`}function aW(a){return"ship"===a.kind?`ship:${a.name}`:`${a.kind}:${a.key}`}var aX=a.i(37809);function aY(a){switch(a.kind){case"definer":return`${a.key} is defined by ${a.fleetDefiner} here, by ${a.fileDefiner} in the file`;case"values":return`${a.key} has ${a.fleetValues.join(", ")} here; the file gives ${a.fileValues.join(", ")}`;case"ship":return`No active ship is named ${a.name}`}}function aZ({difference:a,choice:c,ships:d,onShipQueryChange:e,isDisabled:f,onChange:g}){let h=aW(a),i=`network-import-difference-${h.replace(":","-")}`;return(0,b.jsxs)("fieldset",{className:"flex flex-col gap-2 rounded-lg border border-border bg-card p-3","data-testid":"network-import-difference",children:[(0,b.jsx)("legend",{className:"sr-only",children:aY(a)}),(0,b.jsx)("p",{className:"text-body font-medium","aria-hidden":!0,children:aY(a)}),(0,b.jsx)(aX.RadioGroup,{value:c?.way,disabled:f,onValueChange:b=>{g({difference:a,way:b})},children:a.ways.map(b=>({way:b,text:function(a,b){switch(a.kind){case"definer":return"useExisting"===b?`Use the label ${a.key} as it is, defined by ${a.fleetDefiner}`:`Drop the rules on ${a.key}`;case"values":return"useExisting"===b?`Use the label ${a.key} as it is: it has every value the rules name`:`Drop the rules naming ${a.missingValues.map(b=>`${a.key}=${b}`).join(", ")}`;case"ship":return"pickShip"===b?`Pick an active ship for ${a.name}`:`Drop the rules naming owner=${a.name}`}}(a,b)})).map(({way:a,text:c})=>(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(aX.RadioGroupItem,{id:`${i}-${a}`,value:a,className:"mt-0.5","data-testid":`network-import-way-${a}`}),(0,b.jsx)("label",{htmlFor:`${i}-${a}`,className:"min-w-0 grow cursor-pointer text-body",children:c})]},a))}),c?.way==="pickShip"?(0,b.jsx)(am.Combobox,{options:d.map(a=>({value:a.id,label:a.name})),value:c.shipId??null,onValueChange:b=>{let c=d.find(a=>a.id===b);g({difference:a,way:"pickShip",...void 0===c?{}:{shipId:c.id}})},onQueryChange:e,groupLabel:"Active ships",placeholder:"Type a ship name","aria-label":`The ship for ${"ship"===a.kind?a.name:""}`,"data-testid":"network-import-pick-ship"}):null]})}let a$=["Attach or paste","Check","Overview","Import"];function a_({current:a}){return(0,b.jsx)("ol",{className:"flex flex-wrap gap-x-3 gap-y-1 text-meta","aria-label":"Import steps","data-testid":"network-import-steps",children:a$.map((c,d)=>(0,b.jsxs)("li",{"aria-current":d===a?"step":void 0,className:d===a?"font-semibold text-foreground":"text-muted-foreground",children:[d+1,". ",c]},c))})}function a0(a){let{checked:c,isChecking:d,checkError:f,onCheck:g,onFileChange:i,ships:j,onShipQueryChange:k,isImporting:l,importError:m,onImport:n}=a,[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)([]),s=j.find(a=>a.isOperator),[t,u]=(0,e.useState)(s?.id),[v,w]=(0,e.useState)(!1),x=d||l,y=a=>{p(a),r([]),w(!1),i()};if(void 0===c)return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a_,{current:+!!d}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(aS.Label,{htmlFor:"network-import-attach",children:"Attach the file"}),(0,b.jsx)("input",{id:"network-import-attach",type:"file",accept:"application/json,.json",disabled:x,"data-testid":"network-import-attach",className:"text-body file:mr-3 file:rounded-md file:border file:border-border file:bg-card file:px-3 file:py-1.5",onChange:a=>{let b=a.target.files?.[0];void 0!==b&&b.text().then(y)}})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(aS.Label,{htmlFor:"network-import-paste",children:"Or paste it"}),(0,b.jsx)(aT.Textarea,{id:"network-import-paste",isMono:!0,rows:8,value:o,disabled:x,placeholder:'{ "format": "aeolus.network-rules", ... }',"data-testid":"network-import-paste",onChange:a=>{y(a.target.value)}})]}),void 0===f?null:(0,b.jsx)(h.InlineError,{title:"The file doesn’t check",description:`${f}. Nothing changed: fix the file and check it again.`}),(0,b.jsxs)(aU.DialogFooter,{children:[(0,b.jsx)(aU.DialogClose,{render:(0,b.jsx)(af.Button,{type:"button",disabled:x}),children:"Cancel"}),(0,b.jsx)(af.Button,{variant:"primary",isLoading:d,disabled:""===o.trim()||x,"data-testid":"network-import-check",onClick:()=>{g(o)},children:d?"Checking…":"Check file"})]})]});let{file:z,newLabels:A,differences:B}=c,C=z.rules??[],D=B.every(a=>{let b=q.find(b=>aW(b.difference)===aW(a));return void 0!==b&&("pickShip"!==b.way||void 0!==b.shipId)}),E=j.find(a=>a.id===t),F=D&&(0===A.length||void 0!==E)&&!x,G=q.flatMap(a=>(function(a){let{difference:b,way:c}=a;return"ship"===b.kind?"pickShip"===c?void 0===a.shipId?void 0:{kind:"ship",name:b.name,way:c,shipId:a.shipId}:{kind:"ship",name:b.name,way:"dropRules"}:{kind:b.kind,key:b.key,way:"useExisting"===c?"useExisting":"dropRules"}})(a)??[]);return v?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a_,{current:3}),(0,b.jsx)(aU.DialogHeader,{children:(0,b.jsx)(aU.DialogTitle,{children:"Import into the draft?"})}),(0,b.jsxs)("ul",{className:"flex list-disc flex-col gap-1 pl-5 text-body","data-testid":"network-import-consequences",children:[(0,b.jsx)("li",{children:null===z.rules?"The draft becomes all-to-all, every ship reaching every ship.":q.some(a=>"dropRules"===a.way)?`The draft is replaced by the file’s ${String(C.length)} rules, less the ones you chose to drop.`:`The draft is replaced by the file’s ${String(C.length)} rules.`}),0===A.length?null:(0,b.jsxs)("li",{children:[A.join(", ")," ",1===A.length?"is":"are"," defined for ",E?.name??"argo","."]}),(0,b.jsx)("li",{children:"Nothing is in force until you apply the draft."})]}),void 0===m?null:(0,b.jsx)(h.InlineError,{variant:"section",title:"Couldn’t import the file",description:`${m}. Nothing was written.`,onRetry:()=>{w(!1),g(o)}}),(0,b.jsxs)(aU.DialogFooter,{children:[(0,b.jsx)(af.Button,{type:"button",disabled:x,onClick:()=>{w(!1)},children:"Back"}),(0,b.jsx)(af.Button,{variant:"primary",isLoading:l,disabled:x,"data-testid":"network-import-confirm",onClick:()=>{n({file:o,resolutions:G,...0===A.length||void 0===E||E.isOperator?{}:{definerShipId:E.id}})},children:l?"Importing…":"Import into the draft"})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a_,{current:2}),(0,b.jsxs)("p",{className:"flex items-start gap-2 text-body",role:"status","data-testid":"network-import-checked",children:[(0,b.jsx)(aP.CircleCheck,{"aria-hidden":!0,className:"mt-0.5 size-(--size-icon-sm) shrink-0 text-tone-ok-fg"}),(0,b.jsxs)("span",{children:["The file checks: ",null===z.rules?"all-to-all, no rules":`${String(C.length)} rules`," and ",z.labels.length," labels, from ",z.fleet.name," at rules version ",z.rulesVersion,", exported"," ",new Date(z.exportedAt).toLocaleString(),"."]})]}),0===B.length?null:(0,b.jsxs)("section",{"aria-labelledby":"network-import-differences",className:"flex flex-col gap-2","data-testid":"network-import-differences",children:[(0,b.jsx)("h3",{id:"network-import-differences",className:"text-body font-semibold",children:1===B.length?"1 difference to resolve":`${String(B.length)} differences to resolve`}),B.map(a=>{let c=aW(a);return(0,b.jsx)(aZ,{difference:a,choice:q.find(a=>aW(a.difference)===c),ships:j,onShipQueryChange:k,isDisabled:x,onChange:a=>{r([...q.filter(a=>aW(a.difference)!==c),a])}},c)})]}),0===A.length?null:(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)(aS.Label,{htmlFor:"network-import-definer",children:["Define ",A.join(", ")," for"]}),(0,b.jsx)(am.Combobox,{id:"network-import-definer",options:j.map(a=>({value:a.id,label:a.name})),value:t??null,onValueChange:a=>{u(j.find(b=>b.id===a)?.id)},onQueryChange:k,groupLabel:"Active ships",placeholder:"Type a ship name","data-testid":"network-import-definer"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"argo never retires, so its labels never go. Another ship must be within your manage reach."})]}),(0,b.jsxs)("section",{"aria-labelledby":"network-import-rules",className:"flex flex-col gap-1.5",children:[(0,b.jsx)("h3",{id:"network-import-rules",className:"text-body font-semibold",children:"Rules in the file"}),0===C.length?(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:null===z.rules?"None: all-to-all.":"None: only the built-in and declared rules."}):(0,b.jsx)("ol",{className:"flex max-h-64 flex-col gap-1 overflow-y-auto font-mono text-code","data-testid":"network-import-rules",children:C.map((a,b)=>{let c,{verb:d,from:e,to:f}=(c=a=>0===a.length?["every ship"]:a.map(aV),{verb:a.verb,from:c(a.from),to:c(a.to)});return{place:b+1,line:`${d}: ${e.join(" ")} → ${f.join(" ")}`}}).map(({place:a,line:c})=>(0,b.jsx)("li",{children:c},a))})]}),(0,b.jsxs)(aU.DialogFooter,{className:"items-center",children:[(0,b.jsx)("span",{className:"mr-auto text-meta text-muted-foreground",children:D?null:"Resolve every difference to import."}),(0,b.jsx)(af.Button,{type:"button",disabled:x,onClick:()=>{y(o)},children:"Back"}),(0,b.jsx)(af.Button,{variant:"primary",disabled:!F,"data-testid":"network-import-open-confirm",onClick:()=>{w(!0)},children:"Import…"})]})]})}function a1(a){let{isOpen:c,onOpenChange:d,isChecking:e,isImporting:f}=a;return(0,b.jsx)(aU.Dialog,{open:c,onOpenChange:a=>{e||f||d(a)},children:(0,b.jsxs)(aU.DialogContent,{size:"md","data-testid":"network-import-dialog",className:au.dialogSurface.phoneFullScreen,children:[(0,b.jsxs)(aU.DialogHeader,{children:[(0,b.jsxs)(aU.DialogTitle,{children:[(0,b.jsx)(aR,{"aria-hidden":!0,className:"mr-2 inline size-(--size-icon-sm)"}),"Import network rules"]}),(0,b.jsx)(aU.DialogDescription,{children:"Rules exported from this fleet or another land in the draft; nothing is in force until you apply it."})]}),c?(0,b.jsx)(a0,{...a}):null]})})}let a2={name:"file-down",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]};a2.node;let a3=(0,ab.default)(a2);function a4({isExporting:a,exportError:c,onExport:d,exported:e,canImport:f,onImport:g}){return(0,b.jsxs)("section",{"aria-labelledby":"network-rules-file","data-testid":"network-rules-file",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-rules-file",className:"text-body font-semibold",children:"Export and import"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Export writes the applied rules and the labels they use as one file, by name. Import brings a file from this fleet or another into the draft."}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(af.Button,{icon:(0,b.jsx)(a3,{}),isLoading:a,"data-testid":"network-rules-export",onClick:d,children:a?"Exporting…":"Export"}),f?(0,b.jsx)(af.Button,{icon:(0,b.jsx)(aR,{}),disabled:a,"data-testid":"network-rules-import",onClick:g,children:"Import…"}):null]}),void 0===e||0===e.leftOut.length?null:(0,b.jsxs)("div",{role:"status","data-testid":"network-rules-left-out",className:"flex flex-col gap-1 rounded-lg border border-tone-waiting-border bg-tone-waiting-bg px-3.5 py-2.5 text-meta text-tone-waiting-fg",children:[(0,b.jsxs)("p",{children:[e.name," leaves out ",1===e.leftOut.length?"1 applied rule":`${String(e.leftOut.length)} applied rules`,", as each matches no ship:"]}),(0,b.jsx)("ul",{className:"list-disc pl-5",children:e.leftOut.map(({rule:a,reason:c})=>(0,b.jsxs)("li",{children:["rule ",a," ",c]},a))})]}),void 0===c?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t export the rules",description:`${c}. Nothing was downloaded.`})]})}function a5(a){switch(a.kind){case"ship":return a.name;case"account":return`Account ${a.accountId}`;case"installation":return"The installation"}}var a6=a.i(872872);function a7({refusals:a,error:c,onRetry:d,more:e,context:f,now:j}){let k;return k=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read the refusals",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"list",rows:3,label:"Loading the refusals"}):0!==a.length||e?(0,b.jsx)("ol",{className:"flex flex-col gap-2","data-testid":"network-refusals-list",children:a.map(a=>(0,b.jsx)(a8,{refusal:a,context:f,now:j},a.id))}):(0,b.jsx)(g.EmptyState,{variant:"section",title:"No send has been refused."}),(0,b.jsxs)("section",{"aria-labelledby":"network-refusals","data-testid":"network-refusals",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-refusals",className:"text-body font-semibold",children:"Refusals"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"The sends the rules refused, newest first, with both ships’ labels as they were then. The sender was told only that its send was refused."}),k,e]})}function a8({refusal:a,context:c,now:d}){let e=new Date(a.at),{recipient:f}=a,g="ship"===f.kind?[f.ship]:f.ships;return(0,b.jsxs)("li",{"data-testid":"network-refusal",className:"flex flex-col gap-2 rounded-md border border-border px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-0.5",children:[(0,b.jsx)("p",{className:"text-body font-medium",children:function(a){let{sender:b,recipient:c}=a,d=`${a5(b)} tried to ${"ship"===b.kind?"message":"reach"}`;switch(c.kind){case"ship":return`${d} ${c.ship.name}.`;case"type":return`${d} the type ${c.type}: ${(0,K.listed)(c.ships.map(a=>a.name))}.`}}(a)}),(0,b.jsx)("time",{dateTime:a.at,title:(0,a6.fullDateTime)(e),className:"text-meta text-muted-foreground tabular-nums",children:(0,a6.relativeTime)(e,d)})]}),(0,b.jsxs)("dl",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(a9,{side:"From",ship:{name:a5(a.sender),labels:"installation"===a.sender.kind?[]:a.sender.labels},context:c}),g.map(a=>(0,b.jsx)(a9,{side:"To",ship:a,context:c},a.id))]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:`Refused by network settings version ${String(a.settingsVersion)}.`})]})}function a9({side:a,ship:c,context:d}){let e=(0,K.chipsOf)(c,d);return(0,b.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,b.jsxs)("dt",{className:"text-meta text-muted-foreground",children:[a," ",(0,b.jsx)("span",{className:"font-medium text-foreground",children:c.name})]}),(0,b.jsx)("dd",{className:"flex min-w-0 flex-wrap items-center gap-1",children:0===e.length?(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"No labels"}):e.map(a=>(0,b.jsx)(X.LabelChip,{chip:a,testId:"network-refusal-label"},a.valueId))})]})}var ba=a.i(591003),bb=a.i(38023),bc=a.i(565563),bd=a.i(301851),be=a.i(190146),bf=a.i(447582),bg=a.i(77458),bh=a.i(433217),bi=a.i(514499),bj=a.i(815393),bk=a.i(281418),bl=a.i(167336),bm=a.i(210023),bn=a.i(370025),bo=a.i(937927);function bp(){let a=(0,bi.useTRPC)(),b=(0,bo.useQueryClient)();return async()=>{await Promise.all([b.invalidateQueries({queryKey:a.fleet.networkRules.queryKey()}),b.invalidateQueries({queryKey:a.fleet.networkRulesDraftChanges.queryKey()}),b.invalidateQueries({queryKey:a.fleet.explainReach.pathKey()})])}}var bq=a.i(804049),br=a.i(442871);function bs(a,b="applied"){let c=new URLSearchParams([...void 0===a?[]:[["reach",a]],..."draft"===b?[["against","draft"]]:[]]).toString();return""===c?"/network":`/network?${c}`}var bt=a.i(726112),bu=a.i(328422),bv=a.i(770534),bw=a.i(110572);a.s(["NetworkPageFor",0,function({pickedShipId:a,against:j}){var k,l,m,o;let p,q,r,s,t,u,v,x,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R=(0,d.useRouter)(),S=(0,bq.useNow)(),T=(0,bb.useConsoleFrame)(),U=(0,bm.useNeedsAttention)(),V=(0,bl.useLiveFleet)(),W=(0,bc.useAccess)(),X=W.canEditNetwork,Y=(q=(0,bi.useTRPC)(),(0,bh.useQuery)(q.fleet.networkRules.queryOptions(void 0,{enabled:X}))),$=void 0!==Y.data&&null!==Y.data.draft,_=$?j:"applied",aa=(k=X&&$,r=(0,bi.useTRPC)(),(0,bh.useQuery)(r.fleet.networkRulesDraftChanges.queryOptions(void 0,{enabled:k}))),ab=(0,be.useLabelContext)(),ac=(s=(0,bi.useTRPC)(),t=(0,bh.useQuery)(s.fleet.list.queryOptions({shipKind:["operator","person"],limit:bg.PAGE_SIZE_MAX},{enabled:X})),t.data?.items.filter(bf.isInReadReach)),ad=(l=X?a:void 0,u=(0,bi.useTRPC)(),(0,bh.useQuery)({...u.fleet.explainReach.queryOptions(void 0===l?br.skipToken:{fromShipId:l,against:_}),select:ah})),ae=(v=(0,bi.useTRPC)(),(0,bu.pagedListOf)((0,bt.useInfiniteQuery)(v.fleet.reachRefusals.infiniteQueryOptions({limit:bu.CONSOLE_PAGE_SIZE},{enabled:X,getNextPageParam:bu.nextCursorOf})))),af=(x=(0,bi.useTRPC)(),(0,bh.useQuery)(x.fleet.declaredNetworkRules.queryOptions(void 0,{enabled:X}))),ag=(0,bj.useListedShips)(function(a){let b=a.rules.flatMap(a=>[...a.from,...a.to].flatMap(a=>w(a)&&"*"!==a.owner&&"#"!==a.owner?[a.owner]:[])),c=a.declarers.flatMap(a=>"ship"===a.kind?[a.shipId]:[]),{draftChanges:d}=a;return[...new Set([...b,...c,...void 0===d?[]:y.flatMap(a=>[...d[a].gained,...d[a].lost]).flatMap(a=>[a.fromShipId,a.toShipId]),...void 0===a.pickedShipId?[]:[a.pickedShipId,...a.reachableShipIds??[]]])]}({rules:[...Y.data?.applied.rules??[],...Y.data?.draft?.rules??[]],declarers:af.data?.map(a=>a.declarer)??[],...void 0===aa.data?{}:{draftChanges:aa.data},...void 0===a?{}:{pickedShipId:a},...void 0===ad.data?{}:{reachableShipIds:ad.data}})),ai=[...ag?.values()??[]],aj=(z=(0,bi.useTRPC)(),A=(0,bh.useQuery)(z.fleet.shipCounts.queryOptions()),A.data?.filter(a=>"viewer"!==a.kind).reduce((a,b)=>a+b.active,0)),[al,am]=(0,e.useState)(""),an=(0,bk.useShipSearch)("",X)??[],ao=(0,bk.useShipSearch)(al,X)??[],ap=ak([...new Map([...an.slice(0,1),...ao].map(a=>[a.id,a])).values()]),aq=(B=(0,bi.useTRPC)(),(0,bh.useQuery)(B.fleet.builtInRules.queryOptions(void 0,{enabled:X}))),as=(C=(0,bi.useTRPC)(),D=(0,bo.useQueryClient)(),{setViewerRead:a=>{E.mutate({rule:"viewerRead",isOn:a})},isPending:(E=(0,bn.useMutation)(C.fleet.setBuiltInRule.mutationOptions({onSuccess:()=>D.invalidateQueries({queryKey:C.fleet.builtInRules.queryKey()})}))).isPending,error:E.error?.message}),at=(F=(0,bi.useTRPC)(),G=bp(),(0,bn.useMutation)(F.fleet.saveNetworkRulesDraft.mutationOptions({onSuccess:G}))),au=(H=(0,bi.useTRPC)(),I=(0,bo.useQueryClient)(),J=bp(),(0,bn.useMutation)(H.fleet.applyNetworkRules.mutationOptions({onSuccess:async()=>{await Promise.all([J(),I.invalidateQueries({queryKey:H.fleet.builtInRules.queryKey()})])}}))),av=(K=(0,bi.useTRPC)(),L=bp(),(0,bn.useMutation)(K.fleet.discardNetworkRulesDraft.mutationOptions({onSuccess:L}))),aA=(M=(0,bi.useTRPCClient)(),(0,bn.useMutation)({mutationFn:async()=>{var a;let b,c,d,{file:e,leftOut:f}=await M.fleet.exportNetworkRules.query(),g=(b=e.fleet.name.toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-|-$/g,""),`network-rules-${b}-v${String(e.rulesVersion)}.json`);return a=`${JSON.stringify(e,null,2)}
|
|
2
|
-
`,c=URL.createObjectURL(new Blob([a],{type:"application/json"})),(d=document.createElement("a")).href=c,d.download=g,d.click(),URL.revokeObjectURL(c),{name:g,leftOut:f}}})),
|
|
1
|
+
module.exports=[271915,a=>{"use strict";var b=a.i(187924),c=a.i(265913),d=a.i(50944),e=a.i(572131),f=a.i(88191),g=a.i(24173),h=a.i(240392),i=a.i(350808),j=a.i(139353),k=a.i(176166),l=a.i(945469);let m={argo:"You turn it on or off.",rules:"Applying rules turns it off; applying none turns it on again."};function n({rows:a,error:c,onRetry:d,isTurning:e,turnError:f,onViewerReadChange:g}){let o;return o=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read the built-in rules",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"list",rows:3,label:"Loading the built-in rules"}):(0,b.jsx)("ul",{className:"flex flex-col divide-y divide-border",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":"network-built-in-rule",className:"flex items-start justify-between gap-3 py-2 first:pt-0 last:pb-0",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-body font-medium","data-testid":"network-built-in-rule-name",children:a.name}),(0,b.jsxs)("span",{className:"text-meta text-muted-foreground",children:[a.meaning," ","never"===a.turnedBy?null:m[a.turnedBy]]})]}),"argo"===a.turnedBy?(0,b.jsx)(l.Switch,{checked:a.isOn,disabled:e,"aria-label":`${a.name}: ${a.isOn?"on":"off"}`,"data-testid":"network-built-in-viewer-read",onCheckedChange:a=>{g(a)}}):(0,b.jsx)(k.Badge,{variant:"outline","data-testid":"network-built-in-rule-state",children:"never"===a.turnedBy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(j.Lock,{"aria-hidden":!0}),"Never off"]}):a.isOn?"On":"Off"})]},a.key))}),(0,b.jsxs)("section",{"aria-labelledby":"network-built-in","data-testid":"network-built-in",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-built-in",className:"text-body font-semibold",children:"Built-in rules"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"The fleet’s own rules, beside yours and the declared ones. They hold before any rule below."}),o,void 0===f?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t turn the viewer reading",description:f})]})}var o=a.i(818783),p=a.i(793817),q=a.i(156757),r=a.i(902811),s=a.i(592225),t=a.i(817914),u=a.i(580511);let v=q.z.union([(0,r.idSchema)("labelValue"),q.z.object({labelId:(0,r.idSchema)("label"),value:q.z.enum(["*","#"])}),q.z.object({owner:q.z.union([(0,r.idSchema)("ship"),q.z.enum(["*","#"])])})]);function w(a){return"string"!=typeof a&&"owner"in a}let x=q.z.array(v),y=["send","read","manage"],z=q.z.object({verb:q.z.enum(y),from:x,to:x}),A=q.z.array(z).nullable();q.z.object({rules:A}),q.z.object({savedAgainstVersion:q.z.int().min(0)}),q.z.object({version:q.z.int().min(0)}),q.z.object({applied:q.z.object({rules:A,version:q.z.int().min(0)}),draft:q.z.object({rules:A,savedAt:q.z.iso.datetime(),savedAgainstVersion:q.z.int().min(0)}).nullable()}),q.z.object({});let B=["argo","owner","answer","pluginRead","meeting","viewerRead","installation","open"];q.z.object({rule:q.z.enum(B),isOn:q.z.boolean()});let C=q.z.object({rule:q.z.enum(B),isOn:q.z.boolean()});q.z.array(C),q.z.object({version:q.z.int().min(0)}),q.z.object({rules:q.z.array(z)}),q.z.object({rules:q.z.int().min(0)});let D=q.z.discriminatedUnion("kind",[q.z.object({kind:q.z.literal("ship"),shipId:(0,r.idSchema)("ship")}),q.z.object({kind:q.z.literal("installation")})]);q.z.array(q.z.object({declarer:D,rules:q.z.array(z)}));let E=q.z.object({id:(0,r.idSchema)("ship"),name:q.z.string(),labels:q.z.array(t.carriedLabelSchema),owner:q.z.object({id:(0,r.idSchema)("ship"),name:q.z.string()}).nullable()}),F=q.z.discriminatedUnion("kind",[E.extend({kind:q.z.literal("ship")}),q.z.object({kind:q.z.literal("account"),accountId:s.accountIdSchema,labels:q.z.array(t.carriedLabelSchema),personShip:q.z.object({id:(0,r.idSchema)("ship"),name:q.z.string()}).nullable()}),q.z.object({kind:q.z.literal("installation")})]),G=q.z.object({id:(0,r.idSchema)("reachRefusal"),at:q.z.iso.datetime(),sender:F,askedBy:E.nullable(),recipient:q.z.discriminatedUnion("kind",[q.z.object({kind:q.z.literal("ship"),ship:E}),q.z.object({kind:q.z.literal("type"),type:q.z.string(),ships:q.z.array(E)})]),verb:q.z.enum(y),settingsVersion:q.z.int().min(1)});(0,u.pageInputOf)((0,r.idSchema)("reachRefusal")),(0,u.pageOutputOf)(G,(0,r.idSchema)("reachRefusal")),q.z.object({fromShipId:(0,r.idSchema)("ship"),toShipId:(0,r.idSchema)("ship").optional(),against:q.z.enum(["applied","draft"]).optional()});let H=q.z.union([q.z.object({builtIn:q.z.enum(B)}),q.z.object({rule:q.z.int().min(0)}),q.z.object({declared:D,index:q.z.int().min(0)})]),I=q.z.array(q.z.object({shipId:(0,r.idSchema)("ship"),rule:H}));q.z.object({send:I,read:I,manage:I});let J=q.z.array(q.z.object({fromShipId:(0,r.idSchema)("ship"),toShipId:(0,r.idSchema)("ship"),rule:H}));q.z.object({send:q.z.object({gained:J,lost:J}),read:q.z.object({gained:J,lost:J}),manage:q.z.object({gained:J,lost:J})});var K=a.i(565230);let L={send:"May send to",read:"May read",manage:"May manage"};function M(a,b){return null===a?{kind:"all-to-all"}:{kind:"rules",rules:a.map(a=>({key:b(),verb:a.verb,from:[...a.from],to:[...a.to]}))}}function N(a){return"all-to-all"===a.kind?null:a.rules.map(a=>({verb:a.verb,from:[...a.from],to:[...a.to]}))}function O(a,b){return b?"rules"===a.kind?a:{kind:"rules",rules:[]}:{kind:"all-to-all"}}function P(a,b){return"all-to-all"===a.kind?a:{kind:"rules",rules:a.rules.map(a=>a.key===b.key?b.change(a):a)}}function Q(a,b){return R(a)===R(b)}function R(a){return"string"==typeof a?a:w(a)?`owner=${a.owner}`:`${a.labelId}=${a.value}`}let S={"*":"Any value","#":"The same value as the other side"},T={"*":"Any owner","#":"The same owner as the other side"};function U(a,b){let c=[],d=[],e=[];for(let f of a){if(w(f)){let a=function(a,b){if("*"===a.owner||"#"===a.owner)return{term:a,text:`owner=${a.owner}`};let c=b.ships.find(b=>b.id===a.owner);return void 0===c?void 0:{term:a,text:`owner=${c.name}`}}(f,b);void 0===a?e.push(f):d.push(a);continue}let a=function(a,b){if("string"==typeof a){let[c]=(0,K.pickedChips)([a],b);return void 0===c?void 0:{labelId:c.labelId,key:c.key,value:c.value,mark:c.mark,ownerName:c.ownerName,term:a}}let c=b.labels.find(b=>b.id===a.labelId);if(void 0===c)return;let d=b.ownerOf.get(c.id);return{labelId:c.id,key:c.key,value:a.value,mark:d?.mark??"ship",ownerName:d?.name??(0,K.labelOwnerName)(c.owner),term:a}}(f,b);void 0===a?e.push(f):c.push(a)}return{chips:c,owners:d,unknown:e}}function V(a,b){let c=a["from"===b?"to":"from"];return a[b].filter(a=>"string"!=typeof a&&!w(a)&&"#"===a.value&&!c.some(b=>Q(b,a)))}function W(a,b){let c=a=>a.some(a=>w(a)&&"#"===a.owner);return c(a[b])&&!c(a["from"===b?"to":"from"])}var X=a.i(136501);let Y=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}];function Z({declared:a,error:c,onRetry:d,context:e}){let f;return f=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read the declared rules",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"list",rows:2,label:"Loading the declared rules"}):0===a.length?(0,b.jsx)(g.EmptyState,{variant:"section",title:"Nothing declares rules."}):(0,b.jsx)("ul",{className:"flex flex-col gap-3",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":"network-declared-plugin",className:"flex flex-col gap-2",children:[(0,b.jsxs)("h3",{className:"text-meta font-medium","data-testid":"network-declared-by",children:["Declared by ",a.declaredBy]}),(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:a.rules.map(a=>(0,b.jsx)("li",{"data-testid":"network-declared-rule",className:"flex flex-col gap-2 rounded-md border border-border p-3 sm:flex-row sm:items-start sm:gap-3",children:Y.map(({side:c,label:d})=>(0,b.jsxs)("div",{className:"flex min-w-0 grow basis-0 items-start gap-3",children:["to"===c?(0,b.jsx)("span",{className:"mt-6 shrink-0 text-meta text-muted-foreground","data-testid":"network-declared-rule-verb",children:L[a.verb]}):null,"to"===c?(0,b.jsx)(o.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)($,{label:d,terms:a[c],context:e,testId:`network-declared-rule-${c}`})]},c))},JSON.stringify(a)))})]},a.declarerId))}),(0,b.jsxs)("section",{"aria-labelledby":"network-declared","data-testid":"network-declared",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-declared",className:"text-body font-semibold",children:"Declared by plugins and the installation"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Rules plugins and the installation need on the labels they own. The networking plugin adds them to your rules; while every ship may message every ship, they change nothing. Only their declarer changes them, and switching a plugin off withdraws its rules."}),f]})}function $({label:a,terms:c,context:d,testId:f}){let{chips:g,unknown:h}=U(c,d);return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":f,children:[(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:a}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[g.length+h.length===0?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,g.map((a,c)=>(0,b.jsxs)(e.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(X.LabelChip,{chip:a,testId:`${f}-value`,..."string"==typeof a.term?{}:{meaning:S[a.term.value]}})]},R(a.term))),h.map(a=>(0,b.jsxs)("span",{"data-testid":`${f}-unknown`,title:`${R(a)}: no longer in this fleet`,className:"inline-flex h-5.5 items-center gap-1 rounded-sm border border-tone-attention-border bg-tone-attention-bg px-1.5 text-id text-tone-attention-fg [&_svg]:size-3",children:[(0,b.jsx)(p.CircleAlert,{"aria-hidden":!0}),"A removed label"]},R(a)))]})]})}var _=a.i(70840),aa=a.i(752562),ab=a.i(164831);let ac={name:"crosshair",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]};ac.node;let ad=(0,ab.default)(ac);var ae=a.i(233540),af=a.i(831856),ag=a.i(483556);function ah(a){return a.send.map(a=>a.shipId)}let ai=-Math.PI/2,aj=2*Math.PI;function ak(a){return a.filter(a=>"retired"!==a.status&&"viewer"!==a.kind).map(a=>({id:a.id,name:a.name,isOperator:"operator"===a.kind})).sort((a,b)=>Number(b.isOperator)-Number(a.isOperator)||a.name.localeCompare(b.name))}function al(a){return Math.round(100*a)/100}var am=a.i(78398),an=a.i(994777),ao=a.i(918691);let ap=["applied","draft"],aq={picked:"picked",reached:"may be messaged",unreached:"out of reach"};function ar({ships:a,search:c,sailingShipCount:d,pickedShipId:e,reachableShipIds:f,reachError:g,onPick:i,onRetry:j,against:k="applied",onAgainstChange:l}){var m;let n=(m=void 0===e?void 0:{pickedShipId:e,reachableShipIds:void 0===g?f:void 0},a.map((b,c)=>{var d,e;let f=ai+aj*c/a.length,g=1===a.length;return{ship:b,x:g?50:al(50+38*Math.cos(f)),y:g?50:al(50+38*Math.sin(f)),mark:(d=b.id,void 0===(e=m)?"none":d===e.pickedShipId?"picked":void 0===e.reachableShipIds?"none":e.reachableShipIds.includes(d)?"reached":"unreached")}})),o=n.find(a=>"picked"===a.mark),p=n.filter(a=>"reached"===a.mark);return(0,b.jsxs)("section",{"aria-labelledby":"network-reach","data-testid":"network-reach",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-reach",className:"text-body font-semibold",children:"Reach"}),(0,b.jsxs)("p",{className:"text-meta text-muted-foreground",children:["draft"===k?"The fleet as the draft would leave it once applied: pick a ship to see which ships the draft lets it message.":"The fleet as it stands now: pick a ship to see which ships the rules let it message."," ","Argo reaches every ship, and every ship reaches argo."]}),void 0===l?null:(0,b.jsx)(an.Tabs,{value:k,onValueChange:a=>{let b=ap.find(b=>b===a);void 0!==b&&l(b)},children:(0,b.jsxs)(an.TabsList,{"aria-label":"Explain reach against",children:[(0,b.jsx)(an.TabsTrigger,{value:"applied","data-testid":"network-reach-applied",children:"Applied rules"}),(0,b.jsx)(an.TabsTrigger,{value:"draft","data-testid":"network-reach-draft",children:"Draft"})]})}),void 0===c?null:(0,b.jsx)(am.Combobox,{options:c.ships.map(a=>({value:a.id,label:a.name})),value:null,onValueChange:a=>{let b=c.ships.find(b=>b.id===a);void 0!==b&&i(b.id)},toQuery:ao.asHandle,onQueryChange:c.onQueryChange,groupLabel:"Ships",emptyText:a=>`No ship matches "${a}". Retired ships are not listed.`,leadingIcon:(0,b.jsx)(ae.Search,{}),placeholder:"Find a ship to pick","aria-label":"Find a ship to pick","data-testid":"network-reach-search"}),(0,b.jsxs)("div",{className:"relative flex flex-wrap gap-2 md:mx-auto md:block md:aspect-square md:w-full md:max-w-xl","data-testid":"network-reach-graph",children:[void 0===o?null:(0,b.jsx)("svg",{"aria-hidden":!0,viewBox:"0 0 100 100",preserveAspectRatio:"none",className:"pointer-events-none absolute inset-0 hidden size-full md:block",children:p.map(a=>(0,b.jsx)("line",{x1:o.x,y1:o.y,x2:a.x,y2:a.y,vectorEffect:"non-scaling-stroke",className:"stroke-muted-foreground",strokeWidth:1.5},a.ship.id))}),n.map(a=>(0,b.jsx)(as,{node:a,onPick:()=>{i("picked"===a.mark?void 0:a.ship.id)}},a.ship.id))]}),void 0===g?(0,b.jsx)("p",{className:"text-body",role:"status","data-testid":"network-reach-summary",children:function(a,b=a.length){let c=a.find(a=>"picked"===a.mark);if(void 0===c)return"Pick a ship to see which ships it may message.";let d=Math.max(b,a.length)-1,e=a.filter(a=>"reached"===a.mark).map(a=>a.ship.name);return a.every(a=>"picked"===a.mark||"none"===a.mark)?0===d?`${c.ship.name} is the only ship of the fleet.`:`Finding the ships ${c.ship.name} may message…`:e.length===d?`${c.ship.name} may message every other ship (${String(d)}).`:0===e.length?`${c.ship.name} may message no other ship.`:`${c.ship.name} may message ${String(e.length)} of ${String(d)} ships: ${e.join(", ")}.`}(n,d)}):(0,b.jsx)(h.InlineError,{title:"Couldn’t explain this ship’s reach",description:g,onRetry:j})]})}function as({node:a,onPick:c}){let{ship:d,mark:e}=a;return(0,b.jsx)(af.Button,{size:"sm",variant:"secondary","aria-pressed":"picked"===e,"aria-label":"none"===e?d.name:`${d.name}, ${aq[e]}`,icon:function(a){switch(a){case"picked":return(0,b.jsx)(ad,{"aria-hidden":!0});case"reached":return(0,b.jsx)(aa.Check,{"aria-hidden":!0});case"unreached":return(0,b.jsx)(_.Ban,{"aria-hidden":!0});case"none":return}}(e),"data-testid":"network-reach-ship","data-mark":e,style:{left:`${String(a.x)}%`,top:`${String(a.y)}%`},className:(0,ag.classNames)("md:absolute md:-translate-x-1/2 md:-translate-y-1/2","picked"===e&&"bg-accent ring-2 ring-ring","unreached"===e&&"opacity-45"),onClick:c,children:d.name})}var at=a.i(659613),au=a.i(771736);let av={apply:{title:"Apply the draft?",description:"Every send, read and manage is checked against the draft from now on, and the rules before it are gone.",action:"Apply draft"},discard:{title:"Discard the draft?",description:"The draft is gone; the applied rules stay as they are.",action:"Discard draft"}};function aw({draft:a,appliedVersion:c,isApplying:d,applyError:f,onApply:g,isDiscarding:i,discardError:j,onDiscard:k}){let[l,m]=(0,e.useState)(null),n=d||i;return(0,b.jsxs)("section",{"aria-labelledby":"network-rules-apply","data-testid":"network-rules-apply",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-rules-apply",className:"text-body font-semibold",children:"Apply"}),null===a?(0,b.jsx)("p",{className:"text-meta text-muted-foreground","data-testid":"network-rules-apply-state",children:"No draft: the applied rules are the ones above. Save a draft to apply it."}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-body","data-testid":"network-rules-apply-state",children:["A draft is saved. Every send, read and manage is checked against the applied rules, at version ",c,", until it is applied."]}),a.savedAgainstVersion===c?null:(0,b.jsxs)("p",{className:"text-meta text-muted-foreground","data-testid":"network-rules-apply-moved",children:["The settings moved from version ",a.savedAgainstVersion," since the draft was saved."]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(af.Button,{variant:"primary",isLoading:d,disabled:i,"data-testid":"network-rules-apply-open",onClick:()=>{m("apply")},children:"Apply draft"}),(0,b.jsx)(af.Button,{variant:"ghost",isLoading:i,disabled:d,"data-testid":"network-rules-discard-open",onClick:()=>{m("discard")},children:"Discard draft"})]})]}),void 0===f?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t apply the draft",description:f}),void 0===j?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t discard the draft",description:j}),(0,b.jsx)(at.AlertDialog,{open:null!==l,onOpenChange:a=>{a||n||m(null)},children:null===l?null:(0,b.jsxs)(at.AlertDialogContent,{"data-testid":`network-rules-${l}-dialog`,className:au.dialogSurface.phoneSheet,children:[(0,b.jsxs)(at.AlertDialogHeader,{children:[(0,b.jsx)(at.AlertDialogTitle,{children:av[l].title}),(0,b.jsx)(at.AlertDialogDescription,{children:av[l].description})]}),(0,b.jsxs)(at.AlertDialogFooter,{children:[(0,b.jsx)(at.AlertDialogClose,{render:(0,b.jsx)(af.Button,{disabled:n}),children:"Cancel"}),(0,b.jsx)(af.Button,{variant:"apply"===l?"primary":"destructive",isLoading:n,"data-testid":`network-rules-${l}-confirm`,onClick:()=>{m(null),"apply"===l?g():k()},children:av[l].action})]})]})})]})}let ax={argo:"argo",owner:"Owner",answer:"Answer",pluginRead:"Connected plugins read",meeting:"Meeting",viewerRead:"Viewer reads",installation:"Installation manages",open:"Open"};function ay(a){switch(a.rule){case"argo":return{key:a.rule,name:ax[a.rule],meaning:"argo sends to, reads and manages every ship, and every ship reaches argo.",isOn:a.isOn,turnedBy:"never"};case"owner":return{key:a.rule,name:ax[a.rule],meaning:"A ship’s owner sends to, reads and manages the ships it owns.",isOn:a.isOn,turnedBy:"never"};case"answer":return{key:a.rule,name:ax[a.rule],meaning:"A ship may always answer the sender of a message it received.",isOn:a.isOn,turnedBy:"never"};case"pluginRead":return{key:a.rule,name:ax[a.rule],meaning:"A plugin argo connected reads every ship, whatever the rules.",isOn:a.isOn,turnedBy:"never"};case"meeting":return{key:a.rule,name:ax[a.rule],meaning:"The participants of a meeting reach each other in it, whatever the rules: its owner reached each when it joined.",isOn:a.isOn,turnedBy:"never"};case"viewerRead":return{key:a.rule,name:ax[a.rule],meaning:"The viewer reads every ship.",isOn:a.isOn,turnedBy:"argo"};case"installation":return{key:a.rule,name:ax[a.rule],meaning:"The installation manages person ships and the ships they own, so a leaver is always released.",isOn:a.isOn,turnedBy:"never"};case"open":return{key:a.rule,name:ax[a.rule],meaning:"Every ship may send to, read and manage every ship.",isOn:a.isOn,turnedBy:"rules"}}}function az({changes:a,error:c,onRetry:d}){let e;return e=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read what the draft changes",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"detail",rows:3,label:"Loading what the draft changes"}):a.every(({gained:a,lost:b})=>0===a.length&&0===b.length)?(0,b.jsx)("p",{className:"text-meta text-muted-foreground","data-testid":"network-draft-changes-none",children:"The draft changes no reach."}):a.filter(({gained:a,lost:b})=>a.length+b.length>0).map(({verb:a,gained:c,lost:d})=>(0,b.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"network-draft-changes-verb",children:[(0,b.jsx)("h3",{className:"text-meta font-semibold",children:L[a]}),(0,b.jsx)(aA,{title:"Gains",rows:c,testId:"network-draft-gained"}),(0,b.jsx)(aA,{title:"Loses",rows:d,testId:"network-draft-lost"})]},a)),(0,b.jsxs)("section",{"aria-labelledby":"network-draft-changes","data-testid":"network-draft-changes",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-draft-changes",className:"text-body font-semibold",children:"What the draft changes"}),e]})}function aA({title:a,rows:c,testId:d}){return 0===c.length?null:(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsxs)("p",{className:"text-meta text-muted-foreground",children:[a," ",c.length," ",1===c.length?"pair":"pairs"]}),(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("li",{"data-testid":d,className:"flex flex-wrap items-center gap-x-2 text-body",children:[(0,b.jsx)("span",{children:a.from}),(0,b.jsx)(o.ArrowRight,{"aria-label":"to",className:"size-4 text-muted-foreground"}),(0,b.jsx)("span",{children:a.to}),(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:a.rule})]},a.key))})]})}var aB=a.i(403512),aC=a.i(951675),aD=a.i(248136),aE=a.i(387005),aF=a.i(474215),aG=a.i(819721),aH=a.i(238246),aI=a.i(860275);let aJ=(0,aG.default)(async()=>{},{loadableGenerated:{modules:[259068]},ssr:!1});function aK({label:a,picked:c,owners:d,ownerChoices:f,unknown:g,groups:h,max:i,isDisabled:j,problem:k,onAdd:l,onRemove:m,testId:n,popoverTestId:o}){let[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1),u=c.length+d.length+g.length,v=new Set(d.map(a=>R(a.term))),w=[...["*","#"].map(a=>({term:{owner:a},text:T[a]})),...f.map(a=>({term:{owner:a.shipId},text:a.name}))];return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":n,children:[(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:a}),(0,b.jsxs)("div",{className:"flex min-h-(--size-control-sm) flex-wrap items-center gap-1.5",children:[0===u?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,c.map((a,c)=>(0,b.jsxs)(e.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(X.LabelChip,{chip:a,testId:`${n}-value`,..."string"==typeof a.term?{}:{meaning:S[a.term.value]},...j?{}:{onRemove:()=>{m(a.term)}}})]},R(a.term))),d.map((a,d)=>(0,b.jsxs)(e.Fragment,{children:[0===d&&0===c.length?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(aL,{owner:a,testId:`${n}-owner`,...!0===j?{}:{onRemove:()=>{m(a.term)}}})]},R(a.term))),g.map(a=>(0,b.jsxs)("span",{"data-testid":`${n}-unknown`,title:`${R(a)}: no longer in this fleet`,className:"inline-flex h-5.5 items-center gap-1 rounded-sm border border-tone-attention-border bg-tone-attention-bg px-1.5 text-id text-tone-attention-fg [&_svg]:size-3",children:[(0,b.jsx)(p.CircleAlert,{"aria-hidden":!0}),"string"!=typeof a&&"owner"in a?"A removed owner":"A removed label",!0===j?null:(0,b.jsx)("button",{type:"button","aria-label":"string"!=typeof a&&"owner"in a?"Remove the removed owner":"Remove the removed label",onClick:()=>{m(a)},className:"-mr-1 ml-0.5 inline-flex size-4 items-center justify-center rounded-xs hover:bg-accent focus-visible:outline-2 focus-visible:outline-ring",children:(0,b.jsx)(aF.X,{"aria-hidden":!0})})]},R(a))),u>=i?null:(0,b.jsxs)(aI.Popover,{open:q,onOpenChange:r,children:[(0,b.jsx)(aI.PopoverTrigger,{render:(0,b.jsx)(af.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(aB.Plus,{}),disabled:j,"data-testid":`${n}-add`}),children:"Add label"}),(0,b.jsxs)(aI.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":o,children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:a}),(0,b.jsx)(aJ,{groups:h,pickedValueIds:c.flatMap(a=>"string"==typeof a.term?[a.term]:[]),onPick:a=>{r(!1),l(a)},terms:{picked:c.flatMap(a=>"string"==typeof a.term?[]:[a.term]),onPick:a=>{r(!1),l(a)}}}),(0,b.jsxs)("p",{className:"mt-2 flex items-center justify-between gap-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:["All must hold. * is any value, # the same as the other side.",(0,b.jsx)(aH.default,{href:"/labels",className:"font-medium text-foreground hover:underline",children:"Manage labels"})]})]})]}),u>=i?null:(0,b.jsxs)(aI.Popover,{open:s,onOpenChange:t,children:[(0,b.jsx)(aI.PopoverTrigger,{render:(0,b.jsx)(af.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(aB.Plus,{}),disabled:j,"data-testid":`${n}-owner-add`}),children:"Add owner"}),(0,b.jsxs)(aI.PopoverContent,{align:"start",sideOffset:6,className:"w-72 p-2","data-testid":`${o}-owner`,children:[(0,b.jsxs)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:[a," the owner"]}),(0,b.jsx)("ul",{className:"flex flex-col",children:w.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",disabled:v.has(R(a.term)),"data-testid":`${n}-owner-option`,onClick:()=>{t(!1),l(a.term)},className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-body hover:bg-accent focus-visible:outline-2 focus-visible:outline-ring disabled:text-muted-foreground disabled:hover:bg-transparent",children:[(0,b.jsx)(aE.UserRound,{"aria-hidden":!0,className:"size-(--size-icon) shrink-0 text-muted-foreground"}),a.text]})},R(a.term)))}),(0,b.jsx)("p",{className:"mt-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:"An owner is argo or a person’s ship. # is the same owner as the other side."})]})]})]}),void 0===k?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-tone-attention-fg","data-testid":`${n}-problem`,children:k}),0===g.length?null:(0,b.jsx)("p",{role:"alert",className:"text-meta text-tone-attention-fg",children:"A label or owner here was removed from the fleet: this side matches no ship until you remove it."})]})}function aL({owner:a,onRemove:c,testId:d}){let{owner:e}=a.term,f="*"===e||"#"===e?`${a.text}. ${T[e]}`:`${a.text}: ships it owns`;return(0,b.jsxs)("span",{role:"group","aria-label":f,title:f,"data-testid":d,className:"inline-flex h-5.5 max-w-full min-w-0 shrink-0 items-center gap-1 rounded-sm border border-border bg-secondary px-1.5 font-mono text-id whitespace-nowrap text-foreground [&_svg]:size-3 [&_svg]:shrink-0 [&_svg]:text-muted-foreground",children:[(0,b.jsx)(aE.UserRound,{"aria-hidden":!0}),(0,b.jsxs)("span",{className:"truncate",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"owner="}),(0,b.jsx)("span",{className:"font-medium",children:a.text.slice(6)})]}),void 0===c?null:(0,b.jsx)("button",{type:"button","aria-label":`Remove ${a.text}`,onClick:c,className:"-mr-1 ml-0.5 inline-flex size-4 items-center justify-center rounded-xs text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring",children:(0,b.jsx)(aF.X,{"aria-hidden":!0})})]})}let aM=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}],aN=()=>crypto.randomUUID();function aO({rules:a,context:c,limits:d,isSaving:f,saveError:g,savedNote:i,onSave:j}){let[k,l]=(0,e.useState)(()=>M(a,aN)),m=(0,K.filterGroupsOf)(c),n=c.ships.filter(a=>("operator"===a.kind||"person"===a.kind)&&"retired"!==a.status).map(a=>({shipId:a.id,name:a.name})),p=JSON.stringify(N(k))!==JSON.stringify(a);return(0,b.jsxs)("section",{"aria-labelledby":"network-rules","data-testid":"network-rules",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-rules",className:"text-body font-semibold",children:"Rules"}),"all-to-all"===k.kind?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"network-rules-state",children:"No rules: every ship may send to, read and manage every ship."}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"With rules, a ship may send to, read or manage another only when a rule of that verb or a built-in rule allows it."}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(af.Button,{variant:p?"secondary":"primary",icon:(0,b.jsx)(aB.Plus,{"aria-hidden":!0}),disabled:f,"data-testid":"network-rules-on",onClick:()=>{l(O(k,!0))},children:"Set rules"}),p?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(af.Button,{variant:"primary",isLoading:f,"data-testid":"network-rules-save",onClick:()=>{j(null)},children:"Save draft"}),(0,b.jsx)(af.Button,{disabled:f,"data-testid":"network-rules-discard",onClick:()=>{l(M(a,aN))},children:"Discard changes"})]}):null]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"network-rules-state",children:0===k.rules.length?"No rule allows anything yet: once saved, only the built-in rules hold.":"A ship may send to, read or manage another only when a rule of that verb or a built-in rule allows it."}),0===k.rules.length?null:(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:k.rules.map((a,e)=>(0,b.jsxs)("li",{"data-testid":"network-rule",className:"flex flex-col gap-2 rounded-md border border-border p-3 sm:flex-row sm:items-start sm:gap-3",children:[aM.map(({side:g,label:h})=>{let i,j=U(a[g],c);return(0,b.jsxs)("div",{className:"flex min-w-0 grow basis-0 items-start gap-3",children:["to"===g?(0,b.jsxs)("div",{className:"flex shrink-0 flex-col gap-1",children:[(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"Verb"}),(0,b.jsxs)(aD.Select,{items:L,value:a.verb,disabled:f,onValueChange:b=>{var c;y.some(a=>a===b)&&l(P(k,{key:(c={rule:a.key,verb:b}).rule,change:a=>({...a,verb:c.verb})}))},children:[(0,b.jsx)(aD.SelectTrigger,{"aria-label":`Verb of rule ${String(e+1)}`,"data-testid":"network-rule-verb",size:"sm",children:(0,b.jsx)(aD.SelectValue,{})}),(0,b.jsx)(aD.SelectContent,{children:y.map(a=>(0,b.jsx)(aD.SelectItem,{value:a,children:L[a]},a))})]})]}):null,"to"===g?(0,b.jsx)(o.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)(aK,{label:h,picked:j.chips,owners:j.owners,ownerChoices:n,unknown:j.unknown,groups:m,max:d.selectorMax,isDisabled:f,...void 0===(i=function(a,b){let[c]=V(a,b.side);if(void 0===c)return W(a,b.side)?"owner=# needs owner=# on the other side: # matches the same owner there.":void 0;let d=b.context.labels.find(a=>a.id===c.labelId)?.key??c.labelId;return`${d}=# needs ${d}=# on the other side: # matches the same value there.`}(a,{side:g,context:c}))?{}:{problem:i},testId:`network-rule-${g}`,popoverTestId:"network-rule-popover",onAdd:b=>{var c;l(P(k,{key:(c={rule:a.key,side:g,term:b,limits:d}).rule,change:a=>{let b=a[c.side];return b.some(a=>Q(a,c.term))||b.length>=c.limits.selectorMax?a:{...a,[c.side]:[...b,c.term]}}}))},onRemove:b=>{var c;l(P(k,{key:(c={rule:a.key,side:g,term:b}).rule,change:a=>({...a,[c.side]:a[c.side].filter(a=>!Q(a,c.term))})}))}})]},g)}),(0,b.jsx)(af.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(aC.Trash2,{"aria-hidden":!0}),disabled:f,"aria-label":`Remove rule ${String(e+1)}`,"data-testid":"network-rule-remove",onClick:()=>{var b;l((b=a.key,"all-to-all"===k.kind?k:{kind:"rules",rules:k.rules.filter(a=>a.key!==b)}))}})]},a.key))}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[k.rules.length>=d.rulesMax?null:(0,b.jsx)(af.Button,{size:"sm",icon:(0,b.jsx)(aB.Plus,{"aria-hidden":!0}),disabled:f,"data-testid":"network-rules-add",onClick:()=>{var a;l((a={newKey:aN,limits:d},"all-to-all"===k.kind||k.rules.length>=a.limits.rulesMax?k:{kind:"rules",rules:[...k.rules,{key:a.newKey(),verb:"send",from:[],to:[]}]}))},children:"Add rule"}),(0,b.jsxs)("span",{className:"text-meta text-muted-foreground tabular-nums","data-testid":"network-rules-count",children:[k.rules.length," of ",d.rulesMax," rules"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-t border-border pt-3",children:[(0,b.jsx)(af.Button,{variant:"primary",isLoading:f,disabled:!p||"rules"===k.kind&&k.rules.some(a=>V(a,"from").length+V(a,"to").length>0||W(a,"from")||W(a,"to")),"data-testid":"network-rules-save",onClick:()=>{j(N(k))},children:"Save draft"}),p?(0,b.jsx)(af.Button,{disabled:f,"data-testid":"network-rules-discard",onClick:()=>{l(M(a,aN))},children:"Discard changes"}):null,(0,b.jsx)(af.Button,{variant:"ghost",className:"ml-auto",disabled:f,"data-testid":"network-rules-off",onClick:()=>{l(O(k,!1))},children:"Remove all rules"})]})]}),void 0===g?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t save the rules",description:g}),void 0===i||p?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-muted-foreground","data-testid":"network-rules-note",children:i})]})}var aP=a.i(597024);let aQ={name:"file-up",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]]};aQ.node;let aR=(0,ab.default)(aQ);var aS=a.i(145098),aT=a.i(172309),aU=a.i(132865),aV=a.i(872872),aW=a.i(531429);function aX(a){return"label"in a?`${a.label}=${a.value}`:`owner=${a.owner}`}function aY(a){return"ship"===a.kind?`ship:${a.name}`:`${a.kind}:${a.key}`}var aZ=a.i(37809);function a$(a){switch(a.kind){case"definer":return`${a.key} is defined by ${a.fleetDefiner} here, by ${a.fileDefiner} in the file`;case"values":return`${a.key} has ${a.fleetValues.join(", ")} here; the file gives ${a.fileValues.join(", ")}`;case"ship":return`No active ship is named ${a.name}`}}function a_({difference:a,choice:c,ships:d,onShipQueryChange:e,isDisabled:f,onChange:g}){let h=aY(a),i=`network-import-difference-${h.replace(":","-")}`;return(0,b.jsxs)("fieldset",{className:"flex flex-col gap-2 rounded-lg border border-border bg-card p-3","data-testid":"network-import-difference",children:[(0,b.jsx)("legend",{className:"sr-only",children:a$(a)}),(0,b.jsx)("p",{className:"text-body font-medium","aria-hidden":!0,children:a$(a)}),(0,b.jsx)(aZ.RadioGroup,{value:c?.way,disabled:f,onValueChange:b=>{g({difference:a,way:b})},children:a.ways.map(b=>({way:b,text:function(a,b){switch(a.kind){case"definer":return"useExisting"===b?`Use the label ${a.key} as it is, defined by ${a.fleetDefiner}`:`Drop the rules on ${a.key}`;case"values":return"useExisting"===b?`Use the label ${a.key} as it is: it has every value the rules name`:`Drop the rules naming ${a.missingValues.map(b=>`${a.key}=${b}`).join(", ")}`;case"ship":return"pickShip"===b?`Pick an active ship for ${a.name}`:`Drop the rules naming owner=${a.name}`}}(a,b)})).map(({way:a,text:c})=>(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(aZ.RadioGroupItem,{id:`${i}-${a}`,value:a,className:"mt-0.5","data-testid":`network-import-way-${a}`}),(0,b.jsx)("label",{htmlFor:`${i}-${a}`,className:"min-w-0 grow cursor-pointer text-body",children:c})]},a))}),c?.way==="pickShip"?(0,b.jsx)(am.Combobox,{options:d.map(a=>({value:a.id,label:a.name})),value:c.shipId??null,onValueChange:b=>{let c=d.find(a=>a.id===b);g({difference:a,way:"pickShip",...void 0===c?{}:{shipId:c.id}})},onQueryChange:e,groupLabel:"Active ships",placeholder:"Type a ship name","aria-label":`The ship for ${"ship"===a.kind?a.name:""}`,"data-testid":"network-import-pick-ship"}):null]})}let a0=["Attach or paste","Check","Overview","Import"];function a1({current:a}){return(0,b.jsx)("ol",{className:"flex flex-wrap gap-x-3 gap-y-1 text-meta","aria-label":"Import steps","data-testid":"network-import-steps",children:a0.map((c,d)=>(0,b.jsxs)("li",{"aria-current":d===a?"step":void 0,className:d===a?"font-semibold text-foreground":"text-muted-foreground",children:[d+1,". ",c]},c))})}function a2(a){let c,d,{checked:f,isChecking:g,checkError:i,onCheck:j,onFileChange:k,ships:l,onShipQueryChange:m,isImporting:n,importError:o,onImport:p}=a,[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)([]),u=l.find(a=>a.isOperator),[v,w]=(0,e.useState)(u?.id),[x,y]=(0,e.useState)(!1),z=g||n,A=a=>{r(a),t([]),y(!1),k()};if(void 0===f)return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a1,{current:+!!g}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(aS.Label,{htmlFor:"network-import-attach",children:"Attach the file"}),(0,b.jsx)("input",{id:"network-import-attach",type:"file",accept:"application/json,.json",disabled:z,"data-testid":"network-import-attach",className:"text-body file:mr-3 file:rounded-md file:border file:border-border file:bg-card file:px-3 file:py-1.5",onChange:a=>{let b=a.target.files?.[0];void 0!==b&&b.text().then(A)}})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(aS.Label,{htmlFor:"network-import-paste",children:"Or paste it"}),(0,b.jsx)(aT.Textarea,{id:"network-import-paste",isMono:!0,rows:8,value:q,disabled:z,placeholder:'{ "format": "aeolus.network-rules", ... }',"data-testid":"network-import-paste",onChange:a=>{A(a.target.value)}})]}),void 0===i?null:(0,b.jsx)(h.InlineError,{title:"The file doesn’t check",description:`${i}. Nothing changed: fix the file and check it again.`}),(0,b.jsxs)(aU.DialogFooter,{children:[(0,b.jsx)(aU.DialogClose,{render:(0,b.jsx)(af.Button,{type:"button",disabled:z}),children:"Cancel"}),(0,b.jsx)(af.Button,{variant:"primary",isLoading:g,disabled:""===q.trim()||z,"data-testid":"network-import-check",onClick:()=>{j(q)},children:g?"Checking…":"Check file"})]})]});let{file:B,newLabels:C,differences:D}=f,E=B.rules??[],F=D.every(a=>{let b=s.find(b=>aY(b.difference)===aY(a));return void 0!==b&&("pickShip"!==b.way||void 0!==b.shipId)}),G=l.find(a=>a.id===v),H=F&&(0===C.length||void 0!==G)&&!z,I=s.flatMap(a=>(function(a){let{difference:b,way:c}=a;return"ship"===b.kind?"pickShip"===c?void 0===a.shipId?void 0:{kind:"ship",name:b.name,way:c,shipId:a.shipId}:{kind:"ship",name:b.name,way:"dropRules"}:{kind:b.kind,key:b.key,way:"useExisting"===c?"useExisting":"dropRules"}})(a)??[]);return x?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a1,{current:3}),(0,b.jsx)(aU.DialogHeader,{children:(0,b.jsx)(aU.DialogTitle,{children:"Import into the draft?"})}),(0,b.jsxs)("ul",{className:"flex list-disc flex-col gap-1 pl-5 text-body","data-testid":"network-import-consequences",children:[(0,b.jsx)("li",{children:null===B.rules?"The draft becomes all-to-all, every ship reaching every ship.":s.some(a=>"dropRules"===a.way)?`The draft is replaced by the file’s ${String(E.length)} rules, less the ones you chose to drop.`:`The draft is replaced by the file’s ${String(E.length)} rules.`}),0===C.length?null:(0,b.jsxs)("li",{children:[C.join(", ")," ",1===C.length?"is":"are"," defined for ",G?.name??"argo","."]}),(0,b.jsx)("li",{children:"Nothing is in force until you apply the draft."})]}),void 0===o?null:(0,b.jsx)(h.InlineError,{variant:"section",title:"Couldn’t import the file",description:`${o}. Nothing was written.`,onRetry:()=>{y(!1),j(q)}}),(0,b.jsxs)(aU.DialogFooter,{children:[(0,b.jsx)(af.Button,{type:"button",disabled:z,onClick:()=>{y(!1)},children:"Back"}),(0,b.jsx)(af.Button,{variant:"primary",isLoading:n,disabled:z,"data-testid":"network-import-confirm",onClick:()=>{p({file:q,resolutions:I,...0===C.length||void 0===G||G.isOperator?{}:{definerShipId:G.id}})},children:n?"Importing…":"Import into the draft"})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a1,{current:2}),(0,b.jsxs)("p",{className:"flex items-start gap-2 text-body",role:"status","data-testid":"network-import-checked",children:[(0,b.jsx)(aP.CircleCheck,{"aria-hidden":!0,className:"mt-0.5 size-(--size-icon-sm) shrink-0 text-tone-ok-fg"}),(0,b.jsx)("span",{children:(c=null===B.rules?"all-to-all, no rules":(0,aW.counted)(B.rules.length,{one:"rule",many:"rules"}),d=(0,aW.counted)(B.labels.length,{one:"label",many:"labels"}),`The file checks: ${c} and ${d}, from ${B.fleet.name} at rules version ${String(B.rulesVersion)}, exported ${(0,aV.shortDateTime)(new Date(B.exportedAt))}.`)})]}),0===D.length?null:(0,b.jsxs)("section",{"aria-labelledby":"network-import-differences",className:"flex flex-col gap-2","data-testid":"network-import-differences",children:[(0,b.jsx)("h3",{id:"network-import-differences",className:"text-body font-semibold",children:1===D.length?"1 difference to resolve":`${String(D.length)} differences to resolve`}),D.map(a=>{let c=aY(a);return(0,b.jsx)(a_,{difference:a,choice:s.find(a=>aY(a.difference)===c),ships:l,onShipQueryChange:m,isDisabled:z,onChange:a=>{t([...s.filter(a=>aY(a.difference)!==c),a])}},c)})]}),0===C.length?null:(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)(aS.Label,{htmlFor:"network-import-definer",children:["Define ",C.join(", ")," for"]}),(0,b.jsx)(am.Combobox,{id:"network-import-definer",options:l.map(a=>({value:a.id,label:a.name})),value:v??null,onValueChange:a=>{w(l.find(b=>b.id===a)?.id)},onQueryChange:m,groupLabel:"Active ships",placeholder:"Type a ship name","data-testid":"network-import-definer"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"argo never retires, so its labels never go. Another ship must be within your manage reach."})]}),(0,b.jsxs)("section",{"aria-labelledby":"network-import-rules",className:"flex flex-col gap-1.5",children:[(0,b.jsx)("h3",{id:"network-import-rules",className:"text-body font-semibold",children:"Rules in the file"}),0===E.length?(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:null===B.rules?"None: all-to-all.":"None: only the built-in and declared rules."}):(0,b.jsx)("ol",{className:"flex max-h-64 flex-col gap-1 overflow-y-auto font-mono text-code","data-testid":"network-import-rules",children:E.map((a,b)=>{let c,{verb:d,from:e,to:f}=(c=a=>0===a.length?["every ship"]:a.map(aX),{verb:a.verb,from:c(a.from),to:c(a.to)});return{place:b+1,line:`${d}: ${e.join(" ")} → ${f.join(" ")}`}}).map(({place:a,line:c})=>(0,b.jsx)("li",{children:c},a))})]}),(0,b.jsxs)(aU.DialogFooter,{className:"items-center",children:[(0,b.jsx)("span",{className:"mr-auto text-meta text-muted-foreground",children:F?null:"Resolve every difference to import."}),(0,b.jsx)(af.Button,{type:"button",disabled:z,onClick:()=>{A(q)},children:"Back"}),(0,b.jsx)(af.Button,{variant:"primary",disabled:!H,"data-testid":"network-import-open-confirm",onClick:()=>{y(!0)},children:"Import…"})]})]})}function a3(a){let{isOpen:c,onOpenChange:d,isChecking:e,isImporting:f}=a;return(0,b.jsx)(aU.Dialog,{open:c,onOpenChange:a=>{e||f||d(a)},children:(0,b.jsxs)(aU.DialogContent,{size:"md","data-testid":"network-import-dialog",className:au.dialogSurface.phoneFullScreen,children:[(0,b.jsxs)(aU.DialogHeader,{children:[(0,b.jsxs)(aU.DialogTitle,{children:[(0,b.jsx)(aR,{"aria-hidden":!0,className:"mr-2 inline size-(--size-icon-sm)"}),"Import network rules"]}),(0,b.jsx)(aU.DialogDescription,{children:"Rules exported from this fleet or another land in the draft; nothing is in force until you apply it."})]}),c?(0,b.jsx)(a2,{...a}):null]})})}let a4={name:"file-down",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]};a4.node;let a5=(0,ab.default)(a4);function a6({isExporting:a,exportError:c,onExport:d,exported:e,canImport:f,onImport:g}){return(0,b.jsxs)("section",{"aria-labelledby":"network-rules-file","data-testid":"network-rules-file",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-rules-file",className:"text-body font-semibold",children:"Export and import"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Export writes the applied rules and the labels they use as one file, by name. Import brings a file from this fleet or another into the draft."}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(af.Button,{icon:(0,b.jsx)(a5,{}),isLoading:a,"data-testid":"network-rules-export",onClick:d,children:a?"Exporting…":"Export"}),f?(0,b.jsx)(af.Button,{icon:(0,b.jsx)(aR,{}),disabled:a,"data-testid":"network-rules-import",onClick:g,children:"Import…"}):null]}),void 0===e||0===e.leftOut.length?null:(0,b.jsxs)("div",{role:"status","data-testid":"network-rules-left-out",className:"flex flex-col gap-1 rounded-lg border border-tone-waiting-border bg-tone-waiting-bg px-3.5 py-2.5 text-meta text-tone-waiting-fg",children:[(0,b.jsxs)("p",{children:[e.name," leaves out ",1===e.leftOut.length?"1 applied rule":`${String(e.leftOut.length)} applied rules`,", as each matches no ship:"]}),(0,b.jsx)("ul",{className:"list-disc pl-5",children:e.leftOut.map(({rule:a,reason:c})=>(0,b.jsxs)("li",{children:["rule ",a," ",c]},a))})]}),void 0===c?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t export the rules",description:`${c}. Nothing was downloaded.`})]})}function a7(a){switch(a.kind){case"ship":return a.name;case"account":return`Account ${a.accountId}`;case"installation":return"The installation"}}function a8({refusals:a,error:c,onRetry:d,more:e,context:f,now:j}){let k;return k=void 0!==c?(0,b.jsx)(h.InlineError,{title:"Couldn’t read the refusals",description:c,onRetry:d}):void 0===a?(0,b.jsx)(i.LoadingSkeleton,{variant:"list",rows:3,label:"Loading the refusals"}):0!==a.length||e?(0,b.jsx)("ol",{className:"flex flex-col gap-2","data-testid":"network-refusals-list",children:a.map(a=>(0,b.jsx)(a9,{refusal:a,context:f,now:j},a.id))}):(0,b.jsx)(g.EmptyState,{variant:"section",title:"No send has been refused."}),(0,b.jsxs)("section",{"aria-labelledby":"network-refusals","data-testid":"network-refusals",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-refusals",className:"text-body font-semibold",children:"Refusals"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"The sends the rules refused, newest first, with both ships’ labels as they were then. The sender was told only that its send was refused."}),k,e]})}function a9({refusal:a,context:c,now:d}){let e=new Date(a.at),{recipient:f}=a,g="ship"===f.kind?[f.ship]:f.ships;return(0,b.jsxs)("li",{"data-testid":"network-refusal",className:"flex flex-col gap-2 rounded-md border border-border px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-0.5",children:[(0,b.jsx)("p",{className:"text-body font-medium",children:function(a){let{sender:b,recipient:c}=a,d=`${a7(b)} tried to ${"ship"===b.kind?"message":"reach"}`;switch(c.kind){case"ship":return`${d} ${c.ship.name}.`;case"type":return`${d} the type ${c.type}: ${(0,K.listed)(c.ships.map(a=>a.name))}.`}}(a)}),(0,b.jsx)("time",{dateTime:a.at,title:(0,aV.fullDateTime)(e),className:"text-meta text-muted-foreground tabular-nums",children:(0,aV.relativeTime)(e,d)})]}),(0,b.jsxs)("dl",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(ba,{side:"From",ship:{name:a7(a.sender),labels:"installation"===a.sender.kind?[]:a.sender.labels},context:c}),g.map(a=>(0,b.jsx)(ba,{side:"To",ship:a,context:c},a.id))]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:`Refused by network settings version ${String(a.settingsVersion)}.`})]})}function ba({side:a,ship:c,context:d}){let e=(0,K.chipsOf)(c,d);return(0,b.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,b.jsxs)("dt",{className:"text-meta text-muted-foreground",children:[a," ",(0,b.jsx)("span",{className:"font-medium text-foreground",children:c.name})]}),(0,b.jsx)("dd",{className:"flex min-w-0 flex-wrap items-center gap-1",children:0===e.length?(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"No labels"}):e.map(a=>(0,b.jsx)(X.LabelChip,{chip:a,testId:"network-refusal-label"},a.valueId))})]})}var bb=a.i(591003),bc=a.i(38023),bd=a.i(565563),be=a.i(301851),bf=a.i(190146),bg=a.i(447582),bh=a.i(77458),bi=a.i(433217),bj=a.i(514499),bk=a.i(815393),bl=a.i(281418),bm=a.i(167336),bn=a.i(210023),bo=a.i(370025),bp=a.i(937927);function bq(){let a=(0,bj.useTRPC)(),b=(0,bp.useQueryClient)();return async()=>{await Promise.all([b.invalidateQueries({queryKey:a.fleet.networkRules.queryKey()}),b.invalidateQueries({queryKey:a.fleet.networkRulesDraftChanges.queryKey()}),b.invalidateQueries({queryKey:a.fleet.explainReach.pathKey()})])}}var br=a.i(804049),bs=a.i(442871);function bt(a,b="applied"){let c=new URLSearchParams([...void 0===a?[]:[["reach",a]],..."draft"===b?[["against","draft"]]:[]]).toString();return""===c?"/network":`/network?${c}`}var bu=a.i(726112),bv=a.i(328422),bw=a.i(770534),bx=a.i(110572);a.s(["NetworkPageFor",0,function({pickedShipId:a,against:j}){var k,l,m,o;let p,q,r,s,t,u,v,x,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R=(0,d.useRouter)(),S=(0,br.useNow)(),T=(0,bc.useConsoleFrame)(),U=(0,bn.useNeedsAttention)(),V=(0,bm.useLiveFleet)(),W=(0,bd.useAccess)(),X=W.canEditNetwork,Y=(q=(0,bj.useTRPC)(),(0,bi.useQuery)(q.fleet.networkRules.queryOptions(void 0,{enabled:X}))),$=void 0!==Y.data&&null!==Y.data.draft,_=$?j:"applied",aa=(k=X&&$,r=(0,bj.useTRPC)(),(0,bi.useQuery)(r.fleet.networkRulesDraftChanges.queryOptions(void 0,{enabled:k}))),ab=(0,bf.useLabelContext)(),ac=(s=(0,bj.useTRPC)(),t=(0,bi.useQuery)(s.fleet.list.queryOptions({shipKind:["operator","person"],limit:bh.PAGE_SIZE_MAX},{enabled:X})),t.data?.items.filter(bg.isInReadReach)),ad=(l=X?a:void 0,u=(0,bj.useTRPC)(),(0,bi.useQuery)({...u.fleet.explainReach.queryOptions(void 0===l?bs.skipToken:{fromShipId:l,against:_}),select:ah})),ae=(v=(0,bj.useTRPC)(),(0,bv.pagedListOf)((0,bu.useInfiniteQuery)(v.fleet.reachRefusals.infiniteQueryOptions({limit:bv.CONSOLE_PAGE_SIZE},{enabled:X,getNextPageParam:bv.nextCursorOf})))),af=(x=(0,bj.useTRPC)(),(0,bi.useQuery)(x.fleet.declaredNetworkRules.queryOptions(void 0,{enabled:X}))),ag=function(a){let b=a.rules.flatMap(a=>[...a.from,...a.to].flatMap(a=>w(a)&&"*"!==a.owner&&"#"!==a.owner?[a.owner]:[])),c=a.declarers.flatMap(a=>"ship"===a.kind?[a.shipId]:[]),{draftChanges:d}=a;return[...new Set([...b,...c,...void 0===d?[]:y.flatMap(a=>[...d[a].gained,...d[a].lost]).flatMap(a=>[a.fromShipId,a.toShipId]),...void 0===a.pickedShipId?[]:[a.pickedShipId,...a.reachableShipIds??[]]])]}({rules:[...Y.data?.applied.rules??[],...Y.data?.draft?.rules??[]],declarers:af.data?.map(a=>a.declarer)??[],...void 0===aa.data?{}:{draftChanges:aa.data},...void 0===a?{}:{pickedShipId:a},...void 0===ad.data?{}:{reachableShipIds:ad.data}}),ai=(0,bk.useListedShips)(ag),aj=(0,bk.useListedShipNames)(ag),al=[...ai?.values()??[]],am=(z=(0,bj.useTRPC)(),A=(0,bi.useQuery)(z.fleet.shipCounts.queryOptions()),A.data?.filter(a=>"viewer"!==a.kind).reduce((a,b)=>a+b.active,0)),[an,ao]=(0,e.useState)(""),ap=(0,bl.useShipSearch)("",X)??[],aq=(0,bl.useShipSearch)(an,X)??[],as=ak([...new Map([...ap.slice(0,1),...aq].map(a=>[a.id,a])).values()]),at=(B=(0,bj.useTRPC)(),(0,bi.useQuery)(B.fleet.builtInRules.queryOptions(void 0,{enabled:X}))),au=(C=(0,bj.useTRPC)(),D=(0,bp.useQueryClient)(),{setViewerRead:a=>{E.mutate({rule:"viewerRead",isOn:a})},isPending:(E=(0,bo.useMutation)(C.fleet.setBuiltInRule.mutationOptions({onSuccess:()=>D.invalidateQueries({queryKey:C.fleet.builtInRules.queryKey()})}))).isPending,error:E.error?.message}),av=(F=(0,bj.useTRPC)(),G=bq(),(0,bo.useMutation)(F.fleet.saveNetworkRulesDraft.mutationOptions({onSuccess:G}))),aA=(H=(0,bj.useTRPC)(),I=(0,bp.useQueryClient)(),J=bq(),(0,bo.useMutation)(H.fleet.applyNetworkRules.mutationOptions({onSuccess:async()=>{await Promise.all([J(),I.invalidateQueries({queryKey:H.fleet.builtInRules.queryKey()})])}}))),aB=(K=(0,bj.useTRPC)(),L=bq(),(0,bo.useMutation)(K.fleet.discardNetworkRulesDraft.mutationOptions({onSuccess:L}))),aC=(M=(0,bj.useTRPCClient)(),(0,bo.useMutation)({mutationFn:async()=>{var a;let b,c,d,{file:e,leftOut:f}=await M.fleet.exportNetworkRules.query(),g=(b=e.fleet.name.toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-|-$/g,""),`network-rules-${b}-v${String(e.rulesVersion)}.json`);return a=`${JSON.stringify(e,null,2)}
|
|
2
|
+
`,c=URL.createObjectURL(new Blob([a],{type:"application/json"})),(d=document.createElement("a")).href=c,d.download=g,d.click(),URL.revokeObjectURL(c),{name:g,leftOut:f}}})),aD=(N=(0,bj.useTRPC)(),(0,bo.useMutation)(N.fleet.checkNetworkRulesFile.mutationOptions())),aE=(O=(0,bj.useTRPC)(),P=(0,bp.useQueryClient)(),Q=bq(),(0,bo.useMutation)(O.fleet.importNetworkRules.mutationOptions({onSuccess:async()=>{await Promise.all([Q(),P.invalidateQueries({queryKey:O.fleet.labels.queryKey()})])}}))),[aF,aG]=(0,e.useState)(!1),aH=()=>{aD.reset(),aE.reset()},{networkRulesMax:aI,shipLabelsMax:aJ}=(0,be.useConsoleConstants)();if((0,bx.useSignInWhenSessionEnds)([U.error,V.error]),X)if(Y.isError)p=(0,b.jsx)(h.InlineError,{title:"Couldn’t read the network",description:Y.error.message,onRetry:()=>{Y.refetch()}});else if(void 0===Y.data||void 0===ab||void 0===ac)p=(0,b.jsx)(i.LoadingSkeleton,{variant:"detail",rows:4,label:"Loading the network"});else{let c,d,e,g={...ab,ships:[...al,...ac]};p=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n,{rows:void 0===at.data?void 0:at.data.map(ay),error:at.error?.message,onRetry:()=>{at.refetch()},isTurning:au.isPending,turnError:au.error,onViewerReadChange:au.setViewerRead}),(0,b.jsx)(aO,{rules:(Y.data.draft??Y.data.applied).rules,context:g,limits:{rulesMax:aI,selectorMax:aJ},isSaving:av.isPending,saveError:av.error?.message,savedNote:void 0===av.data?void 0:"Draft saved. Nothing changes until it is applied.",onSave:a=>{av.mutate({rules:a})}},JSON.stringify(Y.data.draft??Y.data.applied)),null===Y.data.draft?null:(0,b.jsx)(az,{changes:void 0===aa.data?void 0:(m=aa.data,c=new Map(al.map(a=>[a.id,a.name])),d=a=>a.map(({fromShipId:a,toShipId:b,rule:d})=>({key:`${a}>${b}`,from:c.get(a)??a,to:c.get(b)??b,rule:function(a,b){if("builtIn"in a)return`Built-in: ${ax[a.builtIn]}`;if("rule"in a)return`Rule ${String(a.rule+1)}`;let c="installation"===a.declared.kind?"the installation":b.get(a.declared.shipId)??a.declared.shipId;return`Declared by ${c}, rule ${String(a.index+1)}`}(d,c)})).sort((a,b)=>a.from.localeCompare(b.from)||a.to.localeCompare(b.to)),y.map(a=>({verb:a,gained:d(m[a].gained),lost:d(m[a].lost)}))),error:aa.error?.message,onRetry:()=>{aa.refetch()}}),(0,b.jsx)(aw,{draft:Y.data.draft,appliedVersion:Y.data.applied.version,isApplying:aA.isPending,applyError:aA.error?.message,onApply:()=>{aA.mutate({version:Y.data.applied.version})},isDiscarding:aB.isPending,discardError:aB.error?.message,onDiscard:()=>{aB.mutate()}}),(0,b.jsx)(a6,{isExporting:aC.isPending,exportError:aC.error?.message,exported:aC.data,onExport:()=>{aC.mutate(void 0,{onSuccess:({name:a,leftOut:b})=>{(0,f.showToast)({title:"Rules exported",description:0===b.length?`Saved as ${a}.`:`Saved as ${a}, leaving out ${String(b.length)}: see Export and import.`,tone:"success"})}})},canImport:W.canDefineLabels,onImport:()=>{aH(),aG(!0)}}),(0,b.jsx)(a3,{isOpen:aF,onOpenChange:a=>{aG(a),a||aH()},checked:aD.data,isChecking:aD.isPending,checkError:aD.error?.message,onCheck:a=>{aE.reset(),aD.mutate({file:a})},onFileChange:aH,ships:as,onShipQueryChange:ao,isImporting:aE.isPending,importError:aE.error?.message,onImport:a=>{aE.mutate(a,{onSuccess:({definedLabels:a})=>{aG(!1),aH(),(0,f.showToast)({title:"Imported into the draft",description:`${0===a.length?"":`Defined ${a.join(", ")}. `}Look at what the draft changes, then apply it.`,tone:"success"})}})}}),(0,b.jsx)(Z,{declared:void 0===af.data?void 0:(o=af.data,e=new Map([...aj??[]].map(([a,b])=>({id:a,name:b})).map(a=>[a.id,a.name])),o.filter(({rules:a})=>a.length>0).map(({declarer:a,rules:b})=>"installation"===a.kind?{declarerId:"installation",declaredBy:"the installation",rules:b}:{declarerId:a.shipId,declaredBy:e.get(a.shipId)??a.shipId,rules:b}).sort((a,b)=>a.declaredBy.localeCompare(b.declaredBy))),error:af.error?.message,onRetry:()=>{af.refetch()},context:g}),(0,b.jsx)(ar,{ships:ak(al),search:{ships:as,onQueryChange:ao},...void 0===am?{}:{sailingShipCount:am},pickedShipId:a,reachableShipIds:ad.data,reachError:ad.error?.message,onPick:a=>{R.replace(bt(a,_),{scroll:!1})},against:_,...$?{onAgainstChange:b=>{R.replace(bt(a,b),{scroll:!1})}}:{},onRetry:()=>{ad.refetch()}}),(0,b.jsx)(a8,{refusals:ae.items,error:ae.isFailed?ae.error?.message:void 0,onRetry:ae.retry,more:ae.hasMore?(0,b.jsx)(bw.LoadMore,{what:"older refusals",isLoading:ae.isLoadingMore,isFailed:ae.isLoadMoreFailed,onLoad:ae.loadMore,area:"network-refusals"}):null,context:g,now:S})]})}else p=(0,b.jsx)(g.EmptyState,{icon:(0,b.jsx)(c.Network,{"aria-hidden":!0}),title:"Only a session holding fleet:network sees the network rules"});return(0,b.jsx)(bb.ListPage,{...T,title:"Network",description:"Who may send to, read or manage whom. The fleet checks the applied rules on every send; a draft changes nothing until it is applied.",live:V.live,children:p})}],271915)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=packages_console_app_%28console%29_network_network-page_tsx_0qc3h-9._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[259446,a=>{"use strict";var b=a.i(187924),c=a.i(126766),d=a.i(31247),e=a.i(238246),f=a.i(50944),g=a.i(572131),h=a.i(831856),i=a.i(86002),j=a.i(256987),k=a.i(679520),l=a.i(188931),m=a.i(483556),n=a.i(233809);let o={ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg"};function p({label:a,shortLabel:c,value:d,detail:f,href:g,icon:h,tone:i,testId:j}){return(0,b.jsxs)(e.default,{href:g,"data-testid":j,className:"flex min-w-0 flex-col gap-2 rounded-lg border border-border bg-card px-4.5 py-4 shadow-sm transition-colors duration-(--duration-fast) hover:bg-accent max-sm:gap-1.5 max-sm:rounded-xl max-sm:px-3.5 max-sm:py-3",children:[(0,b.jsxs)("span",{className:"flex items-center justify-between gap-2 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)("span",{className:"max-sm:hidden",children:a}),(0,b.jsx)("span",{className:"sm:hidden",children:c??a}),(0,b.jsx)("span",{className:(0,m.classNames)("flex size-6.5 shrink-0 items-center justify-center rounded-md border max-sm:size-5.5",o[i]),children:(0,b.jsx)(h,{"aria-hidden":!0,className:"size-3.5"})})]}),void 0===d?(0,b.jsx)(n.Skeleton,{className:"h-7 w-10 max-sm:h-6"}):(0,b.jsx)("span",{className:"text-[28px] leading-none font-semibold tracking-tight tabular-nums text-foreground max-sm:text-2xl",children:d}),void 0===f?(0,b.jsx)(n.Skeleton,{className:"h-4 w-32"}):(0,b.jsx)("span",{className:"truncate text-meta text-muted-foreground",children:f})]})}var q=a.i(534564),r=a.i(804049),s=a.i(872872),t=a.i(134191);function u(a){return a.find(a=>"agent"===a.kind)}function v(){var a;let c,d,e=(0,t.useShipCounts)(),f=(0,q.useStuckCount)().data,g=(0,r.useNow)(),h=e.data&&(c=u((a={counts:e.data,now:g}).counts),d=c?.longestWait??null,{activeCount:c?.active??0,crewedCount:c?.crewed??0,awaitingCount:c?.awaitingCrew??0,longestWait:null===d?void 0:{name:d.name,wait:(0,s.duration)(new Date(d.awaitingCrewSince),a.now)}});return h?.activeCount===0?null:(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-4 max-sm:grid-cols-2 max-sm:gap-2.5","data-testid":"overview-metrics",children:[(0,b.jsx)(p,{label:"Ships crewed",shortLabel:"Crewed",value:h?.crewedCount,detail:h&&`of ${String(h.activeCount)} active ships`,href:"/?status=crewed",icon:l.UserCheck,tone:"ok",testId:"overview-crewed"}),(0,b.jsx)(p,{label:"Awaiting crew",value:h?.awaitingCount,detail:h&&(h.longestWait?`Longest wait: ${h.longestWait.name}, ${h.longestWait.wait}`:"Every active ship is crewed"),href:"/?status=awaitingCrew",icon:j.CircleDashed,tone:"waiting",testId:"overview-awaiting"}),(0,b.jsx)(p,{label:"Stuck",value:f?.count,detail:f&&(null===f.oldestSince?"Delivering":`Deliveries stuck, oldest ${(0,s.duration)(new Date(f.oldestSince),g)}`),href:"/fleet-health",icon:k.OctagonAlert,tone:"attention",testId:"overview-stuck"})]})}var w=a.i(403512),x=a.i(934301),y=a.i(301851),z=a.i(902955),A=a.i(190146),B=a.i(582611),C=a.i(377945),D=a.i(88191),E=a.i(64906),F=a.i(247468),G=a.i(701634),H=a.i(254763),I=a.i(912540),J=a.i(493454),K=a.i(554730);let L=(0,x.lazyDialog)(()=>a.A(159777).then(a=>a.CommissionDialog),a=>a.isOpen),M=(0,x.lazyDialog)(()=>a.A(368359).then(a=>a.StartingPromptDialog),a=>a.isOpen);function N({isOpen:a,onOpenChange:c}){var d;let e,f,i=(0,E.useFleetLimits)(),j=(0,F.useHostedAccountUrl)(),k=(0,A.useCommissionShip)(),l=(0,A.useRequestCrew)(),m=(0,A.useGetStartingPrompt)(),n="connected"===(0,J.useTrierarchPluginConnection)(),o=(0,J.useMachines)(),p=(0,J.useEnabledModels)(),q=(0,H.useSquadronsConnection)(),r=(0,I.useSquadrons)(),[s,t]=(0,g.useState)(!1),[u,v]=(0,g.useState)(null),x=(0,z.offersOf)(o.data??[],p.data??[]),O=(0,A.useLabelContext)(o.data?.map(a=>a.shipId)),{shipLabelsMax:P,fleetScopes:Q}=(0,y.useConsoleConstants)(),R=(0,A.useFleetScopes)(),S=void 0===O||void 0===o.data?void 0:(0,B.machineLabelsInputOf)(O,{machines:o.data,shipLabelsMax:P}),T=(0,J.useCrewSettingsCheck)(a&&n?null===u?(0,z.settingsOf)((0,z.defaultValues)(x)):u:void 0),U=(0,K.useShipTypes)(!1),[V,W]=(0,g.useState)({name:"",type:""}),X=(0,C.useIsShipNameTaken)(V.name),Y=(0,K.useTypeShipCount)(V.type),Z=k.data?.prompt==null?m.data:k.data,$=Z?"shown":m.isError?"error":"issuing",_=(a,b)=>{k.mutate(a,{onSuccess:({shipId:d,prompt:e})=>{c(!1);let f=n&&void 0!==b;f||(t(!0),null===e&&m.mutate({shipId:d})),void 0!==b&&l.mutate({shipId:d,settings:b.settings},{onSuccess:()=>{f&&(0,D.showToast)({title:`${a.name} commissioned, crew requested`,description:"The trierarch plugin assigns a trierarch that fits.",tone:"success"})},onError:b=>{(0,D.showToast)({title:`Couldn’t request a crew for ${a.name}`,description:`${b.message} The ship is commissioned; request a crew on its page.`,tone:"error"})}})}})};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.Button,{variant:"primary",icon:(0,b.jsx)(w.Plus,{}),"data-testid":"fleet-commission",onClick:()=>{k.reset(),m.reset(),v(null),c(!0)},children:"Commission ship"}),(0,b.jsx)(L,{types:U??[],taken:{names:!0===X?[V.name]:[],typeShipCounts:new Map(void 0===Y?[]:[[V.type,Y]])},onTypedChange:W,isOpen:a,onOpenChange:c,isPending:k.isPending,error:k.error?.message,shipLimit:(0,G.shipLimitReached)(i.data),accountUrl:j,scopeGroups:void 0===R.data?void 0:(d=R.data,e=new Map(d.filter(({kind:a})=>"core"===a).flatMap(({scopes:a})=>a.map(({scope:a,description:b})=>[a,b]))),f=Q.flatMap(a=>{let b=e.get(a);return void 0===b?[]:[{scope:a,description:b}]}),[{title:"Fleet access",namespace:null,scopes:f},...d.flatMap(({namespace:a,kind:b,declaredBy:c,scopes:d})=>"plugin"!==b||null===c||0===d.length?[]:[{title:c.name,namespace:a,scopes:d.map(({scope:a,description:b})=>({scope:a,description:b}))}]),...d.flatMap(({namespace:a,kind:b,scopes:c})=>"fleet"!==b?[]:[{title:"The fleet's own",namespace:a,scopes:c.map(({scope:a,description:b})=>({scope:a,description:b}))}])]),...n?{crewRequest:{offers:x,squadrons:"connected"===q?(r.data??[]).filter(a=>"disbanded"!==a.state).map(a=>a.id):void 0,...void 0===S?{}:{machineLabels:S},check:T.data,onSettingsChange:v}}:{},onSubmit:(a,b)=>{let c={...a,idempotencyKey:crypto.randomUUID()};n&&void 0!==b?T.checkNow().catch(()=>void 0).then(a=>{a?.kind!=="refused"&&_(c,b)}).catch(()=>void 0):_(c,b)}}),(0,b.jsx)(M,{shipName:k.variables?.name??"",state:$,prompt:Z?.prompt??void 0,crewLines:Z?.crewLines??void 0,error:m.error?.message,isOpen:s&&void 0!==k.data,onOpenChange:a=>{a||(t(!1),k.reset(),m.reset())},onConfirm:()=>{void 0!==k.data&&m.mutate({shipId:k.data.shipId})}})]})}var O=a.i(164831);let P={name:"infinity",size:24,node:[["path",{d:"M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8",key:"18ogeb"}]]};P.node;let Q=(0,O.default)(P);var R=a.i(674746),S=a.i(598238),T=a.i(523063);let U={ships:{label:"Ships",unit:"ships",Icon:S.Ship},messages:{label:"Messages today",unit:"messages",Icon:R.Send}},V={below:"bg-primary",at:"bg-tone-waiting-fg",over:"bg-tone-attention-fg"},W={at:"at-limit",over:"over-limit"};function X({kind:a,count:c,limit:d,resetsAt:e}){let{label:f,unit:g,Icon:h}=U[a],i=(0,G.meterState)({count:c,limit:d}),j=W[i],k=(0,G.meterCaption)({count:c,limit:d}),l=null===d?0:0===d?1:Math.min(c/d,1);return(0,b.jsxs)("div",{"data-testid":`limit-meter-${a}`,"data-state":i,className:"flex flex-col gap-2 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)(h,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),f]}),void 0===j?null:(0,b.jsx)(T.StatusBadge,{status:j})]}),(0,b.jsxs)("p",{className:"flex items-baseline gap-1.5",children:[(0,b.jsx)("span",{className:"text-metric font-semibold tabular-nums",children:(0,G.meterCount)(c)}),(0,b.jsx)("span",{className:"text-body text-muted-foreground",children:null===d?g:`of ${(0,G.meterCount)(d)} ${g}`})]}),null===d?(0,b.jsxs)("p",{className:"inline-flex items-center gap-1.5 text-meta text-muted-foreground",children:[(0,b.jsx)(Q,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),"No limit"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{role:"meter","aria-label":`${f}: ${String(c)} of ${String(d)}`,"aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":d,className:"block h-1.5 overflow-hidden rounded-full bg-secondary",children:(0,b.jsx)("span",{className:(0,m.classNames)("block h-full rounded-full","none"===i?void 0:V[i]),style:{width:`${String(100*l)}%`}})}),(0,b.jsxs)("p",{"data-testid":`limit-meter-${a}-caption`,className:"text-caption text-muted-foreground",children:[k,void 0===e?null:` \xb7 resets at ${(0,G.resetTime)(e)}`]})]})]})}function Y(){let a=(0,E.useFleetLimits)().data,c=(0,F.useHostedAccountUrl)();return(0,G.hasLimits)(a)?(0,b.jsxs)("section",{"aria-labelledby":"overview-limits-title","data-testid":"overview-limits",className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("h2",{id:"overview-limits-title",className:"text-body font-semibold",children:"Limits"}),void 0===c?null:(0,b.jsx)("a",{href:c,"data-testid":"overview-limits-view",className:"text-meta font-medium text-primary underline underline-offset-2",children:"View limits"})]}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(X,{kind:"ships",count:a.ships.count,limit:a.ships.limit}),(0,b.jsx)(X,{kind:"messages",count:a.dailyMessages.count,limit:a.dailyMessages.limit,resetsAt:a.dailyMessages.resetsAt})]}),(0,b.jsx)("p",{"data-testid":"overview-limits-retention",className:"text-meta text-muted-foreground",children:(0,G.retentionLine)(a.retention)})]}):null}var Z=a.i(345065),$=a.i(408219),_=a.i(442871),aa=a.i(726112),ab=a.i(433217),ac=a.i(328422),ad=a.i(347761),ae=a.i(514499);function af(a,b){return a.reduce((a,c)=>a+b(c),0)}function ag(a,b){let c=b.status?.includes("retired")??!1;return{shown:af(a.view,a=>a.active+(c?a.retired:0)),total:af(a.fleet,a=>a.active+a.retired),retired:af(a.fleet,a=>a.retired)}}var ah=a.i(755681),ai=a.i(925039),aj=a.i(171094),ak=a.i(233540);let al={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]};al.node;let am=(0,O.default)(al);var an=a.i(387005),ao=a.i(849219);let ap=["console","claudeCode","codex","trierarch","plugin","other"],aq={console:"Console",claudeCode:"Claude Code",codex:"Codex",trierarch:"Trierarch",plugin:"Plugin",other:"Other"};function ar(a){return ap.some(b=>b===a)}var as=a.i(60271);let at={query:"",filters:{status:[],crewRequest:[],kind:[],type:[],squadron:[],isRetiredShown:!1,labelValueIds:[]},sort:null};function au(a){return[...new Set([...a.values()].map(a=>a.squadronId))].toSorted((a,b)=>a.localeCompare(b))}let av={crewed:"Crewed",awaitingCrew:"Awaiting crew"};function aw(a){return ay(a).length+a.labelValueIds.length}function ax(a,b){return 0===b.length?void 0:`${a}: ${b.join(", ")}`}function ay(a){return[ax("Status",a.status.map(a=>av[a])),ax("Crew request",a.crewRequest.map(as.crewRequestKeyWord)),ax("Kind",a.kind.map(a=>aq[a])),ax("Type",a.type),ax("Squadron",a.squadron),a.isRetiredShown?"Retired shown":void 0].filter(a=>void 0!==a)}var az=a.i(565230),aA=a.i(176166),aB=a.i(675297),aC=a.i(145098),aD=a.i(945469),aE=a.i(677339),aF=a.i(24173),aG=a.i(240392),aH=a.i(770534),aI=a.i(136501);function aJ({chips:a,width:c,testId:d,href:f}){if(0===a.length)return null;let{shown:g,folded:h}=0===c?{shown:[],folded:a}:(0,az.rowChips)(a,c);return(0,b.jsxs)("span",{"data-testid":d,className:"flex min-w-0 items-center gap-1 overflow-hidden",children:[g.map((a,c)=>(0,b.jsx)(aI.LabelChip,{chip:a,className:0===c?"min-w-0 shrink":void 0},a.valueId)),0===h.length?null:void 0===f?(0,b.jsxs)("span",{title:h.map(az.chipTitleOf).join("; "),className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums",children:["+",h.length,(0,b.jsx)("span",{className:"sr-only",children:" more labels"})]}):(0,b.jsxs)(e.default,{href:f,title:h.map(az.chipTitleOf).join("; "),"aria-label":`View ${h.length} more labels`,className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:["+",h.length]})]})}var aK=a.i(350808);let aL={name:"signal",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}],["path",{d:"M17 20V8",key:"1tkaf5"}],["path",{d:"M22 4v16",key:"sih9yq"}]]};aL.node;let aM=(0,O.default)(aL),aN={name:"signal-low",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}]]};aN.node;let aO=(0,O.default)(aN),aP={name:"signal-medium",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}]]};aP.node;let aQ=(0,O.default)(aP);var aR=a.i(14501);let aS={fresh:{Icon:aM,tone:"text-tone-ok-fg"},while:{Icon:aQ,tone:"text-muted-foreground"},long:{Icon:aO,tone:"text-tone-waiting-fg"}};function aT({seenAt:a,now:c,testId:d}){let e;if(null===a)return null;let f=new Date(a),g=(e=c.getTime()-f.getTime())<6e4?"fresh":e<=9e5?"while":"long",{Icon:h,tone:i}=aS[g],j=(0,s.lastSeen)(f,c);return(0,b.jsxs)(aR.Tooltip,{children:[(0,b.jsx)(aR.TooltipTrigger,{render:(0,b.jsx)("span",{role:"img","aria-label":j,"data-testid":d,"data-signal":g,className:(0,m.classNames)("inline-flex [&_svg]:size-(--size-icon) max-sm:[&_svg]:size-4",i)}),children:(0,b.jsx)(h,{"aria-hidden":!0})}),(0,b.jsx)(aR.TooltipContent,{children:j})]})}var aU=a.i(240108),aV=a.i(424133);function aW({model:a,now:c}){let d=(0,aV.modelStatedWords)(a,c);return(0,b.jsxs)(aR.Tooltip,{children:[(0,b.jsxs)(aR.TooltipTrigger,{render:(0,b.jsx)("span",{"data-testid":"fleet-model-hint",className:"min-w-0 truncate font-mono text-id text-muted-foreground"}),children:[a.id,(0,b.jsxs)("span",{className:"sr-only",children:[", ",d]})]}),(0,b.jsx)(aR.TooltipContent,{children:(0,b.jsxs)("span",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"font-mono",children:a.id}),(0,b.jsx)("span",{children:d})]})})]})}var aX=a.i(892717),aY=a.i(858523),aZ=a.i(990468),a$=a.i(248136);function a_({label:a,items:c,picked:d,onPickedChange:e,size:f="sm",valueClassName:g,testId:h}){let i=function(a,b){let[c]=a;return void 0===c?{kind:"all"}:1===a.length?{kind:"one",word:b[c]??c}:{kind:"several",count:a.length}}(d,c);return(0,b.jsxs)(a$.Select,{multiple:!0,value:0===d.length?["all"]:[...d],onValueChange:a=>{e(d.length>0&&a.includes("all")?[]:a.filter(a=>"all"!==a))},children:[(0,b.jsx)(a$.SelectTrigger,{size:f,"aria-label":a,"data-testid":h,children:(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a}),"several"===i.kind?(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[i.count,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}):(0,b.jsx)("span",{className:(0,m.classNames)("font-medium","one"===i.kind?g:void 0),children:"one"===i.kind?i.word:"All"})]})}),(0,b.jsxs)(a$.SelectContent,{children:[(0,b.jsx)(a$.SelectItem,{value:"all",children:"All"}),Object.entries(c).map(([a,c])=>(0,b.jsx)(a$.SelectItem,{value:a,className:g,children:c},a))]})]})}function a0({label:a,allLabel:c="All",items:d,picked:e,onPickedChange:f,layout:g="chips",testId:i}){return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)("span",{"aria-hidden":!0,className:"text-meta font-medium text-muted-foreground",children:a}),(0,b.jsxs)("div",{role:"group","aria-label":a,"data-testid":i,className:"segments"===g?"flex gap-1.5 [&>*]:flex-1":"flex flex-wrap gap-1.5",children:[(0,b.jsx)(h.Button,{variant:0===e.length?"primary":"secondary",size:"touch","aria-pressed":0===e.length,onClick:()=>{f([])},children:c}),Object.entries(d).map(([a,c])=>{let d=e.includes(a);return(0,b.jsx)(h.Button,{variant:d?"primary":"secondary",size:"touch","aria-pressed":d,onClick:()=>{f(d?e.filter(b=>b!==a):[...e,a])},children:c},a)})]})]})}var a1=a.i(589027),a2=a.i(303894),a3=a.i(819721),a4=a.i(860275);let a5=(0,a3.default)(async()=>{},{loadableGenerated:{modules:[259068]},ssr:!1});function a6({groups:a,picked:c,onPick:d,trigger:f}){let[h,i]=(0,g.useState)(!1);return(0,b.jsxs)(a4.Popover,{open:h,onOpenChange:i,children:[(0,b.jsx)(a4.PopoverTrigger,{render:f}),(0,b.jsxs)(a4.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":"label-filter-popover",children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:"Filter by label"}),(0,b.jsx)(a5,{groups:a,pickedValueIds:c.map(a=>a.valueId),onPick:a=>{d(a),i(!1)}}),(0,b.jsxs)("p",{className:"mt-2 flex items-center justify-between gap-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:["Exact matches, all must hold.",(0,b.jsx)(e.default,{href:"/labels",className:"font-medium text-foreground hover:underline","data-testid":"label-filter-manage",children:"Manage labels"})]})]})]})}function a7({groups:a,picked:c,onPick:e}){return(0,b.jsx)(a6,{groups:a,picked:c,onPick:e,trigger:(0,b.jsxs)(h.Button,{variant:"secondary",size:"sm",icon:(0,b.jsx)(d.Tag,{}),"data-testid":"fleet-filter-labels",children:["Labels",0===c.length?null:(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[c.length,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}),(0,b.jsx)(a1.ChevronDown,{"aria-hidden":!0,className:"text-muted-foreground"})]})})}function a8({groups:a,picked:c,onPick:d,onRemove:e,onClear:f}){return 0===c.length?null:(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1.5 text-meta max-sm:hidden","data-testid":"fleet-picked-labels",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"Ships with"}),c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aI.LabelChip,{chip:a,testId:"fleet-picked-label",onRemove:()=>{e(a.valueId)}})]},a.valueId)),(0,b.jsx)(a6,{groups:a,picked:c,onPick:d,trigger:(0,b.jsx)(h.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(w.Plus,{}),children:"Add"})}),(0,b.jsx)("span",{"aria-hidden":!0,className:"h-4 w-px bg-border"}),(0,b.jsx)(h.Button,{variant:"ghost",size:"xs",onClick:f,"data-testid":"fleet-labels-clear",children:"Clear labels"})]})}function a9({groups:a,picked:c,onPick:d,onRemove:f}){let[i,j]=(0,g.useState)(!1);return(0,b.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"fleet-filter-labels-touch",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-meta font-medium text-muted-foreground",children:["Labels ",(0,b.jsx)("span",{className:"font-normal",children:"all must hold"})]}),0===c.length?null:(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 text-meta",children:c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aI.LabelChip,{chip:a,onRemove:()=>{f(a.valueId)}})]},a.valueId))}),i?(0,b.jsx)("div",{className:"rounded-lg border border-border p-2",children:(0,b.jsx)(a5,{groups:a,pickedValueIds:c.map(a=>a.valueId),size:"touch",onPick:a=>{d(a),j(!1)}})}):(0,b.jsx)(h.Button,{variant:"secondary",size:"touch",icon:(0,b.jsx)(w.Plus,{}),className:"self-start",onClick:()=>{j(!0)},children:"Add label"}),(0,b.jsxs)(e.default,{href:"/labels",className:"inline-flex items-center gap-1.5 self-start text-meta text-muted-foreground hover:underline [&_svg]:size-(--size-icon-sm)",children:[(0,b.jsx)(a2.Tags,{"aria-hidden":!0}),"All labels and their owners"]})]})}function ba(a,b){return{...a,filters:{...a.filters,labelValueIds:b}}}function bb(a){return Object.hasOwn(av,a)}function bc(a){return Object.fromEntries((0,as.crewRequestKeysOf)(a).map(a=>[a,(0,as.crewRequestKeyWord)(a)]))}function bd(a,b){return Object.hasOwn(b,a)}function be(a){return Object.fromEntries(a.map(a=>[a,a]))}function bf({ship:a,squadron:c,isPluginShip:d}){return"operator"===a.kind?(0,b.jsxs)(aA.Badge,{variant:"kind",children:[(0,b.jsx)(an.UserRound,{"aria-hidden":!0}),"operator"]}):"viewer"===a.kind?(0,b.jsxs)(aA.Badge,{variant:"kind","data-testid":"fleet-viewer",children:[(0,b.jsx)(ah.Eye,{"aria-hidden":!0}),"viewer"]}):d?(0,b.jsxs)(aA.Badge,{variant:"kind","data-testid":"fleet-plugin",children:[(0,b.jsx)(aj.Plug,{"aria-hidden":!0}),"plugin"]}):c?.role===null?(0,b.jsxs)(aA.Badge,{variant:"kind","data-testid":"fleet-flagship",children:[(0,b.jsx)(ai.Flag,{"aria-hidden":!0}),"flagship"]}):null}function bg({ship:a,now:c}){return"crewed"!==a.status||"viewer"===a.kind?null:(0,b.jsxs)("span",{"data-testid":"fleet-runs-on",className:"flex min-w-0 items-center gap-3 max-sm:flex-wrap max-sm:gap-y-1",children:[(0,b.jsx)(aU.LocationTag,{kind:"operator"===a.kind&&null!==a.location?"DEVICE":a.location?.kind??null,description:a.location?.description,harness:"operator"===a.kind?"console":a.harness,size:"sm",className:"shrink-0"}),"agent"===a.kind&&null!==a.model?(0,b.jsx)(aW,{model:a.model,now:c}):null]})}function bh({ship:a,squadron:c,labels:d}){let e=c?.role===null?void 0:c,f=void 0===d?[]:(0,az.chipsOf)(a,d).filter(a=>void 0===e||("squadron"!==a.key||a.value!==e.squadronId)&&("squadron-role"!==a.key||a.value!==e.role));return void 0===e&&0===f.length?null:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 overflow-hidden",children:[void 0===e?null:(0,b.jsx)("span",{className:"min-w-0 shrink",title:null===e.role?e.squadronId:`${e.squadronId} \xb7 ${e.role}`,children:(0,b.jsx)(aY.SquadronTag,{squadronId:e.squadronId,size:"sm"})}),(0,b.jsx)(aJ,{chips:f,width:22*(void 0===e),testId:"fleet-labels",href:`/ships/${a.id}`})]})}function bi({ship:a,now:c,next:d}){let e=("agent"===a.kind||"plugin"===a.kind)&&"crewed"===a.status;return(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 max-sm:flex-col max-sm:items-stretch [&:has(button)>[data-testid=fleet-report]]:hidden",children:[e?(0,b.jsx)(aX.ReportLine,{report:a.report,now:c,variant:"row",isTimeInTitle:!0,testId:"fleet-report"}):null,d]})}function bj({types:a,view:c,onViewChange:d,size:e,squadronsOf:f,labels:g}){let i=bc((0,y.useConsoleConstants)().crewStatuses),{filters:j}=c,k=a=>{d({...c,filters:{...j,...a}})},l="touch"===e;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a_,{label:"Status",items:av,picked:j.status,onPickedChange:a=>{k({status:a.filter(bb)})},size:e,testId:l?void 0:"fleet-filter-status"}),(0,b.jsx)(a_,{label:"Crew request",items:i,picked:j.crewRequest,onPickedChange:a=>{k({crewRequest:a.filter(a=>bd(a,i))})},size:e,testId:l?void 0:"fleet-filter-crew-request"}),(0,b.jsx)(a_,{label:"Kind",items:aq,picked:j.kind,onPickedChange:a=>{k({kind:a.filter(ar)})},size:e,testId:l?void 0:"fleet-filter-kind"}),(0,b.jsx)(a_,{label:"Type",items:be(a),picked:j.type,onPickedChange:a=>{k({type:a})},size:e,valueClassName:"font-mono",testId:l?void 0:"fleet-filter-type"}),f&&(0,b.jsx)(a_,{label:"Squadron",items:be(au(f)),picked:j.squadron,onPickedChange:a=>{k({squadron:a})},size:e,testId:l?void 0:"fleet-filter-squadron"}),void 0===g||l?null:(0,b.jsx)(a7,{groups:(0,az.filterGroupsOf)(g),picked:(0,az.pickedChips)(j.labelValueIds,g),onPick:a=>{d(ba(c,[...j.labelValueIds,a]))}}),ay(j).length>0&&!l?(0,b.jsx)(h.Button,{variant:"ghost",size:"xs","data-testid":"fleet-filters-clear",onClick:()=>{d({...c,filters:at.filters})},children:"Clear filters"}):null]})}function bk(a){return void 0===a?"":` (${String(a.retired)})`}function bl({counts:a,view:c,onViewChange:d}){let e="fleet-show-retired";return(0,b.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,b.jsx)(aD.Switch,{id:e,"data-testid":"fleet-show-retired",checked:c.filters.isRetiredShown,onCheckedChange:a=>{d({...c,filters:{...c.filters,isRetiredShown:a}})}}),(0,b.jsxs)(aC.Label,{htmlFor:e,className:"text-meta font-normal text-muted-foreground",children:["Show retired",bk(a)]})]})}function bm({types:a,counts:c,view:d,onViewChange:e,squadronsOf:f,labels:g}){let i=bc((0,y.useConsoleConstants)().crewStatuses),{filters:j}=d,k=a=>{e({...d,filters:{...j,...a}})},l=aw(j);return(0,b.jsxs)(ao.Sheet,{children:[(0,b.jsx)(ao.SheetTrigger,{render:(0,b.jsx)(h.Button,{size:"touch",isIconOnly:!0,"aria-label":l>0?`Filter ships, ${String(l)} active`:"Filter ships","data-testid":"fleet-filters-open",icon:(0,b.jsx)(am,{}),className:"relative sm:hidden",children:l>0?(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute top-1.5 right-1.5 size-2 rounded-full bg-primary"}):null})}),(0,b.jsxs)(ao.SheetContent,{side:"bottom",children:[(0,b.jsxs)(ao.SheetHeader,{className:"flex-row items-center justify-between",children:[(0,b.jsx)(ao.SheetTitle,{children:"Filter ships"}),(0,b.jsx)(h.Button,{variant:"ghost",size:"touch","data-testid":"fleet-filters-reset",onClick:()=>{e({...d,filters:at.filters})},children:"Reset"})]}),(0,b.jsxs)(ao.SheetBody,{className:"flex flex-col gap-4 pb-4",children:[(0,b.jsx)(a0,{label:"Status",layout:"segments",items:av,picked:j.status,onPickedChange:a=>{k({status:a.filter(bb)})}}),(0,b.jsx)(a0,{label:"Crew request",items:i,picked:j.crewRequest,onPickedChange:a=>{k({crewRequest:a.filter(a=>bd(a,i))})}}),(0,b.jsx)(a0,{label:"Kind",items:aq,picked:j.kind,onPickedChange:a=>{k({kind:a.filter(ar)})},testId:"fleet-filter-kind-touch"}),(0,b.jsx)(a0,{label:"Type",allLabel:"All types",items:be(a),picked:j.type,onPickedChange:a=>{k({type:a})}}),f&&(0,b.jsx)(a0,{label:"Squadron",items:be(au(f)),picked:j.squadron,onPickedChange:a=>{k({squadron:a})}}),void 0===g?null:(0,b.jsx)(a9,{groups:(0,az.filterGroupsOf)(g),picked:(0,az.pickedChips)(j.labelValueIds,g),onPick:a=>{e(ba(d,[...j.labelValueIds,a]))},onRemove:a=>{e(ba(d,j.labelValueIds.filter(b=>b!==a)))}}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 py-1",children:[(0,b.jsxs)(aC.Label,{htmlFor:"fleet-show-retired-touch",className:"text-body-touch font-normal",children:["Show retired ships ",(0,b.jsx)("span",{className:"text-muted-foreground",children:bk(c)})]}),(0,b.jsx)(aD.Switch,{id:"fleet-show-retired-touch",checked:j.isRetiredShown,onCheckedChange:a=>{k({isRetiredShown:a})}})]}),(0,b.jsx)(ao.SheetClose,{render:(0,b.jsx)(h.Button,{size:"touch","data-testid":"fleet-filters-apply"}),children:void 0===c?"Show ships":1===c.shown?"Show 1 ship":`Show ${String(c.shown)} ships`})]})]})]})}function bn({view:a,onViewChange:c,labels:d}){let e=ay(a.filters),f=void 0===d?[]:(0,az.pickedChips)(a.filters.labelValueIds,d);return 0===e.length&&0===f.length?null:(0,b.jsxs)("div",{className:"flex w-full flex-wrap items-center gap-1.5 sm:hidden","data-testid":"fleet-filter-chips",children:[e.map(a=>(0,b.jsx)(aA.Badge,{variant:"outline",className:"max-w-full truncate",children:a},a)),f.map(d=>(0,b.jsx)(aI.LabelChip,{chip:d,onRemove:()=>{c(ba(a,a.filters.labelValueIds.filter(a=>a!==d.valueId)))}},d.valueId)),(0,b.jsx)(h.Button,{variant:"ghost",size:"touch",onClick:()=>{c({...a,filters:at.filters})},children:"Clear filters"})]})}function bo({types:a,counts:c,view:d,onViewChange:e,squadronsOf:f,labels:g}){return(0,b.jsxs)("div",{"data-slot":"fleet-toolbar",className:"flex flex-wrap items-center gap-2 sm:flex-nowrap sm:items-start",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-2",children:[(0,b.jsx)("div",{className:"w-60 max-sm:min-w-0 max-sm:flex-1",children:(0,b.jsx)(aB.Input,{type:"search","aria-label":"Search ships by name or type",placeholder:"Search ships by name","data-testid":"fleet-search",value:d.query,onChange:a=>{e({...d,query:a.target.value})},leadingIcon:(0,b.jsx)(ak.Search,{}),className:"h-(--size-control-sm) text-meta max-sm:h-(--size-control-touch) max-sm:text-input-touch"})}),(0,b.jsx)("div",{className:"max-sm:hidden sm:contents",children:(0,b.jsx)(bj,{types:a,view:d,onViewChange:e,squadronsOf:f,labels:g,size:"sm"})}),(0,b.jsx)(bm,{types:a,counts:c,view:d,onViewChange:e,squadronsOf:f,labels:g})]}),(0,b.jsx)(bn,{view:d,onViewChange:e,labels:g}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2 max-sm:w-full sm:h-(--size-control-sm)",children:[(0,b.jsx)("div",{className:"max-sm:hidden",children:(0,b.jsx)(bl,{counts:c,view:d,onViewChange:e})}),void 0===c?null:(0,b.jsxs)("p",{"aria-live":"polite",className:"text-meta text-muted-foreground tabular-nums","data-testid":"fleet-count",children:[c.shown," of ",c.total," ships"]})]})]})}function bp({ship:a}){return(0,b.jsx)(aZ.ShipName,{name:a.name,shipId:a.id,isSuffixShown:"retired"===a.status,href:"operator"===a.kind?"/inbox":`/ships/${a.id}`,className:"[&_a]:max-sm:whitespace-normal [&_a]:max-sm:break-all [&_a]:max-sm:text-body-touch"})}let bq=[{key:"ship",column:"ship",head:"Ship"},{key:"status",column:"status",head:"Status"},{key:"report",column:"report",head:"Report"},{key:"squadronAndLabels",head:"Squadron and labels"},{key:"runsOn",column:"runsOn",head:"Runs on"},{key:"seen",column:"seen",head:"Seen"}];function br({ships:a,highlightedShipIds:c,now:d,renderRowActions:e,squadronsOf:f,labels:g,pluginShipIds:h,sort:i,onSort:j}){return(0,b.jsx)("div",{className:"max-sm:hidden",children:(0,b.jsxs)(aE.Table,{"aria-label":"Ships",className:"min-w-320 table-fixed",children:[(0,b.jsxs)("colgroup",{children:[(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-40"}),(0,b.jsx)("col",{className:"w-64"}),(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-80"}),(0,b.jsx)("col",{className:"w-12"}),(0,b.jsx)("col",{className:"w-12"})]}),(0,b.jsx)(aE.TableHeader,{children:(0,b.jsxs)(aE.TableRow,{children:[bq.map(({key:a,column:c,head:d})=>void 0===j||void 0===c?(0,b.jsx)(aE.TableHead,{children:d},a):(0,b.jsx)(aE.TableSortHead,{"data-testid":`fleet-sort-${c}`,direction:i?.column===c?i.direction:null,onSort:()=>{j(c)},children:d},a)),(0,b.jsx)(aE.TableHead,{children:(0,b.jsx)("span",{className:"sr-only",children:"Actions"})})]})}),(0,b.jsx)(aE.TableBody,{children:a.map(a=>(0,b.jsxs)(aE.TableRow,{"data-testid":`fleet-row-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"h-12",children:[(0,b.jsx)(aE.TableCell,{children:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 whitespace-nowrap",children:[(0,b.jsx)(bp,{ship:a}),(0,b.jsx)(bf,{ship:a,squadron:f?.get(a.id),isPluginShip:h?.has(a.id)??!1})]})}),(0,b.jsx)(aE.TableCell,{children:(0,b.jsx)(T.StatusBadge,{status:a.status})}),(0,b.jsx)(aE.TableCell,{children:(0,b.jsx)(bi,{ship:a,now:d,next:e?.(a,"next")})}),(0,b.jsx)(aE.TableCell,{children:(0,b.jsx)(bh,{ship:a,squadron:f?.get(a.id),labels:g})}),(0,b.jsx)(aE.TableCell,{children:(0,b.jsx)(bg,{ship:a,now:d})}),(0,b.jsx)(aE.TableCell,{children:(0,b.jsx)(aT,{seenAt:a.lastSeenAt,now:d,testId:"fleet-last-seen"})}),(0,b.jsx)(aE.TableCell,{className:"w-10 text-right",children:e?.(a,"table")})]},a.id))})]})})}function bs({ships:a,highlightedShipIds:c,now:d,renderRowActions:e,squadronsOf:f,pluginShipIds:g}){return(0,b.jsx)("ul",{"aria-label":"Ships",className:"overflow-hidden rounded-lg border border-border bg-card sm:hidden",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":`fleet-card-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"flex items-start gap-2 border-b border-border px-3.5 py-3 last:border-0 data-new:animate-highlight",children:[(0,b.jsxs)("div",{className:"flex min-w-0 grow flex-col gap-1.5",children:[(0,b.jsx)("div",{className:"text-body-touch",children:(0,b.jsx)(bp,{ship:a})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(T.StatusBadge,{status:a.status}),(0,b.jsx)(bf,{ship:a,squadron:f?.get(a.id),isPluginShip:g?.has(a.id)??!1})]}),(0,b.jsx)(bh,{ship:a,squadron:f?.get(a.id)}),(0,b.jsx)(bi,{ship:a,now:d,next:e?.(a,"next")}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1",children:[(0,b.jsx)(bg,{ship:a,now:d}),(0,b.jsx)(aT,{seenAt:a.lastSeenAt,now:d})]})]}),e?.(a,"phone")]},a.id))})}function bt({ships:a,counts:c,isOnlyArgo:d,types:e,more:f,view:g,onViewChange:i,state:j,error:k,highlightedShipIds:l,now:m,renderRowActions:n,emptyAction:o,squadronsOf:p,labels:q,pluginShipIds:r}){let s;if("loading"===j)return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"loading",className:"flex flex-col gap-3",children:[(0,b.jsx)(aK.LoadingSkeleton,{variant:"table",rows:6,label:"Loading the fleet",className:"max-sm:hidden"}),(0,b.jsx)(aK.LoadingSkeleton,{variant:"list",rows:5,label:"Loading the fleet",className:"sm:hidden"})]});if("error"===j)return(0,b.jsx)(aG.InlineError,{variant:"page",title:"Couldn’t load the fleet",description:"This page couldn’t reach the fleet server. Check that the server is running and reachable from this browser, then try again.",detail:k?.detail,onRetry:k?.onRetry});let t={highlightedShipIds:l,now:m,renderRowActions:n,squadronsOf:p,pluginShipIds:r};if(d){let c=a.filter(a=>"operator"===a.kind);return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"empty",className:"flex flex-col gap-3",children:[(0,b.jsx)(br,{ships:c,labels:q,...t}),(0,b.jsx)(bs,{ships:c,...t}),(0,b.jsx)(aF.EmptyState,{icon:(0,b.jsx)(S.Ship,{}),title:"No ships besides argo yet",description:"argo is your own ship: messages to the operator land in its inbox. Commission a ship to add an agent to the fleet.",action:o})]})}let u=g.query.trim();return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"ready",className:"flex flex-col gap-3",children:[(0,b.jsx)(bo,{types:e,counts:c,view:g,onViewChange:i,squadronsOf:p,labels:q}),void 0===q?null:(0,b.jsx)(a8,{groups:(0,az.filterGroupsOf)(q),picked:(0,az.pickedChips)(g.filters.labelValueIds,q),onPick:a=>{i(ba(g,[...g.filters.labelValueIds,a]))},onRemove:a=>{i(ba(g,g.filters.labelValueIds.filter(b=>b!==a)))},onClear:()=>{i(ba(g,[]))}}),0===a.length?(0,b.jsx)(aF.EmptyState,{variant:"no-results",title:""===u?"No ships match these filters.":`No ships match “${u}”.`,action:(0,b.jsx)(h.Button,{size:"xs","data-testid":"fleet-clear-filters",onClick:()=>{i({...at,sort:g.sort})},children:(s=aw(g.filters)>0,""===u?"Clear filters":s?"Clear search and filters":"Clear search")})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(br,{ships:a,labels:q,sort:g.sort,onSort:a=>{var b;i({...g,sort:(b=g.sort,b?.column!==a?{column:a,direction:"ascending"}:"ascending"===b.direction?{column:a,direction:"descending"}:null)})},...t}),(0,b.jsx)(bs,{ships:a,...t}),f?.hasMore===!0?(0,b.jsx)(aH.LoadMore,{what:"more ships",isLoading:f.isLoading,isFailed:f.isFailed,onLoad:f.onLoad,area:"fleet"}):null]})]})}function bu({view:a,onViewChange:c,placedFirstShipIds:d,renderRowActions:e}){var f,g;let h,i,j=(0,r.useNow)(),k=(0,I.useSquadrons)(),l=(0,A.useLabelContext)(),m=(0,Z.usePluginShipIds)(),n=k.data?(0,$.shipsInSquadrons)(k.data):void 0,o=function({query:a,filters:b},c){var d;let e=0===b.squadron.length?[]:(d=b.squadron,[...c.squadronsOf??new Map].filter(([,a])=>d.includes(a.squadronId)).map(([a])=>a));if(b.squadron.length>0&&0===e.length)return null;let f=a.trim(),g=b.status.length>0?[...b.status]:b.isRetiredShown?["awaitingCrew","crewed","retired"]:[];return{...""===f?{}:{query:f},...0===g.length?{}:{status:[...g]},...0===b.type.length?{}:{type:[...b.type]},...0===b.crewRequest.length?{}:{crewRequest:[...b.crewRequest]},...0===b.labelValueIds.length?{}:{valueIds:[...b.labelValueIds]},...0===e.length?{}:{shipIds:e},...0===b.kind.length?{}:{kind:[...b.kind],pluginShipIds:[...c.pluginShipIds]}}}(a,{squadronsOf:n,pluginShipIds:m}),p=(g=null===(f=a.sort)?void 0:{column:f.column,direction:f.direction},h=(0,ae.useTRPC)(),i=(0,ac.pagedListOf)((0,aa.useInfiniteQuery)(h.fleet.list.infiniteQueryOptions({...o,sort:g,limit:ac.CONSOLE_PAGE_SIZE},{enabled:null!==o,getNextPageParam:ac.nextCursorOf,placeholderData:_.keepPreviousData,refetchInterval:A.LAST_SEEN_REFRESH_MS}))),null===o?{...i,items:[],hasMore:!1}:{...i,items:i.items&&(0,ad.shipRowsOf)(i.items,o)}),{counts:q,isOnlyArgo:s}=function(a){let b=(0,ae.useTRPC)(),c=(0,ab.useQuery)(b.fleet.shipCounts.queryOptions({filter:a??{}},{enabled:null!==a,placeholderData:_.keepPreviousData})),d=(0,ab.useQuery)(b.fleet.shipCounts.queryOptions());if(void 0===d.data)return{counts:void 0,isOnlyArgo:!1};let e=0===af(d.data,a=>"operator"===a.kind?0:a.active);return null===a?{counts:ag({view:[],fleet:d.data},{}),isOnlyArgo:e}:{counts:void 0===c.data?void 0:ag({view:c.data,fleet:d.data},a),isOnlyArgo:e}}(o),t=(0,K.useShipTypes)(a.filters.isRetiredShown);return(0,b.jsx)("section",{"aria-label":"Fleet",className:"flex flex-col gap-3",children:(0,b.jsx)(bt,{ships:p.items??[],counts:q,isOnlyArgo:s,types:[...new Set([...t??[],...a.filters.type])].toSorted((a,b)=>a.localeCompare(b)),more:{hasMore:p.hasMore,isLoading:p.isLoadingMore,isFailed:p.isLoadMoreFailed,onLoad:p.loadMore},view:a,onViewChange:c,state:p.isFailed?"error":void 0===p.items?"loading":"ready",error:{detail:p.error instanceof Error?p.error.message:void 0,onRetry:p.retry},highlightedShipIds:d,now:j,renderRowActions:e,squadronsOf:n,labels:l,pluginShipIds:m})})}var bv=a.i(753805),bw=a.i(347434),bx=a.i(221521),by=a.i(591003),bz=a.i(38023),bA=a.i(773224),bB=a.i(565563),bC=a.i(167336),bD=a.i(110572),bE=a.i(534159);a.s(["OverviewPage",0,function({view:a,isCommissionAsked:j}){let k=(0,f.useRouter)(),l=(0,t.useShipCounts)(),m=(0,bC.useLiveFleet)(),n=(0,bz.useConsoleFrame)(),o=(0,G.messageLimitReached)((0,E.useFleetLimits)().data),p=(0,F.useHostedAccountUrl)(),q=(0,bB.useAccess)(),r=(0,bE.usePluginNav)(),[s,w]=(0,g.useState)(!1),[x,y]=(0,g.useOptimistic)(a);(0,bD.useSignInWhenSessionEnds)([l.error,m.error]);let z=a=>{let b=(function(a){let b=new URLSearchParams;for(let[c,d]of(""!==a.query&&b.set("q",a.query),[["status",a.filters.status],["crew",a.filters.crewRequest],["kind",a.filters.kind],["type",a.filters.type],["squadron",a.filters.squadron]]))for(let a of d)b.append(c,a);for(let c of(a.filters.isRetiredShown&&b.set("retired","1"),a.filters.labelValueIds))b.append("label",c);return null!==a.sort&&(b.set("sort",a.sort.column),"descending"===a.sort.direction&&b.set("order","desc")),b})(a).toString();(0,g.startTransition)(()=>{y(a),k.replace(""===b?"/":`/?${b}`,{scroll:!1})})};return(0,b.jsxs)(by.ListPage,{...n,title:"Fleet overview",description:l.data?function(a){let b=u(a.counts),c=b?.active??0,d=b?.retired??0;if(0===c&&0===d)return a.canCommission?"Only argo so far. Ships you commission appear here.":"Only argo so far.";let e=0===d?"":`, ${String(d)} retired`;return`${1===c?"1 active ship":`${String(c)} active ships`} and argo${e}. Changes appear as they happen.`}({counts:l.data,canCommission:q.canManage}):"Loading your fleet",primaryAction:(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 max-sm:flex-col max-sm:items-stretch",children:[(0,b.jsx)(h.Button,{render:(0,b.jsx)(e.default,{href:"/labels"}),nativeButton:!1,icon:(0,b.jsx)(d.Tag,{}),"data-testid":"overview-labels",children:q.canDefineLabels?"Manage labels":"View labels"}),(0,b.jsx)(h.Button,{render:(0,b.jsx)(e.default,{href:"/scopes"}),nativeButton:!1,icon:(0,b.jsx)(c.KeyRound,{}),"data-testid":"overview-scopes",children:q.canDefineScopes?"Manage scopes":"View scopes"}),q.canManage?(0,b.jsx)(N,{isOpen:s||j,onOpenChange:b=>{w(b),!b&&j&&z(a)}}):null]}),live:m.live,children:[(0,b.jsx)(bA.FleetSegments,{active:"ships",needsCrewCount:r.needsCrewCount}),void 0===o?null:(0,b.jsx)(bx.LimitNotice,{...(0,G.messageLimitNotice)(o),accountUrl:p,testId:"overview-message-limit"}),(0,b.jsx)(Y,{}),(0,b.jsx)(v,{}),(0,b.jsx)(bu,{view:x,onViewChange:z,placedFirstShipIds:m.placedFirstShipIds,renderRowActions:(a,c)=>(0,b.jsx)(bv.ShipActions,{ship:a,layout:"table"===c?"menu":"phone"===c?"sheet":"next",compose:i.ComposeMessage,crewLineFlow:bw.NewCrewLineFlow})})]})}],259446)}];
|
|
1
|
+
module.exports=[259446,a=>{"use strict";var b=a.i(187924),c=a.i(50944),d=a.i(572131),e=a.i(86002),f=a.i(256987),g=a.i(679520),h=a.i(188931),i=a.i(238246),j=a.i(483556),k=a.i(233809);let l={ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg"};function m({label:a,shortLabel:c,value:d,detail:e,href:f,icon:g,tone:h,testId:n}){return(0,b.jsxs)(i.default,{href:f,"data-testid":n,className:"flex min-w-0 flex-col gap-2 rounded-lg border border-border bg-card px-4.5 py-4 shadow-sm transition-colors duration-(--duration-fast) hover:bg-accent max-sm:gap-1.5 max-sm:rounded-xl max-sm:px-3.5 max-sm:py-3",children:[(0,b.jsxs)("span",{className:"flex items-center justify-between gap-2 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)("span",{className:"max-sm:hidden",children:a}),(0,b.jsx)("span",{className:"sm:hidden",children:c??a}),(0,b.jsx)("span",{className:(0,j.classNames)("flex size-6.5 shrink-0 items-center justify-center rounded-md border max-sm:size-5.5",l[h]),children:(0,b.jsx)(g,{"aria-hidden":!0,className:"size-3.5"})})]}),void 0===d?(0,b.jsx)(k.Skeleton,{className:"h-7 w-10 max-sm:h-6"}):(0,b.jsx)("span",{className:"text-[28px] leading-none font-semibold tracking-tight tabular-nums text-foreground max-sm:text-2xl",children:d}),void 0===e?(0,b.jsx)(k.Skeleton,{className:"h-4 w-32"}):(0,b.jsx)("span",{className:"truncate text-meta text-muted-foreground",children:e})]})}var n=a.i(534564),o=a.i(804049),p=a.i(872872),q=a.i(134191);function r(a){return a.find(a=>"agent"===a.kind)}function s(){var a;let c,d,e=(0,q.useShipCounts)(),i=(0,n.useStuckCount)().data,j=(0,o.useNow)(),k=e.data&&(c=r((a={counts:e.data,now:j}).counts),d=c?.longestWait??null,{activeCount:c?.active??0,crewedCount:c?.crewed??0,awaitingCount:c?.awaitingCrew??0,longestWait:null===d?void 0:{name:d.name,wait:(0,p.duration)(new Date(d.awaitingCrewSince),a.now)}});return k?.activeCount===0?null:(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-4 max-sm:grid-cols-2 max-sm:gap-2.5","data-testid":"overview-metrics",children:[(0,b.jsx)(m,{label:"Ships crewed",shortLabel:"Crewed",value:k?.crewedCount,detail:k&&`of ${String(k.activeCount)} active ships`,href:"/?status=crewed",icon:h.UserCheck,tone:"ok",testId:"overview-crewed"}),(0,b.jsx)(m,{label:"Awaiting crew",value:k?.awaitingCount,detail:k&&(k.longestWait?`Longest wait: ${k.longestWait.name}, ${k.longestWait.wait}`:"Every active ship is crewed"),href:"/?status=awaitingCrew",icon:f.CircleDashed,tone:"waiting",testId:"overview-awaiting"}),(0,b.jsx)(m,{label:"Stuck",value:i?.count,detail:i&&(null===i.oldestSince?"Delivering":`Deliveries stuck, oldest ${(0,p.duration)(new Date(i.oldestSince),j)}`),href:"/fleet-health",icon:g.OctagonAlert,tone:"attention",testId:"overview-stuck"})]})}var t=a.i(403512),u=a.i(934301),v=a.i(301851),w=a.i(902955),x=a.i(190146),y=a.i(582611),z=a.i(377945),A=a.i(831856),B=a.i(88191),C=a.i(64906),D=a.i(247468),E=a.i(701634),F=a.i(254763),G=a.i(912540),H=a.i(493454),I=a.i(554730);let J=(0,u.lazyDialog)(()=>a.A(159777).then(a=>a.CommissionDialog),a=>a.isOpen),K=(0,u.lazyDialog)(()=>a.A(368359).then(a=>a.StartingPromptDialog),a=>a.isOpen);function L({isOpen:a,onOpenChange:c}){var e;let f,g,h=(0,C.useFleetLimits)(),i=(0,D.useHostedAccountUrl)(),j=(0,x.useCommissionShip)(),k=(0,x.useRequestCrew)(),l=(0,x.useGetStartingPrompt)(),m="connected"===(0,H.useTrierarchPluginConnection)(),n=(0,H.useMachines)(),o=(0,H.useEnabledModels)(),p=(0,F.useSquadronsConnection)(),q=(0,G.useSquadrons)(),[r,s]=(0,d.useState)(!1),[u,M]=(0,d.useState)(null),N=(0,w.offersOf)(n.data??[],o.data??[]),O=(0,x.useLabelContext)(n.data?.map(a=>a.shipId)),{shipLabelsMax:P,fleetScopes:Q}=(0,v.useConsoleConstants)(),R=(0,x.useFleetScopes)(),S=void 0===O||void 0===n.data?void 0:(0,y.machineLabelsInputOf)(O,{machines:n.data,shipLabelsMax:P}),T=(0,H.useCrewSettingsCheck)(a&&m?null===u?(0,w.settingsOf)((0,w.defaultValues)(N)):u:void 0),U=(0,I.useShipTypes)(!1),[V,W]=(0,d.useState)({name:"",type:""}),X=(0,z.useIsShipNameTaken)(V.name),Y=(0,I.useTypeShipCount)(V.type),Z=j.data?.prompt==null?l.data:j.data,$=Z?"shown":l.isError?"error":"issuing",_=(a,b)=>{j.mutate(a,{onSuccess:({shipId:d,prompt:e})=>{c(!1);let f=m&&void 0!==b;f||(s(!0),null===e&&l.mutate({shipId:d})),void 0!==b&&k.mutate({shipId:d,settings:b.settings},{onSuccess:()=>{f&&(0,B.showToast)({title:`${a.name} commissioned, crew requested`,description:"The trierarch plugin assigns a trierarch that fits.",tone:"success"})},onError:b=>{(0,B.showToast)({title:`Couldn’t request a crew for ${a.name}`,description:`${b.message} The ship is commissioned; request a crew on its page.`,tone:"error"})}})}})};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(A.Button,{variant:"primary",icon:(0,b.jsx)(t.Plus,{}),"data-testid":"fleet-commission",onClick:()=>{j.reset(),l.reset(),M(null),c(!0)},children:"Commission ship"}),(0,b.jsx)(J,{types:U??[],taken:{names:!0===X?[V.name]:[],typeShipCounts:new Map(void 0===Y?[]:[[V.type,Y]])},onTypedChange:W,isOpen:a,onOpenChange:c,isPending:j.isPending,error:j.error?.message,shipLimit:(0,E.shipLimitReached)(h.data),accountUrl:i,scopeGroups:void 0===R.data?void 0:(e=R.data,f=new Map(e.filter(({kind:a})=>"core"===a).flatMap(({scopes:a})=>a.map(({scope:a,description:b})=>[a,b]))),g=Q.flatMap(a=>{let b=f.get(a);return void 0===b?[]:[{scope:a,description:b}]}),[{title:"Fleet access",namespace:null,scopes:g},...e.flatMap(({namespace:a,kind:b,declaredBy:c,scopes:d})=>"plugin"!==b||null===c||0===d.length?[]:[{title:c.name,namespace:a,scopes:d.map(({scope:a,description:b})=>({scope:a,description:b}))}]),...e.flatMap(({namespace:a,kind:b,scopes:c})=>"fleet"!==b?[]:[{title:"The fleet's own",namespace:a,scopes:c.map(({scope:a,description:b})=>({scope:a,description:b}))}])]),...m?{crewRequest:{offers:N,squadrons:"connected"===p?(q.data??[]).filter(a=>"disbanded"!==a.state).map(a=>a.id):void 0,...void 0===S?{}:{machineLabels:S},check:T.data,onSettingsChange:M}}:{},onSubmit:(a,b)=>{let c={...a,idempotencyKey:crypto.randomUUID()};m&&void 0!==b?T.checkNow().catch(()=>void 0).then(a=>{a?.kind!=="refused"&&_(c,b)}).catch(()=>void 0):_(c,b)}}),(0,b.jsx)(K,{shipName:j.variables?.name??"",state:$,prompt:Z?.prompt??void 0,crewLines:Z?.crewLines??void 0,error:l.error?.message,isOpen:r&&void 0!==j.data,onOpenChange:a=>{a||(s(!1),j.reset(),l.reset())},onConfirm:()=>{void 0!==j.data&&l.mutate({shipId:j.data.shipId})}})]})}var M=a.i(164831);let N={name:"infinity",size:24,node:[["path",{d:"M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8",key:"18ogeb"}]]};N.node;let O=(0,M.default)(N);var P=a.i(674746),Q=a.i(598238),R=a.i(523063);let S={ships:{label:"Ships",unit:"ships",Icon:Q.Ship},messages:{label:"Messages today",unit:"messages",Icon:P.Send}},T={below:"bg-primary",at:"bg-tone-waiting-fg",over:"bg-tone-attention-fg"},U={at:"at-limit",over:"over-limit"};function V({kind:a,count:c,limit:d,resetsAt:e}){let{label:f,unit:g,Icon:h}=S[a],i=(0,E.meterState)({count:c,limit:d}),k=U[i],l=(0,E.meterCaption)({count:c,limit:d}),m=null===d?0:0===d?1:Math.min(c/d,1);return(0,b.jsxs)("div",{"data-testid":`limit-meter-${a}`,"data-state":i,className:"flex flex-col gap-2 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)(h,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),f]}),void 0===k?null:(0,b.jsx)(R.StatusBadge,{status:k})]}),(0,b.jsxs)("p",{className:"flex items-baseline gap-1.5",children:[(0,b.jsx)("span",{className:"text-metric font-semibold tabular-nums",children:(0,E.meterCount)(c)}),(0,b.jsx)("span",{className:"text-body text-muted-foreground",children:null===d?g:`of ${(0,E.meterCount)(d)} ${g}`})]}),null===d?(0,b.jsxs)("p",{className:"inline-flex items-center gap-1.5 text-meta text-muted-foreground",children:[(0,b.jsx)(O,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),"No limit"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{role:"meter","aria-label":`${f}: ${String(c)} of ${String(d)}`,"aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":d,className:"block h-1.5 overflow-hidden rounded-full bg-secondary",children:(0,b.jsx)("span",{className:(0,j.classNames)("block h-full rounded-full","none"===i?void 0:T[i]),style:{width:`${String(100*m)}%`}})}),(0,b.jsxs)("p",{"data-testid":`limit-meter-${a}-caption`,className:"text-caption text-muted-foreground",children:[l,void 0===e?null:` \xb7 resets at ${(0,E.resetTime)(e)}`]})]})]})}function W(){let a=(0,C.useFleetLimits)().data,c=(0,D.useHostedAccountUrl)();return(0,E.hasLimits)(a)?(0,b.jsxs)("section",{"aria-labelledby":"overview-limits-title","data-testid":"overview-limits",className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("h2",{id:"overview-limits-title",className:"text-body font-semibold",children:"Limits"}),void 0===c?null:(0,b.jsx)("a",{href:c,"data-testid":"overview-limits-view",className:"text-meta font-medium text-primary underline underline-offset-2",children:"View limits"})]}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(V,{kind:"ships",count:a.ships.count,limit:a.ships.limit}),(0,b.jsx)(V,{kind:"messages",count:a.dailyMessages.count,limit:a.dailyMessages.limit,resetsAt:a.dailyMessages.resetsAt})]}),(0,b.jsx)("p",{"data-testid":"overview-limits-retention",className:"text-meta text-muted-foreground",children:(0,E.retentionLine)(a.retention)})]}):null}var X=a.i(345065),Y=a.i(393497),Z=a.i(408219),$=a.i(442871),_=a.i(726112),aa=a.i(433217),ab=a.i(328422),ac=a.i(347761),ad=a.i(514499);function ae(a,b){return a.reduce((a,c)=>a+b(c),0)}function af(a,b){let c=b.status?.includes("retired")??!1;return{shown:ae(a.view,a=>a.active+(c?a.retired:0)),total:ae(a.fleet,a=>a.active+a.retired),retired:ae(a.fleet,a=>a.retired)}}var ag=a.i(56482),ah=a.i(125093);function ai({alerts:a,hasMore:c,now:d}){return 0===a.length?null:(0,b.jsx)(ag.AlertPanel,{heading:`Open alerts \xb7 ${String(a.length)}${c?"+":""}`,lines:a.map(a=>({key:a.id,...(0,ah.alertOverviewLine)(a,d)})),testId:"fleet-open-alerts"})}var aj=a.i(755681),ak=a.i(925039),al=a.i(171094),am=a.i(233540);let an={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]};an.node;let ao=(0,M.default)(an);var ap=a.i(387005),aq=a.i(849219);let ar=["console","claudeCode","codex","trierarch","plugin","other"],as={console:"Console",claudeCode:"Claude Code",codex:"Codex",trierarch:"Trierarch",plugin:"Plugin",other:"Other"};function at(a){return ar.some(b=>b===a)}var au=a.i(60271);let av={query:"",filters:{status:[],crewRequest:[],kind:[],type:[],squadron:[],isRetiredShown:!1,labelValueIds:[]},sort:null};function aw(a){return[...new Set([...a.values()].map(a=>a.squadronId))].toSorted((a,b)=>a.localeCompare(b))}let ax={crewed:"Crewed",awaitingCrew:"Awaiting crew"};function ay(a){return aA(a).length+a.labelValueIds.length}function az(a,b){return 0===b.length?void 0:`${a}: ${b.join(", ")}`}function aA(a){return[az("Status",a.status.map(a=>ax[a])),az("Crew request",a.crewRequest.map(au.crewRequestKeyWord)),az("Kind",a.kind.map(a=>as[a])),az("Type",a.type),az("Squadron",a.squadron),a.isRetiredShown?"Retired shown":void 0].filter(a=>void 0!==a)}var aB=a.i(565230),aC=a.i(531429),aD=a.i(176166),aE=a.i(675297),aF=a.i(145098),aG=a.i(945469),aH=a.i(677339),aI=a.i(24173),aJ=a.i(240392),aK=a.i(770534),aL=a.i(136501);function aM({chips:a,width:c,testId:d,href:e}){if(0===a.length)return null;let{shown:f,folded:g}=0===c?{shown:[],folded:a}:(0,aB.rowChips)(a,c);return(0,b.jsxs)("span",{"data-testid":d,className:"flex min-w-0 items-center gap-1 overflow-hidden",children:[f.map((a,c)=>(0,b.jsx)(aL.LabelChip,{chip:a,className:0===c?"min-w-0 shrink":void 0},a.valueId)),0===g.length?null:void 0===e?(0,b.jsxs)("span",{title:g.map(aB.chipTitleOf).join("; "),className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums",children:["+",g.length,(0,b.jsx)("span",{className:"sr-only",children:" more labels"})]}):(0,b.jsxs)(i.default,{href:e,title:g.map(aB.chipTitleOf).join("; "),"aria-label":`View ${g.length} more labels`,className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:["+",g.length]})]})}var aN=a.i(350808);let aO={name:"signal",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}],["path",{d:"M17 20V8",key:"1tkaf5"}],["path",{d:"M22 4v16",key:"sih9yq"}]]};aO.node;let aP=(0,M.default)(aO),aQ={name:"signal-low",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}]]};aQ.node;let aR=(0,M.default)(aQ),aS={name:"signal-medium",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}]]};aS.node;let aT=(0,M.default)(aS);var aU=a.i(14501);let aV={fresh:{Icon:aP,tone:"text-tone-ok-fg"},while:{Icon:aT,tone:"text-muted-foreground"},long:{Icon:aR,tone:"text-tone-waiting-fg"}};function aW({seenAt:a,now:c,testId:d}){let e;if(null===a)return null;let f=new Date(a),g=(e=c.getTime()-f.getTime())<6e4?"fresh":e<=9e5?"while":"long",{Icon:h,tone:i}=aV[g],k=(0,p.lastSeen)(f,c);return(0,b.jsxs)(aU.Tooltip,{children:[(0,b.jsx)(aU.TooltipTrigger,{render:(0,b.jsx)("span",{role:"img","aria-label":k,"data-testid":d,"data-signal":g,className:(0,j.classNames)("inline-flex [&_svg]:size-(--size-icon) max-sm:[&_svg]:size-4",i)}),children:(0,b.jsx)(h,{"aria-hidden":!0})}),(0,b.jsx)(aU.TooltipContent,{children:k})]})}var aX=a.i(598606),aY=a.i(240108),aZ=a.i(424133);function a$({model:a,now:c}){let d=(0,aZ.modelStatedWords)(a,c);return(0,b.jsxs)(aU.Tooltip,{children:[(0,b.jsxs)(aU.TooltipTrigger,{render:(0,b.jsx)("span",{"data-testid":"fleet-model-hint",className:"min-w-0 truncate font-mono text-id text-muted-foreground"}),children:[a.id,(0,b.jsxs)("span",{className:"sr-only",children:[", ",d]})]}),(0,b.jsx)(aU.TooltipContent,{children:(0,b.jsxs)("span",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"font-mono",children:a.id}),(0,b.jsx)("span",{children:d})]})})]})}var a_=a.i(892717),a0=a.i(858523),a1=a.i(990468),a2=a.i(248136);function a3({label:a,items:c,picked:d,onPickedChange:e,size:f="sm",valueClassName:g,testId:h}){let i=function(a,b){let[c]=a;return void 0===c?{kind:"all"}:1===a.length?{kind:"one",word:b[c]??c}:{kind:"several",count:a.length}}(d,c);return(0,b.jsxs)(a2.Select,{multiple:!0,value:0===d.length?["all"]:[...d],onValueChange:a=>{e(d.length>0&&a.includes("all")?[]:a.filter(a=>"all"!==a))},children:[(0,b.jsx)(a2.SelectTrigger,{size:f,"aria-label":a,"data-testid":h,children:(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a}),"several"===i.kind?(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[i.count,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}):(0,b.jsx)("span",{className:(0,j.classNames)("font-medium","one"===i.kind?g:void 0),children:"one"===i.kind?i.word:"All"})]})}),(0,b.jsxs)(a2.SelectContent,{children:[(0,b.jsx)(a2.SelectItem,{value:"all",children:"All"}),Object.entries(c).map(([a,c])=>(0,b.jsx)(a2.SelectItem,{value:a,className:g,children:c},a))]})]})}function a4({label:a,allLabel:c="All",items:d,picked:e,onPickedChange:f,layout:g="chips",testId:h}){return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)("span",{"aria-hidden":!0,className:"text-meta font-medium text-muted-foreground",children:a}),(0,b.jsxs)("div",{role:"group","aria-label":a,"data-testid":h,className:"segments"===g?"flex gap-1.5 [&>*]:flex-1":"flex flex-wrap gap-1.5",children:[(0,b.jsx)(A.Button,{variant:0===e.length?"primary":"secondary",size:"touch","aria-pressed":0===e.length,onClick:()=>{f([])},children:c}),Object.entries(d).map(([a,c])=>{let d=e.includes(a);return(0,b.jsx)(A.Button,{variant:d?"primary":"secondary",size:"touch","aria-pressed":d,onClick:()=>{f(d?e.filter(b=>b!==a):[...e,a])},children:c},a)})]})]})}var a5=a.i(589027),a6=a.i(31247),a7=a.i(303894),a8=a.i(819721),a9=a.i(860275);let ba=(0,a8.default)(async()=>{},{loadableGenerated:{modules:[259068]},ssr:!1});function bb({groups:a,picked:c,onPick:e,trigger:f}){let[g,h]=(0,d.useState)(!1);return(0,b.jsxs)(a9.Popover,{open:g,onOpenChange:h,children:[(0,b.jsx)(a9.PopoverTrigger,{render:f}),(0,b.jsxs)(a9.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":"label-filter-popover",children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:"Filter by label"}),(0,b.jsx)(ba,{groups:a,pickedValueIds:c.map(a=>a.valueId),onPick:a=>{e(a),h(!1)}}),(0,b.jsxs)("p",{className:"mt-2 flex items-center justify-between gap-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:["Exact matches, all must hold.",(0,b.jsx)(i.default,{href:"/labels",className:"font-medium text-foreground hover:underline","data-testid":"label-filter-manage",children:"Manage labels"})]})]})]})}function bc({groups:a,picked:c,onPick:d}){return(0,b.jsx)(bb,{groups:a,picked:c,onPick:d,trigger:(0,b.jsxs)(A.Button,{variant:"secondary",size:"sm",icon:(0,b.jsx)(a6.Tag,{}),"data-testid":"fleet-filter-labels",children:["Labels",0===c.length?null:(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[c.length,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}),(0,b.jsx)(a5.ChevronDown,{"aria-hidden":!0,className:"text-muted-foreground"})]})})}function bd({groups:a,picked:c,onPick:d,onRemove:e,onClear:f}){return 0===c.length?null:(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1.5 text-meta max-sm:hidden","data-testid":"fleet-picked-labels",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"Ships with"}),c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aL.LabelChip,{chip:a,testId:"fleet-picked-label",onRemove:()=>{e(a.valueId)}})]},a.valueId)),(0,b.jsx)(bb,{groups:a,picked:c,onPick:d,trigger:(0,b.jsx)(A.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(t.Plus,{}),children:"Add"})}),(0,b.jsx)("span",{"aria-hidden":!0,className:"h-4 w-px bg-border"}),(0,b.jsx)(A.Button,{variant:"ghost",size:"xs",onClick:f,"data-testid":"fleet-labels-clear",children:"Clear labels"})]})}function be({groups:a,picked:c,onPick:e,onRemove:f}){let[g,h]=(0,d.useState)(!1);return(0,b.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"fleet-filter-labels-touch",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-meta font-medium text-muted-foreground",children:["Labels ",(0,b.jsx)("span",{className:"font-normal",children:"all must hold"})]}),0===c.length?null:(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 text-meta",children:c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aL.LabelChip,{chip:a,onRemove:()=>{f(a.valueId)}})]},a.valueId))}),g?(0,b.jsx)("div",{className:"rounded-lg border border-border p-2",children:(0,b.jsx)(ba,{groups:a,pickedValueIds:c.map(a=>a.valueId),size:"touch",onPick:a=>{e(a),h(!1)}})}):(0,b.jsx)(A.Button,{variant:"secondary",size:"touch",icon:(0,b.jsx)(t.Plus,{}),className:"self-start",onClick:()=>{h(!0)},children:"Add label"}),(0,b.jsxs)(i.default,{href:"/labels",className:"inline-flex items-center gap-1.5 self-start text-meta text-muted-foreground hover:underline [&_svg]:size-(--size-icon-sm)",children:[(0,b.jsx)(a7.Tags,{"aria-hidden":!0}),"All labels and their owners"]})]})}function bf(a,b){return{...a,filters:{...a.filters,labelValueIds:b}}}function bg(a){return Object.hasOwn(ax,a)}function bh(a){return Object.fromEntries((0,au.crewRequestKeysOf)(a).map(a=>[a,(0,au.crewRequestKeyWord)(a)]))}function bi(a,b){return Object.hasOwn(b,a)}function bj(a){return Object.fromEntries(a.map(a=>[a,a]))}function bk({ship:a,squadron:c,isPluginShip:d}){return"operator"===a.kind?(0,b.jsxs)(aD.Badge,{variant:"kind",children:[(0,b.jsx)(ap.UserRound,{"aria-hidden":!0}),"operator"]}):"viewer"===a.kind?(0,b.jsxs)(aD.Badge,{variant:"kind","data-testid":"fleet-viewer",children:[(0,b.jsx)(aj.Eye,{"aria-hidden":!0}),"viewer"]}):d?(0,b.jsxs)(aD.Badge,{variant:"kind","data-testid":"fleet-plugin",children:[(0,b.jsx)(al.Plug,{"aria-hidden":!0}),"plugin"]}):c?.role===null?(0,b.jsxs)(aD.Badge,{variant:"kind","data-testid":"fleet-flagship",children:[(0,b.jsx)(ak.Flag,{"aria-hidden":!0}),"flagship"]}):null}function bl({ship:a,now:c}){return"crewed"!==a.status||"viewer"===a.kind?null:(0,b.jsxs)("span",{"data-testid":"fleet-runs-on",className:"flex min-w-0 items-center gap-3 max-sm:flex-wrap max-sm:gap-y-1",children:[(0,b.jsx)(aY.LocationTag,{kind:"operator"===a.kind&&null!==a.location?"DEVICE":a.location?.kind??null,description:a.location?.description,harness:"operator"===a.kind?"console":a.harness,isHarnessUnknown:"agent"===a.kind&&null===a.harness,size:"sm",className:"shrink-0"}),"agent"===a.kind&&null!==a.model?(0,b.jsx)(a$,{model:a.model,now:c}):null]})}function bm({ship:a,squadron:c,labels:d}){let e=c?.role===null?void 0:c,f=void 0===d?[]:(0,aB.chipsOf)(a,d).filter(a=>void 0===e||("squadron"!==a.key||a.value!==e.squadronId)&&("squadron-role"!==a.key||a.value!==e.role));return void 0===e&&0===f.length?null:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 overflow-hidden",children:[void 0===e?null:(0,b.jsx)("span",{className:"min-w-0 shrink",title:null===e.role?e.squadronId:`${e.squadronId} \xb7 ${e.role}`,children:(0,b.jsx)(a0.SquadronTag,{squadronId:e.squadronId,size:"sm"})}),(0,b.jsx)(aM,{chips:f,width:22*(void 0===e),testId:"fleet-labels",href:`/ships/${a.id}`})]})}function bn({ship:a,now:c,viewerFleetId:d,next:e}){let f=("agent"===a.kind||"plugin"===a.kind)&&"crewed"===a.status;return(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 max-sm:flex-col max-sm:items-stretch [&:has(button)>[data-testid=fleet-report]]:hidden",children:[f?(0,b.jsx)(a_.ReportLine,{report:a.report,now:c,variant:"row",viewerFleetId:d,isTimeInTitle:!0,testId:"fleet-report"}):null,e]})}function bo({types:a,view:c,onViewChange:d,size:e,squadronsOf:f,labels:g}){let h=bh((0,v.useConsoleConstants)().crewStatuses),{filters:i}=c,j=a=>{d({...c,filters:{...i,...a}})},k="touch"===e;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a3,{label:"Status",items:ax,picked:i.status,onPickedChange:a=>{j({status:a.filter(bg)})},size:e,testId:k?void 0:"fleet-filter-status"}),(0,b.jsx)(a3,{label:"Crew request",items:h,picked:i.crewRequest,onPickedChange:a=>{j({crewRequest:a.filter(a=>bi(a,h))})},size:e,testId:k?void 0:"fleet-filter-crew-request"}),(0,b.jsx)(a3,{label:"Kind",items:as,picked:i.kind,onPickedChange:a=>{j({kind:a.filter(at)})},size:e,testId:k?void 0:"fleet-filter-kind"}),(0,b.jsx)(a3,{label:"Type",items:bj(a),picked:i.type,onPickedChange:a=>{j({type:a})},size:e,valueClassName:"font-mono",testId:k?void 0:"fleet-filter-type"}),f&&(0,b.jsx)(a3,{label:"Squadron",items:bj(aw(f)),picked:i.squadron,onPickedChange:a=>{j({squadron:a})},size:e,testId:k?void 0:"fleet-filter-squadron"}),void 0===g||k?null:(0,b.jsx)(bc,{groups:(0,aB.filterGroupsOf)(g),picked:(0,aB.pickedChips)(i.labelValueIds,g),onPick:a=>{d(bf(c,[...i.labelValueIds,a]))}}),aA(i).length>0&&!k?(0,b.jsx)(A.Button,{variant:"ghost",size:"xs","data-testid":"fleet-filters-clear",onClick:()=>{d({...c,filters:av.filters})},children:"Clear filters"}):null]})}function bp(a){return void 0===a?"":` (${String(a.retired)})`}function bq({counts:a,view:c,onViewChange:d}){let e="fleet-show-retired";return(0,b.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,b.jsx)(aG.Switch,{id:e,"data-testid":"fleet-show-retired",checked:c.filters.isRetiredShown,onCheckedChange:a=>{d({...c,filters:{...c.filters,isRetiredShown:a}})}}),(0,b.jsxs)(aF.Label,{htmlFor:e,className:"text-meta font-normal text-muted-foreground",children:["Show retired",bp(a)]})]})}function br({types:a,counts:c,view:d,onViewChange:e,squadronsOf:f,labels:g}){let h=bh((0,v.useConsoleConstants)().crewStatuses),{filters:i}=d,j=a=>{e({...d,filters:{...i,...a}})},k=ay(i);return(0,b.jsxs)(aq.Sheet,{children:[(0,b.jsx)(aq.SheetTrigger,{render:(0,b.jsx)(A.Button,{size:"touch",isIconOnly:!0,"aria-label":k>0?`Filter ships, ${String(k)} active`:"Filter ships","data-testid":"fleet-filters-open",icon:(0,b.jsx)(ao,{}),className:"relative sm:hidden",children:k>0?(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute top-1.5 right-1.5 size-2 rounded-full bg-primary"}):null})}),(0,b.jsxs)(aq.SheetContent,{side:"bottom",children:[(0,b.jsxs)(aq.SheetHeader,{className:"flex-row items-center justify-between",children:[(0,b.jsx)(aq.SheetTitle,{children:"Filter ships"}),(0,b.jsx)(A.Button,{variant:"ghost",size:"touch","data-testid":"fleet-filters-reset",onClick:()=>{e({...d,filters:av.filters})},children:"Reset"})]}),(0,b.jsxs)(aq.SheetBody,{className:"flex flex-col gap-4 pb-4",children:[(0,b.jsx)(a4,{label:"Status",layout:"segments",items:ax,picked:i.status,onPickedChange:a=>{j({status:a.filter(bg)})}}),(0,b.jsx)(a4,{label:"Crew request",items:h,picked:i.crewRequest,onPickedChange:a=>{j({crewRequest:a.filter(a=>bi(a,h))})}}),(0,b.jsx)(a4,{label:"Kind",items:as,picked:i.kind,onPickedChange:a=>{j({kind:a.filter(at)})},testId:"fleet-filter-kind-touch"}),(0,b.jsx)(a4,{label:"Type",allLabel:"All types",items:bj(a),picked:i.type,onPickedChange:a=>{j({type:a})}}),f&&(0,b.jsx)(a4,{label:"Squadron",items:bj(aw(f)),picked:i.squadron,onPickedChange:a=>{j({squadron:a})}}),void 0===g?null:(0,b.jsx)(be,{groups:(0,aB.filterGroupsOf)(g),picked:(0,aB.pickedChips)(i.labelValueIds,g),onPick:a=>{e(bf(d,[...i.labelValueIds,a]))},onRemove:a=>{e(bf(d,i.labelValueIds.filter(b=>b!==a)))}}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 py-1",children:[(0,b.jsxs)(aF.Label,{htmlFor:"fleet-show-retired-touch",className:"text-body-touch font-normal",children:["Show retired ships ",(0,b.jsx)("span",{className:"text-muted-foreground",children:bp(c)})]}),(0,b.jsx)(aG.Switch,{id:"fleet-show-retired-touch",checked:i.isRetiredShown,onCheckedChange:a=>{j({isRetiredShown:a})}})]}),(0,b.jsx)(aq.SheetClose,{render:(0,b.jsx)(A.Button,{size:"touch","data-testid":"fleet-filters-apply"}),children:void 0===c?"Show ships":1===c.shown?"Show 1 ship":`Show ${String(c.shown)} ships`})]})]})]})}function bs({view:a,onViewChange:c,labels:d}){let e=aA(a.filters),f=void 0===d?[]:(0,aB.pickedChips)(a.filters.labelValueIds,d);return 0===e.length&&0===f.length?null:(0,b.jsxs)("div",{className:"flex w-full flex-wrap items-center gap-1.5 sm:hidden","data-testid":"fleet-filter-chips",children:[e.map(a=>(0,b.jsx)(aD.Badge,{variant:"outline",className:"max-w-full truncate",children:a},a)),f.map(d=>(0,b.jsx)(aL.LabelChip,{chip:d,onRemove:()=>{c(bf(a,a.filters.labelValueIds.filter(a=>a!==d.valueId)))}},d.valueId)),(0,b.jsx)(A.Button,{variant:"ghost",size:"touch",onClick:()=>{c({...a,filters:av.filters})},children:"Clear filters"})]})}function bt({types:a,counts:c,view:d,onViewChange:e,squadronsOf:f,labels:g}){return(0,b.jsxs)("div",{"data-slot":"fleet-toolbar",className:"flex flex-wrap items-center gap-2 sm:flex-nowrap sm:items-start",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-2",children:[(0,b.jsx)("div",{className:"w-60 max-sm:min-w-0 max-sm:flex-1",children:(0,b.jsx)(aE.Input,{type:"search","aria-label":"Search ships by name or type",placeholder:"Search ships by name","data-testid":"fleet-search",value:d.query,onChange:a=>{e({...d,query:a.target.value})},leadingIcon:(0,b.jsx)(am.Search,{}),className:"h-(--size-control-sm) text-meta max-sm:h-(--size-control-touch) max-sm:text-input-touch"})}),(0,b.jsx)("div",{className:"max-sm:hidden sm:contents",children:(0,b.jsx)(bo,{types:a,view:d,onViewChange:e,squadronsOf:f,labels:g,size:"sm"})}),(0,b.jsx)(br,{types:a,counts:c,view:d,onViewChange:e,squadronsOf:f,labels:g})]}),(0,b.jsx)(bs,{view:d,onViewChange:e,labels:g}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2 max-sm:w-full sm:h-(--size-control-sm)",children:[(0,b.jsx)("div",{className:"max-sm:hidden",children:(0,b.jsx)(bq,{counts:c,view:d,onViewChange:e})}),void 0===c?null:(0,b.jsxs)("p",{"aria-live":"polite",className:"text-meta text-muted-foreground tabular-nums","data-testid":"fleet-count",children:[c.shown," of ",c.total," ships"]})]})]})}function bu({ship:a}){return(0,b.jsx)(a1.ShipName,{name:a.name,shipId:a.id,isSuffixShown:"retired"===a.status,href:"operator"===a.kind?"/inbox":`/ships/${a.id}`,className:"[&_a]:max-sm:whitespace-normal [&_a]:max-sm:break-all [&_a]:max-sm:text-body-touch"})}let bv=[{key:"ship",column:"ship",head:"Ship"},{key:"status",column:"status",head:"Status"},{key:"report",column:"report",head:"Report"},{key:"squadronAndLabels",head:"Squadron and labels"},{key:"runsOn",column:"runsOn",head:"Runs on"},{key:"seen",column:"seen",head:"Seen"}];function bw({ships:a,highlightedShipIds:c,now:d,viewerFleetId:e,renderRowActions:f,squadronsOf:g,labels:h,pluginShipIds:i,sort:j,onSort:k}){return(0,b.jsx)("div",{className:"max-sm:hidden",children:(0,b.jsxs)(aH.Table,{"aria-label":"Ships",className:"min-w-320 table-fixed",children:[(0,b.jsxs)("colgroup",{children:[(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-40"}),(0,b.jsx)("col",{className:"w-64"}),(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-64"}),(0,b.jsx)("col",{className:"w-28"}),(0,b.jsx)("col",{className:"w-12"})]}),(0,b.jsx)(aH.TableHeader,{children:(0,b.jsxs)(aH.TableRow,{children:[bv.map(({key:a,column:c,head:d})=>void 0===k||void 0===c?(0,b.jsx)(aH.TableHead,{children:d},a):(0,b.jsx)(aH.TableSortHead,{"data-testid":`fleet-sort-${c}`,direction:j?.column===c?j.direction:null,onSort:()=>{k(c)},children:d},a)),(0,b.jsx)(aH.TableHead,{children:(0,b.jsx)("span",{className:"sr-only",children:"Actions"})})]})}),(0,b.jsx)(aH.TableBody,{children:a.map(a=>(0,b.jsxs)(aH.TableRow,{"data-testid":`fleet-row-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"h-12",children:[(0,b.jsx)(aH.TableCell,{children:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 whitespace-nowrap",children:[(0,b.jsx)(bu,{ship:a}),(0,b.jsx)(bk,{ship:a,squadron:g?.get(a.id),isPluginShip:i?.has(a.id)??!1})]})}),(0,b.jsx)(aH.TableCell,{children:(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(R.StatusBadge,{status:a.status}),(0,b.jsx)(bx,{ship:a})]})}),(0,b.jsx)(aH.TableCell,{children:(0,b.jsx)(bn,{ship:a,now:d,viewerFleetId:e,next:f?.(a,"next")})}),(0,b.jsx)(aH.TableCell,{children:(0,b.jsx)(bm,{ship:a,squadron:g?.get(a.id),labels:h})}),(0,b.jsx)(aH.TableCell,{children:(0,b.jsx)(bl,{ship:a,now:d})}),(0,b.jsx)(aH.TableCell,{children:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)(aW,{seenAt:a.lastSeenAt,now:d,testId:"fleet-last-seen"}),(0,b.jsx)(aX.ActivityLine,{activity:a.activity,now:d,variant:"row",testId:"fleet-activity"})]})}),(0,b.jsx)(aH.TableCell,{className:"w-10 text-right",children:f?.(a,"table")})]},a.id))})]})})}function bx({ship:a}){return 0===a.openAlertCount?null:(0,b.jsx)("span",{title:(0,aC.counted)(a.openAlertCount,{one:"open alert",many:"open alerts"}),"data-testid":"fleet-alert",children:(0,b.jsx)(R.StatusBadge,{status:"alert"})})}function by({ships:a,highlightedShipIds:c,now:d,viewerFleetId:e,renderRowActions:f,squadronsOf:g,pluginShipIds:h}){return(0,b.jsx)("ul",{"aria-label":"Ships",className:"overflow-hidden rounded-lg border border-border bg-card sm:hidden",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":`fleet-card-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"flex items-start gap-2 border-b border-border px-3.5 py-3 last:border-0 data-new:animate-highlight",children:[(0,b.jsxs)("div",{className:"flex min-w-0 grow flex-col gap-1.5",children:[(0,b.jsx)("div",{className:"text-body-touch",children:(0,b.jsx)(bu,{ship:a})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(R.StatusBadge,{status:a.status}),(0,b.jsx)(bx,{ship:a}),(0,b.jsx)(bk,{ship:a,squadron:g?.get(a.id),isPluginShip:h?.has(a.id)??!1})]}),(0,b.jsx)(bm,{ship:a,squadron:g?.get(a.id)}),(0,b.jsx)(bn,{ship:a,now:d,viewerFleetId:e,next:f?.(a,"next")}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1",children:[(0,b.jsx)(bl,{ship:a,now:d}),(0,b.jsx)(aW,{seenAt:a.lastSeenAt,now:d}),(0,b.jsx)(aX.ActivityLine,{activity:a.activity,now:d,variant:"row"})]})]}),f?.(a,"phone")]},a.id))})}function bz({ships:a,counts:c,isOnlyArgo:d,types:e,more:f,view:g,onViewChange:h,state:i,error:j,highlightedShipIds:k,now:l,viewerFleetId:m,renderRowActions:n,emptyAction:o,squadronsOf:p,labels:q,pluginShipIds:r}){let s;if("loading"===i)return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"loading",className:"flex flex-col gap-3",children:[(0,b.jsx)(aN.LoadingSkeleton,{variant:"table",rows:6,label:"Loading the fleet",className:"max-sm:hidden"}),(0,b.jsx)(aN.LoadingSkeleton,{variant:"list",rows:5,label:"Loading the fleet",className:"sm:hidden"})]});if("error"===i)return(0,b.jsx)(aJ.InlineError,{variant:"page",title:"Couldn’t load the fleet",description:"This page couldn’t reach the fleet server. Check that the server is running and reachable from this browser, then try again.",detail:j?.detail,onRetry:j?.onRetry});let t={highlightedShipIds:k,now:l,viewerFleetId:m,renderRowActions:n,squadronsOf:p,pluginShipIds:r};if(d){let c=a.filter(a=>"operator"===a.kind);return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"empty",className:"flex flex-col gap-3",children:[(0,b.jsx)(bw,{ships:c,labels:q,...t}),(0,b.jsx)(by,{ships:c,...t}),(0,b.jsx)(aI.EmptyState,{icon:(0,b.jsx)(Q.Ship,{}),title:"No ships besides argo yet",description:"argo is your own ship: messages to the operator land in its inbox. Commission a ship to add an agent to the fleet.",action:o})]})}let u=g.query.trim();return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"ready",className:"flex flex-col gap-3",children:[(0,b.jsx)(bt,{types:e,counts:c,view:g,onViewChange:h,squadronsOf:p,labels:q}),void 0===q?null:(0,b.jsx)(bd,{groups:(0,aB.filterGroupsOf)(q),picked:(0,aB.pickedChips)(g.filters.labelValueIds,q),onPick:a=>{h(bf(g,[...g.filters.labelValueIds,a]))},onRemove:a=>{h(bf(g,g.filters.labelValueIds.filter(b=>b!==a)))},onClear:()=>{h(bf(g,[]))}}),0===a.length?(0,b.jsx)(aI.EmptyState,{variant:"no-results",title:""===u?"No ships match these filters.":`No ships match “${u}”.`,action:(0,b.jsx)(A.Button,{size:"xs","data-testid":"fleet-clear-filters",onClick:()=>{h({...av,sort:g.sort})},children:(s=ay(g.filters)>0,""===u?"Clear filters":s?"Clear search and filters":"Clear search")})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(bw,{ships:a,labels:q,sort:g.sort,onSort:a=>{var b;h({...g,sort:(b=g.sort,b?.column!==a?{column:a,direction:"ascending"}:"ascending"===b.direction?{column:a,direction:"descending"}:null)})},...t}),(0,b.jsx)(by,{ships:a,...t}),f?.hasMore===!0?(0,b.jsx)(aK.LoadMore,{what:"more ships",isLoading:f.isLoading,isFailed:f.isFailed,onLoad:f.onLoad,area:"fleet"}):null]})]})}function bA({view:a,onViewChange:c,placedFirstShipIds:d,renderRowActions:e}){var f,g;let h,i,j=(0,o.useNow)(),k=(0,Y.useSessionFleetId)(),l=(0,G.useSquadrons)(),m=(0,x.useLabelContext)(),n=(0,X.usePluginShipIds)(),p=l.data?(0,Z.shipsInSquadrons)(l.data):void 0,q=function({query:a,filters:b},c){var d;let e=0===b.squadron.length?[]:(d=b.squadron,[...c.squadronsOf??new Map].filter(([,a])=>d.includes(a.squadronId)).map(([a])=>a));if(b.squadron.length>0&&0===e.length)return null;let f=a.trim(),g=b.status.length>0?[...b.status]:b.isRetiredShown?["awaitingCrew","crewed","retired"]:[];return{...""===f?{}:{query:f},...0===g.length?{}:{status:[...g]},...0===b.type.length?{}:{type:[...b.type]},...0===b.crewRequest.length?{}:{crewRequest:[...b.crewRequest]},...0===b.labelValueIds.length?{}:{valueIds:[...b.labelValueIds]},...0===e.length?{}:{shipIds:e},...0===b.kind.length?{}:{kind:[...b.kind],pluginShipIds:[...c.pluginShipIds]}}}(a,{squadronsOf:p,pluginShipIds:n}),r=(g=null===(f=a.sort)?void 0:{column:f.column,direction:f.direction},h=(0,ad.useTRPC)(),i=(0,ab.pagedListOf)((0,_.useInfiniteQuery)(h.fleet.list.infiniteQueryOptions({...q,sort:g,limit:ab.CONSOLE_PAGE_SIZE},{enabled:null!==q,getNextPageParam:ab.nextCursorOf,placeholderData:$.keepPreviousData,refetchInterval:x.LAST_SEEN_REFRESH_MS}))),null===q?{...i,items:[],hasMore:!1}:{...i,items:i.items&&(0,ac.shipRowsOf)(i.items,q)}),{counts:s,isOnlyArgo:t}=function(a){let b=(0,ad.useTRPC)(),c=(0,aa.useQuery)(b.fleet.shipCounts.queryOptions({filter:a??{}},{enabled:null!==a,placeholderData:$.keepPreviousData})),d=(0,aa.useQuery)(b.fleet.shipCounts.queryOptions());if(void 0===d.data)return{counts:void 0,isOnlyArgo:!1};let e=0===ae(d.data,a=>"operator"===a.kind?0:a.active);return null===a?{counts:af({view:[],fleet:d.data},{}),isOnlyArgo:e}:{counts:void 0===c.data?void 0:af({view:c.data,fleet:d.data},a),isOnlyArgo:e}}(q),u=(0,I.useShipTypes)(a.filters.isRetiredShown),v=function(){let a=(0,ad.useTRPC)(),{data:b}=(0,aa.useQuery)(a.fleet.openAlerts.queryOptions({limit:ab.CONSOLE_PAGE_SIZE},{refetchInterval:x.LAST_SEEN_REFRESH_MS}));return b&&{alerts:b.items,hasMore:null!==b.nextCursor}}();return(0,b.jsxs)("section",{"aria-label":"Fleet",className:"flex flex-col gap-3",children:[void 0===v?null:(0,b.jsx)(ai,{alerts:v.alerts,hasMore:v.hasMore,now:j}),(0,b.jsx)(bz,{ships:r.items??[],counts:s,isOnlyArgo:t,types:[...new Set([...u??[],...a.filters.type])].toSorted((a,b)=>a.localeCompare(b)),more:{hasMore:r.hasMore,isLoading:r.isLoadingMore,isFailed:r.isLoadMoreFailed,onLoad:r.loadMore},view:a,onViewChange:c,state:r.isFailed?"error":void 0===r.items?"loading":"ready",error:{detail:r.error instanceof Error?r.error.message:void 0,onRetry:r.retry},highlightedShipIds:d,now:j,viewerFleetId:k,renderRowActions:e,squadronsOf:p,labels:m,pluginShipIds:n})]})}var bB=a.i(483171),bC=a.i(933351),bD=a.i(126766);function bE({title:a,description:c}){return(0,b.jsxs)("div",{role:"status","data-testid":"overview-key-not-reachable",className:"flex gap-2 rounded-lg border border-tone-attention-border bg-tone-attention-bg p-3 text-tone-attention-fg",children:[(0,b.jsx)(bD.KeyRound,{"aria-hidden":!0,className:"mt-0.5 size-(--size-icon) shrink-0"}),(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsx)("p",{className:"text-body font-medium",children:a}),(0,b.jsx)("p",{className:"text-meta text-foreground",children:c}),(0,b.jsx)(i.default,{href:"/sealing",className:"self-start text-meta font-medium text-tone-attention-fg underline underline-offset-2","data-testid":"overview-key-not-reachable-view",children:"View sealing"})]})]})}function bF(){let a=(0,o.useNow)(),c=function(a,b){if(void 0===a||"none"===a.state||a.keyAvailability.isAvailable)return;let{reason:c,since:d}=a.keyAvailability;return{title:"Company key not reachable",description:`Since ${(0,p.sinceTime)(new Date(d),b)} your KMS answers: ${(0,bC.keyUnavailableReasonWords)(c)}. Sends and receives in this fleet are refused until it is reachable again. Nothing waiting is lost.`}}((0,bB.useFleetSealing)().data,a);return void 0===c?null:(0,b.jsx)(bE,{...c})}var bG=a.i(753805),bH=a.i(347434),bI=a.i(221521),bJ=a.i(591003),bK=a.i(38023),bL=a.i(773224),bM=a.i(565563),bN=a.i(139353);function bO({canDefineLabels:a,canDefineScopes:c,sealing:d,commission:e}){return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 max-sm:flex-col max-sm:items-stretch",children:[(0,b.jsx)(A.Button,{render:(0,b.jsx)(i.default,{href:"/labels"}),nativeButton:!1,icon:(0,b.jsx)(a6.Tag,{}),"data-testid":"overview-labels",children:a?"Manage labels":"View labels"}),(0,b.jsx)(A.Button,{render:(0,b.jsx)(i.default,{href:"/scopes"}),nativeButton:!1,icon:(0,b.jsx)(bD.KeyRound,{}),"data-testid":"overview-scopes",children:c?"Manage scopes":"View scopes"}),"off"===d?null:(0,b.jsx)(A.Button,{render:(0,b.jsx)(i.default,{href:"/sealing"}),nativeButton:!1,icon:(0,b.jsx)(bN.Lock,{}),"data-testid":"overview-sealing",children:"manage"===d?"Manage sealing":"View sealing"}),e]})}var bP=a.i(167336),bQ=a.i(110572),bR=a.i(534159);a.s(["OverviewPage",0,function({view:a,isCommissionAsked:f}){var g;let h=(0,c.useRouter)(),i=(0,q.useShipCounts)(),j=(0,bP.useLiveFleet)(),k=(0,bK.useConsoleFrame)(),l=(0,E.messageLimitReached)((0,C.useFleetLimits)().data),m=(0,D.useHostedAccountUrl)(),n=(0,bM.useAccess)(),o=(0,bM.useIsFeatureOn)("sealing"),p=(0,bR.usePluginNav)(),[t,u]=(0,d.useState)(!1),[v,w]=(0,d.useOptimistic)(a);(0,bQ.useSignInWhenSessionEnds)([i.error,j.error]);let x=a=>{let b=(function(a){let b=new URLSearchParams;for(let[c,d]of(""!==a.query&&b.set("q",a.query),[["status",a.filters.status],["crew",a.filters.crewRequest],["kind",a.filters.kind],["type",a.filters.type],["squadron",a.filters.squadron]]))for(let a of d)b.append(c,a);for(let c of(a.filters.isRetiredShown&&b.set("retired","1"),a.filters.labelValueIds))b.append("label",c);return null!==a.sort&&(b.set("sort",a.sort.column),"descending"===a.sort.direction&&b.set("order","desc")),b})(a).toString();(0,d.startTransition)(()=>{w(a),h.replace(""===b?"/":`/?${b}`,{scroll:!1})})};return(0,b.jsxs)(bJ.ListPage,{...k,title:"Fleet overview",description:i.data?function(a){let b=r(a.counts),c=b?.active??0,d=b?.retired??0;if(0===c&&0===d)return a.canCommission?"Only argo so far. Ships you commission appear here.":"Only argo so far.";let e=0===d?"":`, ${String(d)} retired`;return`${1===c?"1 active ship":`${String(c)} active ships`} and argo${e}. Changes appear as they happen.`}({counts:i.data,canCommission:n.canManage}):"Loading your fleet",primaryAction:(0,b.jsx)(bO,{canDefineLabels:n.canDefineLabels,canDefineScopes:n.canDefineScopes,sealing:(g={isSealingOn:o,canChangeKeys:n.canChangeKeys}).isSealingOn?g.canChangeKeys?"manage":"view":"off",commission:n.canManage?(0,b.jsx)(L,{isOpen:t||f,onOpenChange:b=>{u(b),!b&&f&&x(a)}}):null}),live:j.live,children:[(0,b.jsx)(bL.FleetSegments,{active:"ships",needsCrewCount:p.needsCrewCount}),void 0===l?null:(0,b.jsx)(bI.LimitNotice,{...(0,E.messageLimitNotice)(l),accountUrl:m,testId:"overview-message-limit"}),(0,b.jsx)(bF,{}),(0,b.jsx)(W,{}),(0,b.jsx)(s,{}),(0,b.jsx)(bA,{view:v,onViewChange:x,placedFirstShipIds:j.placedFirstShipIds,renderRowActions:(a,c)=>(0,b.jsx)(bG.ShipActions,{ship:a,layout:"table"===c?"menu":"phone"===c?"sheet":"next",compose:e.ComposeMessage,crewLineFlow:bH.NewCrewLineFlow})})]})}],259446)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_console_app_%28console%29_overview-page_tsx_15siba6._.js.map
|