@aeolus-fleet/gateway 0.31.0 → 0.32.1

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 (346) hide show
  1. package/dist/adapters/fleet/core-version.d.ts +1 -1
  2. package/dist/adapters/fleet/core-version.js +1 -1
  3. package/dist/adapters/fleet/proxy-ships-as-actor.js +5 -1
  4. package/dist/adapters/fleet/proxy-ships-as-actor.js.map +1 -1
  5. package/dist/adapters/fleet/rest-fleet-door.js +15 -6
  6. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  7. package/dist/adapters/http/mcp-endpoint.js +1 -1
  8. package/dist/adapters/http/mcp-endpoint.js.map +1 -1
  9. package/dist/adapters/http/person-tools.js +1 -1
  10. package/dist/adapters/http/person-tools.js.map +1 -1
  11. package/dist/adapters/pagasae/email-channel.js +4 -2
  12. package/dist/adapters/pagasae/email-channel.js.map +1 -1
  13. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +50 -50
  14. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  15. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  16. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2 -0
  17. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +2 -0
  18. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  19. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +2 -0
  20. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +2 -0
  21. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  22. package/dist/adapters/prisma/generated/models/A2aPush.d.ts +0 -7
  23. package/dist/adapters/prisma/generated/models/Party.d.ts +70 -1
  24. package/dist/adapters/prisma/scope-requirements.d.ts +10 -0
  25. package/dist/adapters/prisma/scope-requirements.js +37 -0
  26. package/dist/adapters/prisma/scope-requirements.js.map +1 -0
  27. package/dist/adapters/trpc/router.d.ts +91 -8
  28. package/dist/adapters/trpc/router.js +98 -11
  29. package/dist/adapters/trpc/router.js.map +1 -1
  30. package/dist/app.js +34 -9
  31. package/dist/app.js.map +1 -1
  32. package/dist/core/a2a-out/agent-event.d.ts +1 -1
  33. package/dist/core/a2a-out/agent-event.js +2 -2
  34. package/dist/core/a2a-out/agent-event.js.map +1 -1
  35. package/dist/core/a2a-out/agent-statement.d.ts +2 -1
  36. package/dist/core/a2a-out/agent-statement.js +5 -2
  37. package/dist/core/a2a-out/agent-statement.js.map +1 -1
  38. package/dist/core/a2a-out/hand-a2a-message.d.ts +7 -2
  39. package/dist/core/a2a-out/hand-a2a-message.js +15 -1
  40. package/dist/core/a2a-out/hand-a2a-message.js.map +1 -1
  41. package/dist/core/a2a-out/read-agent-statement.d.ts +1 -0
  42. package/dist/core/a2a-out/read-agent-statement.js +1 -1
  43. package/dist/core/a2a-out/read-agent-statement.js.map +1 -1
  44. package/dist/core/a2a-out/state-a2a-agent.d.ts +3 -2
  45. package/dist/core/a2a-out/state-a2a-agent.js +3 -2
  46. package/dist/core/a2a-out/state-a2a-agent.js.map +1 -1
  47. package/dist/core/account-sign-in/account-in-view.d.ts +10 -1
  48. package/dist/core/account-sign-in/account-in-view.js +17 -4
  49. package/dist/core/account-sign-in/account-in-view.js.map +1 -1
  50. package/dist/core/connection/ports.d.ts +8 -0
  51. package/dist/core/mcp-out/hand-call.d.ts +6 -2
  52. package/dist/core/mcp-out/hand-call.js +14 -1
  53. package/dist/core/mcp-out/hand-call.js.map +1 -1
  54. package/dist/core/mcp-out/state-party.d.ts +3 -2
  55. package/dist/core/mcp-out/state-party.js +2 -2
  56. package/dist/core/mcp-out/state-party.js.map +1 -1
  57. package/dist/core/mcp-out/statement.d.ts +16 -0
  58. package/dist/core/mcp-out/statement.js +10 -3
  59. package/dist/core/mcp-out/statement.js.map +1 -1
  60. package/dist/core/operator/ports.d.ts +4 -4
  61. package/dist/core/parties/add-a2a-agent.js +1 -1
  62. package/dist/core/parties/add-a2a-agent.js.map +1 -1
  63. package/dist/core/parties/check-approving.d.ts +36 -0
  64. package/dist/core/parties/check-approving.js +48 -0
  65. package/dist/core/parties/check-approving.js.map +1 -0
  66. package/dist/core/parties/check-required-scopes.d.ts +34 -0
  67. package/dist/core/parties/check-required-scopes.js +27 -0
  68. package/dist/core/parties/check-required-scopes.js.map +1 -0
  69. package/dist/core/parties/ports.d.ts +21 -0
  70. package/dist/core/parties/read-listed-scopes.d.ts +17 -0
  71. package/dist/core/parties/read-listed-scopes.js +23 -0
  72. package/dist/core/parties/read-listed-scopes.js.map +1 -0
  73. package/dist/core/parties/read-scope-requirements.d.ts +18 -0
  74. package/dist/core/parties/read-scope-requirements.js +17 -0
  75. package/dist/core/parties/read-scope-requirements.js.map +1 -0
  76. package/dist/core/parties/scope-requirements.d.ts +34 -0
  77. package/dist/core/parties/scope-requirements.js +37 -0
  78. package/dist/core/parties/scope-requirements.js.map +1 -0
  79. package/dist/core/parties/set-scope-requirements.d.ts +45 -0
  80. package/dist/core/parties/set-scope-requirements.js +48 -0
  81. package/dist/core/parties/set-scope-requirements.js.map +1 -0
  82. package/dist/core/parties/switch-tools.d.ts +39 -0
  83. package/dist/core/parties/switch-tools.js +38 -0
  84. package/dist/core/parties/switch-tools.js.map +1 -0
  85. package/dist/core/parties/tool-switches.d.ts +4 -2
  86. package/dist/core/parties/tool-switches.js +2 -1
  87. package/dist/core/parties/tool-switches.js.map +1 -1
  88. package/dist/core/people/ports.d.ts +4 -2
  89. package/dist/core/people/wake-person.d.ts +22 -10
  90. package/dist/core/people/wake-person.js +88 -20
  91. package/dist/core/people/wake-person.js.map +1 -1
  92. package/dist/core/people/web-push-channel.js +1 -1
  93. package/dist/core/people/web-push-channel.js.map +1 -1
  94. package/dist/core/shared/errors.d.ts +1 -1
  95. package/dist/core/shared/errors.js.map +1 -1
  96. package/package.json +3 -3
  97. package/src/adapters/prisma/migrations/20261025140000_scope_requirements/migration.sql +3 -0
  98. package/src/adapters/prisma/schema.prisma +69 -65
  99. package/web/.next/BUILD_ID +1 -1
  100. package/web/.next/app-path-routes-manifest.json +1 -0
  101. package/web/.next/build-manifest.json +15 -3
  102. package/web/.next/diagnostics/route-bundle-stats.json +113 -77
  103. package/web/.next/fallback-build-manifest.json +3 -3
  104. package/web/.next/prerender-manifest.json +3 -3
  105. package/web/.next/routes-manifest.json +6 -0
  106. package/web/.next/server/app/(console)/gateway-off/page/app-paths-manifest.json +3 -0
  107. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +23 -0
  108. package/web/.next/server/app/(console)/gateway-off/page/next-font-manifest.json +11 -0
  109. package/web/.next/server/app/(console)/gateway-off/page/react-loadable-manifest.json +1 -0
  110. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +15 -0
  111. package/web/.next/server/app/(console)/gateway-off/page.js +19 -0
  112. package/web/.next/server/app/(console)/gateway-off/page.js.map +5 -0
  113. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -0
  114. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +3 -0
  115. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  116. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  117. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +17 -7
  119. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +4 -4
  120. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  121. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +15 -5
  123. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +4 -4
  124. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  125. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  126. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +17 -7
  127. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +4 -4
  128. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  129. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +17 -7
  131. package/web/.next/server/app/(console)/outside-parties/add/page.js +3 -4
  132. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  133. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  135. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  136. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  138. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  139. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  141. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  142. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  143. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  144. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
  145. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +7 -7
  146. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  147. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  148. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  149. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  150. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  151. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +7 -7
  152. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  153. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  154. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  155. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  156. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  157. package/web/.next/server/app/_global-error.html +1 -1
  158. package/web/.next/server/app/_global-error.rsc +1 -1
  159. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  160. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  161. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  162. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  163. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  164. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  166. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  167. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  168. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  169. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  170. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  171. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  172. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  173. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  174. package/web/.next/server/app-paths-manifest.json +1 -0
  175. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js +1 -1
  176. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  178. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  180. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  182. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  184. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  186. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  188. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js +1 -1
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js +3 -0
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js.map +1 -0
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js +4 -0
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js.map +1 -0
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/{[root-of-the-server]__11w36a4le04vy._.js → [root-of-the-server]__1dc6okf5os70a._.js} +2 -2
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js.map +1 -0
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +1 -1
  204. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js +3 -0
  206. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js.map +1 -0
  207. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
  210. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +3 -0
  212. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +1 -0
  213. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +4 -0
  215. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -0
  216. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  217. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js +3 -0
  219. package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js.map +1 -0
  220. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  221. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +1 -1
  223. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  224. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  225. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  227. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js +3 -0
  229. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js.map +1 -0
  230. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +3 -0
  231. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js +3 -0
  233. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js.map +1 -0
  234. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js +3 -0
  235. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js.map +1 -0
  236. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js +3 -0
  237. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js.map +1 -0
  238. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js +3 -0
  239. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js.map +1 -0
  240. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js +1 -1
  241. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +1 -1
  242. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js +3 -0
  243. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js.map +1 -0
  244. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js +3 -0
  245. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js.map +1 -0
  246. package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js +1 -1
  247. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  248. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js +3 -0
  250. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js.map +1 -0
  251. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  252. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js → web_features_0xbnkk4hfgr9v._.js} +2 -2
  254. package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js.map → web_features_0xbnkk4hfgr9v._.js.map} +1 -1
  255. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js +3 -0
  256. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js.map +1 -0
  257. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  258. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  259. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  260. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  261. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  262. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js +3 -0
  264. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +1 -0
  265. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  266. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  267. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  268. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  269. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  270. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  271. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  272. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js +3 -0
  273. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js.map +1 -0
  274. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  275. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  276. package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js +3 -0
  277. package/web/.next/server/chunks/ssr/{web_features_overview_16dyz2ngvs14b._.js.map → web_features_overview_0udx5lm8igils._.js.map} +1 -1
  278. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  279. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +1 -1
  280. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -1
  281. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  282. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  283. package/web/.next/server/chunks/ssr/{web_features_overview_ui_action-button_tsx_14-5f45xbzbi6._.js → web_features_overview_ui_10mb24kjiffea._.js} +2 -2
  284. package/web/.next/server/chunks/ssr/{web_features_overview_ui_action-button_tsx_14-5f45xbzbi6._.js.map → web_features_overview_ui_10mb24kjiffea._.js.map} +1 -1
  285. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  286. package/web/.next/server/middleware-build-manifest.js +15 -3
  287. package/web/.next/server/next-font-manifest.js +1 -1
  288. package/web/.next/server/next-font-manifest.json +4 -0
  289. package/web/.next/server/pages/500.html +1 -1
  290. package/web/.next/server/preview-props.json +3 -3
  291. package/web/.next/server/server-reference-manifest.js +1 -1
  292. package/web/.next/server/server-reference-manifest.json +55 -29
  293. package/web/.next/static/chunks/0coxy5zad812a.js +1 -0
  294. package/web/.next/static/chunks/{2hsi-sahla2aj.js → 0u_4xjk1j74g3.js} +1 -1
  295. package/web/.next/static/chunks/0v9r_hyyubykq.js +1 -0
  296. package/web/.next/static/chunks/0zesq1ng-v3s6.js +1 -0
  297. package/web/.next/static/chunks/10wzmy096av_5.css +3 -0
  298. package/web/.next/static/chunks/{1juj2_tl8d16x.js → 12c3qjvto3m0f.js} +1 -1
  299. package/web/.next/static/chunks/1ahn4kx4ld-rc.js +1 -0
  300. package/web/.next/static/chunks/{21s2_ccrw90ok.js → 1xrn7oqwd48vi.js} +1 -1
  301. package/web/.next/static/chunks/{3o8h4o3utbvgc.js → 20n2z_lok8v0f.js} +1 -1
  302. package/web/.next/static/chunks/2cd4e71s711ad.js +1 -0
  303. package/web/.next/static/chunks/{1pafc2gfswboo.js → 2ew9kpu2kohk4.js} +1 -1
  304. package/web/.next/static/chunks/2i3ydqqupow_x.js +1 -0
  305. package/web/.next/static/chunks/2riya89_i0je8.js +1 -0
  306. package/web/.next/static/chunks/3_pwm8b3mf4mf.js +1 -0
  307. package/web/.next/static/chunks/{2x00o45pdbkok.js → 3x_8doukmdfpu.js} +1 -1
  308. package/web/.next/trace +1 -1
  309. package/web/.next/trace-build +1 -1
  310. package/web/.next/types/routes.d.ts +2 -1
  311. package/web/.next/types/validator.ts +17 -0
  312. package/dist/core/parties/switch-tool.d.ts +0 -29
  313. package/dist/core/parties/switch-tool.js +0 -33
  314. package/dist/core/parties/switch-tool.js.map +0 -1
  315. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +0 -3
  316. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +0 -1
  317. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +0 -1
  318. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +0 -3
  319. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +0 -1
  320. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +0 -3
  321. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +0 -1
  322. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js +0 -3
  323. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js.map +0 -1
  324. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js +0 -3
  325. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js.map +0 -1
  326. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +0 -3
  327. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +0 -1
  328. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +0 -3
  329. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +0 -1
  330. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +0 -3
  331. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +0 -1
  332. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +0 -3
  333. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +0 -1
  334. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +0 -3
  335. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +0 -1
  336. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +0 -3
  337. package/web/.next/static/chunks/183mifyxtyab5.css +0 -3
  338. package/web/.next/static/chunks/1bnlc-p1_cm01.js +0 -1
  339. package/web/.next/static/chunks/1ca21kggixrjz.js +0 -1
  340. package/web/.next/static/chunks/2-t4g6oq6tjkg.js +0 -1
  341. package/web/.next/static/chunks/2l27ty2dy2pb4.js +0 -1
  342. package/web/.next/static/chunks/2n2qsek2y94y5.js +0 -1
  343. package/web/.next/static/chunks/3tss77vu57zju.js +0 -1
  344. /package/web/.next/static/{3whgLnRJ9iJe_25h6KGzQ → wnr2MrrQvcto8MOm16D8r}/_buildManifest.js +0 -0
  345. /package/web/.next/static/{3whgLnRJ9iJe_25h6KGzQ → wnr2MrrQvcto8MOm16D8r}/_clientMiddlewareManifest.js +0 -0
  346. /package/web/.next/static/{3whgLnRJ9iJe_25h6KGzQ → wnr2MrrQvcto8MOm16D8r}/_ssgManifest.js +0 -0
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[10020,a=>{var b=a.i(87924);a.s(["f",0,function({isOn:a,label:c,isPending:d=!1,type:e="button",onClick:f,testId:g}){return(0,b.jsx)("button",{type:e,role:"switch","aria-checked":a,"aria-label":c,"aria-busy":d,disabled:d,onClick:f,"data-testid":g,className:`inline-flex h-5 w-9 shrink-0 items-center rounded-full border p-0.5 transition-colors disabled:opacity-60 ${a?"border-primary bg-primary":"border-input bg-muted"}`,children:(0,b.jsx)("span",{className:`size-3.5 rounded-full bg-background shadow-sm transition-transform ${a?"translate-x-4":"translate-x-0"} ${d?"animate-pulse":""}`})})}])},73877,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(35112),e=a.i(30587),f=a.i(10020),g=a.i(5050);let h=(0,g.createServerReference)("609a0ac1fb8cf591f09ebeb0982ac9feae9848f7f9",g.callServer,void 0,g.findSourceMapURL,"markA2aAgent"),i={kind:"idle"};function j({isRepeatable:a}){let c=(0,d.useFormStatus)();return(0,b.jsx)(f.f,{type:"submit",isOn:a,label:"Repeatable",isPending:c.pending,testId:"outside-party-repeatable-switch"})}a.s(["RepeatableSwitch",0,function({fleetId:a,party:d,isRepeatable:f}){let[g,k]=(0,c.useActionState)(h,i),l="marked"===g.kind?g.isRepeatable:f;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("form",{action:k,className:"contents",children:[(0,b.jsx)("input",{type:"hidden",name:e.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"name",value:d}),(0,b.jsx)("input",{type:"hidden",name:"isRepeatable",value:String(!l)}),(0,b.jsx)(j,{isRepeatable:l})]}),"idle"===g.kind?null:(0,b.jsx)("span",{role:"refused"===g.kind?"alert":"status",className:`basis-full text-caption ${"refused"===g.kind?"text-tone-attention-fg":"text-tone-ok-fg"}`,"data-testid":"outside-party-repeatable-outcome",children:g.message})]})}],73877)},43673,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(35112),e=a.i(30587),f=a.i(10020),g=a.i(5050);let h=(0,g.createServerReference)("60843dc8cdfba379c08634bd86c9ae1e6e20250457",g.callServer,void 0,g.findSourceMapURL,"switchPartyTool"),i={kind:"idle"};function j({isOn:a,tool:c}){let e=(0,d.useFormStatus)();return(0,b.jsx)(f.f,{type:"submit",isOn:a,label:c,isPending:e.pending,testId:"outside-party-tool-switch"})}a.s(["ToolSwitch",0,function({fleetId:a,party:d,tool:f,isOn:g}){let[k,l]=(0,c.useActionState)(h,i),m="switched"===k.kind?k.isOn:g;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("form",{action:l,className:"contents",children:[(0,b.jsx)("input",{type:"hidden",name:e.H,value:a}),(0,b.jsx)("input",{type:"hidden",name:"name",value:d}),(0,b.jsx)("input",{type:"hidden",name:"tool",value:f}),(0,b.jsx)("input",{type:"hidden",name:"isOn",value:String(!m)}),(0,b.jsx)(j,{isOn:m,tool:f})]}),"idle"===k.kind?null:(0,b.jsx)("span",{role:"refused"===k.kind?"alert":"status",className:`order-last basis-full text-caption ${"refused"===k.kind?"text-tone-attention-fg":"text-tone-ok-fg"}`,"data-testid":"outside-party-tool-outcome",children:k.message})]})}],43673)}]})();
2
-
3
- //# sourceMappingURL=web_features_0i_kwiszuiqcp._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/forms/ui/switch.tsx","../../../../../web/features/outside-party/ui/repeatable-switch.tsx","../../../../../web/features/outside-party/data%3A111ba8%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/ui/tool-switch.tsx","../../../../../web/features/outside-party/data%3A48dc16%20%3Ctext/javascript%3E"],"sourcesContent":["/** A switch: on or off, said by its look and to a screen reader, busy while its change is on its way. */\nexport function Switch({ isOn, label, isPending = false, type = 'button', onClick, testId }: { isOn: boolean; label: string; isPending?: boolean; type?: 'button' | 'submit'; onClick?: () => void; testId?: string }) {\n return (\n <button\n type={type}\n role=\"switch\"\n aria-checked={isOn}\n aria-label={label}\n aria-busy={isPending}\n disabled={isPending}\n onClick={onClick}\n data-testid={testId}\n className={`inline-flex h-5 w-9 shrink-0 items-center rounded-full border p-0.5 transition-colors disabled:opacity-60 ${isOn ? 'border-primary bg-primary' : 'border-input bg-muted'}`}\n >\n <span className={`size-3.5 rounded-full bg-background shadow-sm transition-transform ${isOn ? 'translate-x-4' : 'translate-x-0'} ${isPending ? 'animate-pulse' : ''}`} />\n </button>\n );\n}\n","'use client';\n\nimport { useActionState } from 'react';\nimport { useFormStatus } from 'react-dom';\n\nimport { FLEET_FIELD } from '../../forms/form-state';\nimport { Switch } from '../../forms/ui/switch';\nimport { markA2aAgent, type MarkState } from '../actions';\n\nconst IDLE: MarkState = { kind: 'idle' };\n\nfunction SubmitSwitch({ isRepeatable }: { isRepeatable: boolean }) {\n const status = useFormStatus();\n return <Switch type=\"submit\" isOn={isRepeatable} label=\"Repeatable\" isPending={status.pending} testId=\"outside-party-repeatable-switch\" />;\n}\n\n/**\n * An A2A agent's repeatable mark on its page, for an approver (A9): a press\n * sends the change at once, the switch says it is on its way, then the row\n * says what it means now, or why the API refused it.\n */\nexport function RepeatableSwitch({ fleetId, party, isRepeatable }: { fleetId: string; party: string; isRepeatable: boolean }) {\n const [state, action] = useActionState(markA2aAgent, IDLE);\n const shown = state.kind === 'marked' ? state.isRepeatable : isRepeatable;\n return (\n <>\n <form action={action} className=\"contents\">\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"name\" value={party} />\n <input type=\"hidden\" name=\"isRepeatable\" value={String(!shown)} />\n <SubmitSwitch isRepeatable={shown} />\n </form>\n {state.kind === 'idle' ? null : (\n <span role={state.kind === 'refused' ? 'alert' : 'status'} className={`basis-full text-caption ${state.kind === 'refused' ? 'text-tone-attention-fg' : 'text-tone-ok-fg'}`} data-testid=\"outside-party-repeatable-outcome\">\n {state.message}\n </span>\n )}\n </>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"609a0ac1fb8cf591f09ebeb0982ac9feae9848f7f9\":{\"name\":\"markA2aAgent\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_2=/*#__PURE__*/createServerReference(\"609a0ac1fb8cf591f09ebeb0982ac9feae9848f7f9\",callServer,void 0,findSourceMapURL,\"markA2aAgent\");export{$$RSC_SERVER_ACTION_2 as markA2aAgent};","'use client';\n\nimport { useActionState } from 'react';\nimport { useFormStatus } from 'react-dom';\n\nimport { FLEET_FIELD } from '../../forms/form-state';\nimport { Switch } from '../../forms/ui/switch';\nimport { switchPartyTool, type ToolSwitchState } from '../actions';\n\nconst IDLE: ToolSwitchState = { kind: 'idle' };\n\nfunction SubmitSwitch({ isOn, tool }: { isOn: boolean; tool: string }) {\n const status = useFormStatus();\n return <Switch type=\"submit\" isOn={isOn} label={tool} isPending={status.pending} testId=\"outside-party-tool-switch\" />;\n}\n\n/**\n * One tool's switch on a server's page, for an approver (aeolus-fleet#1151):\n * a press sends the change at once, the switch says it is on its way, then\n * the row says what the fleet sees now, or why the API refused it.\n */\nexport function ToolSwitch({ fleetId, party, tool, isOn }: { fleetId: string; party: string; tool: string; isOn: boolean }) {\n const [state, action] = useActionState(switchPartyTool, IDLE);\n const shownOn = state.kind === 'switched' ? state.isOn : isOn;\n return (\n <>\n <form action={action} className=\"contents\">\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"name\" value={party} />\n <input type=\"hidden\" name=\"tool\" value={tool} />\n <input type=\"hidden\" name=\"isOn\" value={String(!shownOn)} />\n <SubmitSwitch isOn={shownOn} tool={tool} />\n </form>\n {state.kind === 'idle' ? null : (\n <span role={state.kind === 'refused' ? 'alert' : 'status'} className={`order-last basis-full text-caption ${state.kind === 'refused' ? 'text-tone-attention-fg' : 'text-tone-ok-fg'}`} data-testid=\"outside-party-tool-outcome\">\n {state.message}\n </span>\n )}\n </>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"60843dc8cdfba379c08634bd86c9ae1e6e20250457\":{\"name\":\"switchPartyTool\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"60843dc8cdfba379c08634bd86c9ae1e6e20250457\",callServer,void 0,findSourceMapURL,\"switchPartyTool\");export{$$RSC_SERVER_ACTION_1 as switchPartyTool};"],"names":["Switch","isOn","label","isPending","type","onClick","testId","role","disabled","className","$$RSC_SERVER_ACTION_2","$$RSC_SERVER_ACTION_1"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[30587,a=>{a.s(["H",0,"fleet","Q",0,{kind:"idle"}])},51636,a=>{let b=[{kind:"none",label:"No credential"},{kind:"bearer",label:"Bearer token"},{kind:"clientCredentials",label:"OAuth client credentials"}];a.s(["x",0,b,"C",0,function(a){return b.find(({kind:b})=>b===a)?.kind??"bearer"}])},88412,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},36855,77237,a=>{var b=a.i(87924);a.s(["f",0,function({state:a,testId:c}){switch(a.kind){case"idle":return null;case"done":return(0,b.jsx)("p",{role:"status","data-testid":c,className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a.message});case"refused":case"openNetwork":return(0,b.jsx)("p",{role:"alert","data-testid":c,className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a.message})}}],36855);var c=a.i(35112),d=a.i(88412);a.s(["f",0,function({children:a,pending:e,kind:f="primary",testId:g}){let h=(0,c.useFormStatus)();return(0,b.jsx)("button",{type:"submit",className:d.x[f],disabled:h.pending,"aria-busy":h.pending,"data-testid":g,children:h.pending?e:a})}],77237)},35149,a=>{var b=a.i(87924),c=a.i(88412);a.s(["f",0,function({choices:a,current:d,help:e,refusal:f}){let g=null===d||a.some(a=>a.shipId===d.shipId)?a:[d,...a];return(0,b.jsxs)("label",{className:c.z,children:[(0,b.jsx)("span",{children:"Owner"}),(0,b.jsxs)("select",{className:c.w,name:"ownerShipId",defaultValue:d?.shipId??"",required:!0,"data-testid":"owner-field",children:[null===d?(0,b.jsx)("option",{value:"",disabled:!0,children:"Pick its owner"}):null,g.map(a=>(0,b.jsx)("option",{value:a.shipId,children:a.name},a.shipId))]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:f??e})]})}])},47763,a=>{var b=a.i(87924);let c={waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",active:"border-tone-active-border bg-tone-active-bg text-tone-active-fg",ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",ended:"border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg"};a.s(["T",0,function({tone:a,label:d}){return(0,b.jsx)("span",{className:`inline-flex items-center rounded-full border px-2 text-caption ${c[a]}`,children:d})},"E",0,function({children:a,isMono:c=!1}){return(0,b.jsx)("span",{className:`inline-flex items-center rounded-md border border-border px-2 text-caption ${c?"font-mono":""}`,children:a})}])}]})();
2
-
3
- //# sourceMappingURL=web_features_1--8ungjj--ht._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/forms/form-state.ts","../../../../../web/features/forms/server-credential.ts","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/outcome.tsx","../../../../../web/features/forms/ui/submit-button.tsx","../../../../../web/features/forms/ui/owner-field.tsx","../../../../../web/features/outside-parties/ui/status-badge.tsx"],"sourcesContent":["/**\n * What a page's form (a server action) answers the browser: nothing yet,\n * done with what changed, or refused with why, as the API said it. The\n * open network's warning asks for a confirm (interop I-3).\n */\nexport type FormState =\n | { kind: 'idle' }\n | { kind: 'done'; message: string }\n | { kind: 'refused'; message: string }\n | { kind: 'openNetwork'; message: string };\n\nexport const IDLE: FormState = { kind: 'idle' };\n\n/** A form's text field, empty when it was not sent. */\nexport function fieldOf(form: FormData, name: string): string {\n const value = form.get(name);\n return typeof value === 'string' ? value : '';\n}\n\n/** The form's fields as text, files left out. */\nexport function fieldsOf(form: FormData): Record<string, string> {\n return Object.fromEntries([...form.entries()].flatMap(([name, value]) => (typeof value === 'string' ? [[name, value]] : [])));\n}\n\n/** The fleet a page's form names: the page's own, sent in a hidden field. */\nexport const FLEET_FIELD = 'fleet';\n","/**\n * An outside MCP server's credential, as the add, Parties and decision forms\n * take it: none for a server reached only on a private network, a static\n * bearer, or OAuth client credentials.\n */\n\n/** The credential kinds a form offers, with the words it shows. */\nexport const CREDENTIAL_KINDS = [\n { kind: 'none', label: 'No credential' },\n { kind: 'bearer', label: 'Bearer token' },\n { kind: 'clientCredentials', label: 'OAuth client credentials' },\n] as const;\n\nexport type CredentialKind = (typeof CREDENTIAL_KINDS)[number]['kind'];\n\nexport type ServerCredential =\n | { kind: 'none' }\n | { kind: 'bearer'; token: string }\n | { kind: 'clientCredentials'; clientId: string; clientSecret: string; issuer: string; scope?: string };\n\n/** The kind a form sent, a bearer when it sent none it knows. */\nexport function credentialKindOf(sent: string): CredentialKind {\n return CREDENTIAL_KINDS.find(({ kind }) => kind === sent)?.kind ?? 'bearer';\n}\n\n/** The credential the fields name: only the fields of its kind are read. */\nexport function serverCredentialOf(fields: { credentialKind: string; token: string; clientId: string; clientSecret: string; issuer: string; scope: string }): ServerCredential {\n const kind = credentialKindOf(fields.credentialKind);\n switch (kind) {\n case 'none':\n return { kind };\n case 'bearer':\n return { kind, token: fields.token };\n case 'clientCredentials':\n return { kind, clientId: fields.clientId, clientSecret: fields.clientSecret, issuer: fields.issuer, ...(fields.scope === '' ? {} : { scope: fields.scope }) };\n }\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","import type { FormState } from '../form-state';\n\n/** How a form ended: what changed, or why it was refused. Nothing while it has not been sent. */\nexport function Outcome({ state, testId }: { state: FormState; testId?: string }) {\n switch (state.kind) {\n case 'idle':\n return null;\n case 'done':\n return (\n <p role=\"status\" data-testid={testId} className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {state.message}\n </p>\n );\n case 'refused':\n case 'openNetwork':\n return (\n <p role=\"alert\" data-testid={testId} className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {state.message}\n </p>\n );\n }\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useFormStatus } from 'react-dom';\n\nimport { BUTTONS, type ButtonKind } from './look';\n\n/** A form's button: it says the form is on its way at once, and takes no second press meanwhile. */\nexport function SubmitButton({ children, pending, kind = 'primary', testId }: { children: ReactNode; pending: string; kind?: ButtonKind; testId?: string }) {\n const status = useFormStatus();\n return (\n <button type=\"submit\" className={BUTTONS[kind]} disabled={status.pending} aria-busy={status.pending} data-testid={testId}>\n {status.pending ? pending : children}\n </button>\n );\n}\n","import { INPUT, LABEL } from './look';\n\n/** A ship a party's owner may be picked from, by its name. */\nexport interface OwnerChoice {\n shipId: string;\n name: string;\n}\n\n/** The owner choices as a page read them, or why they could not be read. */\nexport type OwnerChoices = { isOk: true; value: OwnerChoice[] } | { isOk: false; refusal: string };\n\n/**\n * The owner of a party, picked by name from the ships the fleet takes as an\n * owner. The owner it has now stays a choice, though the fleet no longer\n * lists it, so saving leaves it as it is. Where the choices could not be\n * read, it says why, with nothing to pick.\n */\nexport function OwnerField({ choices, current, help, refusal }: { choices: readonly OwnerChoice[]; current: OwnerChoice | null; help: string; refusal?: string | undefined }) {\n const shown = current === null || choices.some((choice) => choice.shipId === current.shipId) ? choices : [current, ...choices];\n return (\n <label className={LABEL}>\n <span>Owner</span>\n <select className={INPUT} name=\"ownerShipId\" defaultValue={current?.shipId ?? ''} required data-testid=\"owner-field\">\n {current === null ? (\n <option value=\"\" disabled>\n Pick its owner\n </option>\n ) : null}\n {shown.map((choice) => (\n <option key={choice.shipId} value={choice.shipId}>\n {choice.name}\n </option>\n ))}\n </select>\n <span className=\"text-muted-foreground\">{refusal ?? help}</span>\n </label>\n );\n}\n","import type { Tone } from '../party-kinds';\n\nconst TONES: Record<Tone, string> = {\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n active: 'border-tone-active-border bg-tone-active-bg text-tone-active-fg',\n ok: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n attention: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n ended: 'border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg',\n};\n\n/** A status in its tone, as the console shows one. */\nexport function StatusBadge({ tone, label }: { tone: Tone; label: string }) {\n return <span className={`inline-flex items-center rounded-full border px-2 text-caption ${TONES[tone]}`}>{label}</span>;\n}\n\n/** A plain tag: a protocol, a side, an id. */\nexport function Tag({ children, isMono = false }: { children: React.ReactNode; isMono?: boolean }) {\n return <span className={`inline-flex items-center rounded-md border border-border px-2 text-caption ${isMono ? 'font-mono' : ''}`}>{children}</span>;\n}\n"],"names":["IDLE","kind","fieldOf","form","name","value","get","fieldsOf","Object","fromEntries","entries","flatMap","FLEET_FIELD","CREDENTIAL_KINDS","label","credentialKindOf","sent","find","serverCredentialOf","fields","credentialKind","token","clientId","clientSecret","issuer","scope","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","Outcome","state","testId","role","className","message","OwnerField","choices","current","help","refusal","shown","some","choice","shipId","defaultValue","required","disabled","map","TONES","waiting","active","ok","attention","ended","StatusBadge","tone","Tag","children","isMono"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[30438,a=>{function b(a,b){return a.getAll(b).filter(a=>"string"==typeof a)}a.s(["A",0,function(a){return a.split("\n").map(a=>a.trim()).find(a=>""!==a)??""},"Q",0,function(a){let c=b(a,"toolShown");if(0===c.length)return;let d=new Set(b(a,"toolOn"));return c.map(a=>({name:a,isOn:d.has(a)}))}])},29493,a=>{let b=[{kind:"none",label:"No credential"},{kind:"bearer",label:"Bearer token"},{kind:"clientCredentials",label:"OAuth client credentials"}];a.s(["x",0,b,"y",0,function(a){var c;let d=(c=a.credentialKind,b.find(({kind:a})=>a===c)?.kind??"bearer");switch(d){case"none":return{kind:d};case"bearer":return{kind:d,token:a.token};case"clientCredentials":return{kind:d,clientId:a.clientId,clientSecret:a.clientSecret,issuer:a.issuer,...""===a.scope?{}:{scope:a.scope}}}}])},49144,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},65253,98323,a=>{let b={mcpServer:{protocol:"MCP",side:"server"},mcpClient:{protocol:"MCP",side:"client"},a2aClient:{protocol:"A2A",side:"client"},a2aAgent:{protocol:"A2A",side:"server"}};a.s(["G",0,b,"Y",0,{commissioning:{tone:"active",label:"Commissioning"},awaitingCrew:{tone:"waiting",label:"Awaiting crew"},crewed:{tone:"ok",label:"Crewed"}},"N",0,{server:{one:"server",many:"servers"},client:{one:"client",many:"clients"}},"R",0,function(a){let c=a.map(a=>b[a.kind]),d=[...new Set(c.map(a=>a.protocol))];return{total:a.length,sides:{server:c.filter(a=>"server"===a.side).length,client:c.filter(a=>"client"===a.side).length},protocols:d.map(a=>({protocol:a,count:c.filter(b=>b.protocol===a).length}))}},"M",0,function(a){switch(a.kind){case"mcpServer":return a.url;case"mcpClient":return a.clientId;case"a2aClient":return null;case"a2aAgent":return a.cardUrl}}],65253);var c=a.i(7997);let d={waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",active:"border-tone-active-border bg-tone-active-bg text-tone-active-fg",ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",ended:"border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg"};a.s(["T",0,function({tone:a,label:b}){return(0,c.jsx)("span",{className:`inline-flex items-center rounded-full border px-2 text-caption ${d[a]}`,children:b})},"E",0,function({children:a,isMono:b=!1}){return(0,c.jsx)("span",{className:`inline-flex items-center rounded-md border border-border px-2 text-caption ${b?"font-mono":""}`,children:a})}],98323)},22126,a=>{var b=a.i(7997),c=a.i(49144);a.s(["f",0,function(){return(0,b.jsxs)("section",{className:c.r,"data-testid":"no-sign-in",children:[(0,b.jsx)("h2",{className:"text-heading font-semibold",children:"Nobody signs in here"}),(0,b.jsx)("p",{className:"mt-2 text-muted-foreground",children:"This gateway signs no one in to its pages: it is no app at pagasae."})]})}])}]})();
2
-
3
- //# sourceMappingURL=web_features_1qq_ruz59ldc9._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/add-server/tool-choice.ts","../../../../../web/features/forms/server-credential.ts","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/outside-parties/party-kinds.ts","../../../../../web/features/outside-parties/ui/status-badge.tsx","../../../../../web/features/sign-in/ui/no-sign-in.tsx"],"sourcesContent":["/**\n * The tools an approver switched when adding a server (aeolus-fleet#1151):\n * each tool the check answered is sent as shown, and the ticked ones as on.\n */\n\n/** The field naming each tool whose switch the form showed. */\nexport const TOOL_SHOWN_FIELD = 'toolShown';\n\n/** The field naming each tool ticked on. */\nexport const TOOL_ON_FIELD = 'toolOn';\n\nfunction namesIn(form: FormData, field: string): string[] {\n return form.getAll(field).filter((value) => typeof value === 'string');\n}\n\n/** Each tool shown, on or off; none when the form showed no switch, so the server keeps every tool on. */\nexport function toolChoiceOf(form: FormData): { name: string; isOn: boolean }[] | undefined {\n const shown = namesIn(form, TOOL_SHOWN_FIELD);\n if (shown.length === 0) {\n return undefined;\n }\n const on = new Set(namesIn(form, TOOL_ON_FIELD));\n return shown.map((name) => ({ name, isOn: on.has(name) }));\n}\n\n/** A description's first line with words, as a tool's row shows it before it is opened. */\nexport function firstLineOf(description: string): string {\n return description.split('\\n').map((line) => line.trim()).find((line) => line !== '') ?? '';\n}\n","/**\n * An outside MCP server's credential, as the add, Parties and decision forms\n * take it: none for a server reached only on a private network, a static\n * bearer, or OAuth client credentials.\n */\n\n/** The credential kinds a form offers, with the words it shows. */\nexport const CREDENTIAL_KINDS = [\n { kind: 'none', label: 'No credential' },\n { kind: 'bearer', label: 'Bearer token' },\n { kind: 'clientCredentials', label: 'OAuth client credentials' },\n] as const;\n\nexport type CredentialKind = (typeof CREDENTIAL_KINDS)[number]['kind'];\n\nexport type ServerCredential =\n | { kind: 'none' }\n | { kind: 'bearer'; token: string }\n | { kind: 'clientCredentials'; clientId: string; clientSecret: string; issuer: string; scope?: string };\n\n/** The kind a form sent, a bearer when it sent none it knows. */\nexport function credentialKindOf(sent: string): CredentialKind {\n return CREDENTIAL_KINDS.find(({ kind }) => kind === sent)?.kind ?? 'bearer';\n}\n\n/** The credential the fields name: only the fields of its kind are read. */\nexport function serverCredentialOf(fields: { credentialKind: string; token: string; clientId: string; clientSecret: string; issuer: string; scope: string }): ServerCredential {\n const kind = credentialKindOf(fields.credentialKind);\n switch (kind) {\n case 'none':\n return { kind };\n case 'bearer':\n return { kind, token: fields.token };\n case 'clientCredentials':\n return { kind, clientId: fields.clientId, clientSecret: fields.clientSecret, issuer: fields.issuer, ...(fields.scope === '' ? {} : { scope: fields.scope }) };\n }\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","/**\n * An outside party is a party and its protocol (design B, How A2A slots\n * in): the protocol is a tag on every card and the list counts per\n * protocol, so an A2A agent joins as one more kind here.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../src/adapters/trpc/router.js';\n\n/** An outside party as the API lists it. */\nexport type ListedParty = inferRouterOutputs<GatewayRouter>['parties']['list'][number];\n\n/** Which side an outside party is on: a server the fleet's ships call, or a client that calls them. */\nexport type Side = 'server' | 'client';\n\nexport const PARTY_KINDS: Record<ListedParty['kind'], { protocol: string; side: Side }> = {\n mcpServer: { protocol: 'MCP', side: 'server' },\n mcpClient: { protocol: 'MCP', side: 'client' },\n a2aClient: { protocol: 'A2A', side: 'client' },\n a2aAgent: { protocol: 'A2A', side: 'server' },\n};\n\n/** Where a party is reached or named outside: an MCP server's URL, an MCP client's id, an A2A agent's card address; an A2A client has none. */\nexport function outsideAddressOf(party: ListedParty): string | null {\n switch (party.kind) {\n case 'mcpServer':\n return party.url;\n case 'mcpClient':\n return party.clientId;\n case 'a2aClient':\n return null;\n case 'a2aAgent':\n return party.cardUrl;\n }\n}\n\nexport const SIDES: Record<Side, { one: string; many: string }> = {\n server: { one: 'server', many: 'servers' },\n client: { one: 'client', many: 'clients' },\n};\n\n/** The tones the design tokens colour a status by. */\nexport type Tone = 'waiting' | 'active' | 'ok' | 'attention' | 'ended';\n\n/** A proxy ship's state as the console shows a status. */\nexport const PARTY_STATES: Record<ListedParty['state'], { tone: Tone; label: string }> = {\n commissioning: { tone: 'active', label: 'Commissioning' },\n awaitingCrew: { tone: 'waiting', label: 'Awaiting crew' },\n crewed: { tone: 'ok', label: 'Crewed' },\n};\n\nexport interface Counts {\n total: number;\n sides: Record<Side, number>;\n protocols: { protocol: string; count: number }[];\n}\n\n/** How many outside parties the fleet has, per side and per protocol. */\nexport function countsOf(parties: readonly Pick<ListedParty, 'kind'>[]): Counts {\n const kinds = parties.map((party) => PARTY_KINDS[party.kind]);\n const protocols = [...new Set(kinds.map((kind) => kind.protocol))];\n return {\n total: parties.length,\n sides: { server: kinds.filter((kind) => kind.side === 'server').length, client: kinds.filter((kind) => kind.side === 'client').length },\n protocols: protocols.map((protocol) => ({ protocol, count: kinds.filter((kind) => kind.protocol === protocol).length })),\n };\n}\n","import type { Tone } from '../party-kinds';\n\nconst TONES: Record<Tone, string> = {\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n active: 'border-tone-active-border bg-tone-active-bg text-tone-active-fg',\n ok: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n attention: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n ended: 'border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg',\n};\n\n/** A status in its tone, as the console shows one. */\nexport function StatusBadge({ tone, label }: { tone: Tone; label: string }) {\n return <span className={`inline-flex items-center rounded-full border px-2 text-caption ${TONES[tone]}`}>{label}</span>;\n}\n\n/** A plain tag: a protocol, a side, an id. */\nexport function Tag({ children, isMono = false }: { children: React.ReactNode; isMono?: boolean }) {\n return <span className={`inline-flex items-center rounded-md border border-border px-2 text-caption ${isMono ? 'font-mono' : ''}`}>{children}</span>;\n}\n","import { CARD } from '../../forms/ui/look';\n\n/** A gateway that is no app at pagasae signs no one in to its pages (header design H5). */\nexport function NoSignIn() {\n return (\n <section className={CARD} data-testid=\"no-sign-in\">\n <h2 className=\"text-heading font-semibold\">Nobody signs in here</h2>\n <p className=\"mt-2 text-muted-foreground\">This gateway signs no one in to its pages: it is no app at pagasae.</p>\n </section>\n );\n}\n"],"names":["TOOL_SHOWN_FIELD","TOOL_ON_FIELD","namesIn","form","field","getAll","filter","value","toolChoiceOf","shown","length","undefined","on","Set","map","name","isOn","has","firstLineOf","description","split","line","trim","find","CREDENTIAL_KINDS","kind","label","credentialKindOf","sent","serverCredentialOf","fields","credentialKind","token","clientId","clientSecret","issuer","scope","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","PARTY_KINDS","mcpServer","protocol","side","mcpClient","a2aClient","a2aAgent","outsideAddressOf","party","url","cardUrl","SIDES","server","one","many","client","PARTY_STATES","commissioning","tone","awaitingCrew","crewed","countsOf","parties","kinds","protocols","total","sides","count","NoSignIn","className"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- module.exports=[30587,a=>{"use strict";a.s(["H",0,"fleet","Q",0,{kind:"idle"}])}];
2
-
3
- //# sourceMappingURL=web_features_forms_form-state_ts_2142hiopykfk1._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/forms/form-state.ts"],"sourcesContent":["/**\n * What a page's form (a server action) answers the browser: nothing yet,\n * done with what changed, or refused with why, as the API said it. The\n * open network's warning asks for a confirm (interop I-3).\n */\nexport type FormState =\n | { kind: 'idle' }\n | { kind: 'done'; message: string }\n | { kind: 'refused'; message: string }\n | { kind: 'openNetwork'; message: string };\n\nexport const IDLE: FormState = { kind: 'idle' };\n\n/** A form's text field, empty when it was not sent. */\nexport function fieldOf(form: FormData, name: string): string {\n const value = form.get(name);\n return typeof value === 'string' ? value : '';\n}\n\n/** The form's fields as text, files left out. */\nexport function fieldsOf(form: FormData): Record<string, string> {\n return Object.fromEntries([...form.entries()].flatMap(([name, value]) => (typeof value === 'string' ? [[name, value]] : [])));\n}\n\n/** The fleet a page's form names: the page's own, sent in a hidden field. */\nexport const FLEET_FIELD = 'fleet';\n"],"names":["IDLE","kind","fieldOf","form","name","value","get","fieldsOf","Object","fromEntries","entries","flatMap","FLEET_FIELD"],"mappings":"kDAyB2B,cAdI,CAAEC,KAAM,MAAO"}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[9181,a=>{var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(29493),f=a.i(49144),g=a.i(65253),h=a.i(72913),i=a.i(1130),j=a.i(98323),k=a.i(30438);function l({tool:a,control:c,testId:d}){let{name:e,description:f,isReadOnly:g,isNew:h=!1}=a,i=void 0===f?"":(0,k.A)(f),m=void 0!==f&&f.trim()!==i;return(0,b.jsxs)("li",{className:"grid gap-1 border-b border-border py-2 last:border-b-0","data-testid":d,children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,b.jsx)("span",{className:"font-mono",children:e}),g?(0,b.jsx)(j.E,{children:"reads only"}):null,h?(0,b.jsx)(j.T,{tone:"attention",label:"New"}):null]}),""===i?null:m?(0,b.jsxs)("details",{className:"text-muted-foreground",children:[(0,b.jsx)("summary",{className:"cursor-pointer",children:i}),(0,b.jsx)("p",{className:"mt-1 whitespace-pre-line",children:f})]}):(0,b.jsx)("p",{className:"text-muted-foreground",children:i})]})}var m=a.i(35670),n=a.i(41738);let o="fleet:owner",p="scopes:grant",q="gateway:approve";function r({fleetId:a}){return(0,b.jsx)("a",{href:(0,c.i)(h.$,a),className:"text-muted-foreground hover:text-foreground",children:"← Outside parties"})}function s({children:a}){return(0,b.jsx)("p",{role:"alert",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a})}let t={mcpServer:"Address",mcpClient:"Client id",a2aClient:"Address",a2aAgent:"Card address"},u=(0,b.jsx)("span",{className:"text-muted-foreground",children:"Not known"});function v({label:a,children:c}){return(0,b.jsxs)("div",{className:"grid gap-1 sm:grid-cols-[10rem_1fr]",children:[(0,b.jsx)("dt",{className:"text-muted-foreground",children:a}),(0,b.jsx)("dd",{className:"flex flex-wrap items-center gap-2",children:c})]})}function w({party:a}){let{protocol:c,side:d}=g.G[a.kind],e=g.Y[a.state];return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:a.name}),(0,b.jsx)(j.E,{children:c}),(0,b.jsx)(j.E,{children:g.N[d].one}),(0,b.jsx)(j.T,{tone:e.tone,label:e.label})]})}async function x({page:a,name:k}){let{api:y,fleetId:z,scopes:A}=a,B=await (0,d.F)(y.parties.get.query({name:k}));if(!B.isOk)return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(r,{fleetId:z}),(0,b.jsx)(s,{children:B.refusal})]});let C=B.value,D=(0,g.M)(C),[E,F]=await Promise.all(["mcpServer"===C.kind?(0,d.F)(y.parties.tools.query({name:k})):void 0,"a2aClient"===C.kind?(0,d.F)(y.parties.cardAddresses.query({name:k})):void 0]),G=(0,b.jsx)("a",{href:(0,c.i)((0,h.N)(C.name,"change"),z),className:"text-primary hover:underline","data-testid":"outside-party-change",children:"Change"});return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(r,{fleetId:z}),(0,b.jsx)(w,{party:C}),(0,b.jsxs)("dl",{className:`${f.r} grid gap-3`,children:[(0,b.jsx)(v,{label:"Proxy ship",children:C.proxyShipName??u}),(0,b.jsxs)(v,{label:"Owner",children:[C.ownerName??u,A.includes(o)?G:null]}),(0,b.jsxs)(v,{label:"Scopes",children:[null===C.scopes?u:C.scopes.map(a=>{let c;return(0,b.jsx)(j.E,{children:(c=i.K.safeParse(a)).success?i.q[c.data]:a},a)}),A.includes(p)?G:null]}),"mcpServer"===C.kind||"a2aAgent"===C.kind?(0,b.jsx)(v,{label:"Credential",children:e.x.find(({kind:a})=>a===C.credentialKind)?.label}):null,null===D?null:(0,b.jsx)(v,{label:t[C.kind],children:(0,b.jsx)("span",{className:"font-mono",children:D})}),"a2aAgent"===C.kind?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{label:"Messages at once",children:C.concurrencyLimit}),(0,b.jsx)(v,{label:"Repeatable",children:A.includes(q)?(0,b.jsx)(m.RepeatableSwitch,{fleetId:z,party:C.name,isRepeatable:C.isRepeatable}):(0,b.jsx)(j.E,{children:C.isRepeatable?"Repeatable":"Not repeatable"})})]}):null]}),void 0===E?null:(0,b.jsxs)("section",{className:`${f.r} grid gap-2`,"data-testid":"outside-party-tools",children:[(0,b.jsxs)("h2",{className:"flex justify-between text-section font-semibold",children:[(0,b.jsx)("span",{children:"Tools"}),E.isOk?(0,b.jsxs)("span",{children:[E.value.tools.filter(a=>a.isOn).length," of ",E.value.tools.length," on"]}):null]}),E.isOk?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-muted-foreground",children:["The fleet may call only the tools switched on; every ship that may reach ",C.name," reaches the same. ",A.includes(q)?null:"Switching them needs gateway:approve."]}),(0,b.jsx)("ul",{className:"grid",children:E.value.tools.map(a=>(0,b.jsx)(l,{tool:a,testId:"outside-party-tool",control:A.includes(q)?(0,b.jsx)(n.ToolSwitch,{fleetId:z,party:C.name,tool:a.name,isOn:a.isOn}):(0,b.jsx)(j.E,{children:a.isOn?"On":"Off"})},a.name))})]}):(0,b.jsx)("p",{className:"text-muted-foreground",children:E.refusal})]}),void 0===F?null:(0,b.jsxs)("section",{className:`${f.r} grid gap-2`,"data-testid":"outside-party-cards",children:[(0,b.jsxs)("h2",{className:"flex justify-between text-section font-semibold",children:[(0,b.jsx)("span",{children:"Card addresses"}),F.isOk?(0,b.jsx)("span",{children:F.value.addresses.length}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground",children:"One per ship its proxy ship reaches now. Its owner hands them to the client."}),F.isOk?0===F.value.addresses.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"It reaches no ship now."}):(0,b.jsx)("ul",{className:"grid gap-1",children:F.value.addresses.map(a=>(0,b.jsx)("li",{className:"break-all font-mono text-code",children:a},a))}):(0,b.jsx)("p",{className:"text-muted-foreground",children:F.refusal})]}),A.includes("fleet:manage")?(0,b.jsx)("div",{children:(0,b.jsxs)("a",{className:f.x.secondary,href:(0,c.i)((0,h.N)(C.name,"retire"),z),"data-testid":"outside-party-retire",children:["Retire ",C.name,"…"]})}):null]})}a.s(["N",0,q,"W",0,r,"p",0,p,"J",0,o,"b",0,x,"y",0,s],9181)},56786,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call RepeatableSwitch() from the server but RepeatableSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/outside-party/ui/repeatable-switch.tsx","RepeatableSwitch");a.s(["RepeatableSwitch",0,b])},35670,a=>{var b=a.i(56786);a.n(b)},66746,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call ToolSwitch() from the server but ToolSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/outside-party/ui/tool-switch.tsx","ToolSwitch");a.s(["ToolSwitch",0,b])},41738,a=>{var b=a.i(66746);a.n(b)}]})();
2
-
3
- //# sourceMappingURL=web_features_outside-party_ui_20x5u9bhxeehi._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../web/features/outside-party/ui/outside-party.tsx","../../../../../web/features/outside-parties/scope-words.ts","../../../../../web/features/outside-parties/ui/tool-row.tsx","../../../../../web/features/outside-party/ui/repeatable-switch.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/repeatable-switch.tsx%22%20%7D","../../../../../web/features/outside-party/ui/tool-switch.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/tool-switch.tsx%22%20%7D"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { CREDENTIAL_KINDS } from '../../forms/server-credential';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { outsideAddressOf, PARTY_KINDS, PARTY_STATES, SIDES, type ListedParty } from '../../outside-parties/party-kinds';\nimport { OUTSIDE_PARTIES_PATH, partyPath } from '../../outside-parties/paths';\nimport { scopeWords } from '../../outside-parties/scope-words';\nimport { StatusBadge, Tag } from '../../outside-parties/ui/status-badge';\nimport { ToolRow } from '../../outside-parties/ui/tool-row';\nimport { RepeatableSwitch } from './repeatable-switch';\nimport { ToolSwitch } from './tool-switch';\n\n/** The scopes that change a party's owner, its scopes, and retire it (0056). */\nexport const OWNING_SCOPE = 'fleet:owner';\nexport const GRANTING_SCOPE = 'scopes:grant';\nexport const RETIRING_SCOPE = 'fleet:manage';\n\n/** The scope that switches a server's tools (aeolus-fleet#1151) and marks an A2A agent (A9). */\nexport const APPROVING_SCOPE = 'gateway:approve';\n\n/** The way back to the list, in the page's fleet. */\nexport function Back({ fleetId }: { fleetId: string }) {\n return (\n <a href={inFleet(OUTSIDE_PARTIES_PATH, fleetId)} className=\"text-muted-foreground hover:text-foreground\">\n ← Outside parties\n </a>\n );\n}\n\n/** Why the API refused: said in place of the page. */\nexport function Refusal({ children }: { children: ReactNode }) {\n return (\n <p role=\"alert\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {children}\n </p>\n );\n}\n\n/** What a party's outside address is called on its page. */\nconst ADDRESS_LABELS: Record<ListedParty['kind'], string> = { mcpServer: 'Address', mcpClient: 'Client id', a2aClient: 'Address', a2aAgent: 'Card address' };\n\nconst UNKNOWN = <span className=\"text-muted-foreground\">Not known</span>;\n\nfunction Fact({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div className=\"grid gap-1 sm:grid-cols-[10rem_1fr]\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd className=\"flex flex-wrap items-center gap-2\">{children}</dd>\n </div>\n );\n}\n\n/** The party's head: its name, protocol, side and state. */\nexport function PartyHead({ party }: { party: ListedParty }) {\n const { protocol, side } = PARTY_KINDS[party.kind];\n const state = PARTY_STATES[party.state];\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <h1 className=\"text-title font-semibold\">{party.name}</h1>\n <Tag>{protocol}</Tag>\n <Tag>{SIDES[side].one}</Tag>\n <StatusBadge tone={state.tone} label={state.label} />\n </div>\n );\n}\n\n/**\n * One outside party (design B, screens 12 and 14): its proxy ship's state,\n * then its facts as the fleet holds them, and for an MCP server the tools\n * it lists now, each with its switch for an approver (aeolus-fleet#1151);\n * for an A2A agent its repeatable mark, a switch for an approver (A9). Each control shows only to an account holding\n * its scope; the API checks it again.\n */\nexport async function OutsideParty({ page, name }: { page: SignedInPage; name: string }) {\n const { api, fleetId, scopes } = page;\n const read = await readOf(api.parties.get.query({ name }));\n if (!read.isOk) {\n return (\n <div className=\"grid gap-4\">\n <Back fleetId={fleetId} />\n <Refusal>{read.refusal}</Refusal>\n </div>\n );\n }\n const party = read.value;\n const address = outsideAddressOf(party);\n const [tools, cards] = await Promise.all([\n party.kind === 'mcpServer' ? readOf(api.parties.tools.query({ name })) : undefined,\n party.kind === 'a2aClient' ? readOf(api.parties.cardAddresses.query({ name })) : undefined,\n ]);\n const change = (\n <a href={inFleet(partyPath(party.name, 'change'), fleetId)} className=\"text-primary hover:underline\" data-testid=\"outside-party-change\">\n Change\n </a>\n );\n return (\n <div className=\"grid gap-4\">\n <Back fleetId={fleetId} />\n <PartyHead party={party} />\n <dl className={`${CARD} grid gap-3`}>\n <Fact label=\"Proxy ship\">{party.proxyShipName ?? UNKNOWN}</Fact>\n <Fact label=\"Owner\">\n {party.ownerName ?? UNKNOWN}\n {scopes.includes(OWNING_SCOPE) ? change : null}\n </Fact>\n <Fact label=\"Scopes\">\n {party.scopes === null\n ? UNKNOWN\n : party.scopes.map((scope) => <Tag key={scope}>{scopeWords(scope)}</Tag>)}\n {scopes.includes(GRANTING_SCOPE) ? change : null}\n </Fact>\n {party.kind === 'mcpServer' || party.kind === 'a2aAgent' ? <Fact label=\"Credential\">{CREDENTIAL_KINDS.find(({ kind }) => kind === party.credentialKind)?.label}</Fact> : null}\n {address === null ? null : (\n <Fact label={ADDRESS_LABELS[party.kind]}>\n <span className=\"font-mono\">{address}</span>\n </Fact>\n )}\n {party.kind === 'a2aAgent' ? (\n <>\n <Fact label=\"Messages at once\">{party.concurrencyLimit}</Fact>\n <Fact label=\"Repeatable\">\n {scopes.includes(APPROVING_SCOPE) ? <RepeatableSwitch fleetId={fleetId} party={party.name} isRepeatable={party.isRepeatable} /> : <Tag>{party.isRepeatable ? 'Repeatable' : 'Not repeatable'}</Tag>}\n </Fact>\n </>\n ) : null}\n </dl>\n {tools === undefined ? null : (\n <section className={`${CARD} grid gap-2`} data-testid=\"outside-party-tools\">\n <h2 className=\"flex justify-between text-section font-semibold\">\n <span>Tools</span>\n {tools.isOk ? (\n <span>\n {tools.value.tools.filter((tool) => tool.isOn).length} of {tools.value.tools.length} on\n </span>\n ) : null}\n </h2>\n {tools.isOk ? (\n <>\n <p className=\"text-muted-foreground\">\n The fleet may call only the tools switched on; every ship that may reach {party.name} reaches the same. {scopes.includes(APPROVING_SCOPE) ? null : 'Switching them needs gateway:approve.'}\n </p>\n <ul className=\"grid\">\n {tools.value.tools.map((tool) => (\n <ToolRow\n key={tool.name}\n tool={tool}\n testId=\"outside-party-tool\"\n control={scopes.includes(APPROVING_SCOPE) ? <ToolSwitch fleetId={fleetId} party={party.name} tool={tool.name} isOn={tool.isOn} /> : <Tag>{tool.isOn ? 'On' : 'Off'}</Tag>}\n />\n ))}\n </ul>\n </>\n ) : (\n <p className=\"text-muted-foreground\">{tools.refusal}</p>\n )}\n </section>\n )}\n {cards === undefined ? null : (\n <section className={`${CARD} grid gap-2`} data-testid=\"outside-party-cards\">\n <h2 className=\"flex justify-between text-section font-semibold\">\n <span>Card addresses</span>\n {cards.isOk ? <span>{cards.value.addresses.length}</span> : null}\n </h2>\n <p className=\"text-muted-foreground\">One per ship its proxy ship reaches now. Its owner hands them to the client.</p>\n {!cards.isOk ? (\n <p className=\"text-muted-foreground\">{cards.refusal}</p>\n ) : cards.value.addresses.length === 0 ? (\n <p className=\"text-muted-foreground\">It reaches no ship now.</p>\n ) : (\n <ul className=\"grid gap-1\">\n {cards.value.addresses.map((address) => (\n <li key={address} className=\"break-all font-mono text-code\">\n {address}\n </li>\n ))}\n </ul>\n )}\n </section>\n )}\n {scopes.includes(RETIRING_SCOPE) ? (\n <div>\n <a className={BUTTONS.secondary} href={inFleet(partyPath(party.name, 'retire'), fleetId)} data-testid=\"outside-party-retire\">\n Retire {party.name}…\n </a>\n </div>\n ) : null}\n </div>\n );\n}\n","import { CORE_SCOPE_DESCRIPTIONS, scopeSchema } from '@aeolus-fleet/common';\n\n/** A scope in plain words: what a core scope allows, as the fleet words it (decision 0046); a plugin's scope by its name. */\nexport function scopeWords(scope: string): string {\n const core = scopeSchema.safeParse(scope);\n return core.success ? CORE_SCOPE_DESCRIPTIONS[core.data] : scope;\n}\n","import type { ReactNode } from 'react';\n\nimport { firstLineOf } from '../../add-server/tool-choice';\nimport { StatusBadge, Tag } from './status-badge';\n\n/** A tool of an outside MCP server, as its row shows it. */\nexport interface ShownTool {\n name: string;\n description?: string | undefined;\n isReadOnly: boolean;\n isNew?: boolean;\n}\n\n/**\n * One tool in a list an approver scans (aeolus-fleet#1151): its switch, its\n * name, whether the server says it reads only, whether it is new, and its\n * description's first line, the whole description folded open on a click.\n */\nexport function ToolRow({ tool, control, testId }: { tool: ShownTool; control: ReactNode; testId?: string }) {\n const { name, description, isReadOnly, isNew = false } = tool;\n const firstLine = description === undefined ? '' : firstLineOf(description);\n const isFolded = description !== undefined && description.trim() !== firstLine;\n return (\n <li className=\"grid gap-1 border-b border-border py-2 last:border-b-0\" data-testid={testId}>\n <div className=\"flex flex-wrap items-center gap-2\">\n {control}\n <span className=\"font-mono\">{name}</span>\n {isReadOnly ? <Tag>reads only</Tag> : null}\n {isNew ? <StatusBadge tone=\"attention\" label=\"New\" /> : null}\n </div>\n {firstLine === '' ? null : isFolded ? (\n <details className=\"text-muted-foreground\">\n <summary className=\"cursor-pointer\">{firstLine}</summary>\n <p className=\"mt-1 whitespace-pre-line\">{description}</p>\n </details>\n ) : (\n <p className=\"text-muted-foreground\">{firstLine}</p>\n )}\n </li>\n );\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const RepeatableSwitch = registerClientReference(\n function() { throw new Error(\"Attempted to call RepeatableSwitch() from the server but RepeatableSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/outside-party/ui/repeatable-switch.tsx\",\n \"RepeatableSwitch\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const ToolSwitch = registerClientReference(\n function() { throw new Error(\"Attempted to call ToolSwitch() from the server but ToolSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/outside-party/ui/tool-switch.tsx\",\n \"ToolSwitch\",\n);\n"],"names":["scopeWords","scope","core","safeParse","success","data","RepeatableSwitch","Error","ToolSwitch"],"mappings":"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","ignoreList":[3,4]}
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[25964,a=>{var b=a.i(72131),c=a.i(50944);a.s(["LiveRefresh",0,function({fleetId:a}){let d;return d=(0,c.useRouter)(),(0,b.useEffect)(()=>{let b=new EventSource(`/overview/changes?fleet=${encodeURIComponent(a)}`);return b.onmessage=()=>{d.refresh()},()=>{b.close()}},[a,d]),(0,b.useEffect)(()=>{let b,c=()=>{let c="visible"===document.visibilityState&&document.hasFocus();c&&void 0===b?b=new EventSource(`/overview/focus?fleet=${encodeURIComponent(a)}`):c||void 0===b||(b.close(),b=void 0)};return c(),window.addEventListener("focus",c),window.addEventListener("blur",c),document.addEventListener("visibilitychange",c),()=>{window.removeEventListener("focus",c),window.removeEventListener("blur",c),document.removeEventListener("visibilitychange",c),b?.close()}},[a]),null}],25964)},1542,24229,a=>{var b=a.i(87924);let c={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};a.s(["f",0,function({isPending:a,pendingLabel:d,variant:e="secondary",children:f,className:g="",disabled:h,...i}){return(0,b.jsx)("button",{...i,disabled:!0===h||a,"aria-busy":a,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${c[e]} ${g}`,children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),d]}):f})}],1542),a.s(["f",0,function({message:a,isFailure:c}){return c?(0,b.jsx)("p",{role:"alert","data-testid":"overview-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a}):(0,b.jsx)("p",{role:"status","data-testid":"overview-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a})}],24229)}]})();
2
-
3
- //# sourceMappingURL=web_features_overview_16dyz2ngvs14b._.js.map
@@ -1,3 +0,0 @@
1
- @font-face{font-family:geistSans;src:url(../media/geist_variable-s.p.0mrjj4bg00-he.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:geistSans Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}.FBhtWW_className{font-family:geistSans,geistSans Fallback}.FBhtWW_variable{--font-geist-sans:"geistSans", "geistSans Fallback"}
2
- @font-face{font-family:geistMono;src:url(../media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:geistMono Fallback;src:local(Arial);ascent-override:76.43%;descent-override:22.43%;line-gap-override:0.0%;size-adjust:131.49%}.oS6g6q_className{font-family:geistMono,geistMono Fallback}.oS6g6q_variable{--font-geist-mono:"geistMono", "geistMono Fallback"}
3
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:.25rem;--container-xs:20rem;--container-5xl:64rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--radius-xs:var(--radius-xs);--radius-sm:var(--radius-sm);--radius-md:var(--radius-md);--radius-lg:var(--radius-lg);--radius-xl:var(--radius-xl);--radius-2xl:var(--radius-2xl);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--ease-standard:var(--ease-standard);--ease-exit:var(--ease-exit);--text-micro:var(--text-micro);--text-micro--line-height:var(--text-micro--line-height);--text-caption:var(--text-caption);--text-caption--line-height:var(--text-caption--line-height);--text-meta:var(--text-meta);--text-meta--line-height:var(--text-meta--line-height);--text-body:var(--text-body);--text-body--line-height:var(--text-body--line-height);--text-section:var(--text-section);--text-section--line-height:var(--text-section--line-height);--text-body-touch:var(--text-body-touch);--text-body-touch--line-height:var(--text-body-touch--line-height);--text-input-touch:var(--text-input-touch);--text-input-touch--line-height:var(--text-input-touch--line-height);--text-heading:var(--text-heading);--text-heading--line-height:var(--text-heading--line-height);--text-heading-touch:var(--text-heading-touch);--text-heading-touch--line-height:var(--text-heading-touch--line-height);--text-title:var(--text-title);--text-title--line-height:var(--text-title--line-height);--text-title-touch:var(--text-title-touch);--text-title-touch--line-height:var(--text-title-touch--line-height);--text-metric:var(--text-metric);--text-metric--line-height:var(--text-metric--line-height);--text-id:var(--text-id);--text-id--line-height:var(--text-id--line-height);--text-code:var(--text-code);--text-code--line-height:var(--text-code--line-height)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border)}body{background-color:var(--background);font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height));color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus-visible{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--ring)}button,[role=button],[data-slot=button],[role=menuitem],[role=menuitemcheckbox],[role=menuitemradio],[role=option],[role=tab],[role=checkbox],[role=switch]{cursor:pointer}:is(button,[role=button],[data-slot=button],[role=menuitem],[role=menuitemcheckbox],[role=menuitemradio],[role=option],[role=tab],[role=checkbox],[role=switch]):is(:disabled,[aria-disabled=true],[data-disabled]){cursor:default}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important;animation-iteration-count:1!important}}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:0}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:0}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-30{z-index:30}.z-50{z-index:50}.order-last{order:9999}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-px{margin-top:1px}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.size-\(--size-control\){width:var(--size-control);height:var(--size-control)}.size-\(--size-control-touch\){width:var(--size-control-touch);height:var(--size-control-touch)}.size-\(--size-icon\){width:var(--size-icon);height:var(--size-icon)}.size-\(--size-icon-sm\){width:var(--size-icon-sm);height:var(--size-icon-sm)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.h-\(--size-control\){height:var(--size-control)}.h-\(--size-control-sm\){height:var(--size-control-sm)}.h-\(--size-control-touch\){height:var(--size-control-touch)}.h-\(--size-control-xs\){height:var(--size-control-xs)}.h-\(--size-header\){height:var(--size-header)}.h-1{height:var(--spacing)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8\.5{height:calc(var(--spacing) * 8.5)}.h-9{height:calc(var(--spacing) * 9)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\(--available-height\){max-height:var(--available-height)}.max-h-\[90dvh\]{max-height:90dvh}.max-h-\[calc\(100dvh-var\(--spacing\)\*8\)\]{max-height:calc(100dvh - var(--spacing) * 8)}.max-h-\[min\(60dvh\,var\(--spacing\)\*100\)\]{max-height:min(60dvh, var(--spacing) * 100)}.min-h-0{min-height:0}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-dvh{min-height:100dvh}.w-\(--size-control\){width:var(--size-control)}.w-\(--size-control-sm\){width:var(--size-control-sm)}.w-\(--size-control-touch\){width:var(--size-control-touch)}.w-\(--size-control-xs\){width:var(--size-control-xs)}.w-9{width:calc(var(--spacing) * 9)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-110{max-width:calc(var(--spacing) * 110)}.max-w-\[calc\(100\%-var\(--spacing\)\*8\)\]{max-width:calc(100% - var(--spacing) * 8)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-48{min-width:calc(var(--spacing) * 48)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-full{flex-basis:100%}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.content-start{align-content:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.justify-items-center{justify-items:center}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:var(--border)}.border-current{border-color:currentColor}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-tone-active-border{border-color:var(--tone-active-border)}.border-tone-attention-border{border-color:var(--tone-attention-border)}.border-tone-ended-border{border-color:var(--tone-ended-border)}.border-tone-ok-border{border-color:var(--tone-ok-border)}.border-tone-waiting-border{border-color:var(--tone-waiting-border)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-foreground{background-color:var(--foreground)}.bg-highlight{background-color:var(--highlight)}.bg-muted{background-color:var(--muted)}.bg-overlay{background-color:var(--overlay)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-tone-active-bg{background-color:var(--tone-active-bg)}.bg-tone-attention-bg{background-color:var(--tone-attention-bg)}.bg-tone-ended-bg{background-color:var(--tone-ended-bg)}.bg-tone-ok-bg{background-color:var(--tone-ok-bg)}.bg-tone-waiting-bg{background-color:var(--tone-waiting-bg)}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-1\.25{padding-inline:calc(var(--spacing) * 1.25)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-\[max\(calc\(var\(--spacing\)\*4\)\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(calc(var(--spacing) * 4), env(safe-area-inset-bottom))}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-body{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.text-body-touch{font-size:var(--text-body-touch);line-height:var(--tw-leading,var(--text-body-touch--line-height))}.text-caption{font-size:var(--text-caption);line-height:var(--tw-leading,var(--text-caption--line-height))}.text-code{font-size:var(--text-code);line-height:var(--tw-leading,var(--text-code--line-height))}.text-heading{font-size:var(--text-heading);line-height:var(--tw-leading,var(--text-heading--line-height))}.text-meta{font-size:var(--text-meta);line-height:var(--tw-leading,var(--text-meta--line-height))}.text-micro{font-size:var(--text-micro);line-height:var(--tw-leading,var(--text-micro--line-height))}.text-section{font-size:var(--text-section);line-height:var(--tw-leading,var(--text-section--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-title{font-size:var(--text-title);line-height:var(--tw-leading,var(--text-title--line-height))}.text-title-touch{font-size:var(--text-title-touch);line-height:var(--tw-leading,var(--text-title-touch--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-tone-active-fg{color:var(--tone-active-fg)}.text-tone-attention-fg{color:var(--tone-attention-fg)}.text-tone-ended-fg{color:var(--tone-ended-fg)}.text-tone-ok-fg{color:var(--tone-ok-fg)}.text-tone-waiting-fg{color:var(--tone-waiting-fg)}.uppercase{text-transform:uppercase}.shadow-lg{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:var(--shadow-md);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.outline-offset-2{outline-offset:2px}.outline-ring{outline-color:var(--ring)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[background-color\,border-color\,opacity\]{transition-property:background-color,border-color,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-\(--duration-base\){--tw-duration:var(--duration-base);transition-duration:var(--duration-base)}.duration-\(--duration-fast\){--tw-duration:var(--duration-fast);transition-duration:var(--duration-fast)}.duration-\(--duration-slow\){--tw-duration:var(--duration-slow);transition-duration:var(--duration-slow)}.ease-\(--ease-standard\){--tw-ease:var(--ease-standard);transition-timing-function:var(--ease-standard)}.outline-dashed{--tw-outline-style:dashed;outline-style:dashed}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:border-primary:hover{border-color:var(--primary)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-card:hover{background-color:var(--card)}.hover\:bg-primary-hover:hover{background-color:var(--primary-hover)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-70:disabled{opacity:.7}:where([data-side=bottom]) .in-data-\[side\=bottom\]\:py-2{padding-block:calc(var(--spacing) * 2)}:where([data-side=bottom]) .in-data-\[side\=bottom\]\:text-section{font-size:var(--text-section);line-height:var(--tw-leading,var(--text-section--line-height))}:where([data-side=right]) .in-data-\[side\=right\]\:flex-row{flex-direction:row}:where([data-side=right]) .in-data-\[side\=right\]\:justify-end{justify-content:flex-end}:where([data-side=right]) .in-data-\[side\=right\]\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}:where([data-side=right]) .in-data-\[side\=right\]\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}:where([data-side=right]) .in-data-\[side\=right\]\:p-6{padding:calc(var(--spacing) * 6)}:where([data-side=right]) .in-data-\[side\=right\]\:px-6{padding-inline:calc(var(--spacing) * 6)}:where([data-side=right]) .in-data-\[side\=right\]\:py-4{padding-block:calc(var(--spacing) * 4)}:where([data-side=right]) .in-data-\[side\=right\]\:py-5{padding-block:calc(var(--spacing) * 5)}:where([data-side=right]) .in-data-\[side\=right\]\:pr-14{padding-right:calc(var(--spacing) * 14)}.aria-disabled\:opacity-60[aria-disabled=true]{opacity:.6}.aria-expanded\:bg-accent[aria-expanded=true]{background-color:var(--accent)}.aria-\[current\=true\]\:border-ring[aria-current=true]{border-color:var(--ring)}.data-closed\:animate-out[data-closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.data-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\:opacity-45[data-disabled],.data-disabled\:not-data-loading\:opacity-45[data-disabled]:not([data-loading]){opacity:.45}.data-highlighted\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-loading\:cursor-progress[data-loading]{cursor:progress}.data-open\:animate-in[data-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}.data-\[variant\=destructive\]\:text-destructive-text[data-variant=destructive]{color:var(--destructive-text)}@media (prefers-reduced-motion:no-preference){.motion-safe\:data-closed\:slide-out-to-bottom[data-closed]{--tw-exit-translate-y:100%}.motion-safe\:data-closed\:slide-out-to-right[data-closed]{--tw-exit-translate-x:100%}.motion-safe\:data-open\:slide-in-from-bottom[data-open]{--tw-enter-translate-y:100%}.motion-safe\:data-open\:slide-in-from-right[data-open]{--tw-enter-translate-x:100%}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:data-closed\:zoom-out-100[data-closed]{--tw-exit-scale:1}.motion-reduce\:data-open\:zoom-in-100[data-open]{--tw-enter-scale:1}}@media not all and (min-width:64rem){.max-lg\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.max-lg\:w-auto{width:auto}}@media not all and (min-width:40rem){.max-sm\:top-0{top:0}.max-sm\:top-auto{top:auto}.max-sm\:bottom-0{bottom:0}.max-sm\:left-0{left:0}.max-sm\:flex{display:flex}.max-sm\:hidden{display:none}.max-sm\:h-\(--size-control-touch\){height:var(--size-control-touch)}.max-sm\:h-\(--size-header\){height:var(--size-header)}.max-sm\:h-dvh{height:100dvh}.max-sm\:max-h-none{max-height:none}.max-sm\:max-w-full{max-width:100%}.max-sm\:grow{flex-grow:1}.max-sm\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-sm\:translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-sm\:flex-col{flex-direction:column}.max-sm\:content-start{align-content:flex-start}.max-sm\:overflow-y-auto{overflow-y:auto}.max-sm\:rounded-none{border-radius:0}.max-sm\:rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.max-sm\:border-0{border-style:var(--tw-border-style);border-width:0}.max-sm\:border-x-0{border-inline-style:var(--tw-border-style);border-inline-width:0}.max-sm\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.max-sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.max-sm\:pb-\[max\(calc\(var\(--spacing\)\*4\)\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(calc(var(--spacing) * 4), env(safe-area-inset-bottom))}.max-sm\:text-body-touch{font-size:var(--text-body-touch);line-height:var(--tw-leading,var(--text-body-touch--line-height))}}@media (min-width:481px){.min-\[481px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:40rem){.sm\:top-\[12dvh\]{top:12dvh}.sm\:hidden{display:none}.sm\:max-w-\(--size-dialog-md\){max-width:var(--size-dialog-md)}.sm\:max-w-\(--size-dialog-sm\){max-width:var(--size-dialog-sm)}.sm\:max-w-\(--size-sheet\){max-width:var(--size-sheet)}.sm\:translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[10rem_1fr\]{grid-template-columns:10rem 1fr}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (min-width:48rem){.md\:grid-cols-\[1fr_18rem\]{grid-template-columns:1fr 18rem}}@media not all and (min-width:40rem){.max-sm\:\[\&_\[data-slot\=button\]\]\:h-\(--size-control-touch\) [data-slot=button]{height:var(--size-control-touch)}.max-sm\:\[\&_\[data-slot\=button\]\]\:w-full [data-slot=button]{width:100%}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-\(--size-icon\) svg{width:var(--size-icon);height:var(--size-icon)}.\[\&_svg\]\:size-\(--size-icon-sm\) svg{width:var(--size-icon-sm);height:var(--size-icon-sm)}.\[\&_svg\]\:size-3 svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\]\:size-6 svg{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:text-muted-foreground svg{color:var(--muted-foreground)}.data-\[variant\=destructive\]\:\[\&_svg\]\:text-destructive-text[data-variant=destructive] svg{color:var(--destructive-text)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-\(--size-icon\) svg:not([class*=size-]){width:var(--size-icon);height:var(--size-icon)}.\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-5 svg:not([class*=size-]){width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:#fbfcfd;--card:#fff;--popover:#fff;--muted:#f1f4f7;--secondary:#ecf1f5;--accent:#eaeff4;--sidebar:#f5f7fa;--highlight:#e2f0ff;--overlay:#10161f6b;--foreground:#151b24;--muted-foreground:#5c646f;--destructive-text:#c51e21;--border:#dee2e7;--input:#d4dadf;--ring:#4475ba;--primary:#1a3860;--primary-hover:#102b50;--primary-foreground:#f8fafc;--destructive:#c51e21;--destructive-foreground:#fcfcfc;--tone-waiting-bg:#fff2d6;--tone-waiting-fg:#824c11;--tone-waiting-border:#f0cf98;--tone-active-bg:#e5f2ff;--tone-active-fg:#1653a1;--tone-active-border:#b5d4f8;--tone-ok-bg:#defae6;--tone-ok-fg:#136239;--tone-ok-border:#addfbd;--tone-attention-bg:#ffebe9;--tone-attention-fg:#b7191c;--tone-attention-border:#fcc0ba;--tone-ended-bg:#eef1f4;--tone-ended-fg:#565b63;--tone-ended-border:#cfd5db;--card-foreground:var(--foreground);--popover-foreground:var(--foreground);--secondary-foreground:var(--foreground);--accent-foreground:var(--foreground);--sidebar-foreground:var(--foreground);--font-sans:var(--font-geist-sans,"Geist"), ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:var(--font-geist-mono,"Geist Mono"), ui-monospace, "SF Mono", Menlo, Consolas, monospace;--shadow-sm:0 1px 2px #10161f0f;--shadow-md:0 2px 6px #10161f14;--shadow-lg:0 16px 40px #10161f29, 0 2px 8px #10161f14;--radius:8px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:12px;--radius-2xl:18px;--radius-full:9999px;--spacing:4px;--text-micro:11px;--text-micro--line-height:14px;--text-caption:12px;--text-caption--line-height:16px;--text-meta:13px;--text-meta--line-height:18px;--text-body:14px;--text-body--line-height:20px;--text-section:15px;--text-section--line-height:20px;--text-body-touch:15px;--text-body-touch--line-height:22px;--text-input-touch:16px;--text-input-touch--line-height:24px;--text-heading:18px;--text-heading--line-height:24px;--text-heading-touch:20px;--text-heading-touch--line-height:26px;--text-title:22px;--text-title--line-height:28px;--text-title-touch:24px;--text-title-touch--line-height:30px;--text-metric:28px;--text-metric--line-height:32px;--text-id:12px;--text-id--line-height:16px;--text-code:13px;--text-code--line-height:20px;--size-control-xs:28px;--size-control-sm:32px;--size-control:36px;--size-control-touch:44px;--size-row-header:40px;--size-row:48px;--size-sidebar:256px;--size-rail:64px;--size-header:56px;--size-tabbar:68px;--size-dialog-sm:512px;--size-dialog-md:560px;--size-palette:600px;--size-sheet:560px;--size-toast:380px;--size-icon-sm:14px;--size-icon:16px;--size-icon-lg:20px;--size-icon-tab:22px;--size-icon-xl:24px;--duration-fast:.15s;--duration-base:.2s;--duration-slow:.3s;--duration-highlight:.6s;--duration-pulse:1.8s;--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-exit:cubic-bezier(.4, 0, 1, 1)}@supports (color:lab(0% 0 0)){:root{--background:lab(98.84% -.25633 -.7025);--card:lab(100% 0 0);--popover:lab(100% 0 0);--muted:lab(96.1718% -.636458 -1.7537);--secondary:lab(94.7795% -.886709 -2.45281);--accent:lab(94.1991% -1.13466 -3.15061);--sidebar:lab(97.2159% -.510335 -1.40365);--highlight:lab(94.1565% -3.55023 -12.359);--overlay:lab(7.15126% -.757448 -7.10759/.42);--foreground:lab(9.44257% -.882573 -7.1811);--muted-foreground:lab(41.9401% -1.20607 -7.30436);--destructive-text:lab(43.4764% 63.0288 44.9792);--border:lab(89.7912% -1.01018 -2.80142);--input:lab(86.6587% -1.25566 -3.49786);--ring:lab(48.2171% -.19902 -41.9777);--primary:lab(22.9108% .477299 -27.9047);--primary-hover:lab(17.1077% 1.09069 -26.0882);--primary-foreground:lab(98.26% -.383556 -1.05326);--destructive:lab(43.4764% 63.0288 44.9792);--destructive-foreground:lab(98.84% .0000298023 -.0000119209);--tone-waiting-bg:lab(96.0934% 1.75816 17.5194);--tone-waiting-fg:lab(38.1407% 20.1792 41.8366);--tone-waiting-border:lab(85.0466% 6.46147 31.8738);--tone-active-bg:lab(94.7452% -3.09145 -10.616);--tone-active-fg:lab(35.0481% 4.78971 -48.4651);--tone-active-border:lab(83.6242% -4.79585 -21.1849);--tone-ok-bg:lab(95.8995% -12.4059 6.35721);--tone-ok-fg:lab(36.333% -32.0338 16.5382);--tone-ok-border:lab(84.6954% -21.8384 11.2033);--tone-attention-bg:lab(94.7535% 8.58074 4.62652);--tone-attention-fg:lab(40.095% 59.891 42.9038);--tone-attention-border:lab(83.1031% 21.6022 11.7713);--tone-ended-bg:lab(95.0118% -.636339 -1.75368);--tone-ended-fg:lab(38.4771% -.941873 -5.49564);--tone-ended-border:lab(84.9187% -1.25512 -3.49756);--shadow-sm:0 1px 2px lab(7.15126% -.757448 -7.10759/.06);--shadow-md:0 2px 6px lab(7.15126% -.757448 -7.10759/.08);--shadow-lg:0 16px 40px lab(7.15126% -.757448 -7.10759/.16), 0 2px 8px lab(7.15126% -.757448 -7.10759/.08)}}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#0d1015;--card:#12161c;--popover:#161a20;--muted:#191d22;--secondary:#1f2329;--accent:#20242b;--sidebar:#101419;--highlight:#17273c;--overlay:#0102039e;--foreground:#edf0f3;--muted-foreground:#9ea5af;--destructive-text:#f2716a;--border:#272c32;--input:#333840;--ring:#6fa2db;--primary:#b6d5f4;--primary-hover:#d4e7fc;--primary-foreground:#0e1928;--destructive:#cc3336;--destructive-foreground:#fcfcfc;--tone-waiting-bg:#3c2607;--tone-waiting-fg:#f8cd7d;--tone-waiting-border:#634315;--tone-active-bg:#172c49;--tone-active-fg:#a9d2ff;--tone-active-border:#2b4d7d;--tone-ok-bg:#143320;--tone-ok-fg:#9be5b4;--tone-ok-border:#275639;--tone-attention-bg:#4b1d1b;--tone-attention-fg:#ffb4ad;--tone-attention-border:#883835;--tone-ended-bg:#202328;--tone-ended-fg:#b1b8c1;--tone-ended-border:#393d44;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 2px 6px #00000059;--shadow-lg:0 16px 40px #0000008c, 0 2px 8px #0000004d}@supports (color:lab(0% 0 0)){.dark{--background:lab(4.56739% -.417769 -3.37754);--card:lab(7.18491% -.630595 -4.65493);--popover:lab(8.89656% -.700764 -4.71278);--muted:lab(10.4095% -.676453 -4.36219);--secondary:lab(13.5387% -.73956 -4.72851);--accent:lab(14.1148% -.783846 -5.08703);--sidebar:lab(6.16149% -.531338 -4.06672);--highlight:lab(15.107% -1.361 -15.7353);--overlay:lab(.455816% -.0482127 -.653371/.62);--foreground:lab(94.7798% -.636339 -1.75365);--muted-foreground:lab(67.4768% -1.0519 -5.88543);--destructive-text:lab(63.6309% 50.1648 28.8057);--border:lab(17.5961% -.808239 -5.09725);--input:lab(23.394% -.885412 -5.46975);--ring:lab(64.8496% -5.60537 -34.6175);--primary:lab(83.6683% -5.12746 -19.2326);--primary-hover:lab(90.6759% -3.5378 -12.3533);--primary-foreground:lab(8.17586% -.649236 -12.3421);--destructive:lab(47.0381% 60.1094 37.2059);--destructive-foreground:lab(98.84% .0000298023 -.0000119209);--tone-waiting-bg:lab(17.5567% 8.17178 22.7599);--tone-waiting-fg:lab(85.0863% 8.58706 45.6068);--tone-waiting-border:lab(31.4529% 11.0342 32.3777);--tone-active-bg:lab(17.2774% -.258967 -21.012);--tone-active-fg:lab(82.3866% -5.7745 -28.0371);--tone-active-border:lab(32.1629% -.149235 -31.4833);--tone-ok-bg:lab(18.2944% -15.8427 8.15558);--tone-ok-fg:lab(85.0855% -31.3725 16.1132);--tone-ok-border:lab(32.4765% -22.1729 11.4133);--tone-attention-bg:lab(18.1126% 21.9566 12.6385);--tone-attention-fg:lab(80.5887% 27.8621 15.2822);--tone-attention-border:lab(35.1164% 34.5375 19.9972);--tone-ended-bg:lab(13.5502% -.605464 -3.65328);--tone-ended-fg:lab(74.4403% -.999719 -5.52465);--tone-ended-border:lab(25.7254% -.748262 -4.39403);--shadow-sm:0 1px 2px lab(0% 0 0/.3);--shadow-md:0 2px 6px lab(0% 0 0/.35);--shadow-lg:0 16px 40px lab(0% 0 0/.55), 0 2px 8px lab(0% 0 0/.3)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
@@ -1 +0,0 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,28008,e=>{e.s(["H",0,"fleet","Q",0,{kind:"idle"}])},25621,e=>{var t=e.i(43476);e.s(["f",0,function({isOn:e,label:i,isPending:n=!1,type:a="button",onClick:s,testId:r}){return(0,t.jsx)("button",{type:a,role:"switch","aria-checked":e,"aria-label":i,"aria-busy":n,disabled:n,onClick:s,"data-testid":r,className:`inline-flex h-5 w-9 shrink-0 items-center rounded-full border p-0.5 transition-colors disabled:opacity-60 ${e?"border-primary bg-primary":"border-input bg-muted"}`,children:(0,t.jsx)("span",{className:`size-3.5 rounded-full bg-background shadow-sm transition-transform ${e?"translate-x-4":"translate-x-0"} ${n?"animate-pulse":""}`})})}])},12137,e=>{var t=e.i(43476),i=e.i(71645),n=e.i(74080),a=e.i(28008),s=e.i(25621),r=e.i(95187);let l=(0,r.createServerReference)("609a0ac1fb8cf591f09ebeb0982ac9feae9848f7f9",r.callServer,void 0,r.findSourceMapURL,"markA2aAgent"),d={kind:"idle"};function o({isRepeatable:e}){let i=(0,n.useFormStatus)();return(0,t.jsx)(s.f,{type:"submit",isOn:e,label:"Repeatable",isPending:i.pending,testId:"outside-party-repeatable-switch"})}e.s(["RepeatableSwitch",0,function({fleetId:e,party:n,isRepeatable:s}){let[r,u]=(0,i.useActionState)(l,d),c="marked"===r.kind?r.isRepeatable:s;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("form",{action:u,className:"contents",children:[(0,t.jsx)("input",{type:"hidden",name:a.H,value:e}),(0,t.jsx)("input",{type:"hidden",name:"name",value:n}),(0,t.jsx)("input",{type:"hidden",name:"isRepeatable",value:String(!c)}),(0,t.jsx)(o,{isRepeatable:c})]}),"idle"===r.kind?null:(0,t.jsx)("span",{role:"refused"===r.kind?"alert":"status",className:`basis-full text-caption ${"refused"===r.kind?"text-tone-attention-fg":"text-tone-ok-fg"}`,"data-testid":"outside-party-repeatable-outcome",children:r.message})]})}],12137)},18921,e=>{var t=e.i(43476),i=e.i(71645),n=e.i(74080),a=e.i(28008),s=e.i(25621),r=e.i(95187);let l=(0,r.createServerReference)("60843dc8cdfba379c08634bd86c9ae1e6e20250457",r.callServer,void 0,r.findSourceMapURL,"switchPartyTool"),d={kind:"idle"};function o({isOn:e,tool:i}){let a=(0,n.useFormStatus)();return(0,t.jsx)(s.f,{type:"submit",isOn:e,label:i,isPending:a.pending,testId:"outside-party-tool-switch"})}e.s(["ToolSwitch",0,function({fleetId:e,party:n,tool:s,isOn:r}){let[u,c]=(0,i.useActionState)(l,d),p="switched"===u.kind?u.isOn:r;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("form",{action:c,className:"contents",children:[(0,t.jsx)("input",{type:"hidden",name:a.H,value:e}),(0,t.jsx)("input",{type:"hidden",name:"name",value:n}),(0,t.jsx)("input",{type:"hidden",name:"tool",value:s}),(0,t.jsx)("input",{type:"hidden",name:"isOn",value:String(!p)}),(0,t.jsx)(o,{isOn:p,tool:s})]}),"idle"===u.kind?null:(0,t.jsx)("span",{role:"refused"===u.kind?"alert":"status",className:`order-last basis-full text-caption ${"refused"===u.kind?"text-tone-attention-fg":"text-tone-ok-fg"}`,"data-testid":"outside-party-tool-outcome",children:u.message})]})}],18921)}])})();