@aeolus-fleet/console 0.26.1 → 0.27.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.
Files changed (213) hide show
  1. package/.next/standalone/packages/console/.next/BUILD_ID +1 -1
  2. package/.next/standalone/packages/console/.next/build-manifest.json +3 -3
  3. package/.next/standalone/packages/console/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page/server-reference-manifest.json +16 -16
  5. package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page.js.nft.json +1 -1
  6. package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/[cause]/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page/server-reference-manifest.json +16 -16
  8. package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page.js.nft.json +1 -1
  9. package/.next/standalone/packages/console/.next/server/app/(console)/fleet-health/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page/server-reference-manifest.json +16 -16
  11. package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page.js.nft.json +1 -1
  12. package/.next/standalone/packages/console/.next/server/app/(console)/inbox/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/packages/console/.next/server/app/(console)/labels/page/server-reference-manifest.json +16 -16
  14. package/.next/standalone/packages/console/.next/server/app/(console)/labels/page.js.nft.json +1 -1
  15. package/.next/standalone/packages/console/.next/server/app/(console)/labels/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page/server-reference-manifest.json +16 -16
  17. package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page.js.nft.json +1 -1
  18. package/.next/standalone/packages/console/.next/server/app/(console)/needs-attention/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page/server-reference-manifest.json +16 -16
  20. package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page.js.nft.json +1 -1
  21. package/.next/standalone/packages/console/.next/server/app/(console)/needs-crew/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/packages/console/.next/server/app/(console)/network/page/server-reference-manifest.json +16 -16
  23. package/.next/standalone/packages/console/.next/server/app/(console)/network/page.js.nft.json +1 -1
  24. package/.next/standalone/packages/console/.next/server/app/(console)/network/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/packages/console/.next/server/app/(console)/page/react-loadable-manifest.json +2 -1
  26. package/.next/standalone/packages/console/.next/server/app/(console)/page/server-reference-manifest.json +16 -16
  27. package/.next/standalone/packages/console/.next/server/app/(console)/page.js.nft.json +1 -1
  28. package/.next/standalone/packages/console/.next/server/app/(console)/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/packages/console/.next/server/app/(console)/settings/page/server-reference-manifest.json +16 -16
  30. package/.next/standalone/packages/console/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  31. package/.next/standalone/packages/console/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page/react-loadable-manifest.json +1 -1
  33. package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page/server-reference-manifest.json +16 -16
  34. package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page.js.nft.json +1 -1
  35. package/.next/standalone/packages/console/.next/server/app/(console)/ships/[shipId]/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page/server-reference-manifest.json +16 -16
  37. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page.js.nft.json +1 -1
  38. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/[squadronId]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page/react-loadable-manifest.json +2 -1
  40. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page/server-reference-manifest.json +16 -16
  41. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page.js.nft.json +1 -1
  42. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/blueprints/[name]/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page/react-loadable-manifest.json +2 -1
  44. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page/server-reference-manifest.json +16 -16
  45. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page.js.nft.json +1 -1
  46. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page/server-reference-manifest.json +16 -16
  48. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page.js.nft.json +1 -1
  49. package/.next/standalone/packages/console/.next/server/app/(console)/squadrons/templates/[name]/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page/server-reference-manifest.json +16 -16
  51. package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page.js.nft.json +1 -1
  52. package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/[shipId]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page/server-reference-manifest.json +16 -16
  54. package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page.js.nft.json +1 -1
  55. package/.next/standalone/packages/console/.next/server/app/(console)/trierarchs/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/packages/console/.next/server/app/_global-error.html +1 -1
  57. package/.next/standalone/packages/console/.next/server/app/_global-error.rsc +1 -1
  58. package/.next/standalone/packages/console/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  59. package/.next/standalone/packages/console/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  60. package/.next/standalone/packages/console/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  61. package/.next/standalone/packages/console/.next/server/app/_not-found/page.js.nft.json +1 -1
  62. package/.next/standalone/packages/console/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/packages/console/.next/server/app/api/reads/[read]/route.js.nft.json +1 -1
  64. package/.next/standalone/packages/console/.next/server/app/sign-in/failed/page.js.nft.json +1 -1
  65. package/.next/standalone/packages/console/.next/server/app/sign-in/failed/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/packages/console/.next/server/app/sign-in/page.js.nft.json +1 -1
  67. package/.next/standalone/packages/console/.next/server/app/sign-in/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/packages/console/.next/server/app/version/route.js.nft.json +1 -1
  69. package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__06f_104._.js +1 -1
  70. package/.next/standalone/packages/console/.next/server/chunks/[root-of-the-server]__1cfwaji._.js +1 -1
  71. package/.next/standalone/packages/console/.next/server/chunks/_1uqphll._.js +1 -1
  72. package/.next/standalone/packages/console/.next/server/chunks/ssr/0mxb_server_app_(console)_squadrons_blueprints_[name]_page_actions_170owr_.js +1 -1
  73. package/.next/standalone/packages/console/.next/server/chunks/ssr/0mxb_server_app_(console)_squadrons_templates_[name]_page_actions_09abrr0.js +1 -1
  74. package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_fleet-health_page_actions_1gb6-fk.js +1 -1
  75. package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_needs-crew_page_actions_08gu8-f.js +1 -1
  76. package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_network_page_actions_1muuv-j.js +1 -1
  77. package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_settings_page_actions_0b6qztr.js +1 -1
  78. package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_ships_[shipId]_page_actions_0g2nd1p.js +1 -1
  79. package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_squadrons_page_actions_1x3afts.js +1 -1
  80. package/.next/standalone/packages/console/.next/server/chunks/ssr/0ysl_console__next-internal_server_app_(console)_trierarchs_page_actions_1ow37mz.js +1 -1
  81. package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_fleet-health_[cause]_page_actions_1kltvcl.js +1 -1
  82. package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_needs-attention_page_actions_1jfgclw.js +1 -1
  83. package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_squadrons_[squadronId]_page_actions_1lzqlye.js +1 -1
  84. package/.next/standalone/packages/console/.next/server/chunks/ssr/1eui__next-internal_server_app_(console)_trierarchs_[shipId]_page_actions_0l7bxva.js +1 -1
  85. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0-lk0hi._.js +1 -1
  86. package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1dr4sxv._.js → _050ulkd._.js} +1 -1
  87. package/.next/standalone/packages/console/.next/server/chunks/ssr/_06472wf._.js +1 -1
  88. package/.next/standalone/packages/console/.next/server/chunks/ssr/_065633k._.js +1 -1
  89. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0bx9rsi._.js +1 -1
  90. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0dq16_0._.js +1 -1
  91. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0eeox-9._.js +1 -1
  92. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0ibcqy0._.js +1 -1
  93. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0q3cblh._.js +1 -1
  94. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0qft7s4._.js +1 -1
  95. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0qo94ne._.js +1 -1
  96. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0txw0_-._.js +1 -1
  97. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0vwj8z1._.js +3 -0
  98. package/.next/standalone/packages/console/.next/server/chunks/ssr/{_15d37tz._.js → _0wmw6gw._.js} +1 -1
  99. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0z9_vmu._.js +1 -1
  100. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1150wmd._.js +1 -1
  101. package/.next/standalone/packages/console/.next/server/chunks/ssr/_15_xzod._.js +1 -1
  102. package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1m4ivsp._.js → _167gn91._.js} +1 -1
  103. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1_9jlty._.js +3 -0
  104. package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0_2b2as._.js → _1bvkf-u._.js} +1 -1
  105. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1cak3vp._.js +1 -1
  106. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1hb5q4e._.js +3 -0
  107. package/.next/standalone/packages/console/.next/server/chunks/ssr/{_1rm79p_._.js → _1j1ejbw._.js} +1 -1
  108. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1khnccn._.js +1 -1
  109. package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0um_0ko._.js → _1m738ix._.js} +1 -1
  110. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1q4-osx._.js +1 -1
  111. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1svohzj._.js +1 -1
  112. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1t4d5qx._.js +1 -1
  113. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1tmr0q5._.js +1 -1
  114. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1u0h4gj._.js +1 -1
  115. package/.next/standalone/packages/console/.next/server/chunks/ssr/{_0mx1tkz._.js → _1vc4auf._.js} +1 -1
  116. package/.next/standalone/packages/console/.next/server/chunks/ssr/_1yjxbcr._.js +1 -1
  117. package/.next/standalone/packages/console/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_0nwj88l._.js +3 -0
  118. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_common_dist_schemas_ping_043mvb2.js → node_modules_zod_v4_classic_external_15fmmz3.js} +3 -3
  119. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_1t6joug._.js +3 -0
  120. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_common_dist_1_gq_cl._.js +1 -1
  121. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_1mg652q._.js → packages_console_0969g9_._.js} +2 -2
  122. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_0-cynql._.js → packages_console_11eh-8v._.js} +2 -2
  123. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_1phsut4._.js → packages_console_18f93ie._.js} +1 -1
  124. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_1bm_b0f._.js +1 -1
  125. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_1932jy8._.js → packages_console_1clix79._.js} +2 -2
  126. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_0hcloef._.js → packages_console_2004f3v._.js} +1 -1
  127. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_inbox_page_actions_0q9_xye.js +1 -1
  128. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_labels_page_actions_0tk7mqs.js +1 -1
  129. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console__next-internal_server_app_(console)_page_actions_1ftjjyq.js +1 -1
  130. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_network_network-page_tsx_0qc3h-9._.js +1 -1
  131. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_overview-page_tsx_15siba6._.js +1 -1
  132. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_app_(console)_ships_[shipId]_ship-page_tsx_0oahz0r._.js +1 -1
  133. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_components_organisms_crew-line-dialog_tsx_1wiepn9._.js → packages_console_components_organisms_crew-line-dialog_tsx_1qorkk0._.js} +1 -1
  134. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_ship_ui_organisms_message-sheet_tsx_08bg9ly._.js +3 -0
  135. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_features_squadrons_organisms_form-squadron-dialog_tsx_0uvng9u._.js → packages_console_features_squadrons_organisms_form-squadron-dialog_tsx_0ditu5u._.js} +1 -1
  136. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_features_squadrons_organisms_form-squadron-dialog_tsx_0o-4rcz._.js → packages_console_features_squadrons_organisms_form-squadron-dialog_tsx_13oketj._.js} +1 -1
  137. package/.next/standalone/packages/console/.next/server/chunks/ssr/{packages_console_features_trierarchs_organisms_clear-worktree-dialog_tsx_1vo-jvm._.js → packages_console_features_trierarchs_organisms_clear-worktree-dialog_tsx_1vigea_._.js} +1 -1
  138. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_lib_1b-azvo._.js +1 -1
  139. package/.next/standalone/packages/console/.next/server/middleware-build-manifest.js +3 -3
  140. package/.next/standalone/packages/console/.next/server/pages/500.html +1 -1
  141. package/.next/standalone/packages/console/.next/server/server-reference-manifest.js +1 -1
  142. package/.next/standalone/packages/console/.next/server/server-reference-manifest.json +17 -17
  143. package/.next/standalone/packages/console/.next/static/chunks/061rac_vo9o5d.js +1 -0
  144. package/.next/standalone/packages/console/.next/static/chunks/09d3pvbsjtshj.js +1 -0
  145. package/.next/standalone/packages/console/.next/static/chunks/0c7bjft6zc04t.js +1 -0
  146. package/.next/standalone/packages/console/.next/static/chunks/{40z-3somzsrdu.js → 0fa8e9n5fw6ti.js} +1 -1
  147. package/.next/standalone/packages/console/.next/static/chunks/{2r6qbt-3eyyx0.js → 0fj5fpwgxkqx6.js} +1 -1
  148. package/.next/standalone/packages/console/.next/static/chunks/{0dym46wdgyr8s.js → 0ht5wi5oe5_za.js} +1 -1
  149. package/.next/standalone/packages/console/.next/static/chunks/{3b-s07jfktn4h.js → 0k-zw0ldc55vf.js} +1 -1
  150. package/.next/standalone/packages/console/.next/static/chunks/0o8q0d16-yt3a.js +1 -0
  151. package/.next/standalone/packages/console/.next/static/chunks/{1-qb94mliowen.js → 0of7ho03vihb8.js} +1 -1
  152. package/.next/standalone/packages/console/.next/static/chunks/0sagpcmh6omoj.js +1 -0
  153. package/.next/standalone/packages/console/.next/static/chunks/{3tgyz9diu6s8b.js → 101ihp2v2np_3.js} +1 -1
  154. package/.next/standalone/packages/console/.next/static/chunks/{13dlsye_vo200.js → 126uqxulir3hs.js} +1 -1
  155. package/.next/standalone/packages/console/.next/static/chunks/14e-f0w_cfqhg.js +1 -0
  156. package/.next/standalone/packages/console/.next/static/chunks/{27w_ak-u49z7c.js → 169-oge56q06i.js} +1 -1
  157. package/.next/standalone/packages/console/.next/static/chunks/{3xpa57z5k1j9u.js → 18rsibme2venq.js} +1 -1
  158. package/.next/standalone/packages/console/.next/static/chunks/{3l9d_pyzbdymw.js → 1a9zf8kv0co9n.js} +1 -1
  159. package/.next/standalone/packages/console/.next/static/chunks/1bra8hyy6r84a.js +1 -0
  160. package/.next/standalone/packages/console/.next/static/chunks/{3ndsjj121oi4m.css → 1qpq5_mt8o9ya.css} +1 -1
  161. package/.next/standalone/packages/console/.next/static/chunks/{1l8zdqmp_9rf5.js → 1rnej87ue7-0n.js} +1 -1
  162. package/.next/standalone/packages/console/.next/static/chunks/{0f4gp6zc0v7ff.js → 1splzlg79ytml.js} +1 -1
  163. package/.next/standalone/packages/console/.next/static/chunks/{1da369dzazef6.js → 1wfdv058l23gm.js} +1 -1
  164. package/.next/standalone/packages/console/.next/static/chunks/20l4-ecv_oo2h.js +1 -0
  165. package/.next/standalone/packages/console/.next/static/chunks/24bvw3_s7h3f3.js +1 -0
  166. package/.next/standalone/packages/console/.next/static/chunks/25l_2rj6pvegd.js +1 -0
  167. package/.next/standalone/packages/console/.next/static/chunks/2600yzum9pa4e.js +1 -0
  168. package/.next/standalone/packages/console/.next/static/chunks/28pbrg59hx8sb.js +1 -0
  169. package/.next/standalone/packages/console/.next/static/chunks/2fkwzi80oyuv-.js +1 -0
  170. package/.next/standalone/packages/console/.next/static/chunks/2k8crfymkve8d.js +1 -0
  171. package/.next/standalone/packages/console/.next/static/chunks/2n_dccp7oi2ad.js +1 -0
  172. package/.next/standalone/packages/console/.next/static/chunks/{0m5y3s3tz9qdy.js → 2qc_m8dbgxc8w.js} +1 -1
  173. package/.next/standalone/packages/console/.next/static/chunks/{1rdp_b6odjqw0.js → 323r-smxvi-fc.js} +1 -1
  174. package/.next/standalone/packages/console/.next/static/chunks/{03ktpgapfr1fd.js → 32f8-4_7znbir.js} +1 -1
  175. package/.next/standalone/packages/console/.next/static/chunks/{08kmb58ulpuue.js → 38klmgk3bgj3s.js} +1 -1
  176. package/.next/standalone/packages/console/.next/static/chunks/{17odvid17s2tw.js → 3cae8s07yzv_o.js} +1 -1
  177. package/.next/standalone/packages/console/.next/static/chunks/3jszhx5rvbjvw.js +1 -0
  178. package/.next/standalone/packages/console/.next/static/chunks/{2l8wcne7b1_zj.js → 3k61es128845f.js} +1 -1
  179. package/.next/standalone/packages/console/.next/static/chunks/3kvklsjp8y-7e.js +1 -0
  180. package/.next/standalone/packages/console/.next/static/chunks/{3qr3u05dpx3ge.js → 3vr80dn3nyqqi.js} +2 -2
  181. package/.next/standalone/packages/console/.next/static/chunks/{2t433o8fl-ml0.js → 3wqzb_30qmu4l.js} +1 -1
  182. package/.next/standalone/packages/console/.next/static/chunks/3yjner-hzsvhr.js +1 -0
  183. package/.next/standalone/packages/console/.next/static/chunks/{1o0gz-w01gi32.js → 40js517zsadm9.js} +1 -1
  184. package/.next/standalone/packages/console/.next/static/chunks/{44uzs2qr-cee1.js → 40kwaybl7nu8j.js} +1 -1
  185. package/.next/standalone/packages/console/.next/static/chunks/{1hl55s9nte__6.js → 41ur4zm093e1l.js} +1 -1
  186. package/.next/standalone/packages/console/package.json +3 -3
  187. package/package.json +3 -3
  188. package/.next/standalone/packages/console/.next/server/chunks/ssr/_007hyay._.js +0 -3
  189. package/.next/standalone/packages/console/.next/server/chunks/ssr/_0v442oo._.js +0 -3
  190. package/.next/standalone/packages/console/.next/server/chunks/ssr/_10t_dof._.js +0 -3
  191. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_17dse8h._.js +0 -3
  192. package/.next/standalone/packages/console/.next/server/chunks/ssr/packages_console_features_ship_organisms_message-sheet_tsx_0quy9k0._.js +0 -3
  193. package/.next/standalone/packages/console/.next/static/chunks/0774ajv3n2sec.js +0 -1
  194. package/.next/standalone/packages/console/.next/static/chunks/0c17wq4vgezhs.js +0 -1
  195. package/.next/standalone/packages/console/.next/static/chunks/0dv6nkmic67qu.js +0 -1
  196. package/.next/standalone/packages/console/.next/static/chunks/0v7urhig04x47.js +0 -1
  197. package/.next/standalone/packages/console/.next/static/chunks/0vf_ufda6f5_a.js +0 -1
  198. package/.next/standalone/packages/console/.next/static/chunks/1_6o6fps43670.js +0 -1
  199. package/.next/standalone/packages/console/.next/static/chunks/1imn88cebly66.js +0 -1
  200. package/.next/standalone/packages/console/.next/static/chunks/2a-1xtmi1hx3h.js +0 -1
  201. package/.next/standalone/packages/console/.next/static/chunks/2egdjg_8otxoe.js +0 -1
  202. package/.next/standalone/packages/console/.next/static/chunks/2ihkzqv4yg9le.js +0 -1
  203. package/.next/standalone/packages/console/.next/static/chunks/2kzhuwq53l7ml.js +0 -1
  204. package/.next/standalone/packages/console/.next/static/chunks/2wmpsx0-ppato.js +0 -1
  205. package/.next/standalone/packages/console/.next/static/chunks/2ybp2gr6g0hjh.js +0 -1
  206. package/.next/standalone/packages/console/.next/static/chunks/3fl8vffzef7ta.js +0 -1
  207. package/.next/standalone/packages/console/.next/static/chunks/3flwn71cq8_6u.js +0 -1
  208. package/.next/standalone/packages/console/.next/static/chunks/3v_rd25hyqdcr.js +0 -1
  209. package/.next/standalone/packages/console/.next/static/chunks/425ol2sav0q-i.js +0 -1
  210. package/.next/standalone/packages/console/.next/static/chunks/43wzzfkiwha23.js +0 -1
  211. /package/.next/standalone/packages/console/.next/static/{7ilR2JMt_PkXHhRu_RUkU → ZV7FLBaZ7IVExYMj-OJbA}/_buildManifest.js +0 -0
  212. /package/.next/standalone/packages/console/.next/static/{7ilR2JMt_PkXHhRu_RUkU → ZV7FLBaZ7IVExYMj-OJbA}/_clientMiddlewareManifest.js +0 -0
  213. /package/.next/standalone/packages/console/.next/static/{7ilR2JMt_PkXHhRu_RUkU → ZV7FLBaZ7IVExYMj-OJbA}/_ssgManifest.js +0 -0
