@aeolus-fleet/console 0.27.0 → 0.28.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/build-manifest.json +3 -3
- package/.next/standalone/packages/console/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page/server-reference-manifest.json +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/labels/page.js +2 -2
- 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)/needs-attention/page/server-reference-manifest.json +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page.js +2 -2
- 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/react-loadable-manifest.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/network/page/server-reference-manifest.json +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/network/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/page.js +2 -2
- 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)/settings/page/server-reference-manifest.json +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/settings/page.js +2 -2
- 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/react-loadable-manifest.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page/server-reference-manifest.json +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page.js +2 -2
- 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 +30 -52
- package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page.js +2 -2
- 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/api/reads/[read]/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/failed/page.js +1 -1
- 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/page.js +1 -1
- package/.next/standalone/packages/console/.next/server/app/sign-in/page.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/app/version/route.js.nft.json +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__06f_104._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1cfwaji._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/_1uqphll._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0mxb_server_app_(console)_squadrons_blueprints_[name]_page_actions_1ccrd2_.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0mxb_server_app_(console)_squadrons_templates_[name]_page_actions_0qzhozy.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_fleet-health_page_actions_0dxyn06.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_needs-crew_page_actions_0rhp085.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_network_page_actions_1qbofc5.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_settings_page_actions_07zyuya.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_ships_[shipId]_page_actions_09ros_6.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_squadrons_page_actions_04wqu1c.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_trierarchs_page_actions_13sd72a.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console_features_trierarchs_ui_organisms_clear-worktree-dialog_tsx_0bjmfgt._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_fleet-health_[cause]_page_actions_196vwwc.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_needs-attention_page_actions_17c4s8j.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_squadrons_[squadronId]_page_actions_0183_z3.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_trierarchs_[shipId]_page_actions_1yx88bk.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/[root-of-the-server]__0pvwbtv._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_050ulkd._.js → _0_em4v9._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0eeox-9._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0h21fie._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1j1ejbw._.js → _0l0tk4l._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0mvp-z7._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0ni0d5t._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0q3cblh._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0qft7s4._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0qo94ne._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0sgf57y._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1hb5q4e._.js → _0v442oo._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0v8gdqq._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0z9_vmu._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0kwu12q._.js → _131-0_x._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1_9jlty._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1bc8get._.js +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1dwmj6t._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1vc4auf._.js → _1dxl4q7._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1enr0jf._.js → _1icypol._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1k24d9t._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1m738ix._.js → _1oygmyf._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{_15_xzod._.js → _1qvspj2._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1svohzj._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1tngh39._.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/_1uofvu3._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1yr1u1_._.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_icons_0nwj88l._.js → node_modules_lucide-react_dist_esm_icons_0kaxn3-._.js} +1 -1
- 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_common_dist_1_gq_cl._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_common_dist_ids_index_0vpngvd.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_18f93ie._.js → packages_console_0--rmb8._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_1clix79._.js → packages_console_0c-5j2y._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_00v2ar_._.js → packages_console_0k-cs8i._.js} +2 -2
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_2004f3v._.js → packages_console_1gvn9tp._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_inbox_page_actions_1g5uv6y.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_labels_page_actions_14z7vqr.js +3 -0
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_page_actions_05lw-oq.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)_network_network-page_tsx_0qc3h-9._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_settings_page_tsx_1p8ay87._.js +1 -1
- 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)_signed-in-layout_tsx_13vv8fo._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_trierarchs_[shipId]_page_tsx_1u845f4._.js +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_components_organisms_crew-line-dialog_tsx_1qorkk0._.js → packages_console_components_organisms_crew-line-dialog_tsx_1i1mps-._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_0dttltf._.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_squadrons_organisms_form-squadron-dialog_tsx_0ditu5u._.js → packages_console_features_squadrons_organisms_form-squadron-dialog_tsx_04r0j4c._.js} +1 -1
- package/.next/standalone/packages/console/.next/server/middleware-build-manifest.js +3 -3
- 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 +241 -413
- package/.next/standalone/packages/console/.next/static/chunks/{2n_dccp7oi2ad.js → 0-dlu3v5-3xjy.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/0-fzym4ddbgfl.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{0fj5fpwgxkqx6.js → 02_0efuv8zr04.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/{101ihp2v2np_3.js → 0k37l03brt1lx.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/0l1m73b3b3ljl.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{1wfdv058l23gm.js → 0q7s6fjx5zvzy.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/{3yjner-hzsvhr.js → 0qpp7ptesfktl.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/{0of7ho03vihb8.js → 0u8cdjuofezss.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/{2qc_m8dbgxc8w.js → 0yca02wd039-o.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/12bv9goo6bo3g.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{32f8-4_7znbir.js → 1619u51m6z_zy.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/1iip53cb0n1ho.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1l_1my5pd97do.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/1omv57sjorlof.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{40js517zsadm9.js → 1vdn610i7k8j1.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/1yoc4-zamu_sm.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/21vk0o3lx9oh1.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{3cae8s07yzv_o.js → 22sev5tbikm_p.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/28xc8g7o4b9a-.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{1e123ur-jgg7w.js → 292f5okbjz46-.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/2_g87mjk-iym-.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{0k-zw0ldc55vf.js → 2cgenpdif8p18.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/2cqwvmsk2n95d.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{0fa8e9n5fw6ti.js → 2e383naxva7i6.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/2fwpxzwprq1qx.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{1bra8hyy6r84a.js → 2lposccpgczy6.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/2luplqg0e_2uu.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/2p-_e59ng41pt.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{3vr80dn3nyqqi.js → 2p72fzbj398ze.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/{323r-smxvi-fc.js → 2prg50nyxhd0_.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/2xli-100dinmp.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3-dxt127ediq-.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/318upe1zitwt6.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{3y439_vfclcmy.js → 36p__5trrhe2z.js} +1 -1
- package/.next/standalone/packages/console/.next/static/chunks/3hi4swa3z-hby.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/3op57o5tmo836.js +1 -0
- package/.next/standalone/packages/console/.next/static/chunks/{09d3pvbsjtshj.js → 41t0n1c_xovg1.js} +1 -1
- package/.next/standalone/packages/console/package.json +3 -3
- package/README.md +4 -3
- package/package.json +3 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0mxb_server_app_(console)_squadrons_blueprints_[name]_page_actions_170owr_.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0mxb_server_app_(console)_squadrons_templates_[name]_page_actions_09abrr0.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_fleet-health_page_actions_1gb6-fk.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_needs-crew_page_actions_08gu8-f.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_network_page_actions_1muuv-j.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_settings_page_actions_0b6qztr.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_ships_[shipId]_page_actions_0g2nd1p.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_squadrons_page_actions_1x3afts.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_trierarchs_page_actions_1ow37mz.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_fleet-health_[cause]_page_actions_1kltvcl.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_needs-attention_page_actions_1jfgclw.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_squadrons_[squadronId]_page_actions_1lzqlye.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_trierarchs_[shipId]_page_actions_0l7bxva.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_03yonp6._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_06472wf._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_065633k._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_0kyjchk._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1bvkf-u._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1hwizxg._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1khnccn._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1rut492._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/_1x4wtlr._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_0969g9_._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_inbox_page_actions_0q9_xye.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_labels_page_actions_0tk7mqs.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_page_actions_1ftjjyq.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_squadrons_organisms_form-squadron-dialog_tsx_13oketj._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_trierarchs_organisms_clear-worktree-dialog_tsx_1vigea_._.js +0 -3
- package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_lib_1b-azvo._.js +0 -3
- package/.next/standalone/packages/console/.next/static/chunks/05j0kzgxaeurj.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/061rac_vo9o5d.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0ht5wi5oe5_za.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0o8q0d16-yt3a.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/0sagpcmh6omoj.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/169-oge56q06i.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/18rsibme2venq.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1fhpw5henq0az.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1g_gieevkz75l.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/1splzlg79ytml.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/20l4-ecv_oo2h.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/25l_2rj6pvegd.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2600yzum9pa4e.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2emmlk441wbz2.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2fkwzi80oyuv-.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/2lcdtufyk66fk.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/38klmgk3bgj3s.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/3kvklsjp8y-7e.js +0 -1
- package/.next/standalone/packages/console/.next/static/chunks/41ur4zm093e1l.js +0 -1
- /package/.next/standalone/packages/console/.next/static/{ZV7FLBaZ7IVExYMj-OJbA → 8zn2b33vGieFxkimJl4au}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/console/.next/static/{ZV7FLBaZ7IVExYMj-OJbA → 8zn2b33vGieFxkimJl4au}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/packages/console/.next/static/{ZV7FLBaZ7IVExYMj-OJbA → 8zn2b33vGieFxkimJl4au}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
module.exports=[82886,a=>{"use strict";var b=a.i(87924),c=a.i(73224),d=a.i(86002),e=a.i(13931),f=a.i(72131),g=a.i(34301),h=a.i(65563),i=a.i(6071),j=a.i(90146),k=a.i(99929),l=a.i(12068);let m=(0,g.lazyDialog)(()=>a.A(94191).then(a=>a.CrewReleaseDialog),a=>a.isOpen);function n({ship:a}){let c=(0,h.useAccess)(),d=(0,j.useRemoveCrewRequest)(),[g,o]=(0,f.useState)(!1),p=(0,k.useShip)(g?a.id:void 0),q=(0,i.crewRequestStage)(a);return c.canManage&&"assigned"===q.kind&&"crashed"===q.status?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l.Button,{size:"xs",icon:(0,b.jsx)(e.Power,{}),"data-testid":"needs-crew-release",onClick:()=>{d.reset(),o(!0)},children:"Release…"}),(0,b.jsx)(m,{shipName:a.name,stage:q,inFlightCount:p.data?.inFlightDeliveries??0,isOpen:g&&void 0!==p.data,onOpenChange:o,isPending:d.isPending,error:null===d.error?void 0:`${d.error.message} Nothing changed.`,onConfirm:()=>{d.mutate({shipId:a.id},{onSuccess:()=>{o(!1)}})}})]}):null}var o=a.i(53805),p=a.i(71027),q=a.i(62140),r=a.i(23636),s=a.i(38246),t=a.i(60271),u=a.i(72872),v=a.i(76166),w=a.i(24173),x=a.i(40392),y=a.i(50808),z=a.i(23063);function A({at:a,now:c}){let d=new Date(a);return(0,b.jsx)("time",{dateTime:a,title:(0,u.fullDateTime)(d),className:"tabular-nums",children:c.getTime()-d.getTime()<864e5?`Today, ${(0,u.clockTime)(d)}`:(0,u.shortDateTime)(d)})}function B({ship:a,now:c}){let d=(0,t.handCrewOf)(a);switch(d.kind){case"no-prompt":return(0,b.jsx)("span",{className:"text-muted-foreground",children:"No starting prompt issued"});case"prompt-unclaimed":return(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsxs)("span",{children:["Prompt issued ",(0,b.jsx)(A,{at:d.issuedAt,now:c})]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"No session has taken it yet"})]});case"crew-ended":return(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{children:"Was crewed by hand"}),null===d.endedAt?null:(0,b.jsxs)("span",{className:"text-muted-foreground",children:["Lease ended ",(0,b.jsx)(A,{at:d.endedAt,now:c})]})]})}}function C({ship:a}){let c=(0,i.crewRequestStage)(a);return"assigned"===c.kind?(0,b.jsxs)("span",{className:"flex flex-wrap items-center gap-x-2 gap-y-1",children:[(0,b.jsx)(z.StatusBadge,{status:c.status}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:["on",(0,b.jsxs)(s.default,{href:`/trierarchs/${c.trierarch.id}`,className:"inline-flex items-center gap-1 font-medium underline decoration-input underline-offset-3 [&_svg]:size-(--size-icon-sm) [&_svg]:text-muted-foreground",children:[(0,b.jsx)(r.ShipWheel,{"aria-hidden":!0}),c.trierarch.name]})]})]}):(0,b.jsxs)("span",{className:"flex flex-wrap items-center gap-x-2 gap-y-1",children:[(0,b.jsx)(z.StatusBadge,{status:"needsCrew"}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"needsCrew"===c.kind&&null!==c.reason?c.reason:"Not assigned yet"})]})}let D="grid items-center gap-x-4 gap-y-1.5 px-4 py-3 max-sm:grid-cols-1 max-sm:px-3.5 sm:grid-cols-[minmax(0,1fr)_minmax(0,1.6fr)_minmax(0,1fr)_minmax(0,11rem)]";function E({ships:a,hasTrierarchs:c,error:d,onRetry:e,actionOf:f,now:g}){return void 0!==d?(0,b.jsx)(x.InlineError,{variant:"page",title:"Couldn’t read the fleet",description:"Nothing changed.",detail:d,onRetry:e}):void 0===a?(0,b.jsx)(y.LoadingSkeleton,{variant:"table",rows:3,label:"Loading Needs crew"}):0===a.length?(0,b.jsx)(w.EmptyState,{icon:(0,b.jsx)(q.ListChecks,{"aria-hidden":!0}),title:"Nothing needs crew",description:c?"Every crew request is running. A request shows here while it waits for a trierarch, is crewing, restarting or crashed.":"No ship with a crew request awaits crew. Request a crew on a ship’s page to put it here."}):(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"overflow-hidden rounded-lg border border-border bg-card","data-testid":"needs-crew-list",children:[(0,b.jsxs)("div",{className:`${D} border-b border-border bg-muted py-2.5 text-caption font-medium text-muted-foreground max-sm:hidden`,"aria-hidden":!0,children:[(0,b.jsx)("span",{children:"Ship"}),(0,b.jsx)("span",{children:c?"Status":"Crew"}),(0,b.jsx)("span",{children:"Requested"}),(0,b.jsx)("span",{className:"sr-only",children:"Next step"})]}),(0,b.jsx)("ul",{className:"divide-y divide-border",children:a.map(a=>(0,b.jsxs)("li",{className:`${D} text-body`,"data-testid":"needs-crew-row",children:[(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)(s.default,{href:`/ships/${a.id}`,className:"truncate font-medium hover:underline","data-testid":"needs-crew-ship",children:a.name}),(0,b.jsx)(v.Badge,{variant:"type",children:a.type})]}),(0,b.jsx)("span",{className:"min-w-0 text-meta",children:c?(0,b.jsx)(C,{ship:a}):(0,b.jsx)(B,{ship:a,now:g})}),(0,b.jsx)("span",{className:"flex flex-col text-meta",children:null===a.crewRequest?null:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(A,{at:a.crewRequest.requestedAt,now:g}),g.getTime()-new Date(a.crewRequest.requestedAt).getTime()<864e5?(0,b.jsx)("span",{className:"text-muted-foreground",children:(0,u.relativeTime)(new Date(a.crewRequest.requestedAt),g)}):null]})}),(0,b.jsx)("span",{className:"flex justify-end max-sm:justify-start",children:f?.(a)})]},a.id))})]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:c?"Running requests are not listed here; the fleet overview shows them. A request stays until you release the ship.":"A request stays until you remove it or release the ship. With the trierarch plugin, trierarchs crew these for you."})]})}var F=a.i(91003),G=a.i(38023),H=a.i(67336),I=a.i(10023),J=a.i(68450),K=a.i(34159),L=a.i(10572);a.s(["default",0,function(){let a=(0,J.useNow)(),e=(0,G.useConsoleFrame)(),f=(0,I.useNeedsAttention)(),g=(0,H.useLiveFleet)(),h=(0,j.useFleetSnapshot)(),i=(0,K.usePluginNav)();(0,L.useSignInWhenSessionEnds)([f.error,g.error,h.error]);let{hasTrierarchs:k}=i;return(0,b.jsx)(F.ListPage,{...e,title:"Needs crew",description:k?"Ships with a crew request that are not running. Trierarchs crew them; you step in when one crashes or waits for room.":"Ships you asked to keep crewed that have no crew. Crew each one by hand; crewing it fulfils the request.",live:g.live,toolbar:(0,b.jsx)(c.FleetSegments,{active:"needs-crew",needsCrewCount:i.needsCrewCount}),children:(0,b.jsx)(E,{ships:void 0===h.data?void 0:(0,t.needsCrew)(h.data,{hasTrierarchs:k}),hasTrierarchs:k,error:h.isError?h.error.message:void 0,onRetry:()=>{h.refetch()},actionOf:a=>k?(0,b.jsx)(n,{ship:a}):(0,b.jsx)(o.ShipActions,{ship:a,layout:"next",compose:d.ComposeMessage,crewLineFlow:p.NewCrewLineFlow}),now:a})})}],82886)},73224,a=>{"use strict";var b=a.i(87924),c=a.i(38246),d=a.i(80487);a.s(["FleetSegments",0,function({active:a,needsCrewCount:e}){let f=a=>(0,d.classNames)("flex h-(--size-control-touch) grow items-center justify-center gap-1.5 rounded-md text-body-touch font-medium",a?"bg-card text-foreground shadow-sm":"text-muted-foreground");return(0,b.jsxs)("nav",{"aria-label":"Fleet views",className:"flex gap-0.5 rounded-lg border border-border bg-muted p-0.5 sm:hidden","data-testid":"fleet-segments",children:[(0,b.jsx)(c.default,{href:"/","aria-current":"ships"===a?"page":void 0,className:f("ships"===a),"data-testid":"fleet-segment-ships",children:"Ships"}),(0,b.jsxs)(c.default,{href:"/needs-crew","aria-current":"needs-crew"===a?"page":void 0,className:f("needs-crew"===a),"data-testid":"fleet-segment-needs-crew",children:["Needs crew",void 0===e||0===e?null:(0,b.jsx)("span",{className:"text-micro tabular-nums",children:e})]})]})}])},43020,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_00in26l._.js"].map(b=>a.l(b))).then(()=>b(52702)))},94191,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_0_b0_q2._.js"].map(b=>a.l(b))).then(()=>b(58864)))},91003,a=>{"use strict";var b=a.i(87924),c=a.i(17256),d=a.i(12068),e=a.i(82247),f=a.i(63089);a.s(["ListPage",0,function({title:a,description:g,titleMeta:h,primaryAction:i,toolbar:j,live:k,onCompose:l,onSearch:m,account:n,banner:o,phoneTopBar:p,children:q}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.Header,{breadcrumb:a,live:k,onCompose:l,onSearch:m}),o,p??(0,b.jsx)(f.TopBar,{title:a,live:k,account:n,onSearch:m,actions:l?(0,b.jsx)(d.Button,{variant:"ghost",size:"touch",isIconOnly:!0,"aria-label":"Compose","data-testid":"top-bar-compose",onClick:l,children:(0,b.jsx)(c.SquarePen,{"aria-hidden":!0})}):void 0}),(0,b.jsxs)("main",{className:"flex grow flex-col gap-5 px-8 py-6 max-sm:gap-3.5 max-sm:px-4 max-sm:pt-3.5 max-sm:pb-[calc(var(--size-tabbar)+var(--spacing)*4)]",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-4 max-sm:gap-3",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1",children:[(0,b.jsx)("h1",{className:"text-title font-semibold tracking-tight text-foreground max-sm:hidden",children:a}),h]}),g?(0,b.jsx)("p",{className:"text-meta text-muted-foreground max-sm:text-body-touch",children:g}):null]}),i?(0,b.jsx)("div",{className:"shrink-0 max-sm:w-full max-sm:[&>*]:w-full",children:i}):null]}),j,q]})]})}])},53831,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_1qde2ge._.js","server/chunks/ssr/packages_console_components_atoms_input_tsx_0ux0uln._.js"].map(b=>a.l(b))).then(()=>b(80459)))},68359,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_0wy-ep_._.js"].map(b=>a.l(b))).then(()=>b(44344)))},15695,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_0h3dzkf._.js"].map(b=>a.l(b))).then(()=>b(51543)))},66785,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_02ozs01._.js","server/chunks/ssr/packages_console_components_atoms_input_tsx_0ux0uln._.js"].map(b=>a.l(b))).then(()=>b(50916)))},65537,a=>{a.v(b=>Promise.all(["server/chunks/ssr/_0nmqout._.js","server/chunks/ssr/packages_console_components_atoms_input_tsx_0ux0uln._.js"].map(b=>a.l(b))).then(()=>b(62921)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=packages_console_1gvn9tp._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[88503,a=>{"use strict";var b=a.i(1741),c=a.i(39270),d=a.i(2318),e=a.i(10021);a.s([],48612),a.i(48612),a.s(["00042dae1deac6983a383b0dc50e6c1c1f047c0d60",()=>d.connectTrierarchPlugin,"0019c516a4e9de6cb543a23f6abe502f8f54d7fba8",()=>b.connectSquadrons,"00266230c7d3b36667add7c71f2b3fb5ee8f96ab25",()=>c.connectGateway,"00d1b2b58ed0cf729c51d122575bfba0b4ece6c58e",()=>b.refreshCatalogue,"4034ac84c2b7c06e9c3800bf2249dd11ab918325a3",()=>b.removeMember,"404967dcba570338322090b18d61d366d95b50dfb0",()=>b.standDown,"4050ea5ffb605a0448357c634894dc42d70e5b9aa5",()=>e.answerQuestion,"405a1c46609a3eafb2f129eb3d83cfe8c573264585",()=>b.newCrewLine,"407547e5a59936ad2d5c9e542bdfdbc40ca8b4c6be",()=>b.removeRepository,"407ab9ee14c63513c1706e974268800a68039555d9",()=>b.forceStandDown,"4098734185ab9713b2dc60450578d9db4462147ef1",()=>b.addMember,"409dfac74c1334934e28072c4b65908b1415a94b24",()=>d.joinMachine,"40be99a4a3e589fcb395e083007edc29c1d35ca1ac",()=>b.formSquadron,"40ed04524c76c89eaf33e69e05d31322ef33baa10d",()=>b.addRepository],88503)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=packages_console__next-internal_server_app_%28console%29_inbox_page_actions_1g5uv6y.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[20279,a=>{"use strict";var b=a.i(1741),c=a.i(39270),d=a.i(2318),e=a.i(10021);a.s([],21772),a.i(21772),a.s(["00042dae1deac6983a383b0dc50e6c1c1f047c0d60",()=>d.connectTrierarchPlugin,"0019c516a4e9de6cb543a23f6abe502f8f54d7fba8",()=>b.connectSquadrons,"00266230c7d3b36667add7c71f2b3fb5ee8f96ab25",()=>c.connectGateway,"00d1b2b58ed0cf729c51d122575bfba0b4ece6c58e",()=>b.refreshCatalogue,"4034ac84c2b7c06e9c3800bf2249dd11ab918325a3",()=>b.removeMember,"404967dcba570338322090b18d61d366d95b50dfb0",()=>b.standDown,"4050ea5ffb605a0448357c634894dc42d70e5b9aa5",()=>e.answerQuestion,"405a1c46609a3eafb2f129eb3d83cfe8c573264585",()=>b.newCrewLine,"407547e5a59936ad2d5c9e542bdfdbc40ca8b4c6be",()=>b.removeRepository,"407ab9ee14c63513c1706e974268800a68039555d9",()=>b.forceStandDown,"4098734185ab9713b2dc60450578d9db4462147ef1",()=>b.addMember,"409dfac74c1334934e28072c4b65908b1415a94b24",()=>d.joinMachine,"40be99a4a3e589fcb395e083007edc29c1d35ca1ac",()=>b.formSquadron,"40ed04524c76c89eaf33e69e05d31322ef33baa10d",()=>b.addRepository],20279)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=packages_console__next-internal_server_app_%28console%29_labels_page_actions_14z7vqr.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[46180,a=>{"use strict";var b=a.i(1741),c=a.i(39270),d=a.i(2318),e=a.i(10021);a.s([],5204),a.i(5204),a.s(["00042dae1deac6983a383b0dc50e6c1c1f047c0d60",()=>d.connectTrierarchPlugin,"0019c516a4e9de6cb543a23f6abe502f8f54d7fba8",()=>b.connectSquadrons,"00266230c7d3b36667add7c71f2b3fb5ee8f96ab25",()=>c.connectGateway,"00d1b2b58ed0cf729c51d122575bfba0b4ece6c58e",()=>b.refreshCatalogue,"4034ac84c2b7c06e9c3800bf2249dd11ab918325a3",()=>b.removeMember,"404967dcba570338322090b18d61d366d95b50dfb0",()=>b.standDown,"4050ea5ffb605a0448357c634894dc42d70e5b9aa5",()=>e.answerQuestion,"405a1c46609a3eafb2f129eb3d83cfe8c573264585",()=>b.newCrewLine,"407547e5a59936ad2d5c9e542bdfdbc40ca8b4c6be",()=>b.removeRepository,"407ab9ee14c63513c1706e974268800a68039555d9",()=>b.forceStandDown,"4098734185ab9713b2dc60450578d9db4462147ef1",()=>b.addMember,"409dfac74c1334934e28072c4b65908b1415a94b24",()=>d.joinMachine,"40be99a4a3e589fcb395e083007edc29c1d35ca1ac",()=>b.formSquadron,"40ed04524c76c89eaf33e69e05d31322ef33baa10d",()=>b.addRepository],46180)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=packages_console__next-internal_server_app_%28console%29_page_actions_05lw-oq.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[88821,a=>{"use strict";var b=a.i(87924),c=a.i(91003),d=a.i(90146),e=a.i(34564),f=a.i(29931),g=a.i(68450),h=a.i(72872),i=a.i(93454),j=a.i(41696),k=a.i(40392),l=a.i(50808),m=a.i(41146),n=a.i(38246),o=a.i(76166),p=a.i(12068),q=a.i(23063),r=a.i(68710);function s({place:a}){return"ship"===a.kind?(0,b.jsx)("span",{className:"font-medium text-foreground",children:a.ship.name}):(0,b.jsx)(o.Badge,{variant:"type",children:a.type})}function t({group:a,notes:c,now:d}){let{cause:e,count:f,places:g}=a;return(0,b.jsxs)("section",{"aria-label":(0,q.statusLabel)(e),"data-testid":"health-cause","data-cause":e,className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4 shadow-sm max-sm:rounded-xl",children:[(0,b.jsxs)("header",{className:"flex items-start justify-between gap-3",children:[(0,b.jsxs)(n.default,{href:(0,j.causePathOf)(e),className:"group inline-flex items-center gap-1.5 rounded-md","data-testid":"health-cause-open",children:[(0,b.jsx)(q.StatusBadge,{status:e}),(0,b.jsx)(m.ChevronRight,{"aria-hidden":!0,className:"size-(--size-icon-sm) text-muted-foreground group-hover:text-foreground"}),(0,b.jsxs)("span",{className:"sr-only",children:["Open the deliveries ",(0,q.statusLabel)(e).toLowerCase()]})]}),(0,b.jsx)("span",{className:"text-metric font-semibold tabular-nums text-foreground max-sm:text-title-touch",children:f})]}),(0,b.jsx)("p",{className:"text-body text-muted-foreground max-sm:text-body-touch",children:j.CAUSE_SENTENCES[e]}),(0,b.jsxs)("div",{className:"grid grid-cols-[minmax(0,1fr)_minmax(0,1.2fr)_auto] gap-x-4 max-sm:grid-cols-1",children:[(0,b.jsxs)("div",{className:"col-span-3 grid grid-cols-subgrid items-center text-caption font-medium text-muted-foreground max-sm:col-span-1",children:[(0,b.jsx)("span",{className:"max-sm:hidden",children:"Where, how long"}),(0,b.jsx)(r.WaitAxis,{}),(0,b.jsx)("span",{className:"text-right max-sm:hidden",children:"Next step"})]}),(0,b.jsx)("ul",{className:"col-span-3 grid grid-cols-subgrid divide-y divide-border max-sm:col-span-1",children:g.map(a=>{let e=(0,j.nextStepOf)(a),f=c.get(a),g=(0,h.duration)(new Date(a.oldestSince),d);return(0,b.jsxs)("li",{"data-testid":"health-place",className:"col-span-3 grid grid-cols-subgrid items-center gap-y-2 py-3 last:pb-0 max-sm:col-span-1",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,b.jsx)(s,{place:a.place}),(0,b.jsxs)("span",{className:"text-meta tabular-nums text-muted-foreground",children:[a.count," · oldest ",g]})]}),(0,b.jsx)(r.WaitStrip,{waits:a.deliveries.map(a=>(0,j.waitMinutes)(a.since,d)),label:`${String(a.count)} waiting, the oldest ${g}`}),(0,b.jsx)(p.Button,{variant:"secondary",size:"sm",nativeButton:!1,render:(0,b.jsx)(n.default,{href:e.href}),className:"max-sm:h-(--size-control-touch) max-sm:w-full max-sm:text-body-touch","data-testid":"health-next-step",children:e.label}),void 0!==f&&(0,b.jsx)("p",{className:"col-span-3 text-meta text-muted-foreground max-sm:col-span-1",children:f})]},`${a.cause}-${"ship"===a.place.kind?a.place.ship.id:a.place.type}`)})})]})]})}function u({perHour:a}){let c=Math.max(1,...a.map(a=>a.count));return(0,b.jsx)("div",{role:"img","aria-label":`Acknowledged per hour over the last 24 hours, at most ${Math.max(0,...a.map(a=>a.count))} in an hour`,"data-testid":"health-acknowledged-bars",className:"flex h-8 w-full items-end gap-0.5 sm:w-48",children:a.map(a=>(0,b.jsx)("span",{className:"min-h-0.5 flex-1 rounded-xs bg-tone-ok-fg opacity-75",style:{height:`${a.count/c*100}%`}},a.at))})}function v({acknowledged:a}){return(0,b.jsxs)("section",{"aria-label":"Delivering","data-testid":"health-delivering",className:"flex items-center gap-4 rounded-lg border border-border bg-card p-4 shadow-sm max-sm:flex-col max-sm:items-start max-sm:gap-3 max-sm:rounded-xl",children:[(0,b.jsx)(q.StatusBadge,{status:"delivering"}),(0,b.jsx)("p",{className:"flex-1 text-body text-foreground max-sm:text-body-touch",children:null===a.medianMs?"Nothing acknowledged in the last 24 h.":(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"font-semibold tabular-nums",children:a.count})," acknowledged in the last 24 h, median"," ",(0,b.jsx)("span",{className:"font-semibold tabular-nums",children:(0,j.medianText)(a.medianMs,h.duration)})," from send to acknowledgement."]})}),(0,b.jsx)(u,{perHour:a.perHour})]})}function w({perHour:a,marks:c}){let d=Math.max(5,5*Math.ceil(Math.max(0,...a.map(a=>a.count))/5)),e=Math.max(a.length-1,1),f=a=>100-a/d*100,[g]=a,i=a.slice(1).map((a,b)=>`H${(b+1)/e*1e3} V${f(a.count)}`),j=[`M0 ${f(g?.count??0)}`,...i].join(" "),k=`${j} H1000 V100 H0 Z`,l=a.at(-1)?.count??0,m=a.flatMap((a,b)=>b%24==12?[{index:b,label:(0,h.dayMonth)(new Date(a.at))}]:[]);return(0,b.jsxs)("figure",{"data-testid":"health-trend",className:"flex min-w-0 flex-col gap-2",children:[(0,b.jsx)("figcaption",{className:"text-meta font-medium text-foreground",children:"Stuck deliveries, last 7 days, per hour"}),(0,b.jsxs)("div",{className:"grid grid-cols-[auto_1fr] gap-x-2",children:[(0,b.jsx)("div",{"aria-hidden":!0,className:"relative h-36 w-5 text-caption tabular-nums text-muted-foreground",children:[d,d/2,0].map(a=>(0,b.jsx)("span",{className:"absolute right-0 -translate-y-1/2",style:{top:`${100-a/d*100}%`},children:a},a))}),(0,b.jsxs)("div",{className:"relative h-36",children:[(0,b.jsxs)("svg",{role:"img","aria-label":`Stuck deliveries per hour over the last 7 days: ${l} now, at most ${Math.max(0,...a.map(a=>a.count))}`,viewBox:"0 0 1000 100",preserveAspectRatio:"none",className:"size-full overflow-visible",children:[[0,d/2,d].map(a=>(0,b.jsx)("line",{x1:0,x2:1e3,y1:f(a),y2:f(a),className:"stroke-border",vectorEffect:"non-scaling-stroke"},a)),(0,b.jsx)("path",{d:k,className:"fill-tone-waiting-bg"}),(0,b.jsx)("path",{d:j,className:"fill-none stroke-tone-waiting-fg",strokeWidth:2,strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})]}),c.map(c=>(0,b.jsx)("span",{"aria-hidden":!0,"data-testid":"health-trend-mark",className:"absolute flex size-4 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border-2 border-foreground bg-card text-micro font-semibold text-foreground max-sm:hidden",style:{left:`${c.hour/e*100}%`,top:`${f(a[c.hour]?.count??0)/100*100}%`},children:c.number},c.number)),(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute size-2 -translate-1/2 rounded-full bg-tone-waiting-fg",style:{left:"100%",top:`${f(l)/100*100}%`}})]}),(0,b.jsx)("div",{"aria-hidden":!0,className:"relative col-start-2 h-4 text-caption text-muted-foreground",children:m.map(a=>(0,b.jsx)("span",{className:"absolute -translate-x-1/2 whitespace-nowrap max-sm:[&:nth-child(even)]:hidden",style:{left:`${a.index/e*100}%`},children:a.label},a.index))})]}),c.length>0&&(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:c.map((a,c)=>(0,b.jsxs)("span",{children:[c>0&&" · ",(0,b.jsx)("span",{className:"font-semibold text-foreground",children:a.number})," ",a.label]},a.number))})]})}function x({health:a}){let c=(0,j.verdictOf)(a);return(0,b.jsxs)("section",{"aria-label":"Verdict","data-testid":"health-verdict","data-verdict":c.kind,className:"grid gap-6 rounded-lg border border-border bg-card p-4 shadow-sm lg:grid-cols-[minmax(0,2fr)_minmax(0,3fr)] max-sm:gap-4 max-sm:rounded-xl",children:[(0,b.jsxs)("div",{className:"flex flex-col items-start gap-3",children:[(0,b.jsx)(q.StatusBadge,{status:c.kind}),"stuck"===c.kind?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-section font-semibold text-foreground",children:[(0,b.jsx)("span",{className:"text-metric tabular-nums max-sm:text-title-touch","data-testid":"health-stuck-count",children:c.count})," ",1===c.count?"delivery":"deliveries"," stuck in ",c.places," ",1===c.places?"place":"places"]}),(0,b.jsxs)("p",{className:"text-body text-muted-foreground max-sm:text-body-touch",children:["Stuck since ",(0,h.shortDateTime)(new Date(c.since)),". ",(0,j.trendSentence)(c)]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Nothing is lost: each one is stored and moves on as soon as its cause is gone."})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-section font-semibold text-foreground",children:"Delivering. Nothing is stuck."}),(0,b.jsx)("p",{className:"text-body text-muted-foreground max-sm:text-body-touch",children:"Every delivery waits only on its ship to take it."})]})]}),(0,b.jsx)(w,{perHour:a.stuckPerHour,marks:(0,j.marksOf)(a)})]})}var y=a.i(34532);function z({machines:a,stuckByMachine:c,renderLiveness:d}){return(0,b.jsxs)("section",{"aria-labelledby":"health-machines","data-testid":"health-machines",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4 shadow-sm max-sm:rounded-xl",children:[(0,b.jsxs)("header",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[(0,b.jsx)("h2",{id:"health-machines",className:"text-section font-semibold text-foreground",children:"Machines"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Each machine runs a trierarch that crews ships."})]}),(0,b.jsx)("ul",{className:"flex flex-col divide-y divide-border",children:a.map(a=>{let e=c.get(a.id)??0;return(0,b.jsxs)("li",{"data-testid":"health-machine",className:"flex items-center gap-4 py-3 first:pt-0 last:pb-0 max-sm:flex-wrap max-sm:gap-2",children:[(0,b.jsxs)("span",{className:"inline-flex min-w-40 items-center gap-2 font-medium text-foreground",children:[(0,b.jsx)(y.Server,{"aria-hidden":!0,className:"size-(--size-icon) text-muted-foreground"}),a.name]}),(0,b.jsx)("span",{className:"min-w-0 flex-1",children:d(a)}),(0,b.jsxs)("span",{className:"text-meta text-muted-foreground",children:[a.ships," ",1===a.ships?"ship":"ships",e>0&&(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsxs)("span",{className:"font-semibold text-foreground",children:[e," ",1===e?"delivery":"deliveries"," stuck on its ships"]})]})]}),e>0&&(0,b.jsx)(p.Button,{variant:"secondary",size:"sm",nativeButton:!1,render:(0,b.jsx)(n.default,{href:`/trierarchs/${a.id}`}),className:"max-sm:h-(--size-control-touch) max-sm:w-full",children:"Open machine"})]},a.id)})})]})}function A({state:a,health:c,onRetry:d,notes:e,machines:f,renderLiveness:g,children:h,now:i}){if("error"===a)return(0,b.jsx)(k.InlineError,{variant:"page",title:"Couldn’t load the fleet’s health",description:"Nothing changed in the fleet. The page tries again by itself.",onRetry:d});if("loading"===a||void 0===c)return(0,b.jsx)(l.LoadingSkeleton,{variant:"cards",rows:4,label:"Loading the fleet’s health"});let m=(0,j.causeGroupsOf)(c);return(0,b.jsxs)("div",{"data-testid":"health-board",className:"flex flex-col gap-5 max-sm:gap-3.5",children:[(0,b.jsx)(x,{health:c}),(0,b.jsx)(v,{acknowledged:c.acknowledged}),m.length>0&&(0,b.jsx)("div",{className:"grid gap-5 lg:grid-cols-2 max-sm:gap-3.5",children:m.map(a=>(0,b.jsx)(t,{group:a,notes:e,now:i},a.cause))}),void 0!==f&&f.length>0&&(0,b.jsx)(z,{machines:f,stuckByMachine:(0,j.stuckByMachine)(c),renderLiveness:g}),h]})}function B({renderLiveness:a,children:c}){let k=(0,g.useNow)(),l=(0,e.useFleetHealth)(),m=(0,d.useFleetSnapshot)(),n=(0,i.useMachines)(),o=m.data??[],p=new Map(o.map(a=>[a.id,a])),q=new Map;for(let a of l.data?.stuck??[]){let b="ship"===a.place.kind?p.get(a.place.ship.id):void 0,c=(0,j.placeNote)(a,{facts:b&&{lastSeenAt:b.lastSeenAt},since:a=>(0,h.relativeTime)(a,k)});null!==c&&q.set(a,c)}let r=new Map((n.data??[]).map(a=>[a.shipId,a])),s=n.data?.map(a=>({id:a.shipId,name:a.name,ships:(0,f.spotsOf)(a,o).length}));return(0,b.jsx)(A,{state:l.isError?"error":l.data?"ready":"loading",health:l.data,onRetry:()=>{l.refetch()},notes:q,machines:s,renderLiveness:b=>{let c=r.get(b.id);return void 0===c?null:a(c)},now:k,children:c})}var C=a.i(8219),D=a.i(75971),E=a.i(92717),F=a.i(58523);function G({members:a,ships:c,now:d,renderAction:e}){return(0,b.jsx)("ul",{"data-testid":"silent-members",className:"divide-y divide-border overflow-hidden rounded-lg border border-border",children:a.map(({squadronId:a,member:f})=>{let{lastSeenAt:g}=f.crew;return(0,b.jsxs)("li",{"data-testid":"silent-member",className:"flex flex-wrap items-center gap-x-4 gap-y-1.5 px-3 py-2.5",children:[(0,b.jsxs)("span",{className:"flex min-w-0 flex-col gap-1",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(D.HealthIndicator,{health:"silent"}),(0,b.jsx)("span",{className:"font-medium",children:f.name})]}),(0,b.jsx)(F.SquadronTag,{squadronId:a,role:f.role,size:"sm"})]}),(0,b.jsxs)("span",{className:"flex flex-col text-meta",children:[(0,b.jsx)("span",{children:null===g?"never seen":`not seen for ${(0,h.duration)(new Date(g),d)}`}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:["checks in ",(0,C.checkInText)(f.checkInMinutes)]})]}),(0,b.jsx)("span",{className:"grow",children:(0,b.jsx)(E.ReportLine,{report:c.get(f.shipId)?.report??null,now:d,variant:"row",testId:"silent-member-report"})}),e?.({squadronId:a,member:f}),(0,b.jsxs)(n.default,{href:`/squadrons/${a}`,className:"inline-flex items-center gap-1 text-meta font-medium hover:underline",children:["Open",(0,b.jsx)(m.ChevronRight,{"aria-hidden":!0,className:"size-(--size-icon-sm)"})]})]},f.shipId)})})}var H=a.i(71027),I=a.i(1288),J=a.i(65563),K=a.i(38023),L=a.i(67336),M=a.i(10572),N=a.i(99929),O=a.i(12540);a.s(["default",0,function(){let a=(0,g.useNow)(),f=(0,K.useConsoleFrame)(),h=(0,L.useLiveFleet)(),i=(0,e.useFleetHealth)(),j=(0,J.useAccess)(),k=(0,O.useSquadrons)(),l=(0,C.silentMembers)(k.data??[]),m=(0,N.useShips)(l.map(({member:a})=>a.shipId)),n=new Map(((0,d.useFleetSnapshot)().data??[]).map(a=>[a.id,a]));return(0,M.useSignInWhenSessionEnds)([i.error,h.error]),(0,b.jsx)(c.ListPage,{...f,title:"Health",description:"Where deliveries wait, since when, and what lets them move.",live:h.live,children:(0,b.jsx)(B,{renderLiveness:c=>(0,b.jsx)(I.MachineLiveness,{machine:c,now:a}),children:l.length>0?(0,b.jsxs)("section",{"aria-labelledby":"health-silent",className:"flex flex-col gap-2",children:[(0,b.jsxs)("h2",{id:"health-silent",className:"text-section font-semibold text-foreground",children:["Silent members (",l.length,")"]}),(0,b.jsx)(G,{members:l,ships:n,now:a,renderAction:j.canManage?({squadronId:a,member:c})=>(0,b.jsx)(H.GetNewCrewLine,{squadronId:a,member:c,ship:m.get(c.shipId),isPrimary:!0,testId:"silent-member-new-crew-line"}):void 0}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"A member is silent after 3 missed check-ins; only you can start its new session. Late members and blocked reports stay on their squadron page."})]}):null})})}],88821)}];
|
|
1
|
+
module.exports=[88821,a=>{"use strict";var b=a.i(87924),c=a.i(91003),d=a.i(90146),e=a.i(34564),f=a.i(29931),g=a.i(68450),h=a.i(72872),i=a.i(93454),j=a.i(41696),k=a.i(40392),l=a.i(50808),m=a.i(41146),n=a.i(38246),o=a.i(76166),p=a.i(12068),q=a.i(23063),r=a.i(68710);function s({place:a}){return"ship"===a.kind?(0,b.jsx)("span",{className:"font-medium text-foreground",children:a.ship.name}):(0,b.jsx)(o.Badge,{variant:"type",children:a.type})}function t({group:a,notes:c,now:d}){let{cause:e,count:f,places:g}=a;return(0,b.jsxs)("section",{"aria-label":(0,q.statusLabel)(e),"data-testid":"health-cause","data-cause":e,className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4 shadow-sm max-sm:rounded-xl",children:[(0,b.jsxs)("header",{className:"flex items-start justify-between gap-3",children:[(0,b.jsxs)(n.default,{href:(0,j.causePathOf)(e),className:"group inline-flex items-center gap-1.5 rounded-md","data-testid":"health-cause-open",children:[(0,b.jsx)(q.StatusBadge,{status:e}),(0,b.jsx)(m.ChevronRight,{"aria-hidden":!0,className:"size-(--size-icon-sm) text-muted-foreground group-hover:text-foreground"}),(0,b.jsxs)("span",{className:"sr-only",children:["Open the deliveries ",(0,q.statusLabel)(e).toLowerCase()]})]}),(0,b.jsx)("span",{className:"text-metric font-semibold tabular-nums text-foreground max-sm:text-title-touch",children:f})]}),(0,b.jsx)("p",{className:"text-body text-muted-foreground max-sm:text-body-touch",children:j.CAUSE_SENTENCES[e]}),(0,b.jsxs)("div",{className:"grid grid-cols-[minmax(0,1fr)_minmax(0,1.2fr)_auto] gap-x-4 max-sm:grid-cols-1",children:[(0,b.jsxs)("div",{className:"col-span-3 grid grid-cols-subgrid items-center text-caption font-medium text-muted-foreground max-sm:col-span-1",children:[(0,b.jsx)("span",{className:"max-sm:hidden",children:"Where, how long"}),(0,b.jsx)(r.WaitAxis,{}),(0,b.jsx)("span",{className:"text-right max-sm:hidden",children:"Next step"})]}),(0,b.jsx)("ul",{className:"col-span-3 grid grid-cols-subgrid divide-y divide-border max-sm:col-span-1",children:g.map(a=>{let e=(0,j.nextStepOf)(a),f=c.get(a),g=(0,h.duration)(new Date(a.oldestSince),d);return(0,b.jsxs)("li",{"data-testid":"health-place",className:"col-span-3 grid grid-cols-subgrid items-center gap-y-2 py-3 last:pb-0 max-sm:col-span-1",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,b.jsx)(s,{place:a.place}),(0,b.jsxs)("span",{className:"text-meta tabular-nums text-muted-foreground",children:[a.count," · oldest ",g]})]}),(0,b.jsx)(r.WaitStrip,{waits:a.deliveries.map(a=>(0,j.waitMinutes)(a.since,d)),label:`${String(a.count)} waiting, the oldest ${g}`}),(0,b.jsx)(p.Button,{variant:"secondary",size:"sm",nativeButton:!1,render:(0,b.jsx)(n.default,{href:e.href}),className:"max-sm:h-(--size-control-touch) max-sm:w-full max-sm:text-body-touch","data-testid":"health-next-step",children:e.label}),void 0!==f&&(0,b.jsx)("p",{className:"col-span-3 text-meta text-muted-foreground max-sm:col-span-1",children:f})]},`${a.cause}-${"ship"===a.place.kind?a.place.ship.id:a.place.type}`)})})]})]})}function u({perHour:a}){let c=Math.max(1,...a.map(a=>a.count));return(0,b.jsx)("div",{role:"img","aria-label":`Acknowledged per hour over the last 24 hours, at most ${Math.max(0,...a.map(a=>a.count))} in an hour`,"data-testid":"health-acknowledged-bars",className:"flex h-8 w-full items-end gap-0.5 sm:w-48",children:a.map(a=>(0,b.jsx)("span",{className:"min-h-0.5 flex-1 rounded-xs bg-tone-ok-fg opacity-75",style:{height:`${a.count/c*100}%`}},a.at))})}function v({acknowledged:a}){return(0,b.jsxs)("section",{"aria-label":"Delivering","data-testid":"health-delivering",className:"flex items-center gap-4 rounded-lg border border-border bg-card p-4 shadow-sm max-sm:flex-col max-sm:items-start max-sm:gap-3 max-sm:rounded-xl",children:[(0,b.jsx)(q.StatusBadge,{status:"delivering"}),(0,b.jsx)("p",{className:"flex-1 text-body text-foreground max-sm:text-body-touch",children:null===a.medianMs?"Nothing acknowledged in the last 24 h.":(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"font-semibold tabular-nums",children:a.count})," acknowledged in the last 24 h, median"," ",(0,b.jsx)("span",{className:"font-semibold tabular-nums",children:(0,j.medianText)(a.medianMs,h.duration)})," from send to acknowledgement."]})}),(0,b.jsx)(u,{perHour:a.perHour})]})}function w({perHour:a,marks:c}){let d=Math.max(5,5*Math.ceil(Math.max(0,...a.map(a=>a.count))/5)),e=Math.max(a.length-1,1),f=a=>100-a/d*100,[g]=a,i=a.slice(1).map((a,b)=>`H${(b+1)/e*1e3} V${f(a.count)}`),j=[`M0 ${f(g?.count??0)}`,...i].join(" "),k=`${j} H1000 V100 H0 Z`,l=a.at(-1)?.count??0,m=a.flatMap((a,b)=>b%24==12?[{index:b,label:(0,h.dayMonth)(new Date(a.at))}]:[]);return(0,b.jsxs)("figure",{"data-testid":"health-trend",className:"flex min-w-0 flex-col gap-2",children:[(0,b.jsx)("figcaption",{className:"text-meta font-medium text-foreground",children:"Stuck deliveries, last 7 days, per hour"}),(0,b.jsxs)("div",{className:"grid grid-cols-[auto_1fr] gap-x-2",children:[(0,b.jsx)("div",{"aria-hidden":!0,className:"relative h-36 w-5 text-caption tabular-nums text-muted-foreground",children:[d,d/2,0].map(a=>(0,b.jsx)("span",{className:"absolute right-0 -translate-y-1/2",style:{top:`${100-a/d*100}%`},children:a},a))}),(0,b.jsxs)("div",{className:"relative h-36",children:[(0,b.jsxs)("svg",{role:"img","aria-label":`Stuck deliveries per hour over the last 7 days: ${l} now, at most ${Math.max(0,...a.map(a=>a.count))}`,viewBox:"0 0 1000 100",preserveAspectRatio:"none",className:"size-full overflow-visible",children:[[0,d/2,d].map(a=>(0,b.jsx)("line",{x1:0,x2:1e3,y1:f(a),y2:f(a),className:"stroke-border",vectorEffect:"non-scaling-stroke"},a)),(0,b.jsx)("path",{d:k,className:"fill-tone-waiting-bg"}),(0,b.jsx)("path",{d:j,className:"fill-none stroke-tone-waiting-fg",strokeWidth:2,strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})]}),c.map(c=>(0,b.jsx)("span",{"aria-hidden":!0,"data-testid":"health-trend-mark",className:"absolute flex size-4 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border-2 border-foreground bg-card text-micro font-semibold text-foreground max-sm:hidden",style:{left:`${c.hour/e*100}%`,top:`${f(a[c.hour]?.count??0)/100*100}%`},children:c.number},c.number)),(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute size-2 -translate-1/2 rounded-full bg-tone-waiting-fg",style:{left:"100%",top:`${f(l)/100*100}%`}})]}),(0,b.jsx)("div",{"aria-hidden":!0,className:"relative col-start-2 h-4 text-caption text-muted-foreground",children:m.map(a=>(0,b.jsx)("span",{className:"absolute -translate-x-1/2 whitespace-nowrap max-sm:[&:nth-child(even)]:hidden",style:{left:`${a.index/e*100}%`},children:a.label},a.index))})]}),c.length>0&&(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:c.map((a,c)=>(0,b.jsxs)("span",{children:[c>0&&" · ",(0,b.jsx)("span",{className:"font-semibold text-foreground",children:a.number})," ",a.label]},a.number))})]})}function x({health:a}){let c=(0,j.verdictOf)(a);return(0,b.jsxs)("section",{"aria-label":"Verdict","data-testid":"health-verdict","data-verdict":c.kind,className:"grid gap-6 rounded-lg border border-border bg-card p-4 shadow-sm lg:grid-cols-[minmax(0,2fr)_minmax(0,3fr)] max-sm:gap-4 max-sm:rounded-xl",children:[(0,b.jsxs)("div",{className:"flex flex-col items-start gap-3",children:[(0,b.jsx)(q.StatusBadge,{status:c.kind}),"stuck"===c.kind?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-section font-semibold text-foreground",children:[(0,b.jsx)("span",{className:"text-metric tabular-nums max-sm:text-title-touch","data-testid":"health-stuck-count",children:c.count})," ",1===c.count?"delivery":"deliveries"," stuck in ",c.places," ",1===c.places?"place":"places"]}),(0,b.jsxs)("p",{className:"text-body text-muted-foreground max-sm:text-body-touch",children:["Stuck since ",(0,h.shortDateTime)(new Date(c.since)),". ",(0,j.trendSentence)(c)]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Nothing is lost: each one is stored and moves on as soon as its cause is gone."})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-section font-semibold text-foreground",children:"Delivering. Nothing is stuck."}),(0,b.jsx)("p",{className:"text-body text-muted-foreground max-sm:text-body-touch",children:"Every delivery waits only on its ship to take it."})]})]}),(0,b.jsx)(w,{perHour:a.stuckPerHour,marks:(0,j.marksOf)(a)})]})}var y=a.i(34532);function z({machines:a,stuckByMachine:c,renderLiveness:d}){return(0,b.jsxs)("section",{"aria-labelledby":"health-machines","data-testid":"health-machines",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4 shadow-sm max-sm:rounded-xl",children:[(0,b.jsxs)("header",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[(0,b.jsx)("h2",{id:"health-machines",className:"text-section font-semibold text-foreground",children:"Machines"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Each machine runs a trierarch that crews ships."})]}),(0,b.jsx)("ul",{className:"flex flex-col divide-y divide-border",children:a.map(a=>{let e=c.get(a.id)??0;return(0,b.jsxs)("li",{"data-testid":"health-machine",className:"flex items-center gap-4 py-3 first:pt-0 last:pb-0 max-sm:flex-wrap max-sm:gap-2",children:[(0,b.jsxs)("span",{className:"inline-flex min-w-40 items-center gap-2 font-medium text-foreground",children:[(0,b.jsx)(y.Server,{"aria-hidden":!0,className:"size-(--size-icon) text-muted-foreground"}),a.name]}),(0,b.jsx)("span",{className:"min-w-0 flex-1",children:d(a)}),(0,b.jsxs)("span",{className:"text-meta text-muted-foreground",children:[a.ships," ",1===a.ships?"ship":"ships",e>0&&(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsxs)("span",{className:"font-semibold text-foreground",children:[e," ",1===e?"delivery":"deliveries"," stuck on its ships"]})]})]}),e>0&&(0,b.jsx)(p.Button,{variant:"secondary",size:"sm",nativeButton:!1,render:(0,b.jsx)(n.default,{href:`/trierarchs/${a.id}`}),className:"max-sm:h-(--size-control-touch) max-sm:w-full",children:"Open machine"})]},a.id)})})]})}function A({state:a,health:c,onRetry:d,notes:e,machines:f,renderLiveness:g,children:h,now:i}){if("error"===a)return(0,b.jsx)(k.InlineError,{variant:"page",title:"Couldn’t load the fleet’s health",description:"Nothing changed in the fleet. The page tries again by itself.",onRetry:d});if("loading"===a||void 0===c)return(0,b.jsx)(l.LoadingSkeleton,{variant:"cards",rows:4,label:"Loading the fleet’s health"});let m=(0,j.causeGroupsOf)(c);return(0,b.jsxs)("div",{"data-testid":"health-board",className:"flex flex-col gap-5 max-sm:gap-3.5",children:[(0,b.jsx)(x,{health:c}),(0,b.jsx)(v,{acknowledged:c.acknowledged}),m.length>0&&(0,b.jsx)("div",{className:"grid gap-5 lg:grid-cols-2 max-sm:gap-3.5",children:m.map(a=>(0,b.jsx)(t,{group:a,notes:e,now:i},a.cause))}),void 0!==f&&f.length>0&&(0,b.jsx)(z,{machines:f,stuckByMachine:(0,j.stuckByMachine)(c),renderLiveness:g}),h]})}function B({renderLiveness:a,children:c}){let k=(0,g.useNow)(),l=(0,e.useFleetHealth)(),m=(0,d.useFleetSnapshot)(),n=(0,i.useMachines)(),o=m.data??[],p=new Map(o.map(a=>[a.id,a])),q=new Map;for(let a of l.data?.stuck??[]){let b="ship"===a.place.kind?p.get(a.place.ship.id):void 0,c=(0,j.placeNote)(a,{facts:b&&{lastSeenAt:b.lastSeenAt},since:a=>(0,h.relativeTime)(a,k)});null!==c&&q.set(a,c)}let r=new Map((n.data??[]).map(a=>[a.shipId,a])),s=n.data?.map(a=>({id:a.shipId,name:a.name,ships:(0,f.spotsOf)(a,o).length}));return(0,b.jsx)(A,{state:l.isError?"error":l.data?"ready":"loading",health:l.data,onRetry:()=>{l.refetch()},notes:q,machines:s,renderLiveness:b=>{let c=r.get(b.id);return void 0===c?null:a(c)},now:k,children:c})}var C=a.i(8219),D=a.i(75971),E=a.i(92717),F=a.i(58523);function G({members:a,ships:c,now:d,renderAction:e}){return(0,b.jsx)("ul",{"data-testid":"silent-members",className:"divide-y divide-border overflow-hidden rounded-lg border border-border",children:a.map(({squadronId:a,member:f})=>{let{lastSeenAt:g}=f.crew;return(0,b.jsxs)("li",{"data-testid":"silent-member",className:"flex flex-wrap items-center gap-x-4 gap-y-1.5 px-3 py-2.5",children:[(0,b.jsxs)("span",{className:"flex min-w-0 flex-col gap-1",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(D.HealthIndicator,{health:"silent"}),(0,b.jsx)("span",{className:"font-medium",children:f.name})]}),(0,b.jsx)(F.SquadronTag,{squadronId:a,role:f.role,size:"sm"})]}),(0,b.jsxs)("span",{className:"flex flex-col text-meta",children:[(0,b.jsx)("span",{children:null===g?"never seen":`not seen for ${(0,h.duration)(new Date(g),d)}`}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:["checks in ",(0,C.checkInText)(f.checkInMinutes)]})]}),(0,b.jsx)("span",{className:"grow",children:(0,b.jsx)(E.ReportLine,{report:c.get(f.shipId)?.report??null,now:d,variant:"row",testId:"silent-member-report"})}),e?.({squadronId:a,member:f}),(0,b.jsxs)(n.default,{href:`/squadrons/${a}`,className:"inline-flex items-center gap-1 text-meta font-medium hover:underline",children:["Open",(0,b.jsx)(m.ChevronRight,{"aria-hidden":!0,className:"size-(--size-icon-sm)"})]})]},f.shipId)})})}var H=a.i(71027),I=a.i(30465),J=a.i(65563),K=a.i(38023),L=a.i(67336),M=a.i(10572),N=a.i(99929),O=a.i(12540);a.s(["default",0,function(){let a=(0,g.useNow)(),f=(0,K.useConsoleFrame)(),h=(0,L.useLiveFleet)(),i=(0,e.useFleetHealth)(),j=(0,J.useAccess)(),k=(0,O.useSquadrons)(),l=(0,C.silentMembers)(k.data??[]),m=(0,N.useShips)(l.map(({member:a})=>a.shipId)),n=new Map(((0,d.useFleetSnapshot)().data??[]).map(a=>[a.id,a]));return(0,M.useSignInWhenSessionEnds)([i.error,h.error]),(0,b.jsx)(c.ListPage,{...f,title:"Health",description:"Where deliveries wait, since when, and what lets them move.",live:h.live,children:(0,b.jsx)(B,{renderLiveness:c=>(0,b.jsx)(I.MachineLiveness,{machine:c,now:a}),children:l.length>0?(0,b.jsxs)("section",{"aria-labelledby":"health-silent",className:"flex flex-col gap-2",children:[(0,b.jsxs)("h2",{id:"health-silent",className:"text-section font-semibold text-foreground",children:["Silent members (",l.length,")"]}),(0,b.jsx)(G,{members:l,ships:n,now:a,renderAction:j.canManage?({squadronId:a,member:c})=>(0,b.jsx)(H.GetNewCrewLine,{squadronId:a,member:c,ship:m.get(c.shipId),isPrimary:!0,testId:"silent-member-new-crew-line"}):void 0}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"A member is silent after 3 missed check-ins; only you can start its new session. Late members and blocked reports stay on their squadron page."})]}):null})})}],88821)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_console_app_%28console%29_fleet-health_page_tsx_0vcosw1._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[71915,a=>{"use strict";var b=a.i(87924),c=a.i(65913),d=a.i(38246),e=a.i(50944),f=a.i(12068),g=a.i(24173),h=a.i(40392),i=a.i(50808),j=a.i(39353),k=a.i(76166),l=a.i(45469);let m={argo:"You turn it on or off.",plugin:"The networking plugin turns it off while your rules apply, and on for all-to-all."};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(18783),p=a.i(93817),q=a.i(72131),r=a.i(56757),s=a.i(2811);let t=r.z.string(),u=r.z.object({id:(0,s.idSchema)("labelValue"),value:r.z.string()}),v=r.z.object({labelId:(0,s.idSchema)("label"),key:r.z.string(),valueId:(0,s.idSchema)("labelValue"),value:r.z.string()});r.z.object({valueIds:r.z.array((0,s.idSchema)("labelValue")).optional()}).optional(),r.z.object({key:t,values:r.z.array(t)}),r.z.object({labelId:(0,s.idSchema)("label"),values:r.z.array(u)}),r.z.object({labelId:(0,s.idSchema)("label"),values:r.z.array(t)}),r.z.object({values:r.z.array(u)}),r.z.object({labelId:(0,s.idSchema)("label")}),r.z.object({key:t,value:t}),r.z.object({labelId:(0,s.idSchema)("label"),valueId:(0,s.idSchema)("labelValue")}),r.z.object({shipId:(0,s.idSchema)("ship"),valueId:(0,s.idSchema)("labelValue")}),r.z.object({});let w=r.z.object({id:(0,s.idSchema)("label"),key:r.z.string(),values:r.z.array(u),owner:r.z.object({id:(0,s.idSchema)("ship"),name:r.z.string()})});r.z.array(w);let x=r.z.union([(0,s.idSchema)("labelValue"),r.z.object({labelId:(0,s.idSchema)("label"),value:r.z.enum(["*","#"])}),r.z.object({owner:r.z.union([(0,s.idSchema)("ship"),r.z.enum(["*","#"])])})]);function y(a){return"string"!=typeof a&&"owner"in a}let z=r.z.array(x),A=["send","read","manage"],B=r.z.object({verb:r.z.enum(A),from:z,to:z});r.z.object({rules:r.z.array(B)});let C=["argo","owner","answer","viewerRead","open"];r.z.object({rule:r.z.enum(C),verb:r.z.enum(A).optional(),isOn:r.z.boolean()}).refine(a=>"open"===a.rule==(void 0!==a.verb),{message:"open names its verb, and no other built-in rule names one",path:["verb"]});let D=r.z.union([r.z.object({rule:r.z.enum(["argo","owner","answer","viewerRead"]),isOn:r.z.boolean()}),r.z.object({rule:r.z.literal("open"),verb:r.z.enum(A),isOn:r.z.boolean()})]);r.z.array(D),r.z.object({version:r.z.int().min(1)}),r.z.object({rules:r.z.array(B)}),r.z.object({rules:r.z.int().min(0)}),r.z.array(r.z.object({shipId:(0,s.idSchema)("ship"),rules:r.z.array(B)})),r.z.object({whileUnavailable:r.z.enum(["block-all","open-all","keep-latest"]),notRespondingAfterSeconds:r.z.int().min(60).max(86400)});let E=r.z.object({id:(0,s.idSchema)("ship"),name:r.z.string(),labels:r.z.array(v),owner:r.z.object({id:(0,s.idSchema)("ship"),name:r.z.string()}).nullable()}),F=r.z.object({id:(0,s.idSchema)("reachRefusal"),at:r.z.iso.datetime(),sender:E,askedBy:E.nullable(),recipient:r.z.discriminatedUnion("kind",[r.z.object({kind:r.z.literal("ship"),ship:E}),r.z.object({kind:r.z.literal("type"),type:r.z.string(),ships:r.z.array(E)})]),verb:r.z.enum(A),settingsVersion:r.z.int().min(1),whilePluginUnavailable:r.z.enum(["block-all","keep-latest"]).nullable()});r.z.array(F),r.z.object({fromShipId:(0,s.idSchema)("ship"),toShipId:(0,s.idSchema)("ship").optional()});let G=r.z.union([r.z.object({builtIn:r.z.enum(C)}),r.z.object({plugin:r.z.int().min(0)}),r.z.object({declared:(0,s.idSchema)("ship"),index:r.z.int().min(0)})]),H=r.z.array(r.z.object({shipId:(0,s.idSchema)("ship"),rule:G}));r.z.object({send:H,read:H,manage:H});var I=a.i(65230);let J={send:"May send to",read:"May read",manage:"May manage"};function K(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 L(a){return"all-to-all"===a.kind?null:a.rules.map(a=>({verb:a.verb,from:[...a.from],to:[...a.to]}))}function M(a,b){return b?"rules"===a.kind?a:{kind:"rules",rules:[]}:{kind:"all-to-all"}}function N(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 O(a,b){return P(a)===P(b)}function P(a){return"string"==typeof a?a:y(a)?`owner=${a.owner}`:`${a.labelId}=${a.value}`}let Q={"*":"Any value","#":"The same value as the other side"},R={"*":"Any owner","#":"The same owner as the other side"};function S(a,b){let c=[],d=[],e=[];for(let f of a){if(y(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,I.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??c.owner.name,term:a}}(f,b);void 0===a?e.push(f):c.push(a)}return{chips:c,owners:d,unknown:e}}function T(a,b){let c=a["from"===b?"to":"from"];return a[b].filter(a=>"string"!=typeof a&&!y(a)&&"#"===a.value&&!c.some(b=>O(b,a)))}function U(a,b){let c=a=>a.some(a=>y(a)&&"#"===a.owner);return c(a[b])&&!c(a["from"===b?"to":"from"])}var V=a.i(36501);let W=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}];function X({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:"No plugin 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:W.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:J[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)(Y,{label:d,terms:a[c],context:e,testId:`network-declared-rule-${c}`})]},c))},JSON.stringify(a)))})]},a.shipId))}),(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"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Rules plugins 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 the plugin changes them, and switching it off withdraws them."}),f]})}function Y({label:a,terms:c,context:d,testId:e}){let{chips:f,unknown:g}=S(c,d);return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":e,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:[f.length+g.length===0?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,f.map((a,c)=>(0,b.jsxs)(q.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(V.LabelChip,{chip:a,testId:`${e}-value`,..."string"==typeof a.term?{}:{meaning:Q[a.term.value]}})]},P(a.term))),g.map(a=>(0,b.jsxs)("span",{"data-testid":`${e}-unknown`,title:`${P(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"]},P(a)))]})]})}var Z=a.i(70840),$=a.i(52562),_=a.i(64831);let aa={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"}]]};aa.node;let ab=(0,_.default)(aa);var ac=a.i(80487);function ad(a){return a.send.map(a=>a.shipId)}let ae=-Math.PI/2,af=2*Math.PI;function ag(a){return Math.round(100*a)/100}let ah={picked:"picked",reached:"may be messaged",unreached:"out of reach"};function ai({ships:a,pickedShipId:c,reachableShipIds:d,reachError:e,onPick:f,onRetry:g}){var i;let j=(i=void 0===c?void 0:{pickedShipId:c,reachableShipIds:void 0===e?d:void 0},a.map((b,c)=>{var d,e;let f=ae+af*c/a.length,g=1===a.length;return{ship:b,x:g?50:ag(50+38*Math.cos(f)),y:g?50:ag(50+38*Math.sin(f)),mark:(d=b.id,void 0===(e=i)?"none":d===e.pickedShipId?"picked":void 0===e.reachableShipIds?"none":e.reachableShipIds.includes(d)?"reached":"unreached")}})),k=j.find(a=>"picked"===a.mark),l=j.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.jsx)("p",{className:"text-meta text-muted-foreground",children:"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."}),(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===k?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:l.map(a=>(0,b.jsx)("line",{x1:k.x,y1:k.y,x2:a.x,y2:a.y,vectorEffect:"non-scaling-stroke",className:"stroke-muted-foreground",strokeWidth:1.5},a.ship.id))}),j.map(a=>(0,b.jsx)(aj,{node:a,onPick:()=>{f("picked"===a.mark?void 0:a.ship.id)}},a.ship.id))]}),void 0===e?(0,b.jsx)("p",{className:"text-body",role:"status","data-testid":"network-reach-summary",children:function(a){let b=a.find(a=>"picked"===a.mark);if(void 0===b)return"Pick a ship to see which ships it may message.";let c=a.length-1,d=a.filter(a=>"reached"===a.mark).map(a=>a.ship.name);return a.every(a=>"picked"===a.mark||"none"===a.mark)?0===c?`${b.ship.name} is the only ship of the fleet.`:`Finding the ships ${b.ship.name} may message…`:d.length===c?`${b.ship.name} may message every other ship (${String(c)}).`:0===d.length?`${b.ship.name} may message no other ship.`:`${b.ship.name} may message ${String(d.length)} of ${String(c)} ships: ${d.join(", ")}.`}(j)}):(0,b.jsx)(h.InlineError,{title:"Couldn’t explain this ship’s reach",description:e,onRetry:g})]})}function aj({node:a,onPick:c}){let{ship:d,mark:e}=a;return(0,b.jsx)(f.Button,{size:"sm",variant:"secondary","aria-pressed":"picked"===e,"aria-label":"none"===e?d.name:`${d.name}, ${ah[e]}`,icon:function(a){switch(a){case"picked":return(0,b.jsx)(ab,{"aria-hidden":!0});case"reached":return(0,b.jsx)($.Check,{"aria-hidden":!0});case"unreached":return(0,b.jsx)(Z.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,ac.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})}let ak={"block-all":{name:"Block all",meaning:"Only argo and answers to a received message get through."},"open-all":{name:"Open all",meaning:"Every ship may message every ship."},"keep-latest":{name:"Keep the latest rules",meaning:"The rules it supplied last stay in force."}};var al=a.i(75297),am=a.i(45098),an=a.i(48136);function ao({declaration:a,options:c,bounds:d,isSaving:e,saveError:g,savedNote:i,onSave:j}){let[k,l]=(0,q.useState)(a.whileUnavailable),[m,n]=(0,q.useState)(String(a.notRespondingAfterSeconds)),o=(0,q.useId)(),p=function(a,b){if(!/^\d+$/.test(a.trim()))return"A whole number of seconds.";let c=Number(a.trim());return c<b.min?`At least ${String(b.min)} seconds.`:c>b.max?`At most ${String(b.max)} seconds.`:void 0}(m,d),r=k!==a.whileUnavailable||m.trim()!==String(a.notRespondingAfterSeconds),s=Object.fromEntries(c.map(a=>[a,ak[a].name]));return(0,b.jsxs)("section",{"aria-labelledby":"network-declaration","data-testid":"network-declaration",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"network-declaration",className:"text-body font-semibold",children:"While the networking plugin does not respond"}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"The fleet judges the plugin not responding when its ship makes no call for this long, and then applies what you choose here, at every send."}),(0,b.jsxs)("form",{className:"flex flex-col gap-3",onSubmit:a=>{a.preventDefault(),void 0===p&&j({whileUnavailable:k,notRespondingAfterSeconds:Number(m.trim())})},children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-body font-medium",children:"What holds"}),(0,b.jsxs)(an.Select,{items:s,value:k,disabled:e,onValueChange:a=>{let b=c.find(b=>b===a);void 0!==b&&l(b)},children:[(0,b.jsx)(an.SelectTrigger,{"aria-label":"What holds while the plugin does not respond","data-testid":"network-declaration-while",className:"h-(--size-control) text-body",children:(0,b.jsx)(an.SelectValue,{})}),(0,b.jsx)(an.SelectContent,{children:c.map(a=>(0,b.jsx)(an.SelectItem,{value:a,children:ak[a].name},a))})]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground","data-testid":"network-declaration-meaning",children:ak[k].meaning})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(am.Label,{htmlFor:o,children:"Not responding after (seconds)"}),(0,b.jsx)(al.Input,{id:o,inputMode:"numeric",className:"w-40",value:m,disabled:e,"aria-invalid":void 0!==p,"aria-describedby":`${o}-hint`,"data-testid":"network-declaration-seconds",onChange:a=>{n(a.target.value)}}),(0,b.jsx)("p",{id:`${o}-hint`,className:void 0===p?"text-meta text-muted-foreground":"text-meta text-destructive",children:p??`From ${String(d.min)} to ${String(d.max)} seconds.`})]}),(0,b.jsx)("div",{children:(0,b.jsx)(f.Button,{type:"submit",variant:"primary",isLoading:e,disabled:!r||void 0!==p,"data-testid":"network-declaration-save",children:"Save"})})]}),void 0===g?null:(0,b.jsx)(h.InlineError,{variant:"field",title:"Couldn’t save",description:g}),void 0===i||r?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-muted-foreground","data-testid":"network-declaration-note",children:i})]})}var ap=a.i(3512),aq=a.i(51675),ar=a.i(59613),as=a.i(2374),at=a.i(87005),au=a.i(74215),av=a.i(19721),aw=a.i(60275);let ax=(0,av.default)(async()=>{},{loadableGenerated:{modules:[59068]},ssr:!1});function ay({label:a,picked:c,owners:e,ownerChoices:g,unknown:h,groups:i,max:j,isDisabled:k,problem:l,onAdd:m,onRemove:n,testId:o,popoverTestId:r}){let[s,t]=(0,q.useState)(!1),[u,v]=(0,q.useState)(!1),w=c.length+e.length+h.length,x=new Set(e.map(a=>P(a.term))),y=[...["*","#"].map(a=>({term:{owner:a},text:R[a]})),...g.map(a=>({term:{owner:a.shipId},text:a.name}))];return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":o,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===w?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,c.map((a,c)=>(0,b.jsxs)(q.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(V.LabelChip,{chip:a,testId:`${o}-value`,..."string"==typeof a.term?{}:{meaning:Q[a.term.value]},...k?{}:{onRemove:()=>{n(a.term)}}})]},P(a.term))),e.map((a,d)=>(0,b.jsxs)(q.Fragment,{children:[0===d&&0===c.length?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(az,{owner:a,testId:`${o}-owner`,...!0===k?{}:{onRemove:()=>{n(a.term)}}})]},P(a.term))),h.map(a=>(0,b.jsxs)("span",{"data-testid":`${o}-unknown`,title:`${P(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===k?null:(0,b.jsx)("button",{type:"button","aria-label":"string"!=typeof a&&"owner"in a?"Remove the removed owner":"Remove the removed label",onClick:()=>{n(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)(au.X,{"aria-hidden":!0})})]},P(a))),w>=j?null:(0,b.jsxs)(aw.Popover,{open:s,onOpenChange:t,children:[(0,b.jsx)(aw.PopoverTrigger,{render:(0,b.jsx)(f.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(ap.Plus,{}),disabled:k,"data-testid":`${o}-add`}),children:"Add label"}),(0,b.jsxs)(aw.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":r,children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:a}),(0,b.jsx)(ax,{groups:i,pickedValueIds:c.flatMap(a=>"string"==typeof a.term?[a.term]:[]),onPick:a=>{t(!1),m(a)},terms:{picked:c.flatMap(a=>"string"==typeof a.term?[]:[a.term]),onPick:a=>{t(!1),m(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)(d.default,{href:"/labels",className:"font-medium text-foreground hover:underline",children:"Manage labels"})]})]})]}),w>=j?null:(0,b.jsxs)(aw.Popover,{open:u,onOpenChange:v,children:[(0,b.jsx)(aw.PopoverTrigger,{render:(0,b.jsx)(f.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(ap.Plus,{}),disabled:k,"data-testid":`${o}-owner-add`}),children:"Add owner"}),(0,b.jsxs)(aw.PopoverContent,{align:"start",sideOffset:6,className:"w-72 p-2","data-testid":`${r}-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:y.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",disabled:x.has(P(a.term)),"data-testid":`${o}-owner-option`,onClick:()=>{v(!1),m(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)(at.UserRound,{"aria-hidden":!0,className:"size-(--size-icon) shrink-0 text-muted-foreground"}),a.text]})},P(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===l?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-tone-attention-fg","data-testid":`${o}-problem`,children:l}),0===h.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 az({owner:a,onRemove:c,testId:d}){let{owner:e}=a.term,f="*"===e||"#"===e?`${a.text}. ${R[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)(at.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)(au.X,{"aria-hidden":!0})})]})}let aA=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}],aB=()=>crypto.randomUUID();function aC({rules:a,context:c,limits:d,isSaving:e,saveError:g,savedNote:i,onSave:j}){let[k,l]=(0,q.useState)(()=>K(a,aB)),[m,n]=(0,q.useState)(!1),p=(0,I.filterGroupsOf)(c),r=c.ships.filter(a=>("operator"===a.kind||"person"===a.kind)&&"retired"!==a.status).map(a=>({shipId:a.id,name:a.name})),s=JSON.stringify(L(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.jsx)("div",{children:(0,b.jsx)(f.Button,{variant:"primary",icon:(0,b.jsx)(ap.Plus,{"aria-hidden":!0}),disabled:e,"data-testid":"network-rules-on",onClick:()=>{l(M(k,!0))},children:"Set rules"})})]}):(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,g)=>(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:[aA.map(({side:f,label:h})=>{let i,j=S(a[f],c);return(0,b.jsxs)("div",{className:"flex min-w-0 grow basis-0 items-start gap-3",children:["to"===f?(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)(an.Select,{items:J,value:a.verb,disabled:e,onValueChange:b=>{var c;A.some(a=>a===b)&&l(N(k,{key:(c={rule:a.key,verb:b}).rule,change:a=>({...a,verb:c.verb})}))},children:[(0,b.jsx)(an.SelectTrigger,{"aria-label":`Verb of rule ${String(g+1)}`,"data-testid":"network-rule-verb",size:"sm",children:(0,b.jsx)(an.SelectValue,{})}),(0,b.jsx)(an.SelectContent,{children:A.map(a=>(0,b.jsx)(an.SelectItem,{value:a,children:J[a]},a))})]})]}):null,"to"===f?(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)(ay,{label:h,picked:j.chips,owners:j.owners,ownerChoices:r,unknown:j.unknown,groups:p,max:d.selectorMax,isDisabled:e,...void 0===(i=function(a,b){let[c]=T(a,b.side);if(void 0===c)return U(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:f,context:c}))?{}:{problem:i},testId:`network-rule-${f}`,popoverTestId:"network-rule-popover",onAdd:b=>{var c;l(N(k,{key:(c={rule:a.key,side:f,term:b,limits:d}).rule,change:a=>{let b=a[c.side];return b.some(a=>O(a,c.term))||b.length>=c.limits.selectorMax?a:{...a,[c.side]:[...b,c.term]}}}))},onRemove:b=>{var c;l(N(k,{key:(c={rule:a.key,side:f,term:b}).rule,change:a=>({...a,[c.side]:a[c.side].filter(a=>!O(a,c.term))})}))}})]},f)}),(0,b.jsx)(f.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(aq.Trash2,{"aria-hidden":!0}),disabled:e,"aria-label":`Remove rule ${String(g+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)(f.Button,{size:"sm",icon:(0,b.jsx)(ap.Plus,{"aria-hidden":!0}),disabled:e,"data-testid":"network-rules-add",onClick:()=>{var a;l((a={newKey:aB,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)(f.Button,{variant:"primary",isLoading:e,disabled:!s||"rules"===k.kind&&k.rules.some(a=>T(a,"from").length+T(a,"to").length>0||U(a,"from")||U(a,"to")),"data-testid":"network-rules-save",onClick:()=>{j(L(k))},children:"Save rules"}),s?(0,b.jsx)(f.Button,{disabled:e,"data-testid":"network-rules-discard",onClick:()=>{l(K(a,aB))},children:"Discard changes"}):null,(0,b.jsx)(f.Button,{variant:"ghost",className:"ml-auto",disabled:e,"data-testid":"network-rules-off",onClick:()=>{null===a?l(M(k,!1)):n(!0)},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||s?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-muted-foreground","data-testid":"network-rules-note",children:i}),(0,b.jsx)(ar.AlertDialog,{open:m,onOpenChange:a=>{a||e||n(!1)},children:(0,b.jsxs)(ar.AlertDialogContent,{"data-testid":"network-rules-off-dialog",className:as.dialogSurface.phoneSheet,children:[(0,b.jsxs)(ar.AlertDialogHeader,{children:[(0,b.jsx)(ar.AlertDialogTitle,{children:"Remove all rules?"}),(0,b.jsx)(ar.AlertDialogDescription,{children:"Every ship may send to, read and manage every ship again from now on. The rules are gone: to have them back, set them again."})]}),(0,b.jsxs)(ar.AlertDialogFooter,{children:[(0,b.jsx)(ar.AlertDialogClose,{render:(0,b.jsx)(f.Button,{disabled:e}),children:"Cancel"}),(0,b.jsx)(f.Button,{variant:"destructive",isLoading:e,"data-testid":"network-rules-off-confirm",onClick:()=>{n(!1),j(null)},children:"Remove all rules"})]})]})})]})}var aD=a.i(72872);function aE({refusals:a,error:c,onRetry:d,context:e,now:f}){let j;return j=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?(0,b.jsx)(g.EmptyState,{variant:"section",title:"No send has been refused."}):(0,b.jsx)("ol",{className:"flex flex-col gap-2","data-testid":"network-refusals-list",children:a.map(a=>(0,b.jsx)(aF,{refusal:a,context:e,now:f},a.id))}),(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."}),j]})}function aF({refusal:a,context:c,now:d}){let e,f=new Date(a.at),{recipient:g}=a,h="ship"===g.kind?[g.ship]:g.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;switch(c.kind){case"ship":return`${b.name} tried to message ${c.ship.name}.`;case"type":return`${b.name} tried to message the type ${c.type}: ${(0,I.listed)(c.ships.map(a=>a.name))}.`}}(a)}),(0,b.jsx)("time",{dateTime:a.at,title:(0,aD.fullDateTime)(f),className:"text-meta text-muted-foreground tabular-nums",children:(0,aD.relativeTime)(f,d)})]}),(0,b.jsxs)("dl",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(aG,{side:"From",ship:a.sender,context:c}),h.map(a=>(0,b.jsx)(aG,{side:"To",ship:a,context:c},a.id))]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:(e=`Refused by network settings version ${String(a.settingsVersion)}`,null===a.whilePluginUnavailable?`${e}.`:`${e} while the networking plugin was not responding: ${ak[a.whilePluginUnavailable].name}.`)})]})}function aG({side:a,ship:c,context:d}){let e=(0,I.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)(V.LabelChip,{chip:a,testId:"network-refusal-label"},a.valueId))})]})}var aH=a.i(91003),aI=a.i(38023),aJ=a.i(65563),aK=a.i(1851),aL=a.i(90146),aM=a.i(67336),aN=a.i(10023),aO=a.i(28562),aP=a.i(68450),aQ=a.i(34159),aR=a.i(70025),aS=a.i(33217),aT=a.i(37927),aU=a.i(14499);let aV={send:"Every ship may send to every ship.",read:"Every ship may read every ship.",manage:"Every ship may manage every ship."};function aW(a){switch(a.rule){case"argo":return{key:a.rule,name:"argo",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:"Owner",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:"Answer",meaning:"A ship may always answer the sender of a message it received.",isOn:a.isOn,turnedBy:"never"};case"viewerRead":return{key:a.rule,name:"Viewer reads",meaning:"The viewer reads every ship.",isOn:a.isOn,turnedBy:"argo"};case"open":return{key:`open-${a.verb}`,name:`Open for ${a.verb}`,meaning:aV[a.verb],isOn:a.isOn,turnedBy:"plugin"}}}var aX=a.i(42871),aY=a.i(10572);a.s(["NetworkPageFor",0,function({pickedShipId:a}){var j,k;let l,m,o,p,q,r,s,t,u=(0,e.useRouter)(),v=(0,aP.useNow)(),w=(0,aI.useConsoleFrame)(),x=(0,aN.useNeedsAttention)(),y=(0,aM.useLiveFleet)(),z=(0,aJ.useAccess)(),A=(0,aQ.usePluginNav)(),B=(0,aO.useHasNetwork)(),C=(0,aO.useNetwork)(),D=(0,aL.useLabelContext)(),E=(0,aL.useFleetSnapshot)(),F=(j=B?a:void 0,m=(0,aU.useTRPC)(),(0,aS.useQuery)({...m.fleet.explainReach.queryOptions(void 0===j?aX.skipToken:{fromShipId:j}),select:ad})),G=(o=(0,aU.useTRPC)(),(0,aS.useQuery)(o.fleet.reachRefusals.queryOptions(void 0,{enabled:B}))),H=(p=(0,aU.useTRPC)(),(0,aS.useQuery)(p.fleet.declaredNetworkRules.queryOptions(void 0,{enabled:B}))),I=(q=(0,aU.useTRPC)(),(0,aS.useQuery)(q.fleet.builtInRules.queryOptions(void 0,{enabled:B}))),J=(r=(0,aU.useTRPC)(),s=(0,aT.useQueryClient)(),{setViewerRead:a=>{t.mutate({rule:"viewerRead",isOn:a})},isPending:(t=(0,aR.useMutation)(r.fleet.setBuiltInRule.mutationOptions({onSuccess:()=>s.invalidateQueries({queryKey:r.fleet.builtInRules.queryKey()})}))).isPending,error:t.error?.message}),K=(0,aO.useSaveNetworkRules)(),L=(0,aO.useSaveNetworkDeclaration)(),{networkRulesMax:M,shipLabelsMax:N,whileUnavailable:O,notRespondingAfterMinSeconds:P,notRespondingAfterMaxSeconds:Q}=(0,aK.useConsoleConstants)();if((0,aY.useSignInWhenSessionEnds)([x.error,y.error]),B)if(C.isError)l=(0,b.jsx)(h.InlineError,{title:"Couldn’t read the network",description:C.error.message,onRetry:()=>{C.refetch()}});else if(void 0===C.data||void 0===D||void 0===E.data)l=(0,b.jsx)(i.LoadingSkeleton,{variant:"detail",rows:4,label:"Loading the network"});else{let c;l=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n,{rows:void 0===I.data?void 0:I.data.map(aW),error:I.error?.message,onRetry:()=>{I.refetch()},isTurning:J.isPending,turnError:J.error,onViewerReadChange:J.setViewerRead}),(0,b.jsx)(aC,{rules:C.data.rules,context:D,limits:{rulesMax:M,selectorMax:N},isSaving:K.isPending,saveError:K.error?.message,savedNote:void 0===K.data?void 0:function(a){switch(a){case"supplied":return"Saved. The fleet enforces them from now on.";case"waiting":return"Saved. The fleet does not answer yet: the networking plugin supplies them as soon as it does.";case"not-connected":case"unregistered":return"Saved."}}(K.data.supply),onSave:a=>{K.mutate(a)}},JSON.stringify(C.data.rules)),(0,b.jsx)(X,{declared:void 0===H.data?void 0:(k=H.data,c=new Map(E.data.map(a=>[a.id,a.name])),k.filter(({rules:a})=>a.length>0).map(({shipId:a,rules:b})=>({shipId:a,declaredBy:c.get(a)??a,rules:b})).sort((a,b)=>a.declaredBy.localeCompare(b.declaredBy))),error:H.error?.message,onRetry:()=>{H.refetch()},context:D}),(0,b.jsx)(ao,{declaration:C.data.declaration,options:O,bounds:{min:P,max:Q},isSaving:L.isPending,saveError:L.error?.message,savedNote:void 0===L.data?void 0:function(a){switch(a){case"supplied":return"Saved. The networking plugin registered again with it.";case"waiting":return"Saved. The fleet does not answer yet: the networking plugin registers again with it as soon as it does.";case"not-connected":case"unregistered":return"Saved."}}(L.data.supply),onSave:a=>{L.mutate(a)}},JSON.stringify(C.data.declaration)),(0,b.jsx)(ai,{ships:E.data.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)),pickedShipId:a,reachableShipIds:F.data,reachError:F.error?.message,onPick:a=>{u.replace(void 0===a?"/network":`/network?reach=${a}`,{scroll:!1})},onRetry:()=>{F.refetch()}}),(0,b.jsx)(aE,{refusals:G.data,error:G.error?.message,onRetry:()=>{G.refetch()},context:D,now:v})]})}else l=(0,b.jsx)(g.EmptyState,{icon:(0,b.jsx)(c.Network,{"aria-hidden":!0}),title:z.canEditNetwork?"The networking plugin is not connected":"Only argo sees the network rules",description:z.canEditNetwork?"Connect it in Settings. Until it supplies rules, every ship may message every ship.":void 0,action:z.canEditNetwork&&A.hasSettings?(0,b.jsx)(f.Button,{nativeButton:!1,render:(0,b.jsx)(d.default,{href:"/settings"}),"data-testid":"network-open-settings",children:"Open Settings"}):void 0});return(0,b.jsx)(aH.ListPage,{...w,title:"Network",description:"Who may send to, read or manage whom. The networking plugin supplies these rules to the fleet, which checks them on every send. Only argo sees this page.",live:y.live,children:l})}],71915)}];
|
|
1
|
+
module.exports=[71915,a=>{"use strict";var b=a.i(87924),c=a.i(65913),d=a.i(50944),e=a.i(24173),f=a.i(40392),g=a.i(50808),h=a.i(39353),i=a.i(76166),j=a.i(45469);let k={argo:"You turn it on or off.",rules:"Applying rules turns it off; applying none turns it on again."};function l({rows:a,error:c,onRetry:d,isTurning:e,turnError:m,onViewerReadChange:n}){let o;return o=void 0!==c?(0,b.jsx)(f.InlineError,{title:"Couldn’t read the built-in rules",description:c,onRetry:d}):void 0===a?(0,b.jsx)(g.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:k[a.turnedBy]]})]}),"argo"===a.turnedBy?(0,b.jsx)(j.Switch,{checked:a.isOn,disabled:e,"aria-label":`${a.name}: ${a.isOn?"on":"off"}`,"data-testid":"network-built-in-viewer-read",onCheckedChange:a=>{n(a)}}):(0,b.jsx)(i.Badge,{variant:"outline","data-testid":"network-built-in-rule-state",children:"never"===a.turnedBy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.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===m?null:(0,b.jsx)(f.InlineError,{variant:"field",title:"Couldn’t turn the viewer reading",description:m})]})}var m=a.i(18783),n=a.i(93817),o=a.i(72131),p=a.i(56757),q=a.i(2811);let r=p.z.enum(["messages:send","messages:receive","messages:force","messages:resend","fleet:read","fleet:commission","fleet:manage","crew:assign","crew:run","labels:define","labels:assign","fleet:network","fleet:on-behalf","fleet:person","fleet:owner","fleet:explain","fleet:connect","labels:any","fleet:verify","scopes:declare","scopes:grant"]),s=["messages","fleet","crew","labels","scopes"],t="[a-z][a-z0-9-]{0,31}";RegExp(`^${t}$`);let u=RegExp(`^${t}:${t}$`),v=p.z.string().regex(u,"A scope is <namespace>:<action>").refine(a=>{var b;return b=a.slice(0,a.indexOf(":")),!s.some(a=>a===b)||r.safeParse(a).success},"No such core scope");p.z.enum(["messages:resend","fleet:read","fleet:commission","fleet:manage","crew:assign","crew:run","labels:define","labels:assign","fleet:network","fleet:on-behalf","fleet:person","fleet:owner","fleet:explain","fleet:connect","labels:any","fleet:verify"]),p.z.enum(["operator","agent","viewer","person","app"]),p.z.enum(["agent","person","app"]),p.z.enum(["DEVICE","CLOUD","SERVER","OTHER"]),p.z.enum(["awaitingCrew","crewed","retired"]),p.z.enum(["ship","type"]),p.z.enum(["pending","received","handed","acknowledged","handled","notHandled","undeliverable","dismissed","abandoned"]),p.z.enum(["FleetInitialised","ShipCommissioned","OwnerSet","OwnerChanged","ShipClaimed","LeaseRevoked","CredentialRevoked","StartingPromptIssued","OperatorPasswordReset","MessageAccepted","LeasePushed","DeliveryReceived","DeliveryHanded","DeliveryAcknowledged","DeliveryHandled","DeliveryNotHandled","DeliveryOverdue","DeliveryUndeliverable","DeliveryReturned","ShipRetired","DeliveryAbandoned","DeliveryDismissed","ShipRenamed","ShipReported","StatementSet","TurnReported","SignInTicketIssued","FleetLimitsChanged","ViewerSessionStarted","CrewRequested","CrewRequestRemoved","CrewAssigned","CrewStatusChanged","CrewRequestExplained","CrewRequestGivenBack","LabelDefined","LabelValuesChanged","LabelRetired","LabelAssigned","LabelUnassigned","LabelDeleted","WorktreeClearRequested","WorktreeCleared","WorktreeClearRemoved","NetworkRulesSet","NetworkRulesDeclared","NetworkRulesDraftSaved","NetworkRulesDraftDiscarded","NetworkPluginRegistered","NetworkPluginUnregistered","BuiltInRuleChanged","ScopesDeclared","ScopesChanged","PluginConnected","PluginDisconnected","VerifiedFactsSet","VerifiedFactsRemoved"]);let w=p.z.string().min(1).max(128).brand();p.z.object({iss:p.z.string(),aud:(0,q.idSchema)("fleet"),sub:w,org:p.z.string().min(1),scope:p.z.string(),group:p.z.array(p.z.string()),person_ship:(0,q.idSchema)("ship").optional(),iat:p.z.number(),exp:p.z.number()}).transform((a,b)=>{let c=a.scope.split(" ").filter(a=>""!==a),d=p.z.array(v).safeParse(c);return d.success?{issuer:a.iss,fleetId:a.aud,accountId:a.sub,organisationId:a.org,scopes:d.data,groupValues:a.group,personShipId:a.person_ship??null,issuedAt:new Date(1e3*a.iat),endsAt:new Date(1e3*a.exp)}:(b.addIssue({code:"custom",message:"scope holds a malformed or unknown scope",path:["scope"]}),p.z.NEVER)});let x=p.z.string(),y=p.z.object({id:(0,q.idSchema)("labelValue"),value:p.z.string()}),z=p.z.object({labelId:(0,q.idSchema)("label"),key:p.z.string(),valueId:(0,q.idSchema)("labelValue"),value:p.z.string()});p.z.object({valueIds:p.z.array((0,q.idSchema)("labelValue")).optional()}).optional(),p.z.object({key:x,values:p.z.array(x)}),p.z.object({labelId:(0,q.idSchema)("label"),values:p.z.array(y)}),p.z.object({labelId:(0,q.idSchema)("label"),values:p.z.array(x)}),p.z.object({values:p.z.array(y)}),p.z.object({labelId:(0,q.idSchema)("label")}),p.z.object({key:x,value:x}),p.z.object({labelId:(0,q.idSchema)("label"),valueId:(0,q.idSchema)("labelValue")}),p.z.object({shipId:(0,q.idSchema)("ship"),valueId:(0,q.idSchema)("labelValue")}),p.z.object({});let A=p.z.discriminatedUnion("kind",[p.z.object({kind:p.z.literal("ship"),id:(0,q.idSchema)("ship"),name:p.z.string()}),p.z.object({kind:p.z.literal("installation")})]),B=p.z.object({id:(0,q.idSchema)("label"),key:p.z.string(),values:p.z.array(y),owner:A});p.z.array(B);let C=p.z.union([(0,q.idSchema)("labelValue"),p.z.object({labelId:(0,q.idSchema)("label"),value:p.z.enum(["*","#"])}),p.z.object({owner:p.z.union([(0,q.idSchema)("ship"),p.z.enum(["*","#"])])})]);function D(a){return"string"!=typeof a&&"owner"in a}let E=p.z.array(C),F=["send","read","manage"],G=p.z.object({verb:p.z.enum(F),from:E,to:E}),H=p.z.array(G).nullable();p.z.object({rules:H}),p.z.object({savedAgainstVersion:p.z.int().min(0)}),p.z.object({version:p.z.int().min(0)}),p.z.object({applied:p.z.object({rules:H,version:p.z.int().min(0)}),draft:p.z.object({rules:H,savedAt:p.z.iso.datetime(),savedAgainstVersion:p.z.int().min(0)}).nullable()}),p.z.object({});let I=["argo","owner","answer","pluginRead","viewerRead","installation","open"];p.z.object({rule:p.z.enum(I),isOn:p.z.boolean()});let J=p.z.object({rule:p.z.enum(I),isOn:p.z.boolean()});p.z.array(J),p.z.object({version:p.z.int().min(0)}),p.z.object({rules:p.z.array(G)}),p.z.object({rules:p.z.int().min(0)});let K=p.z.discriminatedUnion("kind",[p.z.object({kind:p.z.literal("ship"),shipId:(0,q.idSchema)("ship")}),p.z.object({kind:p.z.literal("installation")})]);p.z.array(p.z.object({declarer:K,rules:p.z.array(G)}));let L=p.z.object({id:(0,q.idSchema)("ship"),name:p.z.string(),labels:p.z.array(z),owner:p.z.object({id:(0,q.idSchema)("ship"),name:p.z.string()}).nullable()}),M=p.z.discriminatedUnion("kind",[L.extend({kind:p.z.literal("ship")}),p.z.object({kind:p.z.literal("account"),accountId:w,labels:p.z.array(z),personShip:p.z.object({id:(0,q.idSchema)("ship"),name:p.z.string()}).nullable()}),p.z.object({kind:p.z.literal("installation")})]),N=p.z.object({id:(0,q.idSchema)("reachRefusal"),at:p.z.iso.datetime(),sender:M,askedBy:L.nullable(),recipient:p.z.discriminatedUnion("kind",[p.z.object({kind:p.z.literal("ship"),ship:L}),p.z.object({kind:p.z.literal("type"),type:p.z.string(),ships:p.z.array(L)})]),verb:p.z.enum(F),settingsVersion:p.z.int().min(1)});p.z.array(N),p.z.object({fromShipId:(0,q.idSchema)("ship"),toShipId:(0,q.idSchema)("ship").optional(),against:p.z.enum(["applied","draft"]).optional()});let O=p.z.union([p.z.object({builtIn:p.z.enum(I)}),p.z.object({rule:p.z.int().min(0)}),p.z.object({declared:K,index:p.z.int().min(0)})]),P=p.z.array(p.z.object({shipId:(0,q.idSchema)("ship"),rule:O}));p.z.object({send:P,read:P,manage:P});let Q=p.z.array(p.z.object({fromShipId:(0,q.idSchema)("ship"),toShipId:(0,q.idSchema)("ship"),rule:O}));p.z.object({send:p.z.object({gained:Q,lost:Q}),read:p.z.object({gained:Q,lost:Q}),manage:p.z.object({gained:Q,lost:Q})});var R=a.i(65230);let S={send:"May send to",read:"May read",manage:"May manage"};function T(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 U(a){return"all-to-all"===a.kind?null:a.rules.map(a=>({verb:a.verb,from:[...a.from],to:[...a.to]}))}function V(a,b){return b?"rules"===a.kind?a:{kind:"rules",rules:[]}:{kind:"all-to-all"}}function W(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 X(a,b){return Y(a)===Y(b)}function Y(a){return"string"==typeof a?a:D(a)?`owner=${a.owner}`:`${a.labelId}=${a.value}`}let Z={"*":"Any value","#":"The same value as the other side"},$={"*":"Any owner","#":"The same owner as the other side"};function _(a,b){let c=[],d=[],e=[];for(let f of a){if(D(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,R.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,R.labelOwnerName)(c.owner),term:a}}(f,b);void 0===a?e.push(f):c.push(a)}return{chips:c,owners:d,unknown:e}}function aa(a,b){let c=a["from"===b?"to":"from"];return a[b].filter(a=>"string"!=typeof a&&!D(a)&&"#"===a.value&&!c.some(b=>X(b,a)))}function ab(a,b){let c=a=>a.some(a=>D(a)&&"#"===a.owner);return c(a[b])&&!c(a["from"===b?"to":"from"])}var ac=a.i(36501);let ad=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}];function ae({declared:a,error:c,onRetry:d,context:h}){let i;return i=void 0!==c?(0,b.jsx)(f.InlineError,{title:"Couldn’t read the declared rules",description:c,onRetry:d}):void 0===a?(0,b.jsx)(g.LoadingSkeleton,{variant:"list",rows:2,label:"Loading the declared rules"}):0===a.length?(0,b.jsx)(e.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:ad.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:S[a.verb]}):null,"to"===c?(0,b.jsx)(m.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)(af,{label:d,terms:a[c],context:h,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."}),i]})}function af({label:a,terms:c,context:d,testId:e}){let{chips:f,unknown:g}=_(c,d);return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":e,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:[f.length+g.length===0?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,f.map((a,c)=>(0,b.jsxs)(o.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(ac.LabelChip,{chip:a,testId:`${e}-value`,..."string"==typeof a.term?{}:{meaning:Z[a.term.value]}})]},Y(a.term))),g.map(a=>(0,b.jsxs)("span",{"data-testid":`${e}-unknown`,title:`${Y(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)(n.CircleAlert,{"aria-hidden":!0}),"A removed label"]},Y(a)))]})]})}var ag=a.i(70840),ah=a.i(52562),ai=a.i(64831);let aj={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"}]]};aj.node;let ak=(0,ai.default)(aj);var al=a.i(80487);function am(a){return a.send.map(a=>a.shipId)}let an=-Math.PI/2,ao=2*Math.PI;function ap(a){return Math.round(100*a)/100}var aq=a.i(12068),ar=a.i(94777);let as=["applied","draft"],at={picked:"picked",reached:"may be messaged",unreached:"out of reach"};function au({ships:a,pickedShipId:c,reachableShipIds:d,reachError:e,onPick:g,onRetry:h,against:i="applied",onAgainstChange:j}){var k;let l=(k=void 0===c?void 0:{pickedShipId:c,reachableShipIds:void 0===e?d:void 0},a.map((b,c)=>{var d,e;let f=an+ao*c/a.length,g=1===a.length;return{ship:b,x:g?50:ap(50+38*Math.cos(f)),y:g?50:ap(50+38*Math.sin(f)),mark:(d=b.id,void 0===(e=k)?"none":d===e.pickedShipId?"picked":void 0===e.reachableShipIds?"none":e.reachableShipIds.includes(d)?"reached":"unreached")}})),m=l.find(a=>"picked"===a.mark),n=l.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"===i?"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===j?null:(0,b.jsx)(ar.Tabs,{value:i,onValueChange:a=>{let b=as.find(b=>b===a);void 0!==b&&j(b)},children:(0,b.jsxs)(ar.TabsList,{"aria-label":"Explain reach against",children:[(0,b.jsx)(ar.TabsTrigger,{value:"applied","data-testid":"network-reach-applied",children:"Applied rules"}),(0,b.jsx)(ar.TabsTrigger,{value:"draft","data-testid":"network-reach-draft",children:"Draft"})]})}),(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===m?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:n.map(a=>(0,b.jsx)("line",{x1:m.x,y1:m.y,x2:a.x,y2:a.y,vectorEffect:"non-scaling-stroke",className:"stroke-muted-foreground",strokeWidth:1.5},a.ship.id))}),l.map(a=>(0,b.jsx)(av,{node:a,onPick:()=>{g("picked"===a.mark?void 0:a.ship.id)}},a.ship.id))]}),void 0===e?(0,b.jsx)("p",{className:"text-body",role:"status","data-testid":"network-reach-summary",children:function(a){let b=a.find(a=>"picked"===a.mark);if(void 0===b)return"Pick a ship to see which ships it may message.";let c=a.length-1,d=a.filter(a=>"reached"===a.mark).map(a=>a.ship.name);return a.every(a=>"picked"===a.mark||"none"===a.mark)?0===c?`${b.ship.name} is the only ship of the fleet.`:`Finding the ships ${b.ship.name} may message…`:d.length===c?`${b.ship.name} may message every other ship (${String(c)}).`:0===d.length?`${b.ship.name} may message no other ship.`:`${b.ship.name} may message ${String(d.length)} of ${String(c)} ships: ${d.join(", ")}.`}(l)}):(0,b.jsx)(f.InlineError,{title:"Couldn’t explain this ship’s reach",description:e,onRetry:h})]})}function av({node:a,onPick:c}){let{ship:d,mark:e}=a;return(0,b.jsx)(aq.Button,{size:"sm",variant:"secondary","aria-pressed":"picked"===e,"aria-label":"none"===e?d.name:`${d.name}, ${at[e]}`,icon:function(a){switch(a){case"picked":return(0,b.jsx)(ak,{"aria-hidden":!0});case"reached":return(0,b.jsx)(ah.Check,{"aria-hidden":!0});case"unreached":return(0,b.jsx)(ag.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,al.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 aw=a.i(59613),ax=a.i(2374);let ay={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 az({draft:a,appliedVersion:c,isApplying:d,applyError:e,onApply:g,isDiscarding:h,discardError:i,onDiscard:j}){let[k,l]=(0,o.useState)(null),m=d||h;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)(aq.Button,{variant:"primary",isLoading:d,disabled:h,"data-testid":"network-rules-apply-open",onClick:()=>{l("apply")},children:"Apply draft"}),(0,b.jsx)(aq.Button,{variant:"ghost",isLoading:h,disabled:d,"data-testid":"network-rules-discard-open",onClick:()=>{l("discard")},children:"Discard draft"})]})]}),void 0===e?null:(0,b.jsx)(f.InlineError,{variant:"field",title:"Couldn’t apply the draft",description:e}),void 0===i?null:(0,b.jsx)(f.InlineError,{variant:"field",title:"Couldn’t discard the draft",description:i}),(0,b.jsx)(aw.AlertDialog,{open:null!==k,onOpenChange:a=>{a||m||l(null)},children:null===k?null:(0,b.jsxs)(aw.AlertDialogContent,{"data-testid":`network-rules-${k}-dialog`,className:ax.dialogSurface.phoneSheet,children:[(0,b.jsxs)(aw.AlertDialogHeader,{children:[(0,b.jsx)(aw.AlertDialogTitle,{children:ay[k].title}),(0,b.jsx)(aw.AlertDialogDescription,{children:ay[k].description})]}),(0,b.jsxs)(aw.AlertDialogFooter,{children:[(0,b.jsx)(aw.AlertDialogClose,{render:(0,b.jsx)(aq.Button,{disabled:m}),children:"Cancel"}),(0,b.jsx)(aq.Button,{variant:"apply"===k?"primary":"destructive",isLoading:m,"data-testid":`network-rules-${k}-confirm`,onClick:()=>{l(null),"apply"===k?g():j()},children:ay[k].action})]})]})})]})}let aA={argo:"argo",owner:"Owner",answer:"Answer",pluginRead:"Connected plugins read",viewerRead:"Viewer reads",installation:"Installation manages",open:"Open"};function aB(a){switch(a.rule){case"argo":return{key:a.rule,name:aA[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:aA[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:aA[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:aA[a.rule],meaning:"A plugin argo connected reads every ship, whatever the rules.",isOn:a.isOn,turnedBy:"never"};case"viewerRead":return{key:a.rule,name:aA[a.rule],meaning:"The viewer reads every ship.",isOn:a.isOn,turnedBy:"argo"};case"installation":return{key:a.rule,name:aA[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:aA[a.rule],meaning:"Every ship may send to, read and manage every ship.",isOn:a.isOn,turnedBy:"rules"}}}function aC({changes:a,error:c,onRetry:d}){let e;return e=void 0!==c?(0,b.jsx)(f.InlineError,{title:"Couldn’t read what the draft changes",description:c,onRetry:d}):void 0===a?(0,b.jsx)(g.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:S[a]}),(0,b.jsx)(aD,{title:"Gains",rows:c,testId:"network-draft-gained"}),(0,b.jsx)(aD,{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 aD({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)(m.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 aE=a.i(3512),aF=a.i(51675),aG=a.i(48136),aH=a.i(87005),aI=a.i(74215),aJ=a.i(19721),aK=a.i(38246),aL=a.i(60275);let aM=(0,aJ.default)(async()=>{},{loadableGenerated:{modules:[59068]},ssr:!1});function aN({label:a,picked:c,owners:d,ownerChoices:e,unknown:f,groups:g,max:h,isDisabled:i,problem:j,onAdd:k,onRemove:l,testId:m,popoverTestId:p}){let[q,r]=(0,o.useState)(!1),[s,t]=(0,o.useState)(!1),u=c.length+d.length+f.length,v=new Set(d.map(a=>Y(a.term))),w=[...["*","#"].map(a=>({term:{owner:a},text:$[a]})),...e.map(a=>({term:{owner:a.shipId},text:a.name}))];return(0,b.jsxs)("div",{className:"flex flex-col gap-1","data-testid":m,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)(o.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(ac.LabelChip,{chip:a,testId:`${m}-value`,..."string"==typeof a.term?{}:{meaning:Z[a.term.value]},...i?{}:{onRemove:()=>{l(a.term)}}})]},Y(a.term))),d.map((a,d)=>(0,b.jsxs)(o.Fragment,{children:[0===d&&0===c.length?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(aO,{owner:a,testId:`${m}-owner`,...!0===i?{}:{onRemove:()=>{l(a.term)}}})]},Y(a.term))),f.map(a=>(0,b.jsxs)("span",{"data-testid":`${m}-unknown`,title:`${Y(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)(n.CircleAlert,{"aria-hidden":!0}),"string"!=typeof a&&"owner"in a?"A removed owner":"A removed label",!0===i?null:(0,b.jsx)("button",{type:"button","aria-label":"string"!=typeof a&&"owner"in a?"Remove the removed owner":"Remove the removed label",onClick:()=>{l(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)(aI.X,{"aria-hidden":!0})})]},Y(a))),u>=h?null:(0,b.jsxs)(aL.Popover,{open:q,onOpenChange:r,children:[(0,b.jsx)(aL.PopoverTrigger,{render:(0,b.jsx)(aq.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(aE.Plus,{}),disabled:i,"data-testid":`${m}-add`}),children:"Add label"}),(0,b.jsxs)(aL.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":p,children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:a}),(0,b.jsx)(aM,{groups:g,pickedValueIds:c.flatMap(a=>"string"==typeof a.term?[a.term]:[]),onPick:a=>{r(!1),k(a)},terms:{picked:c.flatMap(a=>"string"==typeof a.term?[]:[a.term]),onPick:a=>{r(!1),k(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)(aK.default,{href:"/labels",className:"font-medium text-foreground hover:underline",children:"Manage labels"})]})]})]}),u>=h?null:(0,b.jsxs)(aL.Popover,{open:s,onOpenChange:t,children:[(0,b.jsx)(aL.PopoverTrigger,{render:(0,b.jsx)(aq.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(aE.Plus,{}),disabled:i,"data-testid":`${m}-owner-add`}),children:"Add owner"}),(0,b.jsxs)(aL.PopoverContent,{align:"start",sideOffset:6,className:"w-72 p-2","data-testid":`${p}-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(Y(a.term)),"data-testid":`${m}-owner-option`,onClick:()=>{t(!1),k(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)(aH.UserRound,{"aria-hidden":!0,className:"size-(--size-icon) shrink-0 text-muted-foreground"}),a.text]})},Y(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===j?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-tone-attention-fg","data-testid":`${m}-problem`,children:j}),0===f.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 aO({owner:a,onRemove:c,testId:d}){let{owner:e}=a.term,f="*"===e||"#"===e?`${a.text}. ${$[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)(aH.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)(aI.X,{"aria-hidden":!0})})]})}let aP=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}],aQ=()=>crypto.randomUUID();function aR({rules:a,context:c,limits:d,isSaving:e,saveError:g,savedNote:h,onSave:i}){let[j,k]=(0,o.useState)(()=>T(a,aQ)),l=(0,R.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(U(j))!==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"===j.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)(aq.Button,{variant:p?"secondary":"primary",icon:(0,b.jsx)(aE.Plus,{"aria-hidden":!0}),disabled:e,"data-testid":"network-rules-on",onClick:()=>{k(V(j,!0))},children:"Set rules"}),p?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(aq.Button,{variant:"primary",isLoading:e,"data-testid":"network-rules-save",onClick:()=>{i(null)},children:"Save draft"}),(0,b.jsx)(aq.Button,{disabled:e,"data-testid":"network-rules-discard",onClick:()=>{k(T(a,aQ))},children:"Discard changes"})]}):null]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"network-rules-state",children:0===j.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===j.rules.length?null:(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:j.rules.map((a,f)=>(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:[aP.map(({side:g,label:h})=>{let i,o=_(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)(aG.Select,{items:S,value:a.verb,disabled:e,onValueChange:b=>{var c;F.some(a=>a===b)&&k(W(j,{key:(c={rule:a.key,verb:b}).rule,change:a=>({...a,verb:c.verb})}))},children:[(0,b.jsx)(aG.SelectTrigger,{"aria-label":`Verb of rule ${String(f+1)}`,"data-testid":"network-rule-verb",size:"sm",children:(0,b.jsx)(aG.SelectValue,{})}),(0,b.jsx)(aG.SelectContent,{children:F.map(a=>(0,b.jsx)(aG.SelectItem,{value:a,children:S[a]},a))})]})]}):null,"to"===g?(0,b.jsx)(m.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)(aN,{label:h,picked:o.chips,owners:o.owners,ownerChoices:n,unknown:o.unknown,groups:l,max:d.selectorMax,isDisabled:e,...void 0===(i=function(a,b){let[c]=aa(a,b.side);if(void 0===c)return ab(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;k(W(j,{key:(c={rule:a.key,side:g,term:b,limits:d}).rule,change:a=>{let b=a[c.side];return b.some(a=>X(a,c.term))||b.length>=c.limits.selectorMax?a:{...a,[c.side]:[...b,c.term]}}}))},onRemove:b=>{var c;k(W(j,{key:(c={rule:a.key,side:g,term:b}).rule,change:a=>({...a,[c.side]:a[c.side].filter(a=>!X(a,c.term))})}))}})]},g)}),(0,b.jsx)(aq.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(aF.Trash2,{"aria-hidden":!0}),disabled:e,"aria-label":`Remove rule ${String(f+1)}`,"data-testid":"network-rule-remove",onClick:()=>{var b;k((b=a.key,"all-to-all"===j.kind?j:{kind:"rules",rules:j.rules.filter(a=>a.key!==b)}))}})]},a.key))}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[j.rules.length>=d.rulesMax?null:(0,b.jsx)(aq.Button,{size:"sm",icon:(0,b.jsx)(aE.Plus,{"aria-hidden":!0}),disabled:e,"data-testid":"network-rules-add",onClick:()=>{var a;k((a={newKey:aQ,limits:d},"all-to-all"===j.kind||j.rules.length>=a.limits.rulesMax?j:{kind:"rules",rules:[...j.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:[j.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)(aq.Button,{variant:"primary",isLoading:e,disabled:!p||"rules"===j.kind&&j.rules.some(a=>aa(a,"from").length+aa(a,"to").length>0||ab(a,"from")||ab(a,"to")),"data-testid":"network-rules-save",onClick:()=>{i(U(j))},children:"Save draft"}),p?(0,b.jsx)(aq.Button,{disabled:e,"data-testid":"network-rules-discard",onClick:()=>{k(T(a,aQ))},children:"Discard changes"}):null,(0,b.jsx)(aq.Button,{variant:"ghost",className:"ml-auto",disabled:e,"data-testid":"network-rules-off",onClick:()=>{k(V(j,!1))},children:"Remove all rules"})]})]}),void 0===g?null:(0,b.jsx)(f.InlineError,{variant:"field",title:"Couldn’t save the rules",description:g}),void 0===h||p?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-muted-foreground","data-testid":"network-rules-note",children:h})]})}function aS(a){switch(a.kind){case"ship":return a.name;case"account":return`Account ${a.accountId}`;case"installation":return"The installation"}}var aT=a.i(72872);function aU({refusals:a,error:c,onRetry:d,context:h,now:i}){let j;return j=void 0!==c?(0,b.jsx)(f.InlineError,{title:"Couldn’t read the refusals",description:c,onRetry:d}):void 0===a?(0,b.jsx)(g.LoadingSkeleton,{variant:"list",rows:3,label:"Loading the refusals"}):0===a.length?(0,b.jsx)(e.EmptyState,{variant:"section",title:"No send has been refused."}):(0,b.jsx)("ol",{className:"flex flex-col gap-2","data-testid":"network-refusals-list",children:a.map(a=>(0,b.jsx)(aV,{refusal:a,context:h,now:i},a.id))}),(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."}),j]})}function aV({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=`${aS(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,R.listed)(c.ships.map(a=>a.name))}.`}}(a)}),(0,b.jsx)("time",{dateTime:a.at,title:(0,aT.fullDateTime)(e),className:"text-meta text-muted-foreground tabular-nums",children:(0,aT.relativeTime)(e,d)})]}),(0,b.jsxs)("dl",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(aW,{side:"From",ship:{name:aS(a.sender),labels:"installation"===a.sender.kind?[]:a.sender.labels},context:c}),g.map(a=>(0,b.jsx)(aW,{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 aW({side:a,ship:c,context:d}){let e=(0,R.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)(ac.LabelChip,{chip:a,testId:"network-refusal-label"},a.valueId))})]})}var aX=a.i(91003),aY=a.i(38023),aZ=a.i(65563),a$=a.i(1851),a_=a.i(90146),a0=a.i(67336),a1=a.i(10023),a2=a.i(70025),a3=a.i(33217),a4=a.i(37927),a5=a.i(14499);function a6(){let a=(0,a5.useTRPC)(),b=(0,a4.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 a7=a.i(68450),a8=a.i(42871);function a9(a,b="applied"){let c=new URLSearchParams([...void 0===a?[]:[["reach",a]],..."draft"===b?[["against","draft"]]:[]]).toString();return""===c?"/network":`/network?${c}`}var ba=a.i(10572);a.s(["NetworkPageFor",0,function({pickedShipId:a,against:h}){var i,j,k,m;let n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=(0,d.useRouter)(),G=(0,a7.useNow)(),H=(0,aY.useConsoleFrame)(),I=(0,a1.useNeedsAttention)(),J=(0,a0.useLiveFleet)(),K=(0,aZ.useAccess)().canEditNetwork,L=(o=(0,a5.useTRPC)(),(0,a3.useQuery)(o.fleet.networkRules.queryOptions(void 0,{enabled:K}))),M=void 0!==L.data&&null!==L.data.draft,N=M?h:"applied",O=(i=K&&M,p=(0,a5.useTRPC)(),(0,a3.useQuery)(p.fleet.networkRulesDraftChanges.queryOptions(void 0,{enabled:i}))),P=(0,a_.useLabelContext)(),Q=(0,a_.useFleetSnapshot)(),R=(j=K?a:void 0,q=(0,a5.useTRPC)(),(0,a3.useQuery)({...q.fleet.explainReach.queryOptions(void 0===j?a8.skipToken:{fromShipId:j,against:N}),select:am})),S=(r=(0,a5.useTRPC)(),(0,a3.useQuery)(r.fleet.reachRefusals.queryOptions(void 0,{enabled:K}))),T=(s=(0,a5.useTRPC)(),(0,a3.useQuery)(s.fleet.declaredNetworkRules.queryOptions(void 0,{enabled:K}))),U=(t=(0,a5.useTRPC)(),(0,a3.useQuery)(t.fleet.builtInRules.queryOptions(void 0,{enabled:K}))),V=(u=(0,a5.useTRPC)(),v=(0,a4.useQueryClient)(),{setViewerRead:a=>{w.mutate({rule:"viewerRead",isOn:a})},isPending:(w=(0,a2.useMutation)(u.fleet.setBuiltInRule.mutationOptions({onSuccess:()=>v.invalidateQueries({queryKey:u.fleet.builtInRules.queryKey()})}))).isPending,error:w.error?.message}),W=(x=(0,a5.useTRPC)(),y=a6(),(0,a2.useMutation)(x.fleet.saveNetworkRulesDraft.mutationOptions({onSuccess:y}))),X=(z=(0,a5.useTRPC)(),A=(0,a4.useQueryClient)(),B=a6(),(0,a2.useMutation)(z.fleet.applyNetworkRules.mutationOptions({onSuccess:async()=>{await Promise.all([B(),A.invalidateQueries({queryKey:z.fleet.builtInRules.queryKey()})])}}))),Y=(C=(0,a5.useTRPC)(),D=a6(),(0,a2.useMutation)(C.fleet.discardNetworkRulesDraft.mutationOptions({onSuccess:D}))),{networkRulesMax:Z,shipLabelsMax:$}=(0,a$.useConsoleConstants)();if((0,ba.useSignInWhenSessionEnds)([I.error,J.error]),K)if(L.isError)n=(0,b.jsx)(f.InlineError,{title:"Couldn’t read the network",description:L.error.message,onRetry:()=>{L.refetch()}});else if(void 0===L.data||void 0===P||void 0===Q.data)n=(0,b.jsx)(g.LoadingSkeleton,{variant:"detail",rows:4,label:"Loading the network"});else{let c,d,e;n=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l,{rows:void 0===U.data?void 0:U.data.map(aB),error:U.error?.message,onRetry:()=>{U.refetch()},isTurning:V.isPending,turnError:V.error,onViewerReadChange:V.setViewerRead}),(0,b.jsx)(aR,{rules:(L.data.draft??L.data.applied).rules,context:P,limits:{rulesMax:Z,selectorMax:$},isSaving:W.isPending,saveError:W.error?.message,savedNote:void 0===W.data?void 0:"Draft saved. Nothing changes until it is applied.",onSave:a=>{W.mutate({rules:a})}},JSON.stringify(L.data.draft??L.data.applied)),null===L.data.draft?null:(0,b.jsx)(aC,{changes:void 0===O.data?void 0:(k=O.data,c=new Map(Q.data.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: ${aA[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)),F.map(a=>({verb:a,gained:d(k[a].gained),lost:d(k[a].lost)}))),error:O.error?.message,onRetry:()=>{O.refetch()}}),(0,b.jsx)(az,{draft:L.data.draft,appliedVersion:L.data.applied.version,isApplying:X.isPending,applyError:X.error?.message,onApply:()=>{X.mutate({version:L.data.applied.version})},isDiscarding:Y.isPending,discardError:Y.error?.message,onDiscard:()=>{Y.mutate()}}),(0,b.jsx)(ae,{declared:void 0===T.data?void 0:(m=T.data,e=new Map(Q.data.map(a=>[a.id,a.name])),m.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:T.error?.message,onRetry:()=>{T.refetch()},context:P}),(0,b.jsx)(au,{ships:Q.data.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)),pickedShipId:a,reachableShipIds:R.data,reachError:R.error?.message,onPick:a=>{E.replace(a9(a,N),{scroll:!1})},against:N,...M?{onAgainstChange:b=>{E.replace(a9(a,b),{scroll:!1})}}:{},onRetry:()=>{R.refetch()}}),(0,b.jsx)(aU,{refusals:S.data,error:S.error?.message,onRetry:()=>{S.refetch()},context:P,now:G})]})}else n=(0,b.jsx)(e.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)(aX.ListPage,{...H,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:J.live,children:n})}],71915)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_console_app_%28console%29_network_network-page_tsx_0qc3h-9._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[48855,a=>{"use strict";var b=a.i(87924),c=a.i(64831);let d={name:"link-2",size:24,node:[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]};d.node;let e=(0,c.default)(d);var f=a.i(65913),g=a.i(38246),h=a.i(12068),i=a.i(40392),j=a.i(50808);function k({settings:a,loadError:c,onRetry:d,isConnecting:l,connectError:m,onConnect:n}){return void 0!==c?(0,b.jsx)(i.InlineError,{title:"Couldn’t read the networking plugin",description:c,onRetry:d}):void 0===a?(0,b.jsx)(j.LoadingSkeleton,{variant:"detail",rows:2,label:"Loading the networking plugin"}):"none"===a.state?null:(0,b.jsxs)("section",{"aria-labelledby":"settings-network","data-testid":"settings-network",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("h2",{id:"settings-network",className:"flex items-center gap-2 text-body font-semibold [&_svg]:size-(--size-icon) [&_svg]:text-muted-foreground",children:[(0,b.jsx)(f.Network,{"aria-hidden":!0}),"Network"]}),"connected"===a.state?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-network-state",children:["Connected as ",(0,b.jsx)("span",{className:"font-mono",children:a.ship?.name})," ",(0,b.jsxs)("span",{className:"font-mono text-muted-foreground",children:["(",a.ship?.shipId,")"]}),". It supplies the rules you set on Network to the fleet."]}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{size:"sm",nativeButton:!1,render:(0,b.jsx)(g.default,{href:"/network"}),"data-testid":"settings-network-open",children:"Open Network"})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"settings-network-state",children:"Not connected. Connecting commissions the ship networking-plugin, which reads the fleet and alone sets who may message whom, or gives it a new starting prompt, and hands its secret to the networking plugin. No one sees the secret. Until you set rules, every ship may message every ship."}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{variant:"primary",icon:(0,b.jsx)(e,{"aria-hidden":!0}),isLoading:l,onClick:n,"data-testid":"settings-network-connect",children:"Connect networking plugin"})}),void 0!==m&&(0,b.jsx)(i.InlineError,{variant:"field",title:"Couldn’t connect the networking plugin",description:m})]})]})}function l({settings:a,loadError:c,onRetry:d,isConnecting:f,connectError:g,onConnect:k}){return void 0!==c?(0,b.jsx)(i.InlineError,{title:"Couldn’t read squadrons",description:c,onRetry:d}):void 0===a?(0,b.jsx)(j.LoadingSkeleton,{variant:"detail",rows:2,label:"Loading squadrons"}):"none"===a.state?null:(0,b.jsxs)("section",{"aria-labelledby":"settings-squadrons","data-testid":"settings-squadrons",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"settings-squadrons",className:"text-body font-semibold",children:"Squadrons"}),"connected"===a.state?(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-squadrons-state",children:["Connected as ",(0,b.jsx)("span",{className:"font-mono",children:a.ship?.name})," ",(0,b.jsxs)("span",{className:"font-mono text-muted-foreground",children:["(",a.ship?.shipId,")"]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"settings-squadrons-state",children:"Not connected. Connecting commissions the ship squadrons, with fleet read and manage, or gives it a new starting prompt, and hands its secret to squadrons. No one sees the secret."}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{variant:"primary",icon:(0,b.jsx)(e,{"aria-hidden":!0}),isLoading:f,onClick:k,"data-testid":"settings-squadrons-connect",children:"Connect squadrons"})}),void 0!==g&&(0,b.jsx)(i.InlineError,{variant:"field",title:"Couldn’t connect squadrons",description:g})]})]})}var m=a.i(93817),n=a.i(26766),o=a.i(3512),p=a.i(48819),q=a.i(26268),r=a.i(72131),s=a.i(72872),t=a.i(47480),u=a.i(59613),v=a.i(2374),w=a.i(75297),x=a.i(45098),y=a.i(24173),z=a.i(20847);let A=".aeolus/squadrons";function B({isAdding:a,addError:c,onAdd:d}){let e=(0,r.useId)(),f=(0,r.useId)(),g=(0,r.useId)(),[j,k]=(0,r.useState)(""),[l,m]=(0,r.useState)(""),[n,p]=(0,r.useState)("");return(0,b.jsxs)("form",{noValidate:!0,"data-testid":"repositories-add",className:"flex flex-col gap-3 rounded-md border border-border p-3",onSubmit:a=>{a.preventDefault();let b=l.trim(),c=n.trim();d({url:j.trim(),...""===b?{}:{path:b},...""===c?{}:{token:c}},()=>{k(""),m(""),p("")})},children:[(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(x.Label,{htmlFor:e,children:"Repository URL"}),(0,b.jsx)(w.Input,{id:e,isMono:!0,autoComplete:"off",spellCheck:!1,placeholder:"https://github.com/acme/squadron-templates.git","data-testid":"repositories-url",value:j,onChange:a=>{k(a.target.value)}})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(x.Label,{htmlFor:f,children:"Path (optional)"}),(0,b.jsx)(w.Input,{id:f,isMono:!0,autoComplete:"off",spellCheck:!1,placeholder:A,"data-testid":"repositories-path",value:l,onChange:a=>{m(a.target.value)}})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(x.Label,{htmlFor:g,children:"Read token (optional, for a private repository)"}),(0,b.jsx)(w.Input,{id:g,type:"password",autoComplete:"new-password","data-testid":"repositories-token",value:n,onChange:a=>{p(a.target.value)}}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Entered once and never shown again. To change it, remove the repository and add it again."})]}),void 0===c?null:(0,b.jsx)(i.InlineError,{title:"Couldn’t add the repository",description:`${c} The list shows what squadrons holds.`}),(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(h.Button,{type:"submit",variant:"primary",icon:(0,b.jsx)(o.Plus,{"aria-hidden":!0}),isLoading:a,disabled:""===j.trim(),"data-testid":"repositories-add-submit",children:a?"Adding":"Add repository"})})]})}function C(a,b){return a.map(({name:a,versions:c})=>"template"===b?`${a}@${c.join(", ")}`:`${a} v${c.join(", v")}`).join(" · ")}function D({contents:a,path:c}){let{templates:d,blueprints:e,leftOut:f}=a;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dl",{"data-testid":"repositories-found",className:"grid grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-0.5 text-meta",children:0===d.length&&0===e.length?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-muted-foreground",children:"Found"}),(0,b.jsxs)("dd",{children:["No templates or blueprints under ",c]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-muted-foreground",children:"Templates"}),(0,b.jsx)("dd",{className:"font-mono",children:0===d.length?"None":C(d,"template")}),(0,b.jsx)("dt",{className:"text-muted-foreground",children:"Blueprints"}),(0,b.jsx)("dd",{className:"font-mono",children:0===e.length?"None":C(e,"blueprint")})]})}),0===f.length?null:(0,b.jsxs)("div",{"data-testid":"repositories-left-out",className:"flex flex-col gap-1.5 rounded-md border border-tone-attention-border bg-tone-attention-bg p-2.5 text-tone-attention-fg",children:[(0,b.jsxs)("p",{className:"flex items-center gap-1.5 text-meta font-medium",children:[(0,b.jsx)(q.TriangleAlert,{"aria-hidden":!0,className:"size-(--size-icon-sm) shrink-0"}),"Left out: ",f.length,". Fix ",1===f.length?"it":"them"," in git, tag again, then refresh."]}),(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:f.map(a=>(0,b.jsxs)("li",{"data-testid":"repositories-left-out-item",className:"text-meta text-foreground",children:[(0,b.jsx)("span",{className:"font-mono",children:(0,t.leftOutLabel)(a)}),": ",a.message]},`${a.kind} ${a.name}@${String(a.version)}`))})]})]})}function E({repository:a,contents:c,now:d,onRemove:e}){let{lastFetch:f}=a;return(0,b.jsxs)("li",{"data-testid":"repositories-row",className:"flex flex-col gap-1.5 px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(z.RepositoryName,{name:a.name}),a.path===A?null:(0,b.jsx)("span",{className:"font-mono text-meta text-muted-foreground",children:a.path}),a.hasToken?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-meta text-muted-foreground",children:[(0,b.jsx)(n.KeyRound,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),"Token"]}):null,(0,b.jsx)("span",{className:"ml-auto text-meta text-muted-foreground","data-testid":"repositories-fetched",children:null===f?"Not fetched yet":`Fetched ${(0,s.relativeTime)(new Date(f.at),d)}`}),(0,b.jsx)(h.Button,{size:"xs",variant:"ghost","data-testid":"repositories-remove",onClick:e,children:"Remove"})]}),f?.error?(0,b.jsxs)("p",{"data-testid":"repositories-error",className:"flex items-start gap-1.5 text-meta text-destructive-text",children:[(0,b.jsx)(m.CircleAlert,{"aria-hidden":!0,className:"mt-0.5 size-(--size-icon-sm) shrink-0"}),(0,b.jsxs)("span",{children:["The last fetch failed: ",(0,b.jsx)("span",{className:"font-mono",children:f.error})]})]}):null,void 0===c||null===f||null!==f.error&&c.templates.length+c.blueprints.length+c.leftOut.length===0?null:(0,b.jsx)(D,{contents:c,path:a.path})]})}function F(a){let{repositories:c,catalogue:d,state:e,error:f,onRetry:g,isRemoving:k,removeError:l,onRemove:m,onRemoveClosed:n,isRefreshing:o,refreshError:q,onRefresh:s,now:w}=a,[x,z]=(0,r.useState)(void 0);return(0,b.jsxs)("section",{"aria-labelledby":"settings-repositories","data-testid":"settings-repositories",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("h2",{id:"settings-repositories",className:"text-body font-semibold",children:"Repositories"}),(0,b.jsx)(h.Button,{size:"xs",icon:(0,b.jsx)(p.RotateCw,{"aria-hidden":!0}),isLoading:o,disabled:0===c.length,onClick:s,"data-testid":"repositories-refresh",children:"Refresh"})]}),(0,b.jsxs)("p",{className:"text-meta text-muted-foreground",children:["squadrons reads templates and blueprints from these repositories, under ",A," unless a repository sets its own path. It fetches one when you add it, when you refresh, and once each time squadrons connects or starts."]}),void 0===q?null:(0,b.jsx)(i.InlineError,{variant:"section",title:"Couldn’t refresh",description:q}),"loading"===e?(0,b.jsx)(j.LoadingSkeleton,{variant:"list",rows:2,label:"Loading the repositories"}):"error"===e?(0,b.jsx)(i.InlineError,{title:"Couldn’t read the repositories",description:f,onRetry:g}):0===c.length?(0,b.jsx)(y.EmptyState,{variant:"section",title:"No repositories yet",description:"Add one to read its templates and blueprints."}):(0,b.jsx)("ul",{className:"divide-y divide-border overflow-hidden rounded-md border border-border",children:c.map(a=>(0,b.jsx)(E,{repository:a,...void 0===d?{}:{contents:(0,t.repositoryContents)(d,a.name)},now:w,onRemove:()=>{z(a.name)}},a.name))}),(0,b.jsx)(B,{isAdding:a.isAdding,addError:a.addError,onAdd:a.onAdd}),(0,b.jsx)(u.AlertDialog,{open:void 0!==x,onOpenChange:a=>{a||k||(z(void 0),n())},children:(0,b.jsxs)(u.AlertDialogContent,{"data-testid":"repositories-remove-dialog",className:v.dialogSurface.phoneSheet,children:[(0,b.jsxs)(u.AlertDialogHeader,{children:[(0,b.jsxs)(u.AlertDialogTitle,{children:["Remove ",x,"?"]}),(0,b.jsx)(u.AlertDialogDescription,{children:"Its templates and blueprints leave the catalogue at once. Squadrons formed from them keep the versions they formed from."})]}),void 0===l?null:(0,b.jsx)(i.InlineError,{title:"Couldn’t remove the repository",description:`${l} The list shows what squadrons holds.`}),(0,b.jsxs)(u.AlertDialogFooter,{children:[(0,b.jsx)(u.AlertDialogClose,{render:(0,b.jsx)(h.Button,{disabled:k}),children:"Cancel"}),(0,b.jsx)(h.Button,{variant:"destructive",isLoading:k,"data-testid":"repositories-remove-confirm",onClick:()=>{void 0!==x&&m(x,()=>{z(void 0),n()})},children:"Remove repository"})]})]})})]})}var G=a.i(23636);function H({settings:a,loadError:c,onRetry:d,isConnecting:f,connectError:k,onConnect:l}){return void 0!==c?(0,b.jsx)(i.InlineError,{title:"Couldn’t read the trierarch plugin",description:c,onRetry:d}):void 0===a?(0,b.jsx)(j.LoadingSkeleton,{variant:"detail",rows:2,label:"Loading the trierarch plugin"}):(0,b.jsxs)("section",{"aria-labelledby":"settings-trierarchs","data-testid":"settings-trierarchs",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("h2",{id:"settings-trierarchs",className:"flex items-center gap-2 text-body font-semibold [&_svg]:size-(--size-icon) [&_svg]:text-muted-foreground",children:[(0,b.jsx)(G.ShipWheel,{"aria-hidden":!0}),"Trierarchs"]}),"none"===a.state?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-trierarchs-state",children:["Not set up. ","Starts, restarts and stops sessions for crew requests on your machines. Without it, crew requests wait on Needs crew for you to crew by hand."]}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{size:"sm",nativeButton:!1,render:(0,b.jsx)(g.default,{href:"/trierarchs"}),"data-testid":"settings-trierarchs-how",children:"How to set it up"})})]}):"connected"===a.state?(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-trierarchs-state",children:["Connected as ",(0,b.jsx)("span",{className:"font-mono",children:a.ship?.name})," ",(0,b.jsxs)("span",{className:"font-mono text-muted-foreground",children:["(",a.ship?.shipId,")"]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"settings-trierarchs-state",children:"Not connected. Connecting commissions the ship trierarch-plugin, which reads and manages the fleet and assigns crew requests, or gives it a new starting prompt, and hands its secret to the trierarch plugin. No one sees the secret."}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{variant:"primary",icon:(0,b.jsx)(e,{"aria-hidden":!0}),isLoading:f,onClick:l,"data-testid":"settings-trierarchs-connect",children:"Connect trierarch plugin"})}),void 0!==k&&(0,b.jsx)(i.InlineError,{variant:"field",title:"Couldn’t connect the trierarch plugin",description:k})]})]})}var I=a.i(91003),J=a.i(38023),K=a.i(10023),L=a.i(68450),M=a.i(10572),N=a.i(67336),O=a.i(54763),P=a.i(12540),Q=a.i(28562),R=a.i(34159),S=a.i(93454);a.s(["default",0,function(){let a=(0,L.useNow)(),c=(0,J.useConsoleFrame)(),d=(0,O.useHasSquadrons)(),e=(0,K.useNeedsAttention)(),f=(0,O.useSquadronsSettings)(),g=(0,O.useConnectSquadrons)(),h=(0,S.useTrierarchPluginSettings)(),i=(0,S.useConnectTrierarchPlugin)(),j=(0,Q.useNetworkingPluginSettings)(),m=(0,Q.useConnectNetworkingPlugin)(),n=(0,N.useLiveFleet)(),o=(0,O.useSquadronsConnection)(),p=(0,P.useRepositories)(),q=(0,P.useCatalogue)(),r=(0,P.useAddRepository)(),s=(0,P.useRemoveRepository)(),t=(0,P.useRefreshCatalogue)(),u=(0,R.usePluginNav)();return(0,M.useSignInWhenSessionEnds)([e.error,n.error]),(0,b.jsxs)(I.ListPage,{...c,title:"Settings",description:"How this installation runs. Only argo, the operator, sees this page.",live:n.live,children:[d&&(0,b.jsx)(l,{settings:f.data,loadError:f.isError?f.error.message:void 0,onRetry:()=>{f.refetch()},isConnecting:g.isPending,connectError:g.isError?g.error.message:void 0,onConnect:()=>{g.mutate()}}),u.hasSettings&&(0,b.jsx)(H,{settings:h.data,loadError:h.isError?h.error.message:void 0,onRetry:()=>{h.refetch()},isConnecting:i.isPending,connectError:i.isError?i.error.message:void 0,onConnect:()=>{i.mutate()}}),u.hasSettings&&(0,b.jsx)(k,{settings:j.data,loadError:j.isError?j.error.message:void 0,onRetry:()=>{j.refetch()},isConnecting:m.isPending,connectError:m.isError?m.error.message:void 0,onConnect:()=>{m.mutate()}}),"connected"===o&&(0,b.jsx)(F,{repositories:p.data??[],...void 0===q.data?{}:{catalogue:q.data},state:p.isError?"error":p.data?"ready":"loading",error:p.error?.message,onRetry:()=>{p.refetch()},isAdding:r.isPending,addError:r.error?.message,onAdd:(a,b)=>{r.mutate(a,{onSuccess:b})},isRemoving:s.isPending,removeError:s.error?.message,onRemove:(a,b)=>{s.mutate(a,{onSuccess:b})},onRemoveClosed:()=>{s.reset()},isRefreshing:t.isPending,refreshError:t.error?.message,onRefresh:()=>{t.mutate()},now:a})]})}],48855)}];
|
|
1
|
+
module.exports=[48855,a=>{"use strict";var b=a.i(87924),c=a.i(64831);let d={name:"globe",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]};d.node;let e=(0,c.default)(d),f={name:"link-2",size:24,node:[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]};f.node;let g=(0,c.default)(f);var h=a.i(12068),i=a.i(40392),j=a.i(50808);function k({settings:a,loadError:c,onRetry:d,isConnecting:f,connectError:l,onConnect:m}){return void 0!==c?(0,b.jsx)(i.InlineError,{title:"Couldn’t read the gateway",description:c,onRetry:d}):void 0===a?(0,b.jsx)(j.LoadingSkeleton,{variant:"detail",rows:2,label:"Loading the gateway"}):"none"===a.state?null:(0,b.jsxs)("section",{"aria-labelledby":"settings-gateway","data-testid":"settings-gateway",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("h2",{id:"settings-gateway",className:"flex items-center gap-2 text-body font-semibold [&_svg]:size-(--size-icon) [&_svg]:text-muted-foreground",children:[(0,b.jsx)(e,{"aria-hidden":!0}),"Gateway"]}),"connected"===a.state?(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-gateway-state",children:["Connected as ",(0,b.jsx)("span",{className:"font-mono",children:a.ship?.name})," ",(0,b.jsxs)("span",{className:"font-mono text-muted-foreground",children:["(",a.ship?.shipId,")"]}),". It commissions an app ship for each outside party you approve."]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"settings-gateway-state",children:"Not connected. Connecting commissions the ship gateway, which reads the fleet and commissions an app ship for each outside party you approve, or gives it a new starting prompt, and hands its secret to the gateway. No one sees the secret. The gateway needs the networking plugin connected first."}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{variant:"primary",icon:(0,b.jsx)(g,{"aria-hidden":!0}),isLoading:f,onClick:m,"data-testid":"settings-gateway-connect",children:"Connect gateway"})}),void 0!==l&&(0,b.jsx)(i.InlineError,{variant:"field",title:"Couldn’t connect the gateway",description:l})]})]})}function l({settings:a,loadError:c,onRetry:d,isConnecting:e,connectError:f,onConnect:k}){return void 0!==c?(0,b.jsx)(i.InlineError,{title:"Couldn’t read squadrons",description:c,onRetry:d}):void 0===a?(0,b.jsx)(j.LoadingSkeleton,{variant:"detail",rows:2,label:"Loading squadrons"}):"none"===a.state?null:(0,b.jsxs)("section",{"aria-labelledby":"settings-squadrons","data-testid":"settings-squadrons",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsx)("h2",{id:"settings-squadrons",className:"text-body font-semibold",children:"Squadrons"}),"connected"===a.state?(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-squadrons-state",children:["Connected as ",(0,b.jsx)("span",{className:"font-mono",children:a.ship?.name})," ",(0,b.jsxs)("span",{className:"font-mono text-muted-foreground",children:["(",a.ship?.shipId,")"]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"settings-squadrons-state",children:"Not connected. Connecting commissions the ship squadrons, with fleet read and manage, or gives it a new starting prompt, and hands its secret to squadrons. No one sees the secret."}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{variant:"primary",icon:(0,b.jsx)(g,{"aria-hidden":!0}),isLoading:e,onClick:k,"data-testid":"settings-squadrons-connect",children:"Connect squadrons"})}),void 0!==f&&(0,b.jsx)(i.InlineError,{variant:"field",title:"Couldn’t connect squadrons",description:f})]})]})}var m=a.i(93817),n=a.i(26766),o=a.i(3512),p=a.i(48819),q=a.i(26268),r=a.i(72131),s=a.i(72872),t=a.i(47480),u=a.i(59613),v=a.i(2374),w=a.i(75297),x=a.i(45098),y=a.i(24173),z=a.i(20847);let A=".aeolus/squadrons";function B({isAdding:a,addError:c,onAdd:d}){let e=(0,r.useId)(),f=(0,r.useId)(),g=(0,r.useId)(),[j,k]=(0,r.useState)(""),[l,m]=(0,r.useState)(""),[n,p]=(0,r.useState)("");return(0,b.jsxs)("form",{noValidate:!0,"data-testid":"repositories-add",className:"flex flex-col gap-3 rounded-md border border-border p-3",onSubmit:a=>{a.preventDefault();let b=l.trim(),c=n.trim();d({url:j.trim(),...""===b?{}:{path:b},...""===c?{}:{token:c}},()=>{k(""),m(""),p("")})},children:[(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(x.Label,{htmlFor:e,children:"Repository URL"}),(0,b.jsx)(w.Input,{id:e,isMono:!0,autoComplete:"off",spellCheck:!1,placeholder:"https://github.com/acme/squadron-templates.git","data-testid":"repositories-url",value:j,onChange:a=>{k(a.target.value)}})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(x.Label,{htmlFor:f,children:"Path (optional)"}),(0,b.jsx)(w.Input,{id:f,isMono:!0,autoComplete:"off",spellCheck:!1,placeholder:A,"data-testid":"repositories-path",value:l,onChange:a=>{m(a.target.value)}})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(x.Label,{htmlFor:g,children:"Read token (optional, for a private repository)"}),(0,b.jsx)(w.Input,{id:g,type:"password",autoComplete:"new-password","data-testid":"repositories-token",value:n,onChange:a=>{p(a.target.value)}}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"Entered once and never shown again. To change it, remove the repository and add it again."})]}),void 0===c?null:(0,b.jsx)(i.InlineError,{title:"Couldn’t add the repository",description:`${c} The list shows what squadrons holds.`}),(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(h.Button,{type:"submit",variant:"primary",icon:(0,b.jsx)(o.Plus,{"aria-hidden":!0}),isLoading:a,disabled:""===j.trim(),"data-testid":"repositories-add-submit",children:a?"Adding":"Add repository"})})]})}function C(a,b){return a.map(({name:a,versions:c})=>"template"===b?`${a}@${c.join(", ")}`:`${a} v${c.join(", v")}`).join(" · ")}function D({contents:a,path:c}){let{templates:d,blueprints:e,leftOut:f}=a;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dl",{"data-testid":"repositories-found",className:"grid grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-0.5 text-meta",children:0===d.length&&0===e.length?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-muted-foreground",children:"Found"}),(0,b.jsxs)("dd",{children:["No templates or blueprints under ",c]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-muted-foreground",children:"Templates"}),(0,b.jsx)("dd",{className:"font-mono",children:0===d.length?"None":C(d,"template")}),(0,b.jsx)("dt",{className:"text-muted-foreground",children:"Blueprints"}),(0,b.jsx)("dd",{className:"font-mono",children:0===e.length?"None":C(e,"blueprint")})]})}),0===f.length?null:(0,b.jsxs)("div",{"data-testid":"repositories-left-out",className:"flex flex-col gap-1.5 rounded-md border border-tone-attention-border bg-tone-attention-bg p-2.5 text-tone-attention-fg",children:[(0,b.jsxs)("p",{className:"flex items-center gap-1.5 text-meta font-medium",children:[(0,b.jsx)(q.TriangleAlert,{"aria-hidden":!0,className:"size-(--size-icon-sm) shrink-0"}),"Left out: ",f.length,". Fix ",1===f.length?"it":"them"," in git, tag again, then refresh."]}),(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:f.map(a=>(0,b.jsxs)("li",{"data-testid":"repositories-left-out-item",className:"text-meta text-foreground",children:[(0,b.jsx)("span",{className:"font-mono",children:(0,t.leftOutLabel)(a)}),": ",a.message]},`${a.kind} ${a.name}@${String(a.version)}`))})]})]})}function E({repository:a,contents:c,now:d,onRemove:e}){let{lastFetch:f}=a;return(0,b.jsxs)("li",{"data-testid":"repositories-row",className:"flex flex-col gap-1.5 px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(z.RepositoryName,{name:a.name}),a.path===A?null:(0,b.jsx)("span",{className:"font-mono text-meta text-muted-foreground",children:a.path}),a.hasToken?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-meta text-muted-foreground",children:[(0,b.jsx)(n.KeyRound,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),"Token"]}):null,(0,b.jsx)("span",{className:"ml-auto text-meta text-muted-foreground","data-testid":"repositories-fetched",children:null===f?"Not fetched yet":`Fetched ${(0,s.relativeTime)(new Date(f.at),d)}`}),(0,b.jsx)(h.Button,{size:"xs",variant:"ghost","data-testid":"repositories-remove",onClick:e,children:"Remove"})]}),f?.error?(0,b.jsxs)("p",{"data-testid":"repositories-error",className:"flex items-start gap-1.5 text-meta text-destructive-text",children:[(0,b.jsx)(m.CircleAlert,{"aria-hidden":!0,className:"mt-0.5 size-(--size-icon-sm) shrink-0"}),(0,b.jsxs)("span",{children:["The last fetch failed: ",(0,b.jsx)("span",{className:"font-mono",children:f.error})]})]}):null,void 0===c||null===f||null!==f.error&&c.templates.length+c.blueprints.length+c.leftOut.length===0?null:(0,b.jsx)(D,{contents:c,path:a.path})]})}function F(a){let{repositories:c,catalogue:d,state:e,error:f,onRetry:g,isRemoving:k,removeError:l,onRemove:m,onRemoveClosed:n,isRefreshing:o,refreshError:q,onRefresh:s,now:w}=a,[x,z]=(0,r.useState)(void 0);return(0,b.jsxs)("section",{"aria-labelledby":"settings-repositories","data-testid":"settings-repositories",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("h2",{id:"settings-repositories",className:"text-body font-semibold",children:"Repositories"}),(0,b.jsx)(h.Button,{size:"xs",icon:(0,b.jsx)(p.RotateCw,{"aria-hidden":!0}),isLoading:o,disabled:0===c.length,onClick:s,"data-testid":"repositories-refresh",children:"Refresh"})]}),(0,b.jsxs)("p",{className:"text-meta text-muted-foreground",children:["squadrons reads templates and blueprints from these repositories, under ",A," unless a repository sets its own path. It fetches one when you add it, when you refresh, and once each time squadrons connects or starts."]}),void 0===q?null:(0,b.jsx)(i.InlineError,{variant:"section",title:"Couldn’t refresh",description:q}),"loading"===e?(0,b.jsx)(j.LoadingSkeleton,{variant:"list",rows:2,label:"Loading the repositories"}):"error"===e?(0,b.jsx)(i.InlineError,{title:"Couldn’t read the repositories",description:f,onRetry:g}):0===c.length?(0,b.jsx)(y.EmptyState,{variant:"section",title:"No repositories yet",description:"Add one to read its templates and blueprints."}):(0,b.jsx)("ul",{className:"divide-y divide-border overflow-hidden rounded-md border border-border",children:c.map(a=>(0,b.jsx)(E,{repository:a,...void 0===d?{}:{contents:(0,t.repositoryContents)(d,a.name)},now:w,onRemove:()=>{z(a.name)}},a.name))}),(0,b.jsx)(B,{isAdding:a.isAdding,addError:a.addError,onAdd:a.onAdd}),(0,b.jsx)(u.AlertDialog,{open:void 0!==x,onOpenChange:a=>{a||k||(z(void 0),n())},children:(0,b.jsxs)(u.AlertDialogContent,{"data-testid":"repositories-remove-dialog",className:v.dialogSurface.phoneSheet,children:[(0,b.jsxs)(u.AlertDialogHeader,{children:[(0,b.jsxs)(u.AlertDialogTitle,{children:["Remove ",x,"?"]}),(0,b.jsx)(u.AlertDialogDescription,{children:"Its templates and blueprints leave the catalogue at once. Squadrons formed from them keep the versions they formed from."})]}),void 0===l?null:(0,b.jsx)(i.InlineError,{title:"Couldn’t remove the repository",description:`${l} The list shows what squadrons holds.`}),(0,b.jsxs)(u.AlertDialogFooter,{children:[(0,b.jsx)(u.AlertDialogClose,{render:(0,b.jsx)(h.Button,{disabled:k}),children:"Cancel"}),(0,b.jsx)(h.Button,{variant:"destructive",isLoading:k,"data-testid":"repositories-remove-confirm",onClick:()=>{void 0!==x&&m(x,()=>{z(void 0),n()})},children:"Remove repository"})]})]})})]})}var G=a.i(23636),H=a.i(38246);function I({settings:a,loadError:c,onRetry:d,isConnecting:e,connectError:f,onConnect:k}){return void 0!==c?(0,b.jsx)(i.InlineError,{title:"Couldn’t read the trierarch plugin",description:c,onRetry:d}):void 0===a?(0,b.jsx)(j.LoadingSkeleton,{variant:"detail",rows:2,label:"Loading the trierarch plugin"}):(0,b.jsxs)("section",{"aria-labelledby":"settings-trierarchs","data-testid":"settings-trierarchs",className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("h2",{id:"settings-trierarchs",className:"flex items-center gap-2 text-body font-semibold [&_svg]:size-(--size-icon) [&_svg]:text-muted-foreground",children:[(0,b.jsx)(G.ShipWheel,{"aria-hidden":!0}),"Trierarchs"]}),"none"===a.state?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-trierarchs-state",children:["Not set up. ","Starts, restarts and stops sessions for crew requests on your machines. Without it, crew requests wait on Needs crew for you to crew by hand."]}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{size:"sm",nativeButton:!1,render:(0,b.jsx)(H.default,{href:"/trierarchs"}),"data-testid":"settings-trierarchs-how",children:"How to set it up"})})]}):"connected"===a.state?(0,b.jsxs)("p",{className:"text-body","data-testid":"settings-trierarchs-state",children:["Connected as ",(0,b.jsx)("span",{className:"font-mono",children:a.ship?.name})," ",(0,b.jsxs)("span",{className:"font-mono text-muted-foreground",children:["(",a.ship?.shipId,")"]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"settings-trierarchs-state",children:"Not connected. Connecting commissions the ship trierarch-plugin, which reads and manages the fleet and assigns crew requests, or gives it a new starting prompt, and hands its secret to the trierarch plugin. No one sees the secret."}),(0,b.jsx)("div",{children:(0,b.jsx)(h.Button,{variant:"primary",icon:(0,b.jsx)(g,{"aria-hidden":!0}),isLoading:e,onClick:k,"data-testid":"settings-trierarchs-connect",children:"Connect trierarch plugin"})}),void 0!==f&&(0,b.jsx)(i.InlineError,{variant:"field",title:"Couldn’t connect the trierarch plugin",description:f})]})]})}var J=a.i(91003),K=a.i(38023),L=a.i(24648),M=a.i(10023),N=a.i(68450),O=a.i(10572),P=a.i(67336),Q=a.i(54763),R=a.i(12540),S=a.i(34159),T=a.i(93454);a.s(["default",0,function(){let a=(0,N.useNow)(),c=(0,K.useConsoleFrame)(),d=(0,Q.useHasSquadrons)(),e=(0,M.useNeedsAttention)(),f=(0,Q.useSquadronsSettings)(),g=(0,Q.useConnectSquadrons)(),h=(0,T.useTrierarchPluginSettings)(),i=(0,T.useConnectTrierarchPlugin)(),j=(0,L.useGatewaySettings)(),m=(0,L.useConnectGateway)(),n=(0,P.useLiveFleet)(),o=(0,Q.useSquadronsConnection)(),p=(0,R.useRepositories)(),q=(0,R.useCatalogue)(),r=(0,R.useAddRepository)(),s=(0,R.useRemoveRepository)(),t=(0,R.useRefreshCatalogue)(),u=(0,S.usePluginNav)();return(0,O.useSignInWhenSessionEnds)([e.error,n.error]),(0,b.jsxs)(J.ListPage,{...c,title:"Settings",description:"How this installation runs. Only argo, the operator, sees this page.",live:n.live,children:[d&&(0,b.jsx)(l,{settings:f.data,loadError:f.isError?f.error.message:void 0,onRetry:()=>{f.refetch()},isConnecting:g.isPending,connectError:g.isError?g.error.message:void 0,onConnect:()=>{g.mutate()}}),u.hasSettings&&(0,b.jsx)(I,{settings:h.data,loadError:h.isError?h.error.message:void 0,onRetry:()=>{h.refetch()},isConnecting:i.isPending,connectError:i.isError?i.error.message:void 0,onConnect:()=>{i.mutate()}}),u.hasSettings&&(0,b.jsx)(k,{settings:j.data,loadError:j.isError?j.error.message:void 0,onRetry:()=>{j.refetch()},isConnecting:m.isPending,connectError:m.isError?m.error.message:void 0,onConnect:()=>{m.mutate()}}),"connected"===o&&(0,b.jsx)(F,{repositories:p.data??[],...void 0===q.data?{}:{catalogue:q.data},state:p.isError?"error":p.data?"ready":"loading",error:p.error?.message,onRetry:()=>{p.refetch()},isAdding:r.isPending,addError:r.error?.message,onAdd:(a,b)=>{r.mutate(a,{onSuccess:b})},isRemoving:s.isPending,removeError:s.error?.message,onRemove:(a,b)=>{s.mutate(a,{onSuccess:b})},onRemoveClosed:()=>{s.reset()},isRefreshing:t.isPending,refreshError:t.error?.message,onRefresh:()=>{t.mutate()},now:a})]})}],48855)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_console_app_%28console%29_settings_page_tsx_1p8ay87._.js.map
|