@@ -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(18783),k=a.i(93817),l=a.i(72131),m=a.i(65230);function n(a,b){return null===a?{kind:"all-to-all"}:{kind:"rules",rules:a.map(a=>({key:b(),from:[...a.from],to:[...a.to]}))}}function o(a){return"all-to-all"===a.kind?null:a.rules.map(a=>({from:[...a.from],to:[...a.to]}))}function p(a,b){return b?"rules"===a.kind?a:{kind:"rules",rules:[]}:{kind:"all-to-all"}}function q(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 r(a,b){return s(a)===s(b)}function s(a){return"string"==typeof a?a:`${a.labelId}=${a.value}`}let t={"*":"Any value","#":"The same value as the other side"};function u(a,b){let c=[],d=[];for(let e of a){let a=function(a,b){if("string"==typeof a){let[c]=(0,m.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}}(e,b);void 0===a?d.push(e):c.push(a)}return{chips:c,unknown:d}}function v(a,b){let c=a["from"===b?"to":"from"];return a[b].filter(a=>"string"!=typeof a&&"#"===a.value&&!c.some(b=>r(b,a)))}var w=a.i(36501);let x=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}];function y({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:x.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)(j.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)(z,{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 z({label:a,terms:c,context:d,testId:e}){let{chips:f,unknown:g}=u(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)(l.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(w.LabelChip,{chip:a,testId:`${e}-value`,..."string"==typeof a.term?{}:{meaning:t[a.term.value]}})]},s(a.term))),g.map(a=>(0,b.jsxs)("span",{"data-testid":`${e}-unknown`,title:`${s(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)(k.CircleAlert,{"aria-hidden":!0}),"A removed label"]},s(a)))]})]})}var A=a.i(70840),B=a.i(52562),C=a.i(64831);let D={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"}]]};D.node;let E=(0,C.default)(D);var F=a.i(80487);let G=-Math.PI/2,H=2*Math.PI;function I(a){return Math.round(100*a)/100}let J={picked:"picked",reached:"may be messaged",unreached:"out of reach"};function K({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=G+H*c/a.length,g=1===a.length;return{ship:b,x:g?50:I(50+38*Math.cos(f)),y:g?50:I(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)(L,{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 L({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}, ${J[e]}`,icon:function(a){switch(a){case"picked":return(0,b.jsx)(E,{"aria-hidden":!0});case"reached":return(0,b.jsx)(B.Check,{"aria-hidden":!0});case"unreached":return(0,b.jsx)(A.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,F.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 M={"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 N=a.i(75297),O=a.i(45098),P=a.i(48136);function Q({declaration:a,options:c,bounds:d,isSaving:e,saveError:g,savedNote:i,onSave:j}){let[k,m]=(0,l.useState)(a.whileUnavailable),[n,o]=(0,l.useState)(String(a.notRespondingAfterSeconds)),p=(0,l.useId)(),q=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}(n,d),r=k!==a.whileUnavailable||n.trim()!==String(a.notRespondingAfterSeconds),s=Object.fromEntries(c.map(a=>[a,M[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===q&&j({whileUnavailable:k,notRespondingAfterSeconds:Number(n.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)(P.Select,{items:s,value:k,disabled:e,onValueChange:a=>{let b=c.find(b=>b===a);void 0!==b&&m(b)},children:[(0,b.jsx)(P.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)(P.SelectValue,{})}),(0,b.jsx)(P.SelectContent,{children:c.map(a=>(0,b.jsx)(P.SelectItem,{value:a,children:M[a].name},a))})]}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground","data-testid":"network-declaration-meaning",children:M[k].meaning})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(O.Label,{htmlFor:p,children:"Not responding after (seconds)"}),(0,b.jsx)(N.Input,{id:p,inputMode:"numeric",className:"w-40",value:n,disabled:e,"aria-invalid":void 0!==q,"aria-describedby":`${p}-hint`,"data-testid":"network-declaration-seconds",onChange:a=>{o(a.target.value)}}),(0,b.jsx)("p",{id:`${p}-hint`,className:void 0===q?"text-meta text-muted-foreground":"text-meta text-destructive",children:q??`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!==q,"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 R=a.i(3512),S=a.i(51675),T=a.i(59613),U=a.i(2374),V=a.i(74215),W=a.i(19721),X=a.i(60275);let Y=(0,W.default)(async()=>{},{loadableGenerated:{modules:[59068]},ssr:!1});function Z({label:a,picked:c,unknown:e,groups:g,max:h,isDisabled:i,problem:j,onAdd:m,onRemove:n,testId:o,popoverTestId:p}){let[q,r]=(0,l.useState)(!1);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:[c.length+e.length===0?(0,b.jsx)("span",{className:"text-body",children:"Every ship"}):null,c.map((a,c)=>(0,b.jsxs)(l.Fragment,{children:[0===c?null:(0,b.jsx)("span",{className:"text-meta text-muted-foreground",children:"and"}),(0,b.jsx)(w.LabelChip,{chip:a,testId:`${o}-value`,..."string"==typeof a.term?{}:{meaning:t[a.term.value]},...i?{}:{onRemove:()=>{n(a.term)}}})]},s(a.term))),e.map(a=>(0,b.jsxs)("span",{"data-testid":`${o}-unknown`,title:`${s(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)(k.CircleAlert,{"aria-hidden":!0}),"A removed label",!0===i?null:(0,b.jsx)("button",{type:"button","aria-label":"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)(V.X,{"aria-hidden":!0})})]},s(a))),c.length+e.length>=h?null:(0,b.jsxs)(X.Popover,{open:q,onOpenChange:r,children:[(0,b.jsx)(X.PopoverTrigger,{render:(0,b.jsx)(f.Button,{type:"button",variant:"ghost",size:"xs",icon:(0,b.jsx)(R.Plus,{}),disabled:i,"data-testid":`${o}-add`}),children:"Add label"}),(0,b.jsxs)(X.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)(Y,{groups:g,pickedValueIds:c.flatMap(a=>"string"==typeof a.term?[a.term]:[]),onPick:a=>{r(!1),m(a)},terms:{picked:c.flatMap(a=>"string"==typeof a.term?[]:[a.term]),onPick:a=>{r(!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"})]})]})]})]}),void 0===j?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-tone-attention-fg","data-testid":`${o}-problem`,children:j}),0===e.length?null:(0,b.jsx)("p",{role:"alert",className:"text-meta text-tone-attention-fg",children:"A label here was removed from the fleet: this side matches no ship until you remove it."})]})}let $=[{side:"from",label:"From ships with"},{side:"to",label:"To ships with"}],_=()=>crypto.randomUUID();function aa({rules:a,context:c,limits:d,isSaving:e,saveError:g,savedNote:i,onSave:k}){let[s,t]=(0,l.useState)(()=>n(a,_)),[w,x]=(0,l.useState)(!1),y=(0,m.filterGroupsOf)(c),z=JSON.stringify(o(s))!==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"===s.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 message every ship."}),(0,b.jsx)("p",{className:"text-meta text-muted-foreground",children:"With rules, a ship may message another only when a rule allows it. Argo always reaches every ship and every ship reaches argo, and a ship may always answer the sender of a message it received."}),(0,b.jsx)("div",{children:(0,b.jsx)(f.Button,{variant:"primary",icon:(0,b.jsx)(R.Plus,{"aria-hidden":!0}),disabled:e,"data-testid":"network-rules-on",onClick:()=>{t(p(s,!0))},children:"Set rules"})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"text-body","data-testid":"network-rules-state",children:0===s.rules.length?"No rule allows anything yet: once saved, only argo and answers to a received message get through.":"A ship may message another only when a rule allows it. Argo and answers to a received message always get through."}),0===s.rules.length?null:(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:s.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:[$.map(({side:f,label:g})=>{let h,i=u(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.jsx)(j.ArrowRight,{"aria-hidden":!0,className:"mt-6 hidden size-(--size-icon) shrink-0 text-muted-foreground sm:block"}):null,(0,b.jsx)(Z,{label:g,picked:i.chips,unknown:i.unknown,groups:y,max:d.selectorMax,isDisabled:e,...void 0===(h=function(a,b){let[c]=v(a,b.side);if(void 0===c||"string"==typeof c)return;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:h},testId:`network-rule-${f}`,popoverTestId:"network-rule-popover",onAdd:b=>{var c;t(q(s,{key:(c={rule:a.key,side:f,term:b,limits:d}).rule,change:a=>{let b=a[c.side];return b.some(a=>r(a,c.term))||b.length>=c.limits.selectorMax?a:{...a,[c.side]:[...b,c.term]}}}))},onRemove:b=>{var c;t(q(s,{key:(c={rule:a.key,side:f,term:b}).rule,change:a=>({...a,[c.side]:a[c.side].filter(a=>!r(a,c.term))})}))}})]},f)}),(0,b.jsx)(f.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(S.Trash2,{"aria-hidden":!0}),disabled:e,"aria-label":`Remove rule ${String(g+1)}`,"data-testid":"network-rule-remove",onClick:()=>{var b;t((b=a.key,"all-to-all"===s.kind?s:{kind:"rules",rules:s.rules.filter(a=>a.key!==b)}))}})]},a.key))}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[s.rules.length>=d.rulesMax?null:(0,b.jsx)(f.Button,{size:"sm",icon:(0,b.jsx)(R.Plus,{"aria-hidden":!0}),disabled:e,"data-testid":"network-rules-add",onClick:()=>{var a;t((a={newKey:_,limits:d},"all-to-all"===s.kind||s.rules.length>=a.limits.rulesMax?s:{kind:"rules",rules:[...s.rules,{key:a.newKey(),from:[],to:[]}]}))},children:"Add rule"}),(0,b.jsxs)("span",{className:"text-meta text-muted-foreground tabular-nums","data-testid":"network-rules-count",children:[s.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:!z||"rules"===s.kind&&s.rules.some(a=>v(a,"from").length+v(a,"to").length>0),"data-testid":"network-rules-save",onClick:()=>{k(o(s))},children:"Save rules"}),z?(0,b.jsx)(f.Button,{disabled:e,"data-testid":"network-rules-discard",onClick:()=>{t(n(a,_))},children:"Discard changes"}):null,(0,b.jsx)(f.Button,{variant:"ghost",className:"ml-auto",disabled:e,"data-testid":"network-rules-off",onClick:()=>{null===a?t(p(s,!1)):x(!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||z?null:(0,b.jsx)("p",{role:"status",className:"text-meta text-muted-foreground","data-testid":"network-rules-note",children:i}),(0,b.jsx)(T.AlertDialog,{open:w,onOpenChange:a=>{a||e||x(!1)},children:(0,b.jsxs)(T.AlertDialogContent,{"data-testid":"network-rules-off-dialog",className:U.dialogSurface.phoneSheet,children:[(0,b.jsxs)(T.AlertDialogHeader,{children:[(0,b.jsx)(T.AlertDialogTitle,{children:"Remove all rules?"}),(0,b.jsx)(T.AlertDialogDescription,{children:"Every ship may message every ship again from now on. The rules are gone: to have them back, set them again."})]}),(0,b.jsxs)(T.AlertDialogFooter,{children:[(0,b.jsx)(T.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:()=>{x(!1),k(null)},children:"Remove all rules"})]})]})})]})}var ab=a.i(33217),ac=a.i(14499),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,m.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: ${M[a.whilePluginUnavailable].name}.`)})]})}function ag({side:a,ship:c,context:d}){let e=(0,m.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)(w.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(42871),as=a.i(10572);a.s(["NetworkPageFor",0,function({pickedShipId:a}){var j,k;let l,m,n,o,p=(0,e.useRouter)(),q=(0,ap.useNow)(),r=(0,ai.useConsoleFrame)(),s=(0,an.useNeedsAttention)(),t=(0,am.useLiveFleet)(),u=(0,aj.useAccess)(),v=(0,aq.usePluginNav)(),w=(0,ao.useHasNetwork)(),x=(0,ao.useNetwork)(),z=(0,al.useLabelContext)(),A=(0,al.useFleetSnapshot)(),B=(j=w?a:void 0,m=(0,ac.useTRPC)(),(0,ab.useQuery)(m.fleet.explainReach.queryOptions(void 0===j?ar.skipToken:{fromShipId:j}))),C=(n=(0,ac.useTRPC)(),(0,ab.useQuery)(n.fleet.reachRefusals.queryOptions(void 0,{enabled:w}))),D=(o=(0,ac.useTRPC)(),(0,ab.useQuery)(o.fleet.declaredNetworkRules.queryOptions(void 0,{enabled:w}))),E=(0,ao.useSaveNetworkRules)(),F=(0,ao.useSaveNetworkDeclaration)(),{networkRulesMax:G,shipLabelsMax:H,whileUnavailable:I,notRespondingAfterMinSeconds:J,notRespondingAfterMaxSeconds:L}=(0,ak.useConsoleConstants)();if((0,as.useSignInWhenSessionEnds)([s.error,t.error]),w)if(x.isError)l=(0,b.jsx)(h.InlineError,{title:"Couldn’t read the network",description:x.error.message,onRetry:()=>{x.refetch()}});else if(void 0===x.data||void 0===z||void 0===A.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)(aa,{rules:x.data.rules,context:z,limits:{rulesMax:G,selectorMax:H},isSaving:E.isPending,saveError:E.error?.message,savedNote:void 0===E.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."}}(E.data.supply),onSave:a=>{E.mutate(a)}},JSON.stringify(x.data.rules)),(0,b.jsx)(y,{declared:void 0===D.data?void 0:(k=D.data,c=new Map(A.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:D.error?.message,onRetry:()=>{D.refetch()},context:z}),(0,b.jsx)(Q,{declaration:x.data.declaration,options:I,bounds:{min:J,max:L},isSaving:F.isPending,saveError:F.error?.message,savedNote:void 0===F.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."}}(F.data.supply),onSave:a=>{F.mutate(a)}},JSON.stringify(x.data.declaration)),(0,b.jsx)(K,{ships:A.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:B.data?.reachableShipIds,reachError:B.error?.message,onPick:a=>{p.replace(void 0===a?"/network":`/network?reach=${a}`,{scroll:!1})},onRetry:()=>{B.refetch()}}),(0,b.jsx)(ae,{refusals:C.data,error:C.error?.message,onRetry:()=>{C.refetch()},context:z,now:q})]})}else l=(0,b.jsx)(g.EmptyState,{icon:(0,b.jsx)(c.Network,{"aria-hidden":!0}),title:u.canEditNetwork?"The networking plugin is not connected":"Only argo sees the network rules",description:u.canEditNetwork?"Connect it in Settings. Until it supplies rules, every ship may message every ship.":void 0,action:u.canEditNetwork&&v.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,{...r,title:"Network",description:"Who may message whom. The networking plugin supplies these rules to the fleet, which checks them on every send. Only argo sees this page.",live:t.live,children:l})}],71915)}];
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)}];
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=[59446,a=>{"use strict";var b=a.i(87924),c=a.i(31247),d=a.i(38246),e=a.i(50944),f=a.i(72131),g=a.i(12068),h=a.i(86002),i=a.i(56987),j=a.i(79520),k=a.i(88931),l=a.i(80487);let m={ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg"};function n({label:a,shortLabel:c,value:e,detail:f,href:g,icon:h,tone:i,testId:j}){return(0,b.jsxs)(d.default,{href:g,"data-testid":j,className:"flex min-w-0 flex-col gap-2 rounded-lg border border-border bg-card px-4.5 py-4 shadow-sm transition-colors duration-(--duration-fast) hover:bg-accent max-sm:gap-1.5 max-sm:rounded-xl max-sm:px-3.5 max-sm:py-3",children:[(0,b.jsxs)("span",{className:"flex items-center justify-between gap-2 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)("span",{className:"max-sm:hidden",children:a}),(0,b.jsx)("span",{className:"sm:hidden",children:c??a}),(0,b.jsx)("span",{className:(0,l.classNames)("flex size-6.5 shrink-0 items-center justify-center rounded-md border max-sm:size-5.5",m[i]),children:(0,b.jsx)(h,{"aria-hidden":!0,className:"size-3.5"})})]}),(0,b.jsx)("span",{className:"text-[28px] leading-none font-semibold tracking-tight tabular-nums text-foreground max-sm:text-2xl",children:e}),(0,b.jsx)("span",{className:"truncate text-meta text-muted-foreground",children:f})]})}var o=a.i(90146),p=a.i(34564),q=a.i(68450),r=a.i(72872);function s(a){return a.filter(a=>"agent"===a.kind&&"retired"!==a.status)}function t(){var a;let c,d,e,f,g=(0,o.useFleetSnapshot)(),h=(0,p.useFleetHealth)(),l=(0,q.useNow)();if(!g.data)return null;let m=(e=(d=(c=s((a={ships:g.data,stuck:h.data?.stuck??[],now:l}).ships)).filter(a=>"awaitingCrew"===a.status)).flatMap(a=>null===a.awaitingCrewSince?[]:[{name:a.name,since:new Date(a.awaitingCrewSince)}]).sort((a,b)=>a.since.getTime()-b.since.getTime())[0],f=a.stuck.map(a=>new Date(a.oldestSince)).sort((a,b)=>a.getTime()-b.getTime())[0],{activeCount:c.length,crewedCount:c.filter(a=>"crewed"===a.status).length,awaitingCount:d.length,longestWait:e&&{name:e.name,wait:(0,r.duration)(e.since,a.now)},oldestStuck:f&&(0,r.duration)(f,a.now)});return 0===m.activeCount?null:(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-4 max-sm:grid-cols-2 max-sm:gap-2.5","data-testid":"overview-metrics",children:[(0,b.jsx)(n,{label:"Ships crewed",shortLabel:"Crewed",value:m.crewedCount,detail:`of ${String(m.activeCount)} active ships`,href:"/?status=crewed",icon:k.UserCheck,tone:"ok",testId:"overview-crewed"}),(0,b.jsx)(n,{label:"Awaiting crew",value:m.awaitingCount,detail:m.longestWait?`Longest wait: ${m.longestWait.name}, ${m.longestWait.wait}`:"Every active ship is crewed",href:"/?status=awaitingCrew",icon:i.CircleDashed,tone:"waiting",testId:"overview-awaiting"}),(0,b.jsx)(n,{label:"Stuck",value:(0,p.stuckCountOf)(h.data)??0,detail:m.oldestStuck?`Deliveries stuck, oldest ${m.oldestStuck}`:"Delivering",href:"/fleet-health",icon:j.OctagonAlert,tone:"attention",testId:"overview-stuck"})]})}var u=a.i(3512),v=a.i(34301),w=a.i(1851),x=a.i(2955),y=a.i(82611),z=a.i(88191),A=a.i(64906),B=a.i(47468),C=a.i(82252),D=a.i(54763),E=a.i(12540),F=a.i(93454);let G=(0,v.lazyDialog)(()=>a.A(59777).then(a=>a.CommissionDialog),a=>a.isOpen),H=(0,v.lazyDialog)(()=>a.A(68359).then(a=>a.StartingPromptDialog),a=>a.isOpen);function I({isOpen:a,onOpenChange:c}){let d=(0,o.useFleetSnapshot)(),e=(0,A.useFleetLimits)(),h=(0,B.useHostedAccountUrl)(),i=(0,o.useCommissionShip)(),j=(0,o.useRequestCrew)(),k="connected"===(0,F.useTrierarchPluginConnection)(),l=(0,F.useMachines)(),m=(0,D.useSquadronsConnection)(),n=(0,E.useSquadrons)(),[p,q]=(0,f.useState)(!1),[r,s]=(0,f.useState)(null),t=(0,x.offersOf)(l.data??[]),v=(0,o.useLabelContext)(),{shipLabelsMax:J}=(0,w.useConsoleConstants)(),K=void 0===v||void 0===l.data?void 0:(0,y.machineLabelsInputOf)(v,{machines:l.data,shipLabelsMax:J}),L=(0,F.useCrewSettingsCheck)(a&&k?null===r?(0,x.settingsOf)((0,x.defaultValues)(t)):r:void 0),M=(d.data??[]).filter(a=>"retired"!==a.status),N=(a,b)=>{i.mutate(a,{onSuccess:({shipId:d})=>{c(!1);let e=k&&void 0!==b;e||q(!0),void 0!==b&&j.mutate({shipId:d,settings:b.settings},{onSuccess:()=>{e&&(0,z.showToast)({title:`${a.name} commissioned, crew requested`,description:"The trierarch plugin assigns a trierarch that fits.",tone:"success"})},onError:b=>{(0,z.showToast)({title:`Couldn’t request a crew for ${a.name}`,description:`${b.message} The ship is commissioned; request a crew on its page.`,tone:"error"})}})}})};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Button,{variant:"primary",icon:(0,b.jsx)(u.Plus,{}),"data-testid":"fleet-commission",onClick:()=>{i.reset(),s(null),c(!0)},children:"Commission ship"}),(0,b.jsx)(G,{activeShips:M,isOpen:a,onOpenChange:c,isPending:i.isPending,error:i.error?.message,shipLimit:(0,C.shipLimitReached)(e.data),accountUrl:h,...k?{crewRequest:{offers:t,squadrons:"connected"===m?(n.data??[]).filter(a=>"disbanded"!==a.state).map(a=>a.id):void 0,...void 0===K?{}:{machineLabels:K},check:L.data,onSettingsChange:s}}:{},onSubmit:(a,b)=>{let c={...a,idempotencyKey:crypto.randomUUID()};k&&void 0!==b?L.checkNow().catch(()=>void 0).then(a=>{a?.kind!=="refused"&&N(c,b)}).catch(()=>void 0):N(c,b)}}),(0,b.jsx)(H,{shipName:i.variables?.name??"",state:"shown",prompt:i.data?.prompt??void 0,crewLines:i.data?.crewLines??void 0,isOpen:p&&void 0!==i.data,onOpenChange:a=>{a||(q(!1),i.reset())},onConfirm:()=>void 0})]})}var J=a.i(64831);let K={name:"infinity",size:24,node:[["path",{d:"M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8",key:"18ogeb"}]]};K.node;let L=(0,J.default)(K);var M=a.i(74746),N=a.i(98238),O=a.i(23063);let P={ships:{label:"Ships",unit:"ships",Icon:N.Ship},messages:{label:"Messages today",unit:"messages",Icon:M.Send}},Q={below:"bg-primary",at:"bg-tone-waiting-fg",over:"bg-tone-attention-fg"},R={at:"at-limit",over:"over-limit"};function S({kind:a,count:c,limit:d,resetsAt:e}){let{label:f,unit:g,Icon:h}=P[a],i=(0,C.meterState)({count:c,limit:d}),j=R[i],k=(0,C.meterCaption)({count:c,limit:d}),m=null===d?0:0===d?1:Math.min(c/d,1);return(0,b.jsxs)("div",{"data-testid":`limit-meter-${a}`,"data-state":i,className:"flex flex-col gap-2 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)(h,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),f]}),void 0===j?null:(0,b.jsx)(O.StatusBadge,{status:j})]}),(0,b.jsxs)("p",{className:"flex items-baseline gap-1.5",children:[(0,b.jsx)("span",{className:"text-metric font-semibold tabular-nums",children:(0,C.meterCount)(c)}),(0,b.jsx)("span",{className:"text-body text-muted-foreground",children:null===d?g:`of ${(0,C.meterCount)(d)} ${g}`})]}),null===d?(0,b.jsxs)("p",{className:"inline-flex items-center gap-1.5 text-meta text-muted-foreground",children:[(0,b.jsx)(L,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),"No limit"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{role:"meter","aria-label":`${f}: ${String(c)} of ${String(d)}`,"aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":d,className:"block h-1.5 overflow-hidden rounded-full bg-secondary",children:(0,b.jsx)("span",{className:(0,l.classNames)("block h-full rounded-full","none"===i?void 0:Q[i]),style:{width:`${String(100*m)}%`}})}),(0,b.jsxs)("p",{"data-testid":`limit-meter-${a}-caption`,className:"text-caption text-muted-foreground",children:[k,void 0===e?null:` \xb7 resets at ${(0,C.resetTime)(e)}`]})]})]})}function T(){let a=(0,A.useFleetLimits)().data,c=(0,B.useHostedAccountUrl)();return(0,C.hasLimits)(a)?(0,b.jsxs)("section",{"aria-labelledby":"overview-limits-title","data-testid":"overview-limits",className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("h2",{id:"overview-limits-title",className:"text-body font-semibold",children:"Limits"}),void 0===c?null:(0,b.jsx)("a",{href:c,"data-testid":"overview-limits-view",className:"text-meta font-medium text-primary underline underline-offset-2",children:"View limits"})]}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(S,{kind:"ships",count:a.ships.count,limit:a.ships.limit}),(0,b.jsx)(S,{kind:"messages",count:a.dailyMessages.count,limit:a.dailyMessages.limit,resetsAt:a.dailyMessages.resetsAt})]})]}):null}var U=a.i(45065),V=a.i(8219),W=a.i(55681),X=a.i(25039),Y=a.i(71094),Z=a.i(33540);let $={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]};$.node;let _=(0,J.default)($);var aa=a.i(87005);let ab=["console","claudeCode","codex","trierarch","plugin","other"],ac={console:"Console",claudeCode:"Claude Code",codex:"Codex",trierarch:"Trierarch",plugin:"Plugin",other:"Other"},ad={"claude-code":"claudeCode",codex:"codex"};function ae(a){return ab.some(b=>b===a)}let af={awaitingCrew:"Awaiting crew",crewed:"Crewed",retired:"Retired"};function ag(a,{column:b,squadronsOf:c}){switch(b){case"ship":return a.name;case"status":return af[a.status];case"report":return"agent"===a.kind&&"crewed"===a.status?a.report?.note??void 0:void 0;case"squadronAndLabels":{let b=c?.get(a.id);if(void 0!==b&&null!==b.role)return b.squadronId;let[d]=a.labels;return void 0===d?void 0:`${d.key}=${d.value}`}case"runsOn":if("crewed"!==a.status||"viewer"===a.kind)return;return"operator"===a.kind?"console":a.harness??void 0;case"seen":return a.lastSeenAt??void 0}}var ah=a.i(6071),ai=a.i(65230),aj=a.i(60271);let ak={query:"",filters:{status:[],crewRequest:[],kind:[],type:[],squadron:[],isRetiredShown:!1,labelValueIds:[]},sort:null},al=new Set;function am(a,b){return 0===a.length||void 0!==b&&a.includes(b)}function an(a,b){return a.kind!==b.kind?"operator"===a.kind?-1:+("operator"===b.kind):0}function ao(a,b){return[...new Set(a.filter(a=>b||"retired"!==a.status).map(a=>a.type))].toSorted((a,b)=>a.localeCompare(b))}function ap(a){return a.filter(a=>"retired"===a.status).length}function aq(a){return[...new Set([...a.values()].map(a=>a.squadronId))].toSorted((a,b)=>a.localeCompare(b))}let ar={crewed:"Crewed",awaitingCrew:"Awaiting crew"};function as(a){return au(a).length+a.labelValueIds.length}function at(a,b){return 0===b.length?void 0:`${a}: ${b.join(", ")}`}function au(a){return[at("Status",a.status.map(a=>ar[a])),at("Crew request",a.crewRequest.map(aj.crewRequestKeyWord)),at("Kind",a.kind.map(a=>ac[a])),at("Type",a.type),at("Squadron",a.squadron),a.isRetiredShown?"Retired shown":void 0].filter(a=>void 0!==a)}var av=a.i(76166),aw=a.i(75297),ax=a.i(45098),ay=a.i(4838),az=a.i(45469),aA=a.i(77339),aB=a.i(24173),aC=a.i(40392),aD=a.i(36501);function aE({chips:a,width:c,testId:e,href:f}){if(0===a.length)return null;let{shown:g,folded:h}=0===c?{shown:[],folded:a}:(0,ai.rowChips)(a,c);return(0,b.jsxs)("span",{"data-testid":e,className:"flex min-w-0 items-center gap-1 overflow-hidden",children:[g.map((a,c)=>(0,b.jsx)(aD.LabelChip,{chip:a,className:0===c?"min-w-0 shrink":void 0},a.valueId)),0===h.length?null:void 0===f?(0,b.jsxs)("span",{title:h.map(ai.chipTitleOf).join("; "),className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums",children:["+",h.length,(0,b.jsx)("span",{className:"sr-only",children:" more labels"})]}):(0,b.jsxs)(d.default,{href:f,title:h.map(ai.chipTitleOf).join("; "),"aria-label":`View ${h.length} more labels`,className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:["+",h.length]})]})}var aF=a.i(50808);let aG={name:"signal",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}],["path",{d:"M17 20V8",key:"1tkaf5"}],["path",{d:"M22 4v16",key:"sih9yq"}]]};aG.node;let aH=(0,J.default)(aG),aI={name:"signal-low",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}]]};aI.node;let aJ=(0,J.default)(aI),aK={name:"signal-medium",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}]]};aK.node;let aL=(0,J.default)(aK);a.s([],65156),a.i(65156);var aM=a.i(22050),aN=a.i(24715),aO=a.i(57738),aP=a.i(54662);let aQ=f.createContext(void 0);function aR(a){let b=f.useContext(aQ);if(void 0===b&&!a)throw Error((0,aP.default)(72));return b}var aS=a.i(68536),aT=a.i(54401),aU=a.i(26476),aV=a.i(30116),aW=a.i(14209);function aX(a){return null!=a&&null!=a.clientX}var aY=a.i(38939),aZ=a.i(94552),a$=a.i(84204),a_=a.i(32318),a0=a.i(17498),a1=a.i(7436),a2=a.i(14239),a3=a.i(17017),a4=a.i(51943);let a5={...a3.popupStoreSelectors,disabled:a=>a.disabled,instantType:a=>a.instantType,isInstantPhase:a=>a.isInstantPhase,trackCursorAxis:a=>a.trackCursorAxis,disableHoverablePopup:a=>a.disableHoverablePopup,lastOpenChangeReason:a=>a.openChangeReason,closeOnClick:a=>a.closeOnClick,closeDelay:a=>a.closeDelay,adaptiveOrigin:a=>a.adaptiveOrigin};class a6 extends a0.ReactStore{constructor(a,b,c){const d=new a4.PopupTriggerMap;super(a7(a,d,b,c),a8(d),a5)}setOpen=(a,b)=>{(0,a$.applyPopupOpenChange)(this,a,b,{extraState:{openChangeReason:b.reason}})};cancelPendingOpen(a){this.state.floatingRootContext.dispatchOpenChange(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.triggerPress,a))}}function a7(a,b,c,d=!1){return{...(0,a3.createInitialPopupStoreState)(b,c,d),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,adaptiveOrigin:void 0,...a}}function a8(a){return{popupRef:f.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:a}}let a9=(0,aM.fastComponent)(function(a){let{disabled:c=!1,defaultOpen:d=!1,open:e,disableHoverablePopup:g=!1,trackCursorAxis:h="none",actionsRef:i,onOpenChange:j,onOpenChangeComplete:k,handle:l,triggerId:m,defaultTriggerId:n=null,children:o}=a,p=(0,a$.usePopupRootStore)((a,b)=>new a6({open:d,openProp:e,activeTriggerId:n,triggerIdProp:m},a,b));p.useControlledProp("openProp",e),p.useControlledProp("triggerIdProp",m),p.useContextCallback("onOpenChange",j),p.useContextCallback("onOpenChangeComplete",k);let q=p.useState("open"),r=!c&&q,s=p.useState("activeTriggerId"),t=p.useState("mounted"),u=p.useState("payload");p.useSyncedValues({trackCursorAxis:h,disableHoverablePopup:g,disabled:c}),(0,a$.useImplicitActiveTrigger)(p,{closeOnActiveTriggerUnmount:!0});let{forceUnmount:v,transitionStatus:w}=(0,a$.useOpenStateTransitions)(r,p),x=p.useState("isInstantPhase"),y=p.useState("instantType"),z=p.useState("lastOpenChangeReason"),A=f.useRef(null);(0,aO.useIsoLayoutEffect)(()=>{q&&c&&p.setOpen(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.disabled))},[q,c,p]),(0,aO.useIsoLayoutEffect)(()=>{"ending"===w&&z===a1.REASONS.none||"ending"!==w&&x?("delay"!==y&&(A.current=y),p.set("instantType","delay")):null!==A.current&&(p.set("instantType",A.current),A.current=null)},[w,x,z,y,p]),(0,aO.useIsoLayoutEffect)(()=>{r&&null==s&&p.set("payload",void 0)},[p,s,r]),f.useImperativeHandle(i,()=>({unmount:v,close:()=>p.setOpen(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.imperativeAction))}),[v,p]);let B=r||t||!c&&"none"!==h;return(0,b.jsxs)(aQ.Provider,{value:p,children:[l&&(0,b.jsx)(a$.PopupHandleAttachment,{handle:l,store:p}),B&&(0,b.jsx)(ba,{store:p,disabled:c,trackCursorAxis:h}),"function"==typeof o?o({payload:u}):o]})});function ba({store:a,disabled:b,trackCursorAxis:c}){let d=a.useState("floatingRootContext"),e=(0,aY.useDismiss)(d,{enabled:!b,referencePress:()=>a.select("closeOnClick")}),g=function(a,b={}){let{enabled:c=!0,axis:d="both"}=b,e="rootStore"in a?a.rootStore:a,g=e.useState("open"),h=e.useState("floatingElement"),i=e.useState("domReferenceElement"),j=e.context.dataRef,k=f.useRef(!1),l=f.useRef(null),[m,n]=f.useState(),[o,p]=f.useState([]),q=(0,aT.useStableCallback)(a=>{e.set("positionReference",a)}),r=(0,aT.useStableCallback)((a,b,c)=>{if(!k.current&&(!j.current.openEvent||aX(j.current.openEvent))){var f,g;let h,k,l;e.set("positionReference",(f=c??i,g={x:a,y:b,axis:d,dataRef:j,pointerType:m},h=null,k=null,l=!1,{contextElement:f||void 0,getBoundingClientRect(){let a=f?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},b="x"===g.axis||"both"===g.axis,c="y"===g.axis||"both"===g.axis,d=["mouseenter","mousemove"].includes(g.dataRef.current.openEvent?.type||"")&&"touch"!==g.pointerType,e=a.width,i=a.height,j=a.x,m=a.y;return null==h&&g.x&&b&&(h=a.x-g.x),null==k&&g.y&&c&&(k=a.y-g.y),j-=h||0,m-=k||0,e=0,i=0,!l||d?(e="y"===g.axis?a.width:0,i="x"===g.axis?a.height:0,j=b&&null!=g.x?g.x:j,m=c&&null!=g.y?g.y:m):l&&!d&&(i="x"===g.axis?a.height:i,e="y"===g.axis?a.width:e),l=!0,{width:e,height:i,x:j,y:m,top:m,right:j+e,bottom:m+i,left:j}}}))}}),s=(0,aT.useStableCallback)(a=>{g?l.current||(r(a.clientX,a.clientY,a.currentTarget),p([])):r(a.clientX,a.clientY,a.currentTarget)}),t=(0,aW.isMouseLikePointerType)(m)?h:g;f.useEffect(()=>{if(!c)return void q(i);if(!t)return;function a(){l.current?.(),l.current=null}let b=(0,aU.getWindow)(h);return!j.current.openEvent||aX(j.current.openEvent)?l.current=(0,aS.addEventListener)(b,"mousemove",function(b){let c=(0,aV.getTarget)(b);(0,aV.contains)(h,c)?a():r(b.clientX,b.clientY)}):q(i),a},[t,c,h,j,i,e,r,q,o]),f.useEffect(()=>()=>{e.set("positionReference",null)},[e]),f.useEffect(()=>{c&&!h&&(k.current=!1)},[c,h]),f.useEffect(()=>{!c&&g&&(k.current=!0)},[c,g]);let u=f.useMemo(()=>{function a(a){n(a.pointerType)}return{onPointerDown:a,onPointerEnter:a,onMouseMove:s,onMouseEnter:s}},[s]);return f.useMemo(()=>c?{reference:u,trigger:u}:{},[c,u])}(d,{enabled:!b&&"none"!==c,axis:"none"===c?void 0:c}),h=f.useMemo(()=>(0,a_.mergeProps)(g.reference,e.reference),[g.reference,e.reference]);return(0,a$.usePopupInteractionProps)(a,{activeTriggerProps:h,inactiveTriggerProps:h,popupProps:e.floating??aN.EMPTY_OBJECT}),null}var bb=a.i(36069),bc=a.i(89862),bd=a.i(4478),be=a.i(26184),bf=a.i(97151),bg=a.i(557);let bh=f.createContext(void 0);var bi=a.i(25003),bj=a.i(85252);let bk=f.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new bb.Timeout,currentIdRef:{current:null},currentContextRef:{current:null}});function bl(a){let{children:c,delay:d,timeoutMs:e=0}=a,g=f.useRef(d),h=f.useRef(d),i=f.useRef(null),j=f.useRef(null),k=(0,bb.useTimeout)();return(0,aO.useIsoLayoutEffect)(()=>{if(h.current=d,!i.current){g.current=d;return}g.current={open:(0,bj.getDelay)(g.current,"open"),close:(0,bj.getDelay)(d,"close")}},[d,i,g,h]),(0,b.jsx)(bk.Provider,{value:f.useMemo(()=>({hasProvider:!0,delayRef:g,initialDelayRef:h,currentIdRef:i,timeoutMs:e,currentContextRef:j,timeout:k}),[e,k]),children:c})}var bm=a.i(84842),bn=a.i(5735),bo=a.i(72077),bp=a.i(63734);let bq="data-base-ui-tooltip-trigger";function br(a){if("composedPath"in a){let b=a.composedPath();for(let a=0;a<b.length;a+=1){let c=b[a];if((0,aU.isElement)(c))return c}}let b=a.target;return(0,aU.isElement)(b)?b:null}let bs=(0,aM.fastComponentRef)(function(a,b){let{render:c,className:d,style:e,handle:g,payload:h,disabled:i,delay:j,closeOnClick:k=!0,closeDelay:l,id:m,...n}=a,o=aR(!0),p=(0,bf.usePopupHandleStore)(g)??o;if(!p)throw Error((0,aP.default)(82));let q=(0,bg.useBaseUiId)(m),r=p.useState("isTriggerActive",q),s=p.useState("isOpenedByTrigger",q),t=p.useState("floatingRootContext"),u=f.useRef(null),v=l??0,{registerTrigger:w,isMountedByThisTrigger:x}=(0,a$.useTriggerDataForwarding)(q,u,p,{payload:h,closeOnClick:k,closeDelay:v}),y=f.useContext(bh),{activeIdRef:z,delayRef:A,isInstantPhase:B,hasProvider:C}=function(a,b={open:!1}){let{open:c}=b,d="rootStore"in a?a.rootStore:a,e=d.useState("floatingId"),{currentIdRef:g,delayRef:h,timeoutMs:i,initialDelayRef:j,currentContextRef:k,hasProvider:l,timeout:m}=f.useContext(bk),[n,o]=f.useState(!1),p=f.useRef(c);return(0,aO.useIsoLayoutEffect)(()=>{p.current=c},[c]),(0,aO.useIsoLayoutEffect)(()=>{function a(){k.current?.setIsInstantPhase(!1),g.current=null,k.current=null,h.current=j.current,m.clear()}if(g.current&&!c&&g.current===e){if(o(!1),i)return m.start(i,()=>{d.select("open")||g.current&&g.current!==e||a()}),()=>{(p.current||g.current!==e)&&m.clear()};a()}},[c,e,g,h,i,j,k,m,d]),(0,aO.useIsoLayoutEffect)(()=>{if(!c)return;let a=k.current,b=g.current;m.clear(),k.current={onOpenChange:d.setOpen,setIsInstantPhase:o},g.current=e,h.current={open:0,close:(0,bj.getDelay)(j.current,"close")},null!==b&&b!==e?(o(!0),a?.setIsInstantPhase(!0),a?.onOpenChange(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.none))):(o(!1),a?.setIsInstantPhase(!1))},[c,e,d,g,h,j,k,m]),(0,aO.useIsoLayoutEffect)(()=>()=>{g.current===e&&(k.current=null,p.current)&&(g.current=null,h.current=j.current,m.clear())},[k,g,h,e,j,m]),f.useMemo(()=>({activeIdRef:g,hasProvider:l,delayRef:h,isInstantPhase:n}),[g,l,h,n])}(t,{open:s}),D=(0,bo.useHoverInteractionSharedState)(t);p.useSyncedValue("isInstantPhase",B);let E=p.useState("disabled"),F=i??E,G=(0,bc.useValueAsRef)(F),H=p.useState("trackCursorAxis"),I=p.useState("disableHoverablePopup"),J=f.useRef(!1),K=(0,bb.useTimeout)(),L=f.useRef(void 0);function M(){return C&&null!=z.current?0:j??y??600}function N(a){let b=u.current;if(!b||!a)return!1;let c=function(a){let b=a;for(;b;){let a=b.closest(`[${bq}]`);if(a)return a;let c=b.getRootNode();b="host"in c&&(0,aU.isElement)(c.host)?c.host:null}return null}(a);return null!==c&&c!==b&&(0,aV.contains)(b,c)}let O=(0,bn.useHoverReferenceInteraction)(t,{enabled:!F,mouseOnly:!0,move:!1,handleClose:I||"both"===H?null:(0,bi.safePolygon)(),restMs:M,delay:()=>null==l&&C?{close:(0,bj.getDelay)(A.current,"close")}:{close:v},triggerElementRef:u,isActiveTrigger:r,isClosing:()=>"ending"===p.select("transitionStatus"),shouldOpen:()=>!J.current}),P=(0,bm.useFocus)(t,{enabled:!F}).reference,Q=p.useState("triggerProps",x),R=x||"none"!==H;return(0,be.useRenderElement)("button",a,{state:{open:s},ref:[b,w,u],props:[O,P,R?Q:void 0,{onMouseOver(a){(a=>{let b,c=J.current,d=br(a),e=(J.current=b=N(d),b&&(D.openChangeTimeout.clear(),D.restTimeout.clear(),D.restTimeoutPending=!1,K.clear()),b),f=u.current,g=f&&d&&(0,aV.contains)(f,d);if(e&&p.select("open")&&p.select("lastOpenChangeReason")===a1.REASONS.triggerHover)return p.setOpen(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.triggerHover,a));if(c&&!e&&g&&!G.current&&!p.select("open")&&f&&(0,aW.isMouseLikePointerType)(L.current)){let b=()=>{J.current||G.current||p.select("open")||p.setOpen(!0,(0,aZ.createChangeEventDetails)(a1.REASONS.triggerHover,a,f))},c=M();0===c?(K.clear(),b()):K.start(c,b)}})(a.nativeEvent)},onFocus(a){N(br(a.nativeEvent))&&a.preventBaseUIHandler()},onMouseLeave(){J.current=!1,K.clear(),L.current=void 0},onPointerEnter(a){L.current=a.pointerType},onPointerDown(a){L.current=a.pointerType,p.set("closeOnClick",k),k&&!p.select("open")&&p.cancelPendingOpen(a.nativeEvent)},onClick(a){k&&!p.select("open")&&p.cancelPendingOpen(a.nativeEvent)},id:q,[bp.triggerDisabled]:F?"":void 0,[bq]:F?void 0:""},n],stateAttributesMapping:bd.triggerOpenStateMapping})}),bt=f.createContext(void 0);var bu=a.i(35112),bv=a.i(54098);let bw=f.forwardRef(function(a,c){let{children:d,container:e,className:g,render:h,style:i,...j}=a,{node:k,subtree:l}=(0,bv.useFloatingPortalNode)({container:e,ref:c,componentProps:a,elementProps:j});return l||k?(0,b.jsxs)(f.Fragment,{children:[l,k&&bu.createPortal(d,k)]}):null}),bx=f.forwardRef(function(a,c){let{keepMounted:d=!1,...e}=a;return aR().useState("mounted")||d?(0,b.jsx)(bt.Provider,{value:d,children:(0,b.jsx)(bw,{ref:c,...e})}):null}),by=f.createContext(void 0);function bz(){let a=f.useContext(by);if(void 0===a)throw Error((0,aP.default)(71));return a}var bA=a.i(44871),bB=a.i(82204),bC=a.i(56011);let bD=f.forwardRef(function(a,c){let{render:d,className:e,anchor:g,positionMethod:h="absolute",side:i="top",align:j="center",sideOffset:k=0,alignOffset:l=0,collisionBoundary:m="clipping-ancestors",collisionPadding:n=5,arrowPadding:o=5,sticky:p=!1,disableAnchorTracking:q=!1,collisionAvoidance:r=bB.POPUP_COLLISION_AVOIDANCE,style:s,...t}=a,u=aR(),v=function(){let a=f.useContext(bt);if(void 0===a)throw Error((0,aP.default)(70));return a}(),w=u.useState("open"),x=u.useState("mounted"),y=u.useState("trackCursorAxis"),z=u.useState("disableHoverablePopup"),A=u.useState("floatingRootContext"),B=u.useState("instantType"),C=u.useState("transitionStatus"),D=u.useState("adaptiveOrigin"),E=(0,bA.useAnchorPositioning)({anchor:g,positionMethod:h,floatingRootContext:A,mounted:x,side:i,sideOffset:k,align:j,alignOffset:l,collisionBoundary:m,collisionPadding:n,sticky:p,arrowPadding:o,disableAnchorTracking:q,keepMounted:v,collisionAvoidance:r,adaptiveOrigin:D}),F=f.useMemo(()=>({open:w,side:E.side,align:E.align,anchorHidden:E.anchorHidden,instant:"none"!==y?"tracking-cursor":B}),[w,E.side,E.align,E.anchorHidden,y,B]),G=(0,bC.usePositioner)(a,F,{styles:E.positionerStyles,transitionStatus:C,props:t,refs:[c,u.useStateSetter("positionerElement")],hidden:!x,inert:!w||"both"===y||z});return(0,b.jsx)(by.Provider,{value:E,children:G})});var bE=a.i(5687),bF=a.i(3861),bG=a.i(81673);let bH=f.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=aR(),{side:h,align:i}=bz(),j=g.useState("open"),k=g.useState("instantType"),l=g.useState("transitionStatus"),m=g.useState("popupProps"),n=g.useState("floatingRootContext"),o=g.useState("disabled"),p=g.useState("closeDelay");(0,bE.useOpenChangeComplete)({open:j,ref:g.context.popupRef,onComplete(){j&&g.context.onOpenChangeComplete?.(!0)}}),(0,bG.useHoverFloatingInteraction)(n,{enabled:!o,closeDelay:p});let q=g.useStateSetter("popupElement");return(0,be.useRenderElement)("div",a,{state:{open:j,side:h,align:i,instant:k,transitionStatus:l},ref:[b,g.context.popupRef,q],props:[a$.FOCUSABLE_POPUP_PROPS,m,(0,bF.getDisabledMountTransitionStyles)(l),f],stateAttributesMapping:bd.popupTransitionStateMapping})}),bI=f.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=aR(),{arrowRef:h,side:i,align:j,arrowUncentered:k,arrowStyles:l}=bz(),m=g.useState("open"),n=g.useState("instantType");return(0,be.useRenderElement)("div",a,{state:{open:m,side:i,align:j,uncentered:k,instant:n},ref:[b,h],props:[{style:l,"aria-hidden":!0},f],stateAttributesMapping:bd.popupStateMapping})});var bJ=a.i(62092);let bK=f.forwardRef(function(a,b){let{render:c,className:d,style:e,children:f,...g}=a,h=aR(),i=bz(),j=h.useState("instantType"),{children:k,state:l}=(0,bJ.usePopupViewport)({store:h,side:i.side,children:f}),m={activationDirection:l.activationDirection,transitioning:l.transitioning,instant:j};return(0,be.useRenderElement)("div",a,{state:m,ref:b,props:[g,{children:k}],stateAttributesMapping:bJ.popupViewportStateMapping})});var bL=a.i(4675);class bM extends bL.BasePopupHandle{constructor(){super(function(){let a=new a4.PopupTriggerMap;return Object.assign(new a2.NullStore(Object.freeze(a7(void 0,a)),Object.freeze(a8(a)),a5),{setOpen:aN.NOOP,cancelPendingOpen:aN.NOOP})}(),"Tooltip")}open(a){this.openByTrigger(a)}close(){this.closePopup()}get isOpen(){return this.attachedStore?.select("open")??!1}}a.s(["Arrow",0,bI,"Handle",0,bM,"Popup",0,bH,"Portal",0,bx,"Positioner",0,bD,"Provider",0,function(a){let{delay:c,closeDelay:d,timeout:e=400}=a,g=f.useMemo(()=>({open:c,close:d}),[c,d]);return(0,b.jsx)(bh.Provider,{value:c,children:(0,b.jsx)(bl,{delay:g,timeoutMs:e,children:a.children})})},"Root",0,a9,"Trigger",0,bs,"Viewport",0,bK,"createHandle",0,function(){return new bM}],3191);var bN=a.i(3191),bN=bN;function bO(a){return(0,b.jsx)(bN.Root,{"data-slot":"tooltip",...a})}function bP(a){return(0,b.jsx)(bN.Trigger,{"data-slot":"tooltip-trigger",...a})}function bQ({className:a,side:c="top",sideOffset:d=6,align:e="center",...f}){return(0,b.jsx)(bN.Portal,{children:(0,b.jsx)(bN.Positioner,{align:e,side:c,sideOffset:d,className:"isolate z-50 max-sm:hidden",children:(0,b.jsx)(bN.Popup,{"data-slot":"tooltip-content",className:(0,l.classNames)("w-fit max-w-xs origin-(--transform-origin) rounded-sm bg-foreground px-2 py-1 text-caption font-medium text-background shadow-md duration-(--duration-fast) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...f})})})}let bR={fresh:{Icon:aH,tone:"text-tone-ok-fg"},while:{Icon:aL,tone:"text-muted-foreground"},long:{Icon:aJ,tone:"text-tone-waiting-fg"}};function bS({seenAt:a,now:c,testId:d}){let e;if(null===a)return null;let f=new Date(a),g=(e=c.getTime()-f.getTime())<6e4?"fresh":e<=9e5?"while":"long",{Icon:h,tone:i}=bR[g],j=(0,r.lastSeen)(f,c);return(0,b.jsxs)(bO,{children:[(0,b.jsx)(bP,{render:(0,b.jsx)("span",{role:"img","aria-label":j,"data-testid":d,"data-signal":g,className:(0,l.classNames)("inline-flex [&_svg]:size-(--size-icon) max-sm:[&_svg]:size-4",i)}),children:(0,b.jsx)(h,{"aria-hidden":!0})}),(0,b.jsx)(bQ,{children:j})]})}var bT=a.i(40108);function bU({model:a,now:c}){let d=function(a,b){var c;let d=new Date(a.statedAt),e=Math.max(0,b.getTime()-d.getTime()),f=(c=a.id).startsWith("@")||/@\d+\.\d+\.\d+$/.test(c)?"Software":"Model";if(e<6e4)return`${f}, stated ${String(Math.floor(e/1e3))} s ago`;let g=(0,r.relativeTime)(d,b);return`${f}, stated ${g.charAt(0).toLowerCase()}${g.slice(1)}`}(a,c);return(0,b.jsxs)(bO,{children:[(0,b.jsxs)(bP,{render:(0,b.jsx)("span",{"data-testid":"fleet-model-hint",className:"min-w-0 truncate font-mono text-id text-muted-foreground"}),children:[a.id,(0,b.jsxs)("span",{className:"sr-only",children:[", ",d]})]}),(0,b.jsx)(bQ,{children:(0,b.jsxs)("span",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"font-mono",children:a.id}),(0,b.jsx)("span",{children:d})]})})]})}var bV=a.i(92717),bW=a.i(58523),bX=a.i(90468),bY=a.i(48136);function bZ({label:a,items:c,picked:d,onPickedChange:e,size:f="sm",valueClassName:g,testId:h}){let i=function(a,b){let[c]=a;return void 0===c?{kind:"all"}:1===a.length?{kind:"one",word:b[c]??c}:{kind:"several",count:a.length}}(d,c);return(0,b.jsxs)(bY.Select,{multiple:!0,value:0===d.length?["all"]:[...d],onValueChange:a=>{e(d.length>0&&a.includes("all")?[]:a.filter(a=>"all"!==a))},children:[(0,b.jsx)(bY.SelectTrigger,{size:f,"aria-label":a,"data-testid":h,children:(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a}),"several"===i.kind?(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[i.count,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}):(0,b.jsx)("span",{className:(0,l.classNames)("font-medium","one"===i.kind?g:void 0),children:"one"===i.kind?i.word:"All"})]})}),(0,b.jsxs)(bY.SelectContent,{children:[(0,b.jsx)(bY.SelectItem,{value:"all",children:"All"}),Object.entries(c).map(([a,c])=>(0,b.jsx)(bY.SelectItem,{value:a,className:g,children:c},a))]})]})}function b$({label:a,allLabel:c="All",items:d,picked:e,onPickedChange:f,layout:h="chips",testId:i}){return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)("span",{"aria-hidden":!0,className:"text-meta font-medium text-muted-foreground",children:a}),(0,b.jsxs)("div",{role:"group","aria-label":a,"data-testid":i,className:"segments"===h?"flex gap-1.5 [&>*]:flex-1":"flex flex-wrap gap-1.5",children:[(0,b.jsx)(g.Button,{variant:0===e.length?"primary":"secondary",size:"touch","aria-pressed":0===e.length,onClick:()=>{f([])},children:c}),Object.entries(d).map(([a,c])=>{let d=e.includes(a);return(0,b.jsx)(g.Button,{variant:d?"primary":"secondary",size:"touch","aria-pressed":d,onClick:()=>{f(d?e.filter(b=>b!==a):[...e,a])},children:c},a)})]})]})}var b_=a.i(89027),b0=a.i(3894),b1=a.i(19721),b2=a.i(60275);let b3=(0,b1.default)(async()=>{},{loadableGenerated:{modules:[59068]},ssr:!1});function b4({groups:a,picked:c,onPick:e,trigger:g}){let[h,i]=(0,f.useState)(!1);return(0,b.jsxs)(b2.Popover,{open:h,onOpenChange:i,children:[(0,b.jsx)(b2.PopoverTrigger,{render:g}),(0,b.jsxs)(b2.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":"label-filter-popover",children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:"Filter by label"}),(0,b.jsx)(b3,{groups:a,pickedValueIds:c.map(a=>a.valueId),onPick:a=>{e(a),i(!1)}}),(0,b.jsxs)("p",{className:"mt-2 flex items-center justify-between gap-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:["Exact matches, all must hold.",(0,b.jsx)(d.default,{href:"/labels",className:"font-medium text-foreground hover:underline","data-testid":"label-filter-manage",children:"Manage labels"})]})]})]})}function b5({groups:a,picked:d,onPick:e}){return(0,b.jsx)(b4,{groups:a,picked:d,onPick:e,trigger:(0,b.jsxs)(g.Button,{variant:"secondary",size:"sm",icon:(0,b.jsx)(c.Tag,{}),"data-testid":"fleet-filter-labels",children:["Labels",0===d.length?null:(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[d.length,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}),(0,b.jsx)(b_.ChevronDown,{"aria-hidden":!0,className:"text-muted-foreground"})]})})}function b6({groups:a,picked:c,onPick:d,onRemove:e,onClear:f}){return 0===c.length?null:(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1.5 text-meta max-sm:hidden","data-testid":"fleet-picked-labels",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"Ships with"}),c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aD.LabelChip,{chip:a,testId:"fleet-picked-label",onRemove:()=>{e(a.valueId)}})]},a.valueId)),(0,b.jsx)(b4,{groups:a,picked:c,onPick:d,trigger:(0,b.jsx)(g.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(u.Plus,{}),children:"Add"})}),(0,b.jsx)("span",{"aria-hidden":!0,className:"h-4 w-px bg-border"}),(0,b.jsx)(g.Button,{variant:"ghost",size:"xs",onClick:f,"data-testid":"fleet-labels-clear",children:"Clear labels"})]})}function b7({groups:a,picked:c,onPick:e,onRemove:h}){let[i,j]=(0,f.useState)(!1);return(0,b.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"fleet-filter-labels-touch",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-meta font-medium text-muted-foreground",children:["Labels ",(0,b.jsx)("span",{className:"font-normal",children:"all must hold"})]}),0===c.length?null:(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 text-meta",children:c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aD.LabelChip,{chip:a,onRemove:()=>{h(a.valueId)}})]},a.valueId))}),i?(0,b.jsx)("div",{className:"rounded-lg border border-border p-2",children:(0,b.jsx)(b3,{groups:a,pickedValueIds:c.map(a=>a.valueId),size:"touch",onPick:a=>{e(a),j(!1)}})}):(0,b.jsx)(g.Button,{variant:"secondary",size:"touch",icon:(0,b.jsx)(u.Plus,{}),className:"self-start",onClick:()=>{j(!0)},children:"Add label"}),(0,b.jsxs)(d.default,{href:"/labels",className:"inline-flex items-center gap-1.5 self-start text-meta text-muted-foreground hover:underline [&_svg]:size-(--size-icon-sm)",children:[(0,b.jsx)(b0.Tags,{"aria-hidden":!0}),"All labels and their owners"]})]})}function b8(a,b){return{...a,filters:{...a.filters,labelValueIds:b}}}function b9(a){return Object.hasOwn(ar,a)}function ca(a){return Object.fromEntries((0,aj.crewRequestKeysOf)(a).map(a=>[a,(0,aj.crewRequestKeyWord)(a)]))}function cb(a,b){return Object.hasOwn(b,a)}function cc(a){return Object.fromEntries(a.map(a=>[a,a]))}function cd({ship:a,squadron:c,isPluginShip:d}){return"operator"===a.kind?(0,b.jsxs)(av.Badge,{variant:"kind",children:[(0,b.jsx)(aa.UserRound,{"aria-hidden":!0}),"operator"]}):"viewer"===a.kind?(0,b.jsxs)(av.Badge,{variant:"kind","data-testid":"fleet-viewer",children:[(0,b.jsx)(W.Eye,{"aria-hidden":!0}),"viewer"]}):d?(0,b.jsxs)(av.Badge,{variant:"kind","data-testid":"fleet-plugin",children:[(0,b.jsx)(Y.Plug,{"aria-hidden":!0}),"plugin"]}):c?.role===null?(0,b.jsxs)(av.Badge,{variant:"kind","data-testid":"fleet-flagship",children:[(0,b.jsx)(X.Flag,{"aria-hidden":!0}),"flagship"]}):null}function ce({ship:a,now:c}){return"crewed"!==a.status||"viewer"===a.kind?null:(0,b.jsxs)("span",{"data-testid":"fleet-runs-on",className:"flex min-w-0 items-center gap-3 max-sm:flex-wrap max-sm:gap-y-1",children:[(0,b.jsx)(bT.LocationTag,{kind:"operator"===a.kind&&null!==a.location?"DEVICE":a.location?.kind??null,description:a.location?.description,harness:"operator"===a.kind?"console":a.harness,size:"sm",className:"shrink-0"}),"agent"===a.kind&&null!==a.model?(0,b.jsx)(bU,{model:a.model,now:c}):null]})}function cf({ship:a,squadron:c,labels:d}){let e=c?.role===null?void 0:c,f=void 0===d?[]:(0,ai.chipsOf)(a,d).filter(a=>void 0===e||("squadron"!==a.key||a.value!==e.squadronId)&&("squadron-role"!==a.key||a.value!==e.role));return void 0===e&&0===f.length?null:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 overflow-hidden",children:[void 0===e?null:(0,b.jsx)("span",{className:"min-w-0 shrink",title:null===e.role?e.squadronId:`${e.squadronId} \xb7 ${e.role}`,children:(0,b.jsx)(bW.SquadronTag,{squadronId:e.squadronId,size:"sm"})}),(0,b.jsx)(aE,{chips:f,width:22*(void 0===e),testId:"fleet-labels",href:`/ships/${a.id}`})]})}function cg({ship:a,now:c,next:d}){let e="agent"===a.kind&&"crewed"===a.status;return(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 max-sm:flex-col max-sm:items-stretch [&:has(button)>[data-testid=fleet-report]]:hidden",children:[e?(0,b.jsx)(bV.ReportLine,{report:a.report,now:c,variant:"row",isTimeInTitle:!0,testId:"fleet-report"}):null,d]})}function ch({ships:a,view:c,onViewChange:d,size:e,squadronsOf:f,labels:h}){let i=ca((0,w.useConsoleConstants)().crewStatuses),{filters:j}=c,k=ap(a),m="sm"===e?"fleet-show-retired":"fleet-show-retired-touch",n=a=>{d({...c,filters:{...j,...a}})},o="touch"===e;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(bZ,{label:"Status",items:ar,picked:j.status,onPickedChange:a=>{n({status:a.filter(b9)})},size:e,testId:o?void 0:"fleet-filter-status"}),(0,b.jsx)(bZ,{label:"Crew request",items:i,picked:j.crewRequest,onPickedChange:a=>{n({crewRequest:a.filter(a=>cb(a,i))})},size:e,testId:o?void 0:"fleet-filter-crew-request"}),(0,b.jsx)(bZ,{label:"Kind",items:ac,picked:j.kind,onPickedChange:a=>{n({kind:a.filter(ae)})},size:e,testId:o?void 0:"fleet-filter-kind"}),(0,b.jsx)(bZ,{label:"Type",items:cc(ao(a,j.isRetiredShown)),picked:j.type,onPickedChange:a=>{n({type:a})},size:e,valueClassName:"font-mono",testId:o?void 0:"fleet-filter-type"}),f&&(0,b.jsx)(bZ,{label:"Squadron",items:cc(aq(f)),picked:j.squadron,onPickedChange:a=>{n({squadron:a})},size:e,testId:o?void 0:"fleet-filter-squadron"}),void 0===h||o?null:(0,b.jsx)(b5,{groups:(0,ai.filterGroupsOf)(h),picked:(0,ai.pickedChips)(j.labelValueIds,h),onPick:a=>{d(b8(c,[...j.labelValueIds,a]))}}),au(j).length>0&&!o?(0,b.jsx)(g.Button,{variant:"ghost",size:"xs","data-testid":"fleet-filters-clear",onClick:()=>{d({...c,filters:ak.filters})},children:"Clear filters"}):null,(0,b.jsxs)("div",{className:(0,l.classNames)("inline-flex items-center gap-2",o?"py-2":"sm:ml-auto"),children:[(0,b.jsx)(az.Switch,{id:m,"data-testid":o?void 0:"fleet-show-retired",checked:j.isRetiredShown,onCheckedChange:a=>{n({isRetiredShown:a})}}),(0,b.jsxs)(ax.Label,{htmlFor:m,className:(0,l.classNames)("font-normal text-muted-foreground",o?"text-body-touch":"text-meta"),children:["Show retired (",k,")"]})]})]})}function ci({ships:a,view:c,onViewChange:d,shownCount:e,squadronsOf:f,labels:h}){let i=ca((0,w.useConsoleConstants)().crewStatuses),{filters:j}=c,k=a=>{d({...c,filters:{...j,...a}})},l=as(j),m=ap(a);return(0,b.jsxs)(ay.Sheet,{children:[(0,b.jsx)(ay.SheetTrigger,{render:(0,b.jsx)(g.Button,{size:"touch",isIconOnly:!0,"aria-label":l>0?`Filter ships, ${String(l)} active`:"Filter ships","data-testid":"fleet-filters-open",icon:(0,b.jsx)(_,{}),className:"relative sm:hidden",children:l>0?(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute top-1.5 right-1.5 size-2 rounded-full bg-primary"}):null})}),(0,b.jsxs)(ay.SheetContent,{side:"bottom",children:[(0,b.jsxs)(ay.SheetHeader,{className:"flex-row items-center justify-between",children:[(0,b.jsx)(ay.SheetTitle,{children:"Filter ships"}),(0,b.jsx)(g.Button,{variant:"ghost",size:"touch","data-testid":"fleet-filters-reset",onClick:()=>{d({...c,filters:ak.filters})},children:"Reset"})]}),(0,b.jsxs)(ay.SheetBody,{className:"flex flex-col gap-4 pb-4",children:[(0,b.jsx)(b$,{label:"Status",layout:"segments",items:ar,picked:j.status,onPickedChange:a=>{k({status:a.filter(b9)})}}),(0,b.jsx)(b$,{label:"Crew request",items:i,picked:j.crewRequest,onPickedChange:a=>{k({crewRequest:a.filter(a=>cb(a,i))})}}),(0,b.jsx)(b$,{label:"Kind",items:ac,picked:j.kind,onPickedChange:a=>{k({kind:a.filter(ae)})},testId:"fleet-filter-kind-touch"}),(0,b.jsx)(b$,{label:"Type",allLabel:"All types",items:cc(ao(a,j.isRetiredShown)),picked:j.type,onPickedChange:a=>{k({type:a})}}),f&&(0,b.jsx)(b$,{label:"Squadron",items:cc(aq(f)),picked:j.squadron,onPickedChange:a=>{k({squadron:a})}}),void 0===h?null:(0,b.jsx)(b7,{groups:(0,ai.filterGroupsOf)(h),picked:(0,ai.pickedChips)(j.labelValueIds,h),onPick:a=>{d(b8(c,[...j.labelValueIds,a]))},onRemove:a=>{d(b8(c,j.labelValueIds.filter(b=>b!==a)))}}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 py-1",children:[(0,b.jsxs)(ax.Label,{htmlFor:"fleet-show-retired-touch",className:"text-body-touch font-normal",children:["Show retired ships ",(0,b.jsxs)("span",{className:"text-muted-foreground",children:["(",m,")"]})]}),(0,b.jsx)(az.Switch,{id:"fleet-show-retired-touch",checked:j.isRetiredShown,onCheckedChange:a=>{k({isRetiredShown:a})}})]}),(0,b.jsx)(ay.SheetClose,{render:(0,b.jsx)(g.Button,{size:"touch","data-testid":"fleet-filters-apply"}),children:1===e?"Show 1 ship":`Show ${String(e)} ships`})]})]})]})}function cj({view:a,onViewChange:c,labels:d}){let e=au(a.filters),f=void 0===d?[]:(0,ai.pickedChips)(a.filters.labelValueIds,d);return 0===e.length&&0===f.length?null:(0,b.jsxs)("div",{className:"flex w-full flex-wrap items-center gap-1.5 sm:hidden","data-testid":"fleet-filter-chips",children:[e.map(a=>(0,b.jsx)(av.Badge,{variant:"outline",className:"max-w-full truncate",children:a},a)),f.map(d=>(0,b.jsx)(aD.LabelChip,{chip:d,onRemove:()=>{c(b8(a,a.filters.labelValueIds.filter(a=>a!==d.valueId)))}},d.valueId)),(0,b.jsx)(g.Button,{variant:"ghost",size:"touch",onClick:()=>{c({...a,filters:ak.filters})},children:"Clear filters"})]})}function ck({ships:a,view:c,onViewChange:d,shownCount:e,squadronsOf:f,labels:g}){return(0,b.jsxs)("div",{"data-slot":"fleet-toolbar",className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("div",{className:"w-60 max-sm:min-w-0 max-sm:flex-1",children:(0,b.jsx)(aw.Input,{type:"search","aria-label":"Search ships by name or type",placeholder:"Search ships by name","data-testid":"fleet-search",value:c.query,onChange:a=>{d({...c,query:a.target.value})},leadingIcon:(0,b.jsx)(Z.Search,{}),className:"h-(--size-control-sm) text-meta max-sm:h-(--size-control-touch) max-sm:text-input-touch"})}),(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 max-sm:hidden sm:flex-1",children:(0,b.jsx)(ch,{ships:a,view:c,onViewChange:d,squadronsOf:f,labels:g,size:"sm"})}),(0,b.jsx)(ci,{ships:a,view:c,onViewChange:d,shownCount:e,squadronsOf:f,labels:g}),(0,b.jsx)(cj,{view:c,onViewChange:d,labels:g}),(0,b.jsxs)("p",{"aria-live":"polite",className:"text-meta text-muted-foreground tabular-nums max-sm:w-full",children:[e," of ",a.length," ships"]})]})}function cl({ship:a}){return(0,b.jsx)(bX.ShipName,{name:a.name,shipId:a.id,isSuffixShown:"retired"===a.status,href:"operator"===a.kind?"/inbox":`/ships/${a.id}`,className:"[&_a]:max-sm:whitespace-normal [&_a]:max-sm:break-all [&_a]:max-sm:text-body-touch"})}let cm=[{column:"ship",head:"Ship"},{column:"status",head:"Status"},{column:"report",head:"Report"},{column:"squadronAndLabels",head:"Squadron and labels"},{column:"runsOn",head:"Runs on"},{column:"seen",head:"Seen"}];function cn({ships:a,highlightedShipIds:c,now:d,renderRowActions:e,squadronsOf:f,labels:g,pluginShipIds:h,sort:i,onSort:j}){return(0,b.jsx)("div",{className:"max-sm:hidden",children:(0,b.jsxs)(aA.Table,{"aria-label":"Ships",className:"min-w-320 table-fixed",children:[(0,b.jsxs)("colgroup",{children:[(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-40"}),(0,b.jsx)("col",{className:"w-64"}),(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-80"}),(0,b.jsx)("col",{className:"w-12"}),(0,b.jsx)("col",{className:"w-12"})]}),(0,b.jsx)(aA.TableHeader,{children:(0,b.jsxs)(aA.TableRow,{children:[cm.map(({column:a,head:c})=>void 0===j?(0,b.jsx)(aA.TableHead,{children:c},a):(0,b.jsx)(aA.TableSortHead,{"data-testid":`fleet-sort-${a}`,direction:i?.column===a?i.direction:null,onSort:()=>{j(a)},children:c},a)),(0,b.jsx)(aA.TableHead,{children:(0,b.jsx)("span",{className:"sr-only",children:"Actions"})})]})}),(0,b.jsx)(aA.TableBody,{children:a.map(a=>(0,b.jsxs)(aA.TableRow,{"data-testid":`fleet-row-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"h-12",children:[(0,b.jsx)(aA.TableCell,{children:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 whitespace-nowrap",children:[(0,b.jsx)(cl,{ship:a}),(0,b.jsx)(cd,{ship:a,squadron:f?.get(a.id),isPluginShip:h?.has(a.id)??!1})]})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(O.StatusBadge,{status:a.status})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(cg,{ship:a,now:d,next:e?.(a,"next")})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(cf,{ship:a,squadron:f?.get(a.id),labels:g})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(ce,{ship:a,now:d})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(bS,{seenAt:a.lastSeenAt,now:d,testId:"fleet-last-seen"})}),(0,b.jsx)(aA.TableCell,{className:"w-10 text-right",children:e?.(a,"table")})]},a.id))})]})})}function co({ships:a,highlightedShipIds:c,now:d,renderRowActions:e,squadronsOf:f,pluginShipIds:g}){return(0,b.jsx)("ul",{"aria-label":"Ships",className:"overflow-hidden rounded-lg border border-border bg-card sm:hidden",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":`fleet-card-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"flex items-start gap-2 border-b border-border px-3.5 py-3 last:border-0 data-new:animate-highlight",children:[(0,b.jsxs)("div",{className:"flex min-w-0 grow flex-col gap-1.5",children:[(0,b.jsx)("div",{className:"text-body-touch",children:(0,b.jsx)(cl,{ship:a})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(O.StatusBadge,{status:a.status}),(0,b.jsx)(cd,{ship:a,squadron:f?.get(a.id),isPluginShip:g?.has(a.id)??!1})]}),(0,b.jsx)(cf,{ship:a,squadron:f?.get(a.id)}),(0,b.jsx)(cg,{ship:a,now:d,next:e?.(a,"next")}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1",children:[(0,b.jsx)(ce,{ship:a,now:d}),(0,b.jsx)(bS,{seenAt:a.lastSeenAt,now:d})]})]}),e?.(a,"phone")]},a.id))})}function cp({ships:a,view:c,onViewChange:d,state:e,error:f,highlightedShipIds:h,now:i,renderRowActions:j,emptyAction:k,squadronsOf:l,labels:m,pluginShipIds:n}){var o,p,q;let r,s,t;if("loading"===e)return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"loading",className:"flex flex-col gap-3",children:[(0,b.jsx)(aF.LoadingSkeleton,{variant:"table",rows:6,label:"Loading the fleet",className:"max-sm:hidden"}),(0,b.jsx)(aF.LoadingSkeleton,{variant:"list",rows:5,label:"Loading the fleet",className:"sm:hidden"})]});if("error"===e)return(0,b.jsx)(aC.InlineError,{variant:"page",title:"Couldn’t load the fleet",description:"This page couldn’t reach the fleet server. Check that the server is running and reachable from this browser, then try again.",detail:f?.detail,retryNote:f?.retryNote,onRetry:f?.onRetry});let u={highlightedShipIds:h,now:i,renderRowActions:j,squadronsOf:l,pluginShipIds:n};if(a.every(a=>"operator"===a.kind||"retired"===a.status)){let c=a.filter(a=>"operator"===a.kind);return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"empty",className:"flex flex-col gap-3",children:[(0,b.jsx)(cn,{ships:c,labels:m,...u}),(0,b.jsx)(co,{ships:c,...u}),(0,b.jsx)(aB.EmptyState,{icon:(0,b.jsx)(N.Ship,{}),title:"No ships besides argo yet",description:"argo is your own ship: messages to the operator land in its inbox. Commission a ship to add an agent to the fleet.",action:k})]})}let v=(s=null===(o={...c,squadronsOf:l,pluginShipIds:n}).sort?an:(p=o.sort,q=o.squadronsOf,r=("ascending"===p.direction?1:-1)*("seen"===p.column?-1:1),(a,b)=>{let c=ag(a,{column:p.column,squadronsOf:q}),d=ag(b,{column:p.column,squadronsOf:q});return void 0===c||void 0===d?Number(void 0===c)-Number(void 0===d):r*c.localeCompare(d,void 0,{sensitivity:"base"})}),a.filter(a=>{let b;return(""===(b=o.query.trim().toLowerCase())||a.name.toLowerCase().includes(b)||a.type.toLowerCase().includes(b))&&function(a,b){let{filters:c,squadronsOf:d,pluginShipIds:e=al}=b;if("retired"===a.status&&!c.isRetiredShown)return!1;let f="retired"===a.status?void 0:a.status;return am(c.squadron,d?.get(a.id)?.squadronId)&&am(c.status,f)&&am(c.crewRequest,(0,aj.crewRequestKey)((0,ah.crewRequestStage)(a)))&&am(c.kind,"operator"===a.kind||"viewer"===a.kind?"console":e.has(a.id)?"plugin":"trierarch"===a.type?"trierarch":(null===a.harness?void 0:ad[a.harness])??"other")&&am(c.type,a.type)&&(0,ai.carriesEvery)(a,c.labelValueIds)}(a,o)}).toSorted((a,b)=>s(a,b)||a.name.localeCompare(b.name)||a.id.localeCompare(b.id))),w=c.query.trim();return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"ready",className:"flex flex-col gap-3",children:[(0,b.jsx)(ck,{ships:a,view:c,onViewChange:d,shownCount:v.length,squadronsOf:l,labels:m}),void 0===m?null:(0,b.jsx)(b6,{groups:(0,ai.filterGroupsOf)(m),picked:(0,ai.pickedChips)(c.filters.labelValueIds,m),onPick:a=>{d(b8(c,[...c.filters.labelValueIds,a]))},onRemove:a=>{d(b8(c,c.filters.labelValueIds.filter(b=>b!==a)))},onClear:()=>{d(b8(c,[]))}}),0===v.length?(0,b.jsx)(aB.EmptyState,{variant:"no-results",title:""===w?"No ships match these filters.":`No ships match “${w}”.`,action:(0,b.jsx)(g.Button,{size:"xs","data-testid":"fleet-clear-filters",onClick:()=>{d({...ak,sort:c.sort})},children:(t=as(c.filters)>0,""===w?"Clear filters":t?"Clear search and filters":"Clear search")})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(cn,{ships:v,labels:m,sort:c.sort,onSort:a=>{var b;d({...c,sort:(b=c.sort,b?.column!==a?{column:a,direction:"ascending"}:"ascending"===b.direction?{column:a,direction:"descending"}:null)})},...u}),(0,b.jsx)(co,{ships:v,...u})]})]})}function cq({view:a,onViewChange:c,newShipIds:d,renderRowActions:e}){let f=(0,o.useFleetSnapshot)(),g=(0,q.useNow)(),h=(0,E.useSquadrons)(),i=(0,o.useLabelContext)(),j=(0,U.usePluginShipIds)();return(0,b.jsx)("section",{"aria-label":"Fleet",className:"flex flex-col gap-3",children:(0,b.jsx)(cp,{ships:f.data??[],view:a,onViewChange:c,state:f.isPending?"loading":f.isError?"error":"ready",error:{detail:f.error?.message,onRetry:()=>{f.refetch()}},highlightedShipIds:d,now:g,renderRowActions:e,squadronsOf:h.data?(0,V.shipsInSquadrons)(h.data):void 0,labels:i,pluginShipIds:j})})}var cr=a.i(53805),cs=a.i(71027),ct=a.i(21521),cu=a.i(91003),cv=a.i(38023),cw=a.i(73224),cx=a.i(65563),cy=a.i(67336),cz=a.i(10572),cA=a.i(34159);a.s(["OverviewPage",0,function({view:a,isCommissionAsked:i}){let j=(0,e.useRouter)(),k=(0,o.useFleetSnapshot)(),l=(0,cy.useLiveFleet)(),m=(0,cv.useConsoleFrame)(),n=(0,C.messageLimitReached)((0,A.useFleetLimits)().data),p=(0,B.useHostedAccountUrl)(),q=(0,cx.useAccess)(),r=(0,cA.usePluginNav)(),[u,v]=(0,f.useState)(!1),[w,x]=(0,f.useOptimistic)(a);(0,cz.useSignInWhenSessionEnds)([k.error,l.error]);let y=a=>{let b=(function(a){let b=new URLSearchParams;for(let[c,d]of(""!==a.query&&b.set("q",a.query),[["status",a.filters.status],["crew",a.filters.crewRequest],["kind",a.filters.kind],["type",a.filters.type],["squadron",a.filters.squadron]]))for(let a of d)b.append(c,a);for(let c of(a.filters.isRetiredShown&&b.set("retired","1"),a.filters.labelValueIds))b.append("label",c);return null!==a.sort&&(b.set("sort",a.sort.column),"descending"===a.sort.direction&&b.set("order","desc")),b})(a).toString();(0,f.startTransition)(()=>{x(a),j.replace(""===b?"/":`/?${b}`,{scroll:!1})})};return(0,b.jsxs)(cu.ListPage,{...m,title:"Fleet overview",description:k.data?function(a){let b=s(a.ships).length,c=a.ships.filter(a=>"agent"===a.kind&&"retired"===a.status).length;if(0===b&&0===c)return a.canCommission?"Only argo so far. Ships you commission appear here.":"Only argo so far.";let d=0===c?"":`, ${String(c)} retired`;return`${1===b?"1 active ship":`${String(b)} active ships`} and argo${d}. Changes appear as they happen.`}({ships:k.data,canCommission:q.canManage}):"Loading your fleet",primaryAction:(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 max-sm:flex-col max-sm:items-stretch",children:[(0,b.jsx)(g.Button,{render:(0,b.jsx)(d.default,{href:"/labels"}),nativeButton:!1,icon:(0,b.jsx)(c.Tag,{}),"data-testid":"overview-labels",children:q.canDefineLabels?"Manage labels":"View labels"}),q.canManage?(0,b.jsx)(I,{isOpen:u||i,onOpenChange:b=>{v(b),!b&&i&&y(a)}}):null]}),live:l.live,children:[(0,b.jsx)(cw.FleetSegments,{active:"ships",needsCrewCount:r.needsCrewCount}),void 0===n?null:(0,b.jsx)(ct.LimitNotice,{...(0,C.messageLimitNotice)(n),accountUrl:p,testId:"overview-message-limit"}),(0,b.jsx)(T,{}),(0,b.jsx)(t,{}),(0,b.jsx)(cq,{view:w,onViewChange:y,newShipIds:l.newShipIds,renderRowActions:(a,c)=>(0,b.jsx)(cr.ShipActions,{ship:a,layout:"table"===c?"menu":"phone"===c?"sheet":"next",compose:h.ComposeMessage,crewLineFlow:cs.NewCrewLineFlow})})]})}],59446)}];
1
+ module.exports=[59446,a=>{"use strict";var b=a.i(87924),c=a.i(31247),d=a.i(38246),e=a.i(50944),f=a.i(72131),g=a.i(12068),h=a.i(86002),i=a.i(56987),j=a.i(79520),k=a.i(88931),l=a.i(80487);let m={ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg"};function n({label:a,shortLabel:c,value:e,detail:f,href:g,icon:h,tone:i,testId:j}){return(0,b.jsxs)(d.default,{href:g,"data-testid":j,className:"flex min-w-0 flex-col gap-2 rounded-lg border border-border bg-card px-4.5 py-4 shadow-sm transition-colors duration-(--duration-fast) hover:bg-accent max-sm:gap-1.5 max-sm:rounded-xl max-sm:px-3.5 max-sm:py-3",children:[(0,b.jsxs)("span",{className:"flex items-center justify-between gap-2 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)("span",{className:"max-sm:hidden",children:a}),(0,b.jsx)("span",{className:"sm:hidden",children:c??a}),(0,b.jsx)("span",{className:(0,l.classNames)("flex size-6.5 shrink-0 items-center justify-center rounded-md border max-sm:size-5.5",m[i]),children:(0,b.jsx)(h,{"aria-hidden":!0,className:"size-3.5"})})]}),(0,b.jsx)("span",{className:"text-[28px] leading-none font-semibold tracking-tight tabular-nums text-foreground max-sm:text-2xl",children:e}),(0,b.jsx)("span",{className:"truncate text-meta text-muted-foreground",children:f})]})}var o=a.i(90146),p=a.i(34564),q=a.i(68450),r=a.i(72872);function s(a){return a.filter(a=>"agent"===a.kind&&"retired"!==a.status)}function t(){var a;let c,d,e,f,g=(0,o.useFleetSnapshot)(),h=(0,p.useFleetHealth)(),l=(0,q.useNow)();if(!g.data)return null;let m=(e=(d=(c=s((a={ships:g.data,stuck:h.data?.stuck??[],now:l}).ships)).filter(a=>"awaitingCrew"===a.status)).flatMap(a=>null===a.awaitingCrewSince?[]:[{name:a.name,since:new Date(a.awaitingCrewSince)}]).sort((a,b)=>a.since.getTime()-b.since.getTime())[0],f=a.stuck.map(a=>new Date(a.oldestSince)).sort((a,b)=>a.getTime()-b.getTime())[0],{activeCount:c.length,crewedCount:c.filter(a=>"crewed"===a.status).length,awaitingCount:d.length,longestWait:e&&{name:e.name,wait:(0,r.duration)(e.since,a.now)},oldestStuck:f&&(0,r.duration)(f,a.now)});return 0===m.activeCount?null:(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-4 max-sm:grid-cols-2 max-sm:gap-2.5","data-testid":"overview-metrics",children:[(0,b.jsx)(n,{label:"Ships crewed",shortLabel:"Crewed",value:m.crewedCount,detail:`of ${String(m.activeCount)} active ships`,href:"/?status=crewed",icon:k.UserCheck,tone:"ok",testId:"overview-crewed"}),(0,b.jsx)(n,{label:"Awaiting crew",value:m.awaitingCount,detail:m.longestWait?`Longest wait: ${m.longestWait.name}, ${m.longestWait.wait}`:"Every active ship is crewed",href:"/?status=awaitingCrew",icon:i.CircleDashed,tone:"waiting",testId:"overview-awaiting"}),(0,b.jsx)(n,{label:"Stuck",value:(0,p.stuckCountOf)(h.data)??0,detail:m.oldestStuck?`Deliveries stuck, oldest ${m.oldestStuck}`:"Delivering",href:"/fleet-health",icon:j.OctagonAlert,tone:"attention",testId:"overview-stuck"})]})}var u=a.i(3512),v=a.i(34301),w=a.i(1851),x=a.i(2955),y=a.i(82611),z=a.i(88191),A=a.i(64906),B=a.i(47468),C=a.i(82252),D=a.i(54763),E=a.i(12540),F=a.i(93454);let G=(0,v.lazyDialog)(()=>a.A(59777).then(a=>a.CommissionDialog),a=>a.isOpen),H=(0,v.lazyDialog)(()=>a.A(68359).then(a=>a.StartingPromptDialog),a=>a.isOpen);function I({isOpen:a,onOpenChange:c}){var d;let e,h=(0,o.useFleetSnapshot)(),i=(0,A.useFleetLimits)(),j=(0,B.useHostedAccountUrl)(),k=(0,o.useCommissionShip)(),l=(0,o.useRequestCrew)(),m="connected"===(0,F.useTrierarchPluginConnection)(),n=(0,F.useMachines)(),p=(0,D.useSquadronsConnection)(),q=(0,E.useSquadrons)(),[r,s]=(0,f.useState)(!1),[t,v]=(0,f.useState)(null),J=(0,x.offersOf)(n.data??[]),K=(0,o.useLabelContext)(),{shipLabelsMax:L,fleetScopes:M}=(0,w.useConsoleConstants)(),N=(0,o.useFleetScopes)(),O=void 0===K||void 0===n.data?void 0:(0,y.machineLabelsInputOf)(K,{machines:n.data,shipLabelsMax:L}),P=(0,F.useCrewSettingsCheck)(a&&m?null===t?(0,x.settingsOf)((0,x.defaultValues)(J)):t:void 0),Q=(h.data??[]).filter(a=>"retired"!==a.status),R=(a,b)=>{k.mutate(a,{onSuccess:({shipId:d})=>{c(!1);let e=m&&void 0!==b;e||s(!0),void 0!==b&&l.mutate({shipId:d,settings:b.settings},{onSuccess:()=>{e&&(0,z.showToast)({title:`${a.name} commissioned, crew requested`,description:"The trierarch plugin assigns a trierarch that fits.",tone:"success"})},onError:b=>{(0,z.showToast)({title:`Couldn’t request a crew for ${a.name}`,description:`${b.message} The ship is commissioned; request a crew on its page.`,tone:"error"})}})}})};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Button,{variant:"primary",icon:(0,b.jsx)(u.Plus,{}),"data-testid":"fleet-commission",onClick:()=>{k.reset(),v(null),c(!0)},children:"Commission ship"}),(0,b.jsx)(G,{activeShips:Q,isOpen:a,onOpenChange:c,isPending:k.isPending,error:k.error?.message,shipLimit:(0,C.shipLimitReached)(i.data),accountUrl:j,scopeGroups:void 0===N.data?void 0:(d=N.data,e=new Map(d.filter(({declaredBy:a})=>null===a).flatMap(({scopes:a})=>a.map(({scope:a,description:b})=>[a,b]))),[{title:"Fleet access",namespace:null,scopes:M.flatMap(a=>{let b=e.get(a);return void 0===b?[]:[{scope:a,description:b}]})},...d.flatMap(({namespace:a,declaredBy:b,scopes:c})=>null===b||0===c.length?[]:[{title:b.name,namespace:a,scopes:c.map(({scope:a,description:b})=>({scope:a,description:b}))}])]),...m?{crewRequest:{offers:J,squadrons:"connected"===p?(q.data??[]).filter(a=>"disbanded"!==a.state).map(a=>a.id):void 0,...void 0===O?{}:{machineLabels:O},check:P.data,onSettingsChange:v}}:{},onSubmit:(a,b)=>{let c={...a,idempotencyKey:crypto.randomUUID()};m&&void 0!==b?P.checkNow().catch(()=>void 0).then(a=>{a?.kind!=="refused"&&R(c,b)}).catch(()=>void 0):R(c,b)}}),(0,b.jsx)(H,{shipName:k.variables?.name??"",state:"shown",prompt:k.data?.prompt??void 0,crewLines:k.data?.crewLines??void 0,isOpen:r&&void 0!==k.data,onOpenChange:a=>{a||(s(!1),k.reset())},onConfirm:()=>void 0})]})}var J=a.i(64831);let K={name:"infinity",size:24,node:[["path",{d:"M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8",key:"18ogeb"}]]};K.node;let L=(0,J.default)(K);var M=a.i(74746),N=a.i(98238),O=a.i(23063);let P={ships:{label:"Ships",unit:"ships",Icon:N.Ship},messages:{label:"Messages today",unit:"messages",Icon:M.Send}},Q={below:"bg-primary",at:"bg-tone-waiting-fg",over:"bg-tone-attention-fg"},R={at:"at-limit",over:"over-limit"};function S({kind:a,count:c,limit:d,resetsAt:e}){let{label:f,unit:g,Icon:h}=P[a],i=(0,C.meterState)({count:c,limit:d}),j=R[i],k=(0,C.meterCaption)({count:c,limit:d}),m=null===d?0:0===d?1:Math.min(c/d,1);return(0,b.jsxs)("div",{"data-testid":`limit-meter-${a}`,"data-state":i,className:"flex flex-col gap-2 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-meta font-medium text-muted-foreground",children:[(0,b.jsx)(h,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),f]}),void 0===j?null:(0,b.jsx)(O.StatusBadge,{status:j})]}),(0,b.jsxs)("p",{className:"flex items-baseline gap-1.5",children:[(0,b.jsx)("span",{className:"text-metric font-semibold tabular-nums",children:(0,C.meterCount)(c)}),(0,b.jsx)("span",{className:"text-body text-muted-foreground",children:null===d?g:`of ${(0,C.meterCount)(d)} ${g}`})]}),null===d?(0,b.jsxs)("p",{className:"inline-flex items-center gap-1.5 text-meta text-muted-foreground",children:[(0,b.jsx)(L,{"aria-hidden":!0,className:"size-(--size-icon-sm)"}),"No limit"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{role:"meter","aria-label":`${f}: ${String(c)} of ${String(d)}`,"aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":d,className:"block h-1.5 overflow-hidden rounded-full bg-secondary",children:(0,b.jsx)("span",{className:(0,l.classNames)("block h-full rounded-full","none"===i?void 0:Q[i]),style:{width:`${String(100*m)}%`}})}),(0,b.jsxs)("p",{"data-testid":`limit-meter-${a}-caption`,className:"text-caption text-muted-foreground",children:[k,void 0===e?null:` \xb7 resets at ${(0,C.resetTime)(e)}`]})]})]})}function T(){let a=(0,A.useFleetLimits)().data,c=(0,B.useHostedAccountUrl)();return(0,C.hasLimits)(a)?(0,b.jsxs)("section",{"aria-labelledby":"overview-limits-title","data-testid":"overview-limits",className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("h2",{id:"overview-limits-title",className:"text-body font-semibold",children:"Limits"}),void 0===c?null:(0,b.jsx)("a",{href:c,"data-testid":"overview-limits-view",className:"text-meta font-medium text-primary underline underline-offset-2",children:"View limits"})]}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(S,{kind:"ships",count:a.ships.count,limit:a.ships.limit}),(0,b.jsx)(S,{kind:"messages",count:a.dailyMessages.count,limit:a.dailyMessages.limit,resetsAt:a.dailyMessages.resetsAt})]})]}):null}var U=a.i(45065),V=a.i(8219),W=a.i(55681),X=a.i(25039),Y=a.i(71094),Z=a.i(33540);let $={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]};$.node;let _=(0,J.default)($);var aa=a.i(87005);let ab=["console","claudeCode","codex","trierarch","plugin","other"],ac={console:"Console",claudeCode:"Claude Code",codex:"Codex",trierarch:"Trierarch",plugin:"Plugin",other:"Other"},ad={"claude-code":"claudeCode",codex:"codex"};function ae(a){return ab.some(b=>b===a)}let af={awaitingCrew:"Awaiting crew",crewed:"Crewed",retired:"Retired"};function ag(a,{column:b,squadronsOf:c}){switch(b){case"ship":return a.name;case"status":return af[a.status];case"report":return"agent"===a.kind&&"crewed"===a.status?a.report?.note??void 0:void 0;case"squadronAndLabels":{let b=c?.get(a.id);if(void 0!==b&&null!==b.role)return b.squadronId;let[d]=a.labels;return void 0===d?void 0:`${d.key}=${d.value}`}case"runsOn":if("crewed"!==a.status||"viewer"===a.kind)return;return"operator"===a.kind?"console":a.harness??void 0;case"seen":return a.lastSeenAt??void 0}}var ah=a.i(6071),ai=a.i(65230),aj=a.i(60271);let ak={query:"",filters:{status:[],crewRequest:[],kind:[],type:[],squadron:[],isRetiredShown:!1,labelValueIds:[]},sort:null},al=new Set;function am(a,b){return 0===a.length||void 0!==b&&a.includes(b)}function an(a,b){return a.kind!==b.kind?"operator"===a.kind?-1:+("operator"===b.kind):0}function ao(a,b){return[...new Set(a.filter(a=>b||"retired"!==a.status).map(a=>a.type))].toSorted((a,b)=>a.localeCompare(b))}function ap(a){return a.filter(a=>"retired"===a.status).length}function aq(a){return[...new Set([...a.values()].map(a=>a.squadronId))].toSorted((a,b)=>a.localeCompare(b))}let ar={crewed:"Crewed",awaitingCrew:"Awaiting crew"};function as(a){return au(a).length+a.labelValueIds.length}function at(a,b){return 0===b.length?void 0:`${a}: ${b.join(", ")}`}function au(a){return[at("Status",a.status.map(a=>ar[a])),at("Crew request",a.crewRequest.map(aj.crewRequestKeyWord)),at("Kind",a.kind.map(a=>ac[a])),at("Type",a.type),at("Squadron",a.squadron),a.isRetiredShown?"Retired shown":void 0].filter(a=>void 0!==a)}var av=a.i(76166),aw=a.i(75297),ax=a.i(45098),ay=a.i(4838),az=a.i(45469),aA=a.i(77339),aB=a.i(24173),aC=a.i(40392),aD=a.i(36501);function aE({chips:a,width:c,testId:e,href:f}){if(0===a.length)return null;let{shown:g,folded:h}=0===c?{shown:[],folded:a}:(0,ai.rowChips)(a,c);return(0,b.jsxs)("span",{"data-testid":e,className:"flex min-w-0 items-center gap-1 overflow-hidden",children:[g.map((a,c)=>(0,b.jsx)(aD.LabelChip,{chip:a,className:0===c?"min-w-0 shrink":void 0},a.valueId)),0===h.length?null:void 0===f?(0,b.jsxs)("span",{title:h.map(ai.chipTitleOf).join("; "),className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums",children:["+",h.length,(0,b.jsx)("span",{className:"sr-only",children:" more labels"})]}):(0,b.jsxs)(d.default,{href:f,title:h.map(ai.chipTitleOf).join("; "),"aria-label":`View ${h.length} more labels`,className:"inline-flex h-5.5 shrink-0 items-center rounded-sm bg-secondary px-1.5 text-caption font-medium text-foreground tabular-nums hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:["+",h.length]})]})}var aF=a.i(50808);let aG={name:"signal",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}],["path",{d:"M17 20V8",key:"1tkaf5"}],["path",{d:"M22 4v16",key:"sih9yq"}]]};aG.node;let aH=(0,J.default)(aG),aI={name:"signal-low",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}]]};aI.node;let aJ=(0,J.default)(aI),aK={name:"signal-medium",size:24,node:[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}]]};aK.node;let aL=(0,J.default)(aK);a.s([],65156),a.i(65156);var aM=a.i(22050),aN=a.i(24715),aO=a.i(57738),aP=a.i(54662);let aQ=f.createContext(void 0);function aR(a){let b=f.useContext(aQ);if(void 0===b&&!a)throw Error((0,aP.default)(72));return b}var aS=a.i(68536),aT=a.i(54401),aU=a.i(26476),aV=a.i(30116),aW=a.i(14209);function aX(a){return null!=a&&null!=a.clientX}var aY=a.i(38939),aZ=a.i(94552),a$=a.i(84204),a_=a.i(32318),a0=a.i(17498),a1=a.i(7436),a2=a.i(14239),a3=a.i(17017),a4=a.i(51943);let a5={...a3.popupStoreSelectors,disabled:a=>a.disabled,instantType:a=>a.instantType,isInstantPhase:a=>a.isInstantPhase,trackCursorAxis:a=>a.trackCursorAxis,disableHoverablePopup:a=>a.disableHoverablePopup,lastOpenChangeReason:a=>a.openChangeReason,closeOnClick:a=>a.closeOnClick,closeDelay:a=>a.closeDelay,adaptiveOrigin:a=>a.adaptiveOrigin};class a6 extends a0.ReactStore{constructor(a,b,c){const d=new a4.PopupTriggerMap;super(a7(a,d,b,c),a8(d),a5)}setOpen=(a,b)=>{(0,a$.applyPopupOpenChange)(this,a,b,{extraState:{openChangeReason:b.reason}})};cancelPendingOpen(a){this.state.floatingRootContext.dispatchOpenChange(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.triggerPress,a))}}function a7(a,b,c,d=!1){return{...(0,a3.createInitialPopupStoreState)(b,c,d),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,adaptiveOrigin:void 0,...a}}function a8(a){return{popupRef:f.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:a}}let a9=(0,aM.fastComponent)(function(a){let{disabled:c=!1,defaultOpen:d=!1,open:e,disableHoverablePopup:g=!1,trackCursorAxis:h="none",actionsRef:i,onOpenChange:j,onOpenChangeComplete:k,handle:l,triggerId:m,defaultTriggerId:n=null,children:o}=a,p=(0,a$.usePopupRootStore)((a,b)=>new a6({open:d,openProp:e,activeTriggerId:n,triggerIdProp:m},a,b));p.useControlledProp("openProp",e),p.useControlledProp("triggerIdProp",m),p.useContextCallback("onOpenChange",j),p.useContextCallback("onOpenChangeComplete",k);let q=p.useState("open"),r=!c&&q,s=p.useState("activeTriggerId"),t=p.useState("mounted"),u=p.useState("payload");p.useSyncedValues({trackCursorAxis:h,disableHoverablePopup:g,disabled:c}),(0,a$.useImplicitActiveTrigger)(p,{closeOnActiveTriggerUnmount:!0});let{forceUnmount:v,transitionStatus:w}=(0,a$.useOpenStateTransitions)(r,p),x=p.useState("isInstantPhase"),y=p.useState("instantType"),z=p.useState("lastOpenChangeReason"),A=f.useRef(null);(0,aO.useIsoLayoutEffect)(()=>{q&&c&&p.setOpen(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.disabled))},[q,c,p]),(0,aO.useIsoLayoutEffect)(()=>{"ending"===w&&z===a1.REASONS.none||"ending"!==w&&x?("delay"!==y&&(A.current=y),p.set("instantType","delay")):null!==A.current&&(p.set("instantType",A.current),A.current=null)},[w,x,z,y,p]),(0,aO.useIsoLayoutEffect)(()=>{r&&null==s&&p.set("payload",void 0)},[p,s,r]),f.useImperativeHandle(i,()=>({unmount:v,close:()=>p.setOpen(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.imperativeAction))}),[v,p]);let B=r||t||!c&&"none"!==h;return(0,b.jsxs)(aQ.Provider,{value:p,children:[l&&(0,b.jsx)(a$.PopupHandleAttachment,{handle:l,store:p}),B&&(0,b.jsx)(ba,{store:p,disabled:c,trackCursorAxis:h}),"function"==typeof o?o({payload:u}):o]})});function ba({store:a,disabled:b,trackCursorAxis:c}){let d=a.useState("floatingRootContext"),e=(0,aY.useDismiss)(d,{enabled:!b,referencePress:()=>a.select("closeOnClick")}),g=function(a,b={}){let{enabled:c=!0,axis:d="both"}=b,e="rootStore"in a?a.rootStore:a,g=e.useState("open"),h=e.useState("floatingElement"),i=e.useState("domReferenceElement"),j=e.context.dataRef,k=f.useRef(!1),l=f.useRef(null),[m,n]=f.useState(),[o,p]=f.useState([]),q=(0,aT.useStableCallback)(a=>{e.set("positionReference",a)}),r=(0,aT.useStableCallback)((a,b,c)=>{if(!k.current&&(!j.current.openEvent||aX(j.current.openEvent))){var f,g;let h,k,l;e.set("positionReference",(f=c??i,g={x:a,y:b,axis:d,dataRef:j,pointerType:m},h=null,k=null,l=!1,{contextElement:f||void 0,getBoundingClientRect(){let a=f?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},b="x"===g.axis||"both"===g.axis,c="y"===g.axis||"both"===g.axis,d=["mouseenter","mousemove"].includes(g.dataRef.current.openEvent?.type||"")&&"touch"!==g.pointerType,e=a.width,i=a.height,j=a.x,m=a.y;return null==h&&g.x&&b&&(h=a.x-g.x),null==k&&g.y&&c&&(k=a.y-g.y),j-=h||0,m-=k||0,e=0,i=0,!l||d?(e="y"===g.axis?a.width:0,i="x"===g.axis?a.height:0,j=b&&null!=g.x?g.x:j,m=c&&null!=g.y?g.y:m):l&&!d&&(i="x"===g.axis?a.height:i,e="y"===g.axis?a.width:e),l=!0,{width:e,height:i,x:j,y:m,top:m,right:j+e,bottom:m+i,left:j}}}))}}),s=(0,aT.useStableCallback)(a=>{g?l.current||(r(a.clientX,a.clientY,a.currentTarget),p([])):r(a.clientX,a.clientY,a.currentTarget)}),t=(0,aW.isMouseLikePointerType)(m)?h:g;f.useEffect(()=>{if(!c)return void q(i);if(!t)return;function a(){l.current?.(),l.current=null}let b=(0,aU.getWindow)(h);return!j.current.openEvent||aX(j.current.openEvent)?l.current=(0,aS.addEventListener)(b,"mousemove",function(b){let c=(0,aV.getTarget)(b);(0,aV.contains)(h,c)?a():r(b.clientX,b.clientY)}):q(i),a},[t,c,h,j,i,e,r,q,o]),f.useEffect(()=>()=>{e.set("positionReference",null)},[e]),f.useEffect(()=>{c&&!h&&(k.current=!1)},[c,h]),f.useEffect(()=>{!c&&g&&(k.current=!0)},[c,g]);let u=f.useMemo(()=>{function a(a){n(a.pointerType)}return{onPointerDown:a,onPointerEnter:a,onMouseMove:s,onMouseEnter:s}},[s]);return f.useMemo(()=>c?{reference:u,trigger:u}:{},[c,u])}(d,{enabled:!b&&"none"!==c,axis:"none"===c?void 0:c}),h=f.useMemo(()=>(0,a_.mergeProps)(g.reference,e.reference),[g.reference,e.reference]);return(0,a$.usePopupInteractionProps)(a,{activeTriggerProps:h,inactiveTriggerProps:h,popupProps:e.floating??aN.EMPTY_OBJECT}),null}var bb=a.i(36069),bc=a.i(89862),bd=a.i(4478),be=a.i(26184),bf=a.i(97151),bg=a.i(557);let bh=f.createContext(void 0);var bi=a.i(25003),bj=a.i(85252);let bk=f.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new bb.Timeout,currentIdRef:{current:null},currentContextRef:{current:null}});function bl(a){let{children:c,delay:d,timeoutMs:e=0}=a,g=f.useRef(d),h=f.useRef(d),i=f.useRef(null),j=f.useRef(null),k=(0,bb.useTimeout)();return(0,aO.useIsoLayoutEffect)(()=>{if(h.current=d,!i.current){g.current=d;return}g.current={open:(0,bj.getDelay)(g.current,"open"),close:(0,bj.getDelay)(d,"close")}},[d,i,g,h]),(0,b.jsx)(bk.Provider,{value:f.useMemo(()=>({hasProvider:!0,delayRef:g,initialDelayRef:h,currentIdRef:i,timeoutMs:e,currentContextRef:j,timeout:k}),[e,k]),children:c})}var bm=a.i(84842),bn=a.i(5735),bo=a.i(72077),bp=a.i(63734);let bq="data-base-ui-tooltip-trigger";function br(a){if("composedPath"in a){let b=a.composedPath();for(let a=0;a<b.length;a+=1){let c=b[a];if((0,aU.isElement)(c))return c}}let b=a.target;return(0,aU.isElement)(b)?b:null}let bs=(0,aM.fastComponentRef)(function(a,b){let{render:c,className:d,style:e,handle:g,payload:h,disabled:i,delay:j,closeOnClick:k=!0,closeDelay:l,id:m,...n}=a,o=aR(!0),p=(0,bf.usePopupHandleStore)(g)??o;if(!p)throw Error((0,aP.default)(82));let q=(0,bg.useBaseUiId)(m),r=p.useState("isTriggerActive",q),s=p.useState("isOpenedByTrigger",q),t=p.useState("floatingRootContext"),u=f.useRef(null),v=l??0,{registerTrigger:w,isMountedByThisTrigger:x}=(0,a$.useTriggerDataForwarding)(q,u,p,{payload:h,closeOnClick:k,closeDelay:v}),y=f.useContext(bh),{activeIdRef:z,delayRef:A,isInstantPhase:B,hasProvider:C}=function(a,b={open:!1}){let{open:c}=b,d="rootStore"in a?a.rootStore:a,e=d.useState("floatingId"),{currentIdRef:g,delayRef:h,timeoutMs:i,initialDelayRef:j,currentContextRef:k,hasProvider:l,timeout:m}=f.useContext(bk),[n,o]=f.useState(!1),p=f.useRef(c);return(0,aO.useIsoLayoutEffect)(()=>{p.current=c},[c]),(0,aO.useIsoLayoutEffect)(()=>{function a(){k.current?.setIsInstantPhase(!1),g.current=null,k.current=null,h.current=j.current,m.clear()}if(g.current&&!c&&g.current===e){if(o(!1),i)return m.start(i,()=>{d.select("open")||g.current&&g.current!==e||a()}),()=>{(p.current||g.current!==e)&&m.clear()};a()}},[c,e,g,h,i,j,k,m,d]),(0,aO.useIsoLayoutEffect)(()=>{if(!c)return;let a=k.current,b=g.current;m.clear(),k.current={onOpenChange:d.setOpen,setIsInstantPhase:o},g.current=e,h.current={open:0,close:(0,bj.getDelay)(j.current,"close")},null!==b&&b!==e?(o(!0),a?.setIsInstantPhase(!0),a?.onOpenChange(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.none))):(o(!1),a?.setIsInstantPhase(!1))},[c,e,d,g,h,j,k,m]),(0,aO.useIsoLayoutEffect)(()=>()=>{g.current===e&&(k.current=null,p.current)&&(g.current=null,h.current=j.current,m.clear())},[k,g,h,e,j,m]),f.useMemo(()=>({activeIdRef:g,hasProvider:l,delayRef:h,isInstantPhase:n}),[g,l,h,n])}(t,{open:s}),D=(0,bo.useHoverInteractionSharedState)(t);p.useSyncedValue("isInstantPhase",B);let E=p.useState("disabled"),F=i??E,G=(0,bc.useValueAsRef)(F),H=p.useState("trackCursorAxis"),I=p.useState("disableHoverablePopup"),J=f.useRef(!1),K=(0,bb.useTimeout)(),L=f.useRef(void 0);function M(){return C&&null!=z.current?0:j??y??600}function N(a){let b=u.current;if(!b||!a)return!1;let c=function(a){let b=a;for(;b;){let a=b.closest(`[${bq}]`);if(a)return a;let c=b.getRootNode();b="host"in c&&(0,aU.isElement)(c.host)?c.host:null}return null}(a);return null!==c&&c!==b&&(0,aV.contains)(b,c)}let O=(0,bn.useHoverReferenceInteraction)(t,{enabled:!F,mouseOnly:!0,move:!1,handleClose:I||"both"===H?null:(0,bi.safePolygon)(),restMs:M,delay:()=>null==l&&C?{close:(0,bj.getDelay)(A.current,"close")}:{close:v},triggerElementRef:u,isActiveTrigger:r,isClosing:()=>"ending"===p.select("transitionStatus"),shouldOpen:()=>!J.current}),P=(0,bm.useFocus)(t,{enabled:!F}).reference,Q=p.useState("triggerProps",x),R=x||"none"!==H;return(0,be.useRenderElement)("button",a,{state:{open:s},ref:[b,w,u],props:[O,P,R?Q:void 0,{onMouseOver(a){(a=>{let b,c=J.current,d=br(a),e=(J.current=b=N(d),b&&(D.openChangeTimeout.clear(),D.restTimeout.clear(),D.restTimeoutPending=!1,K.clear()),b),f=u.current,g=f&&d&&(0,aV.contains)(f,d);if(e&&p.select("open")&&p.select("lastOpenChangeReason")===a1.REASONS.triggerHover)return p.setOpen(!1,(0,aZ.createChangeEventDetails)(a1.REASONS.triggerHover,a));if(c&&!e&&g&&!G.current&&!p.select("open")&&f&&(0,aW.isMouseLikePointerType)(L.current)){let b=()=>{J.current||G.current||p.select("open")||p.setOpen(!0,(0,aZ.createChangeEventDetails)(a1.REASONS.triggerHover,a,f))},c=M();0===c?(K.clear(),b()):K.start(c,b)}})(a.nativeEvent)},onFocus(a){N(br(a.nativeEvent))&&a.preventBaseUIHandler()},onMouseLeave(){J.current=!1,K.clear(),L.current=void 0},onPointerEnter(a){L.current=a.pointerType},onPointerDown(a){L.current=a.pointerType,p.set("closeOnClick",k),k&&!p.select("open")&&p.cancelPendingOpen(a.nativeEvent)},onClick(a){k&&!p.select("open")&&p.cancelPendingOpen(a.nativeEvent)},id:q,[bp.triggerDisabled]:F?"":void 0,[bq]:F?void 0:""},n],stateAttributesMapping:bd.triggerOpenStateMapping})}),bt=f.createContext(void 0);var bu=a.i(35112),bv=a.i(54098);let bw=f.forwardRef(function(a,c){let{children:d,container:e,className:g,render:h,style:i,...j}=a,{node:k,subtree:l}=(0,bv.useFloatingPortalNode)({container:e,ref:c,componentProps:a,elementProps:j});return l||k?(0,b.jsxs)(f.Fragment,{children:[l,k&&bu.createPortal(d,k)]}):null}),bx=f.forwardRef(function(a,c){let{keepMounted:d=!1,...e}=a;return aR().useState("mounted")||d?(0,b.jsx)(bt.Provider,{value:d,children:(0,b.jsx)(bw,{ref:c,...e})}):null}),by=f.createContext(void 0);function bz(){let a=f.useContext(by);if(void 0===a)throw Error((0,aP.default)(71));return a}var bA=a.i(44871),bB=a.i(82204),bC=a.i(56011);let bD=f.forwardRef(function(a,c){let{render:d,className:e,anchor:g,positionMethod:h="absolute",side:i="top",align:j="center",sideOffset:k=0,alignOffset:l=0,collisionBoundary:m="clipping-ancestors",collisionPadding:n=5,arrowPadding:o=5,sticky:p=!1,disableAnchorTracking:q=!1,collisionAvoidance:r=bB.POPUP_COLLISION_AVOIDANCE,style:s,...t}=a,u=aR(),v=function(){let a=f.useContext(bt);if(void 0===a)throw Error((0,aP.default)(70));return a}(),w=u.useState("open"),x=u.useState("mounted"),y=u.useState("trackCursorAxis"),z=u.useState("disableHoverablePopup"),A=u.useState("floatingRootContext"),B=u.useState("instantType"),C=u.useState("transitionStatus"),D=u.useState("adaptiveOrigin"),E=(0,bA.useAnchorPositioning)({anchor:g,positionMethod:h,floatingRootContext:A,mounted:x,side:i,sideOffset:k,align:j,alignOffset:l,collisionBoundary:m,collisionPadding:n,sticky:p,arrowPadding:o,disableAnchorTracking:q,keepMounted:v,collisionAvoidance:r,adaptiveOrigin:D}),F=f.useMemo(()=>({open:w,side:E.side,align:E.align,anchorHidden:E.anchorHidden,instant:"none"!==y?"tracking-cursor":B}),[w,E.side,E.align,E.anchorHidden,y,B]),G=(0,bC.usePositioner)(a,F,{styles:E.positionerStyles,transitionStatus:C,props:t,refs:[c,u.useStateSetter("positionerElement")],hidden:!x,inert:!w||"both"===y||z});return(0,b.jsx)(by.Provider,{value:E,children:G})});var bE=a.i(5687),bF=a.i(3861),bG=a.i(81673);let bH=f.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=aR(),{side:h,align:i}=bz(),j=g.useState("open"),k=g.useState("instantType"),l=g.useState("transitionStatus"),m=g.useState("popupProps"),n=g.useState("floatingRootContext"),o=g.useState("disabled"),p=g.useState("closeDelay");(0,bE.useOpenChangeComplete)({open:j,ref:g.context.popupRef,onComplete(){j&&g.context.onOpenChangeComplete?.(!0)}}),(0,bG.useHoverFloatingInteraction)(n,{enabled:!o,closeDelay:p});let q=g.useStateSetter("popupElement");return(0,be.useRenderElement)("div",a,{state:{open:j,side:h,align:i,instant:k,transitionStatus:l},ref:[b,g.context.popupRef,q],props:[a$.FOCUSABLE_POPUP_PROPS,m,(0,bF.getDisabledMountTransitionStyles)(l),f],stateAttributesMapping:bd.popupTransitionStateMapping})}),bI=f.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=aR(),{arrowRef:h,side:i,align:j,arrowUncentered:k,arrowStyles:l}=bz(),m=g.useState("open"),n=g.useState("instantType");return(0,be.useRenderElement)("div",a,{state:{open:m,side:i,align:j,uncentered:k,instant:n},ref:[b,h],props:[{style:l,"aria-hidden":!0},f],stateAttributesMapping:bd.popupStateMapping})});var bJ=a.i(62092);let bK=f.forwardRef(function(a,b){let{render:c,className:d,style:e,children:f,...g}=a,h=aR(),i=bz(),j=h.useState("instantType"),{children:k,state:l}=(0,bJ.usePopupViewport)({store:h,side:i.side,children:f}),m={activationDirection:l.activationDirection,transitioning:l.transitioning,instant:j};return(0,be.useRenderElement)("div",a,{state:m,ref:b,props:[g,{children:k}],stateAttributesMapping:bJ.popupViewportStateMapping})});var bL=a.i(4675);class bM extends bL.BasePopupHandle{constructor(){super(function(){let a=new a4.PopupTriggerMap;return Object.assign(new a2.NullStore(Object.freeze(a7(void 0,a)),Object.freeze(a8(a)),a5),{setOpen:aN.NOOP,cancelPendingOpen:aN.NOOP})}(),"Tooltip")}open(a){this.openByTrigger(a)}close(){this.closePopup()}get isOpen(){return this.attachedStore?.select("open")??!1}}a.s(["Arrow",0,bI,"Handle",0,bM,"Popup",0,bH,"Portal",0,bx,"Positioner",0,bD,"Provider",0,function(a){let{delay:c,closeDelay:d,timeout:e=400}=a,g=f.useMemo(()=>({open:c,close:d}),[c,d]);return(0,b.jsx)(bh.Provider,{value:c,children:(0,b.jsx)(bl,{delay:g,timeoutMs:e,children:a.children})})},"Root",0,a9,"Trigger",0,bs,"Viewport",0,bK,"createHandle",0,function(){return new bM}],3191);var bN=a.i(3191),bN=bN;function bO(a){return(0,b.jsx)(bN.Root,{"data-slot":"tooltip",...a})}function bP(a){return(0,b.jsx)(bN.Trigger,{"data-slot":"tooltip-trigger",...a})}function bQ({className:a,side:c="top",sideOffset:d=6,align:e="center",...f}){return(0,b.jsx)(bN.Portal,{children:(0,b.jsx)(bN.Positioner,{align:e,side:c,sideOffset:d,className:"isolate z-50 max-sm:hidden",children:(0,b.jsx)(bN.Popup,{"data-slot":"tooltip-content",className:(0,l.classNames)("w-fit max-w-xs origin-(--transform-origin) rounded-sm bg-foreground px-2 py-1 text-caption font-medium text-background shadow-md duration-(--duration-fast) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...f})})})}let bR={fresh:{Icon:aH,tone:"text-tone-ok-fg"},while:{Icon:aL,tone:"text-muted-foreground"},long:{Icon:aJ,tone:"text-tone-waiting-fg"}};function bS({seenAt:a,now:c,testId:d}){let e;if(null===a)return null;let f=new Date(a),g=(e=c.getTime()-f.getTime())<6e4?"fresh":e<=9e5?"while":"long",{Icon:h,tone:i}=bR[g],j=(0,r.lastSeen)(f,c);return(0,b.jsxs)(bO,{children:[(0,b.jsx)(bP,{render:(0,b.jsx)("span",{role:"img","aria-label":j,"data-testid":d,"data-signal":g,className:(0,l.classNames)("inline-flex [&_svg]:size-(--size-icon) max-sm:[&_svg]:size-4",i)}),children:(0,b.jsx)(h,{"aria-hidden":!0})}),(0,b.jsx)(bQ,{children:j})]})}var bT=a.i(40108);function bU({model:a,now:c}){let d=function(a,b){var c;let d=new Date(a.statedAt),e=Math.max(0,b.getTime()-d.getTime()),f=(c=a.id).startsWith("@")||/@\d+\.\d+\.\d+$/.test(c)?"Software":"Model";if(e<6e4)return`${f}, stated ${String(Math.floor(e/1e3))} s ago`;let g=(0,r.relativeTime)(d,b);return`${f}, stated ${g.charAt(0).toLowerCase()}${g.slice(1)}`}(a,c);return(0,b.jsxs)(bO,{children:[(0,b.jsxs)(bP,{render:(0,b.jsx)("span",{"data-testid":"fleet-model-hint",className:"min-w-0 truncate font-mono text-id text-muted-foreground"}),children:[a.id,(0,b.jsxs)("span",{className:"sr-only",children:[", ",d]})]}),(0,b.jsx)(bQ,{children:(0,b.jsxs)("span",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"font-mono",children:a.id}),(0,b.jsx)("span",{children:d})]})})]})}var bV=a.i(92717),bW=a.i(58523),bX=a.i(90468),bY=a.i(48136);function bZ({label:a,items:c,picked:d,onPickedChange:e,size:f="sm",valueClassName:g,testId:h}){let i=function(a,b){let[c]=a;return void 0===c?{kind:"all"}:1===a.length?{kind:"one",word:b[c]??c}:{kind:"several",count:a.length}}(d,c);return(0,b.jsxs)(bY.Select,{multiple:!0,value:0===d.length?["all"]:[...d],onValueChange:a=>{e(d.length>0&&a.includes("all")?[]:a.filter(a=>"all"!==a))},children:[(0,b.jsx)(bY.SelectTrigger,{size:f,"aria-label":a,"data-testid":h,children:(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a}),"several"===i.kind?(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[i.count,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}):(0,b.jsx)("span",{className:(0,l.classNames)("font-medium","one"===i.kind?g:void 0),children:"one"===i.kind?i.word:"All"})]})}),(0,b.jsxs)(bY.SelectContent,{children:[(0,b.jsx)(bY.SelectItem,{value:"all",children:"All"}),Object.entries(c).map(([a,c])=>(0,b.jsx)(bY.SelectItem,{value:a,className:g,children:c},a))]})]})}function b$({label:a,allLabel:c="All",items:d,picked:e,onPickedChange:f,layout:h="chips",testId:i}){return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)("span",{"aria-hidden":!0,className:"text-meta font-medium text-muted-foreground",children:a}),(0,b.jsxs)("div",{role:"group","aria-label":a,"data-testid":i,className:"segments"===h?"flex gap-1.5 [&>*]:flex-1":"flex flex-wrap gap-1.5",children:[(0,b.jsx)(g.Button,{variant:0===e.length?"primary":"secondary",size:"touch","aria-pressed":0===e.length,onClick:()=>{f([])},children:c}),Object.entries(d).map(([a,c])=>{let d=e.includes(a);return(0,b.jsx)(g.Button,{variant:d?"primary":"secondary",size:"touch","aria-pressed":d,onClick:()=>{f(d?e.filter(b=>b!==a):[...e,a])},children:c},a)})]})]})}var b_=a.i(89027),b0=a.i(3894),b1=a.i(19721),b2=a.i(60275);let b3=(0,b1.default)(async()=>{},{loadableGenerated:{modules:[59068]},ssr:!1});function b4({groups:a,picked:c,onPick:e,trigger:g}){let[h,i]=(0,f.useState)(!1);return(0,b.jsxs)(b2.Popover,{open:h,onOpenChange:i,children:[(0,b.jsx)(b2.PopoverTrigger,{render:g}),(0,b.jsxs)(b2.PopoverContent,{align:"start",sideOffset:6,className:"w-80 p-2","data-testid":"label-filter-popover",children:[(0,b.jsx)("span",{className:"block px-2 pt-1 pb-2 text-body font-medium",children:"Filter by label"}),(0,b.jsx)(b3,{groups:a,pickedValueIds:c.map(a=>a.valueId),onPick:a=>{e(a),i(!1)}}),(0,b.jsxs)("p",{className:"mt-2 flex items-center justify-between gap-2 border-t border-border px-2 pt-2 text-meta text-muted-foreground",children:["Exact matches, all must hold.",(0,b.jsx)(d.default,{href:"/labels",className:"font-medium text-foreground hover:underline","data-testid":"label-filter-manage",children:"Manage labels"})]})]})]})}function b5({groups:a,picked:d,onPick:e}){return(0,b.jsx)(b4,{groups:a,picked:d,onPick:e,trigger:(0,b.jsxs)(g.Button,{variant:"secondary",size:"sm",icon:(0,b.jsx)(c.Tag,{}),"data-testid":"fleet-filter-labels",children:["Labels",0===d.length?null:(0,b.jsxs)("span",{className:"inline-flex size-5 items-center justify-center rounded-full bg-primary text-caption font-semibold text-primary-foreground tabular-nums",children:[d.length,(0,b.jsx)("span",{className:"sr-only",children:" picked"})]}),(0,b.jsx)(b_.ChevronDown,{"aria-hidden":!0,className:"text-muted-foreground"})]})})}function b6({groups:a,picked:c,onPick:d,onRemove:e,onClear:f}){return 0===c.length?null:(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1.5 text-meta max-sm:hidden","data-testid":"fleet-picked-labels",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"Ships with"}),c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aD.LabelChip,{chip:a,testId:"fleet-picked-label",onRemove:()=>{e(a.valueId)}})]},a.valueId)),(0,b.jsx)(b4,{groups:a,picked:c,onPick:d,trigger:(0,b.jsx)(g.Button,{variant:"ghost",size:"xs",icon:(0,b.jsx)(u.Plus,{}),children:"Add"})}),(0,b.jsx)("span",{"aria-hidden":!0,className:"h-4 w-px bg-border"}),(0,b.jsx)(g.Button,{variant:"ghost",size:"xs",onClick:f,"data-testid":"fleet-labels-clear",children:"Clear labels"})]})}function b7({groups:a,picked:c,onPick:e,onRemove:h}){let[i,j]=(0,f.useState)(!1);return(0,b.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"fleet-filter-labels-touch",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-meta font-medium text-muted-foreground",children:["Labels ",(0,b.jsx)("span",{className:"font-normal",children:"all must hold"})]}),0===c.length?null:(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 text-meta",children:c.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[0===c?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:"and"}),(0,b.jsx)(aD.LabelChip,{chip:a,onRemove:()=>{h(a.valueId)}})]},a.valueId))}),i?(0,b.jsx)("div",{className:"rounded-lg border border-border p-2",children:(0,b.jsx)(b3,{groups:a,pickedValueIds:c.map(a=>a.valueId),size:"touch",onPick:a=>{e(a),j(!1)}})}):(0,b.jsx)(g.Button,{variant:"secondary",size:"touch",icon:(0,b.jsx)(u.Plus,{}),className:"self-start",onClick:()=>{j(!0)},children:"Add label"}),(0,b.jsxs)(d.default,{href:"/labels",className:"inline-flex items-center gap-1.5 self-start text-meta text-muted-foreground hover:underline [&_svg]:size-(--size-icon-sm)",children:[(0,b.jsx)(b0.Tags,{"aria-hidden":!0}),"All labels and their owners"]})]})}function b8(a,b){return{...a,filters:{...a.filters,labelValueIds:b}}}function b9(a){return Object.hasOwn(ar,a)}function ca(a){return Object.fromEntries((0,aj.crewRequestKeysOf)(a).map(a=>[a,(0,aj.crewRequestKeyWord)(a)]))}function cb(a,b){return Object.hasOwn(b,a)}function cc(a){return Object.fromEntries(a.map(a=>[a,a]))}function cd({ship:a,squadron:c,isPluginShip:d}){return"operator"===a.kind?(0,b.jsxs)(av.Badge,{variant:"kind",children:[(0,b.jsx)(aa.UserRound,{"aria-hidden":!0}),"operator"]}):"viewer"===a.kind?(0,b.jsxs)(av.Badge,{variant:"kind","data-testid":"fleet-viewer",children:[(0,b.jsx)(W.Eye,{"aria-hidden":!0}),"viewer"]}):d?(0,b.jsxs)(av.Badge,{variant:"kind","data-testid":"fleet-plugin",children:[(0,b.jsx)(Y.Plug,{"aria-hidden":!0}),"plugin"]}):c?.role===null?(0,b.jsxs)(av.Badge,{variant:"kind","data-testid":"fleet-flagship",children:[(0,b.jsx)(X.Flag,{"aria-hidden":!0}),"flagship"]}):null}function ce({ship:a,now:c}){return"crewed"!==a.status||"viewer"===a.kind?null:(0,b.jsxs)("span",{"data-testid":"fleet-runs-on",className:"flex min-w-0 items-center gap-3 max-sm:flex-wrap max-sm:gap-y-1",children:[(0,b.jsx)(bT.LocationTag,{kind:"operator"===a.kind&&null!==a.location?"DEVICE":a.location?.kind??null,description:a.location?.description,harness:"operator"===a.kind?"console":a.harness,size:"sm",className:"shrink-0"}),"agent"===a.kind&&null!==a.model?(0,b.jsx)(bU,{model:a.model,now:c}):null]})}function cf({ship:a,squadron:c,labels:d}){let e=c?.role===null?void 0:c,f=void 0===d?[]:(0,ai.chipsOf)(a,d).filter(a=>void 0===e||("squadron"!==a.key||a.value!==e.squadronId)&&("squadron-role"!==a.key||a.value!==e.role));return void 0===e&&0===f.length?null:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 overflow-hidden",children:[void 0===e?null:(0,b.jsx)("span",{className:"min-w-0 shrink",title:null===e.role?e.squadronId:`${e.squadronId} \xb7 ${e.role}`,children:(0,b.jsx)(bW.SquadronTag,{squadronId:e.squadronId,size:"sm"})}),(0,b.jsx)(aE,{chips:f,width:22*(void 0===e),testId:"fleet-labels",href:`/ships/${a.id}`})]})}function cg({ship:a,now:c,next:d}){let e="agent"===a.kind&&"crewed"===a.status;return(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 max-sm:flex-col max-sm:items-stretch [&:has(button)>[data-testid=fleet-report]]:hidden",children:[e?(0,b.jsx)(bV.ReportLine,{report:a.report,now:c,variant:"row",isTimeInTitle:!0,testId:"fleet-report"}):null,d]})}function ch({ships:a,view:c,onViewChange:d,size:e,squadronsOf:f,labels:h}){let i=ca((0,w.useConsoleConstants)().crewStatuses),{filters:j}=c,k=ap(a),m="sm"===e?"fleet-show-retired":"fleet-show-retired-touch",n=a=>{d({...c,filters:{...j,...a}})},o="touch"===e;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(bZ,{label:"Status",items:ar,picked:j.status,onPickedChange:a=>{n({status:a.filter(b9)})},size:e,testId:o?void 0:"fleet-filter-status"}),(0,b.jsx)(bZ,{label:"Crew request",items:i,picked:j.crewRequest,onPickedChange:a=>{n({crewRequest:a.filter(a=>cb(a,i))})},size:e,testId:o?void 0:"fleet-filter-crew-request"}),(0,b.jsx)(bZ,{label:"Kind",items:ac,picked:j.kind,onPickedChange:a=>{n({kind:a.filter(ae)})},size:e,testId:o?void 0:"fleet-filter-kind"}),(0,b.jsx)(bZ,{label:"Type",items:cc(ao(a,j.isRetiredShown)),picked:j.type,onPickedChange:a=>{n({type:a})},size:e,valueClassName:"font-mono",testId:o?void 0:"fleet-filter-type"}),f&&(0,b.jsx)(bZ,{label:"Squadron",items:cc(aq(f)),picked:j.squadron,onPickedChange:a=>{n({squadron:a})},size:e,testId:o?void 0:"fleet-filter-squadron"}),void 0===h||o?null:(0,b.jsx)(b5,{groups:(0,ai.filterGroupsOf)(h),picked:(0,ai.pickedChips)(j.labelValueIds,h),onPick:a=>{d(b8(c,[...j.labelValueIds,a]))}}),au(j).length>0&&!o?(0,b.jsx)(g.Button,{variant:"ghost",size:"xs","data-testid":"fleet-filters-clear",onClick:()=>{d({...c,filters:ak.filters})},children:"Clear filters"}):null,(0,b.jsxs)("div",{className:(0,l.classNames)("inline-flex items-center gap-2",o?"py-2":"sm:ml-auto"),children:[(0,b.jsx)(az.Switch,{id:m,"data-testid":o?void 0:"fleet-show-retired",checked:j.isRetiredShown,onCheckedChange:a=>{n({isRetiredShown:a})}}),(0,b.jsxs)(ax.Label,{htmlFor:m,className:(0,l.classNames)("font-normal text-muted-foreground",o?"text-body-touch":"text-meta"),children:["Show retired (",k,")"]})]})]})}function ci({ships:a,view:c,onViewChange:d,shownCount:e,squadronsOf:f,labels:h}){let i=ca((0,w.useConsoleConstants)().crewStatuses),{filters:j}=c,k=a=>{d({...c,filters:{...j,...a}})},l=as(j),m=ap(a);return(0,b.jsxs)(ay.Sheet,{children:[(0,b.jsx)(ay.SheetTrigger,{render:(0,b.jsx)(g.Button,{size:"touch",isIconOnly:!0,"aria-label":l>0?`Filter ships, ${String(l)} active`:"Filter ships","data-testid":"fleet-filters-open",icon:(0,b.jsx)(_,{}),className:"relative sm:hidden",children:l>0?(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute top-1.5 right-1.5 size-2 rounded-full bg-primary"}):null})}),(0,b.jsxs)(ay.SheetContent,{side:"bottom",children:[(0,b.jsxs)(ay.SheetHeader,{className:"flex-row items-center justify-between",children:[(0,b.jsx)(ay.SheetTitle,{children:"Filter ships"}),(0,b.jsx)(g.Button,{variant:"ghost",size:"touch","data-testid":"fleet-filters-reset",onClick:()=>{d({...c,filters:ak.filters})},children:"Reset"})]}),(0,b.jsxs)(ay.SheetBody,{className:"flex flex-col gap-4 pb-4",children:[(0,b.jsx)(b$,{label:"Status",layout:"segments",items:ar,picked:j.status,onPickedChange:a=>{k({status:a.filter(b9)})}}),(0,b.jsx)(b$,{label:"Crew request",items:i,picked:j.crewRequest,onPickedChange:a=>{k({crewRequest:a.filter(a=>cb(a,i))})}}),(0,b.jsx)(b$,{label:"Kind",items:ac,picked:j.kind,onPickedChange:a=>{k({kind:a.filter(ae)})},testId:"fleet-filter-kind-touch"}),(0,b.jsx)(b$,{label:"Type",allLabel:"All types",items:cc(ao(a,j.isRetiredShown)),picked:j.type,onPickedChange:a=>{k({type:a})}}),f&&(0,b.jsx)(b$,{label:"Squadron",items:cc(aq(f)),picked:j.squadron,onPickedChange:a=>{k({squadron:a})}}),void 0===h?null:(0,b.jsx)(b7,{groups:(0,ai.filterGroupsOf)(h),picked:(0,ai.pickedChips)(j.labelValueIds,h),onPick:a=>{d(b8(c,[...j.labelValueIds,a]))},onRemove:a=>{d(b8(c,j.labelValueIds.filter(b=>b!==a)))}}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 py-1",children:[(0,b.jsxs)(ax.Label,{htmlFor:"fleet-show-retired-touch",className:"text-body-touch font-normal",children:["Show retired ships ",(0,b.jsxs)("span",{className:"text-muted-foreground",children:["(",m,")"]})]}),(0,b.jsx)(az.Switch,{id:"fleet-show-retired-touch",checked:j.isRetiredShown,onCheckedChange:a=>{k({isRetiredShown:a})}})]}),(0,b.jsx)(ay.SheetClose,{render:(0,b.jsx)(g.Button,{size:"touch","data-testid":"fleet-filters-apply"}),children:1===e?"Show 1 ship":`Show ${String(e)} ships`})]})]})]})}function cj({view:a,onViewChange:c,labels:d}){let e=au(a.filters),f=void 0===d?[]:(0,ai.pickedChips)(a.filters.labelValueIds,d);return 0===e.length&&0===f.length?null:(0,b.jsxs)("div",{className:"flex w-full flex-wrap items-center gap-1.5 sm:hidden","data-testid":"fleet-filter-chips",children:[e.map(a=>(0,b.jsx)(av.Badge,{variant:"outline",className:"max-w-full truncate",children:a},a)),f.map(d=>(0,b.jsx)(aD.LabelChip,{chip:d,onRemove:()=>{c(b8(a,a.filters.labelValueIds.filter(a=>a!==d.valueId)))}},d.valueId)),(0,b.jsx)(g.Button,{variant:"ghost",size:"touch",onClick:()=>{c({...a,filters:ak.filters})},children:"Clear filters"})]})}function ck({ships:a,view:c,onViewChange:d,shownCount:e,squadronsOf:f,labels:g}){return(0,b.jsxs)("div",{"data-slot":"fleet-toolbar",className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("div",{className:"w-60 max-sm:min-w-0 max-sm:flex-1",children:(0,b.jsx)(aw.Input,{type:"search","aria-label":"Search ships by name or type",placeholder:"Search ships by name","data-testid":"fleet-search",value:c.query,onChange:a=>{d({...c,query:a.target.value})},leadingIcon:(0,b.jsx)(Z.Search,{}),className:"h-(--size-control-sm) text-meta max-sm:h-(--size-control-touch) max-sm:text-input-touch"})}),(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 max-sm:hidden sm:flex-1",children:(0,b.jsx)(ch,{ships:a,view:c,onViewChange:d,squadronsOf:f,labels:g,size:"sm"})}),(0,b.jsx)(ci,{ships:a,view:c,onViewChange:d,shownCount:e,squadronsOf:f,labels:g}),(0,b.jsx)(cj,{view:c,onViewChange:d,labels:g}),(0,b.jsxs)("p",{"aria-live":"polite",className:"text-meta text-muted-foreground tabular-nums max-sm:w-full",children:[e," of ",a.length," ships"]})]})}function cl({ship:a}){return(0,b.jsx)(bX.ShipName,{name:a.name,shipId:a.id,isSuffixShown:"retired"===a.status,href:"operator"===a.kind?"/inbox":`/ships/${a.id}`,className:"[&_a]:max-sm:whitespace-normal [&_a]:max-sm:break-all [&_a]:max-sm:text-body-touch"})}let cm=[{column:"ship",head:"Ship"},{column:"status",head:"Status"},{column:"report",head:"Report"},{column:"squadronAndLabels",head:"Squadron and labels"},{column:"runsOn",head:"Runs on"},{column:"seen",head:"Seen"}];function cn({ships:a,highlightedShipIds:c,now:d,renderRowActions:e,squadronsOf:f,labels:g,pluginShipIds:h,sort:i,onSort:j}){return(0,b.jsx)("div",{className:"max-sm:hidden",children:(0,b.jsxs)(aA.Table,{"aria-label":"Ships",className:"min-w-320 table-fixed",children:[(0,b.jsxs)("colgroup",{children:[(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-40"}),(0,b.jsx)("col",{className:"w-64"}),(0,b.jsx)("col",{className:"w-56"}),(0,b.jsx)("col",{className:"w-80"}),(0,b.jsx)("col",{className:"w-12"}),(0,b.jsx)("col",{className:"w-12"})]}),(0,b.jsx)(aA.TableHeader,{children:(0,b.jsxs)(aA.TableRow,{children:[cm.map(({column:a,head:c})=>void 0===j?(0,b.jsx)(aA.TableHead,{children:c},a):(0,b.jsx)(aA.TableSortHead,{"data-testid":`fleet-sort-${a}`,direction:i?.column===a?i.direction:null,onSort:()=>{j(a)},children:c},a)),(0,b.jsx)(aA.TableHead,{children:(0,b.jsx)("span",{className:"sr-only",children:"Actions"})})]})}),(0,b.jsx)(aA.TableBody,{children:a.map(a=>(0,b.jsxs)(aA.TableRow,{"data-testid":`fleet-row-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"h-12",children:[(0,b.jsx)(aA.TableCell,{children:(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2 whitespace-nowrap",children:[(0,b.jsx)(cl,{ship:a}),(0,b.jsx)(cd,{ship:a,squadron:f?.get(a.id),isPluginShip:h?.has(a.id)??!1})]})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(O.StatusBadge,{status:a.status})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(cg,{ship:a,now:d,next:e?.(a,"next")})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(cf,{ship:a,squadron:f?.get(a.id),labels:g})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(ce,{ship:a,now:d})}),(0,b.jsx)(aA.TableCell,{children:(0,b.jsx)(bS,{seenAt:a.lastSeenAt,now:d,testId:"fleet-last-seen"})}),(0,b.jsx)(aA.TableCell,{className:"w-10 text-right",children:e?.(a,"table")})]},a.id))})]})})}function co({ships:a,highlightedShipIds:c,now:d,renderRowActions:e,squadronsOf:f,pluginShipIds:g}){return(0,b.jsx)("ul",{"aria-label":"Ships",className:"overflow-hidden rounded-lg border border-border bg-card sm:hidden",children:a.map(a=>(0,b.jsxs)("li",{"data-testid":`fleet-card-${a.name}`,"data-new":c?.has(a.id)?"":void 0,className:"flex items-start gap-2 border-b border-border px-3.5 py-3 last:border-0 data-new:animate-highlight",children:[(0,b.jsxs)("div",{className:"flex min-w-0 grow flex-col gap-1.5",children:[(0,b.jsx)("div",{className:"text-body-touch",children:(0,b.jsx)(cl,{ship:a})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(O.StatusBadge,{status:a.status}),(0,b.jsx)(cd,{ship:a,squadron:f?.get(a.id),isPluginShip:g?.has(a.id)??!1})]}),(0,b.jsx)(cf,{ship:a,squadron:f?.get(a.id)}),(0,b.jsx)(cg,{ship:a,now:d,next:e?.(a,"next")}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1",children:[(0,b.jsx)(ce,{ship:a,now:d}),(0,b.jsx)(bS,{seenAt:a.lastSeenAt,now:d})]})]}),e?.(a,"phone")]},a.id))})}function cp({ships:a,view:c,onViewChange:d,state:e,error:f,highlightedShipIds:h,now:i,renderRowActions:j,emptyAction:k,squadronsOf:l,labels:m,pluginShipIds:n}){var o,p,q;let r,s,t;if("loading"===e)return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"loading",className:"flex flex-col gap-3",children:[(0,b.jsx)(aF.LoadingSkeleton,{variant:"table",rows:6,label:"Loading the fleet",className:"max-sm:hidden"}),(0,b.jsx)(aF.LoadingSkeleton,{variant:"list",rows:5,label:"Loading the fleet",className:"sm:hidden"})]});if("error"===e)return(0,b.jsx)(aC.InlineError,{variant:"page",title:"Couldn’t load the fleet",description:"This page couldn’t reach the fleet server. Check that the server is running and reachable from this browser, then try again.",detail:f?.detail,onRetry:f?.onRetry});let u={highlightedShipIds:h,now:i,renderRowActions:j,squadronsOf:l,pluginShipIds:n};if(a.every(a=>"operator"===a.kind||"retired"===a.status)){let c=a.filter(a=>"operator"===a.kind);return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"empty",className:"flex flex-col gap-3",children:[(0,b.jsx)(cn,{ships:c,labels:m,...u}),(0,b.jsx)(co,{ships:c,...u}),(0,b.jsx)(aB.EmptyState,{icon:(0,b.jsx)(N.Ship,{}),title:"No ships besides argo yet",description:"argo is your own ship: messages to the operator land in its inbox. Commission a ship to add an agent to the fleet.",action:k})]})}let v=(s=null===(o={...c,squadronsOf:l,pluginShipIds:n}).sort?an:(p=o.sort,q=o.squadronsOf,r=("ascending"===p.direction?1:-1)*("seen"===p.column?-1:1),(a,b)=>{let c=ag(a,{column:p.column,squadronsOf:q}),d=ag(b,{column:p.column,squadronsOf:q});return void 0===c||void 0===d?Number(void 0===c)-Number(void 0===d):r*c.localeCompare(d,void 0,{sensitivity:"base"})}),a.filter(a=>{let b;return(""===(b=o.query.trim().toLowerCase())||a.name.toLowerCase().includes(b)||a.type.toLowerCase().includes(b))&&function(a,b){let{filters:c,squadronsOf:d,pluginShipIds:e=al}=b;if("retired"===a.status&&!c.isRetiredShown)return!1;let f="retired"===a.status?void 0:a.status;return am(c.squadron,d?.get(a.id)?.squadronId)&&am(c.status,f)&&am(c.crewRequest,(0,aj.crewRequestKey)((0,ah.crewRequestStage)(a)))&&am(c.kind,"operator"===a.kind||"viewer"===a.kind?"console":e.has(a.id)?"plugin":"trierarch"===a.type?"trierarch":(null===a.harness?void 0:ad[a.harness])??"other")&&am(c.type,a.type)&&(0,ai.carriesEvery)(a,c.labelValueIds)}(a,o)}).toSorted((a,b)=>s(a,b)||a.name.localeCompare(b.name)||a.id.localeCompare(b.id))),w=c.query.trim();return(0,b.jsxs)("div",{"data-slot":"fleet-table","data-state":"ready",className:"flex flex-col gap-3",children:[(0,b.jsx)(ck,{ships:a,view:c,onViewChange:d,shownCount:v.length,squadronsOf:l,labels:m}),void 0===m?null:(0,b.jsx)(b6,{groups:(0,ai.filterGroupsOf)(m),picked:(0,ai.pickedChips)(c.filters.labelValueIds,m),onPick:a=>{d(b8(c,[...c.filters.labelValueIds,a]))},onRemove:a=>{d(b8(c,c.filters.labelValueIds.filter(b=>b!==a)))},onClear:()=>{d(b8(c,[]))}}),0===v.length?(0,b.jsx)(aB.EmptyState,{variant:"no-results",title:""===w?"No ships match these filters.":`No ships match “${w}”.`,action:(0,b.jsx)(g.Button,{size:"xs","data-testid":"fleet-clear-filters",onClick:()=>{d({...ak,sort:c.sort})},children:(t=as(c.filters)>0,""===w?"Clear filters":t?"Clear search and filters":"Clear search")})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(cn,{ships:v,labels:m,sort:c.sort,onSort:a=>{var b;d({...c,sort:(b=c.sort,b?.column!==a?{column:a,direction:"ascending"}:"ascending"===b.direction?{column:a,direction:"descending"}:null)})},...u}),(0,b.jsx)(co,{ships:v,...u})]})]})}function cq({view:a,onViewChange:c,newShipIds:d,renderRowActions:e}){let f=(0,o.useFleetSnapshot)(),g=(0,q.useNow)(),h=(0,E.useSquadrons)(),i=(0,o.useLabelContext)(),j=(0,U.usePluginShipIds)();return(0,b.jsx)("section",{"aria-label":"Fleet",className:"flex flex-col gap-3",children:(0,b.jsx)(cp,{ships:f.data??[],view:a,onViewChange:c,state:f.isPending?"loading":f.isError?"error":"ready",error:{detail:f.error?.message,onRetry:()=>{f.refetch()}},highlightedShipIds:d,now:g,renderRowActions:e,squadronsOf:h.data?(0,V.shipsInSquadrons)(h.data):void 0,labels:i,pluginShipIds:j})})}var cr=a.i(53805),cs=a.i(71027),ct=a.i(21521),cu=a.i(91003),cv=a.i(38023),cw=a.i(73224),cx=a.i(65563),cy=a.i(67336),cz=a.i(10572),cA=a.i(34159);a.s(["OverviewPage",0,function({view:a,isCommissionAsked:i}){let j=(0,e.useRouter)(),k=(0,o.useFleetSnapshot)(),l=(0,cy.useLiveFleet)(),m=(0,cv.useConsoleFrame)(),n=(0,C.messageLimitReached)((0,A.useFleetLimits)().data),p=(0,B.useHostedAccountUrl)(),q=(0,cx.useAccess)(),r=(0,cA.usePluginNav)(),[u,v]=(0,f.useState)(!1),[w,x]=(0,f.useOptimistic)(a);(0,cz.useSignInWhenSessionEnds)([k.error,l.error]);let y=a=>{let b=(function(a){let b=new URLSearchParams;for(let[c,d]of(""!==a.query&&b.set("q",a.query),[["status",a.filters.status],["crew",a.filters.crewRequest],["kind",a.filters.kind],["type",a.filters.type],["squadron",a.filters.squadron]]))for(let a of d)b.append(c,a);for(let c of(a.filters.isRetiredShown&&b.set("retired","1"),a.filters.labelValueIds))b.append("label",c);return null!==a.sort&&(b.set("sort",a.sort.column),"descending"===a.sort.direction&&b.set("order","desc")),b})(a).toString();(0,f.startTransition)(()=>{x(a),j.replace(""===b?"/":`/?${b}`,{scroll:!1})})};return(0,b.jsxs)(cu.ListPage,{...m,title:"Fleet overview",description:k.data?function(a){let b=s(a.ships).length,c=a.ships.filter(a=>"agent"===a.kind&&"retired"===a.status).length;if(0===b&&0===c)return a.canCommission?"Only argo so far. Ships you commission appear here.":"Only argo so far.";let d=0===c?"":`, ${String(c)} retired`;return`${1===b?"1 active ship":`${String(b)} active ships`} and argo${d}. Changes appear as they happen.`}({ships:k.data,canCommission:q.canManage}):"Loading your fleet",primaryAction:(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 max-sm:flex-col max-sm:items-stretch",children:[(0,b.jsx)(g.Button,{render:(0,b.jsx)(d.default,{href:"/labels"}),nativeButton:!1,icon:(0,b.jsx)(c.Tag,{}),"data-testid":"overview-labels",children:q.canDefineLabels?"Manage labels":"View labels"}),q.canManage?(0,b.jsx)(I,{isOpen:u||i,onOpenChange:b=>{v(b),!b&&i&&y(a)}}):null]}),live:l.live,children:[(0,b.jsx)(cw.FleetSegments,{active:"ships",needsCrewCount:r.needsCrewCount}),void 0===n?null:(0,b.jsx)(ct.LimitNotice,{...(0,C.messageLimitNotice)(n),accountUrl:p,testId:"overview-message-limit"}),(0,b.jsx)(T,{}),(0,b.jsx)(t,{}),(0,b.jsx)(cq,{view:w,onViewChange:y,newShipIds:l.newShipIds,renderRowActions:(a,c)=>(0,b.jsx)(cr.ShipActions,{ship:a,layout:"table"===c?"menu":"phone"===c?"sheet":"next",compose:h.ComposeMessage,crewLineFlow:cs.NewCrewLineFlow})})]})}],59446)}];
2
2
 
3
3
  //# sourceMappingURL=packages_console_app_%28console%29_overview-page_tsx_15siba6._.js.map