@aeolus-fleet/gateway 0.30.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) 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.d.ts +2 -0
  6. package/dist/adapters/fleet/rest-fleet-door.js +51 -7
  7. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  8. package/dist/adapters/http/mcp-endpoint.js +1 -1
  9. package/dist/adapters/http/mcp-endpoint.js.map +1 -1
  10. package/dist/adapters/http/person-tools.d.ts +4 -7
  11. package/dist/adapters/http/person-tools.js +76 -11
  12. package/dist/adapters/http/person-tools.js.map +1 -1
  13. package/dist/adapters/pagasae/email-channel.js +4 -2
  14. package/dist/adapters/pagasae/email-channel.js.map +1 -1
  15. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +50 -50
  16. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  17. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  18. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2 -0
  19. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +2 -0
  20. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  21. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +2 -0
  22. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +2 -0
  23. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  24. package/dist/adapters/prisma/generated/models/A2aPush.d.ts +0 -7
  25. package/dist/adapters/prisma/generated/models/Party.d.ts +70 -1
  26. package/dist/adapters/prisma/scope-requirements.d.ts +10 -0
  27. package/dist/adapters/prisma/scope-requirements.js +37 -0
  28. package/dist/adapters/prisma/scope-requirements.js.map +1 -0
  29. package/dist/adapters/trpc/router.d.ts +154 -8
  30. package/dist/adapters/trpc/router.js +130 -11
  31. package/dist/adapters/trpc/router.js.map +1 -1
  32. package/dist/app.js +38 -9
  33. package/dist/app.js.map +1 -1
  34. package/dist/core/a2a-out/agent-event.d.ts +1 -1
  35. package/dist/core/a2a-out/agent-event.js +2 -2
  36. package/dist/core/a2a-out/agent-event.js.map +1 -1
  37. package/dist/core/a2a-out/agent-statement.d.ts +2 -1
  38. package/dist/core/a2a-out/agent-statement.js +5 -2
  39. package/dist/core/a2a-out/agent-statement.js.map +1 -1
  40. package/dist/core/a2a-out/hand-a2a-message.d.ts +7 -2
  41. package/dist/core/a2a-out/hand-a2a-message.js +15 -1
  42. package/dist/core/a2a-out/hand-a2a-message.js.map +1 -1
  43. package/dist/core/a2a-out/read-agent-statement.d.ts +1 -0
  44. package/dist/core/a2a-out/read-agent-statement.js +1 -1
  45. package/dist/core/a2a-out/read-agent-statement.js.map +1 -1
  46. package/dist/core/a2a-out/state-a2a-agent.d.ts +3 -2
  47. package/dist/core/a2a-out/state-a2a-agent.js +3 -2
  48. package/dist/core/a2a-out/state-a2a-agent.js.map +1 -1
  49. package/dist/core/account-sign-in/account-in-view.d.ts +10 -1
  50. package/dist/core/account-sign-in/account-in-view.js +17 -4
  51. package/dist/core/account-sign-in/account-in-view.js.map +1 -1
  52. package/dist/core/connection/ports.d.ts +8 -0
  53. package/dist/core/mcp-out/hand-call.d.ts +6 -2
  54. package/dist/core/mcp-out/hand-call.js +14 -1
  55. package/dist/core/mcp-out/hand-call.js.map +1 -1
  56. package/dist/core/mcp-out/state-party.d.ts +3 -2
  57. package/dist/core/mcp-out/state-party.js +2 -2
  58. package/dist/core/mcp-out/state-party.js.map +1 -1
  59. package/dist/core/mcp-out/statement.d.ts +16 -0
  60. package/dist/core/mcp-out/statement.js +10 -3
  61. package/dist/core/mcp-out/statement.js.map +1 -1
  62. package/dist/core/meetings/change-own-mic.d.ts +24 -0
  63. package/dist/core/meetings/change-own-mic.js +21 -0
  64. package/dist/core/meetings/change-own-mic.js.map +1 -0
  65. package/dist/core/meetings/mic-standing.d.ts +18 -0
  66. package/dist/core/meetings/mic-standing.js +11 -0
  67. package/dist/core/meetings/mic-standing.js.map +1 -0
  68. package/dist/core/meetings/ports.d.ts +70 -0
  69. package/dist/core/meetings/ports.js +2 -0
  70. package/dist/core/meetings/ports.js.map +1 -0
  71. package/dist/core/meetings/read-meeting.d.ts +30 -0
  72. package/dist/core/meetings/read-meeting.js +26 -0
  73. package/dist/core/meetings/read-meeting.js.map +1 -0
  74. package/dist/core/operator/ports.d.ts +4 -4
  75. package/dist/core/parties/add-a2a-agent.js +1 -1
  76. package/dist/core/parties/add-a2a-agent.js.map +1 -1
  77. package/dist/core/parties/check-approving.d.ts +36 -0
  78. package/dist/core/parties/check-approving.js +48 -0
  79. package/dist/core/parties/check-approving.js.map +1 -0
  80. package/dist/core/parties/check-required-scopes.d.ts +34 -0
  81. package/dist/core/parties/check-required-scopes.js +27 -0
  82. package/dist/core/parties/check-required-scopes.js.map +1 -0
  83. package/dist/core/parties/ports.d.ts +21 -0
  84. package/dist/core/parties/read-listed-scopes.d.ts +17 -0
  85. package/dist/core/parties/read-listed-scopes.js +23 -0
  86. package/dist/core/parties/read-listed-scopes.js.map +1 -0
  87. package/dist/core/parties/read-scope-requirements.d.ts +18 -0
  88. package/dist/core/parties/read-scope-requirements.js +17 -0
  89. package/dist/core/parties/read-scope-requirements.js.map +1 -0
  90. package/dist/core/parties/scope-requirements.d.ts +34 -0
  91. package/dist/core/parties/scope-requirements.js +37 -0
  92. package/dist/core/parties/scope-requirements.js.map +1 -0
  93. package/dist/core/parties/set-scope-requirements.d.ts +45 -0
  94. package/dist/core/parties/set-scope-requirements.js +48 -0
  95. package/dist/core/parties/set-scope-requirements.js.map +1 -0
  96. package/dist/core/parties/switch-tools.d.ts +39 -0
  97. package/dist/core/parties/switch-tools.js +38 -0
  98. package/dist/core/parties/switch-tools.js.map +1 -0
  99. package/dist/core/parties/tool-switches.d.ts +4 -2
  100. package/dist/core/parties/tool-switches.js +2 -1
  101. package/dist/core/parties/tool-switches.js.map +1 -1
  102. package/dist/core/people/inbox-entry.d.ts +2 -2
  103. package/dist/core/people/inbox-entry.js +9 -2
  104. package/dist/core/people/inbox-entry.js.map +1 -1
  105. package/dist/core/people/open-delivery.d.ts +3 -1
  106. package/dist/core/people/open-delivery.js +1 -1
  107. package/dist/core/people/open-delivery.js.map +1 -1
  108. package/dist/core/people/ports.d.ts +11 -4
  109. package/dist/core/people/wake-person.d.ts +22 -10
  110. package/dist/core/people/wake-person.js +88 -20
  111. package/dist/core/people/wake-person.js.map +1 -1
  112. package/dist/core/people/web-push-channel.js +1 -1
  113. package/dist/core/people/web-push-channel.js.map +1 -1
  114. package/dist/core/shared/errors.d.ts +1 -1
  115. package/dist/core/shared/errors.js.map +1 -1
  116. package/package.json +3 -3
  117. package/src/adapters/prisma/migrations/20261025140000_scope_requirements/migration.sql +3 -0
  118. package/src/adapters/prisma/schema.prisma +69 -65
  119. package/web/.next/BUILD_ID +1 -1
  120. package/web/.next/app-path-routes-manifest.json +2 -0
  121. package/web/.next/build-manifest.json +27 -3
  122. package/web/.next/diagnostics/route-bundle-stats.json +122 -70
  123. package/web/.next/fallback-build-manifest.json +3 -3
  124. package/web/.next/prerender-manifest.json +3 -3
  125. package/web/.next/routes-manifest.json +14 -0
  126. package/web/.next/server/app/(console)/gateway-off/page/app-paths-manifest.json +3 -0
  127. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +23 -0
  128. package/web/.next/server/app/(console)/gateway-off/page/next-font-manifest.json +11 -0
  129. package/web/.next/server/app/(console)/gateway-off/page/react-loadable-manifest.json +1 -0
  130. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +15 -0
  131. package/web/.next/server/app/(console)/gateway-off/page.js +19 -0
  132. package/web/.next/server/app/(console)/gateway-off/page.js.map +5 -0
  133. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -0
  134. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +3 -0
  135. package/web/.next/server/app/(console)/meetings/[meetingId]/page/app-paths-manifest.json +3 -0
  136. package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +23 -0
  137. package/web/.next/server/app/(console)/meetings/[meetingId]/page/next-font-manifest.json +11 -0
  138. package/web/.next/server/app/(console)/meetings/[meetingId]/page/react-loadable-manifest.json +1 -0
  139. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +35 -0
  140. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +21 -0
  141. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.map +5 -0
  142. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -0
  143. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +3 -0
  144. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +17 -7
  145. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +4 -4
  146. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  147. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  148. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +15 -5
  149. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +4 -4
  150. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  151. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  152. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +17 -7
  153. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +4 -4
  154. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  155. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  156. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +17 -7
  157. package/web/.next/server/app/(console)/outside-parties/add/page.js +3 -4
  158. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  159. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  160. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  161. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  162. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  163. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  164. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  165. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  166. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  167. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  168. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  169. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  170. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
  171. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +7 -7
  172. package/web/.next/server/app/(console)/overview/page.js +3 -3
  173. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  174. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  175. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  176. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  177. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  178. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +7 -7
  179. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  180. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  181. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  182. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  183. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  184. package/web/.next/server/app/_global-error.html +1 -1
  185. package/web/.next/server/app/_global-error.rsc +1 -1
  186. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  187. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  188. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  189. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  190. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  191. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  192. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  193. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  194. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  195. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  196. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  197. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  198. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  199. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  200. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  201. package/web/.next/server/app-paths-manifest.json +2 -0
  202. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js +10 -10
  203. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -1
  204. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  205. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  206. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  207. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  209. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  210. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  211. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  212. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  213. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  214. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  215. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  216. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js +1 -1
  217. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js +3 -0
  219. package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js.map +1 -0
  220. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js +3 -0
  221. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js.map +1 -0
  222. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  223. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  224. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +1 -1
  225. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +1 -1
  226. package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js +4 -0
  227. package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js.map +1 -0
  228. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +4 -0
  229. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -0
  230. package/web/.next/server/chunks/ssr/{[root-of-the-server]__11w36a4le04vy._.js → [root-of-the-server]__1dc6okf5os70a._.js} +2 -2
  231. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +1 -1
  233. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js +3 -0
  235. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js.map +1 -0
  236. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  237. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
  239. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +3 -0
  241. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +1 -1
  243. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +4 -0
  244. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -0
  245. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  246. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js +3 -0
  248. package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js.map +1 -0
  249. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  250. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  252. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  253. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  254. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  255. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  256. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js +3 -0
  257. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js.map +1 -0
  258. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +3 -0
  259. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +1 -0
  260. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js +3 -0
  261. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js.map +1 -0
  262. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js +3 -0
  263. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js.map +1 -0
  264. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js +3 -0
  265. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js.map +1 -0
  266. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js +3 -0
  267. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js.map +1 -0
  268. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js +1 -1
  269. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +1 -1
  270. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js +3 -0
  271. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js.map +1 -0
  272. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js +3 -0
  273. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js.map +1 -0
  274. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js +3 -0
  275. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js.map +1 -0
  276. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +1 -1
  277. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +1 -1
  278. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js +3 -0
  279. package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js.map +1 -0
  280. package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js +1 -1
  281. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  282. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  283. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js +3 -0
  284. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js.map +1 -0
  285. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  286. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  287. package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js → web_features_0xbnkk4hfgr9v._.js} +2 -2
  288. package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js.map → web_features_0xbnkk4hfgr9v._.js.map} +1 -1
  289. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +1 -1
  290. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js +3 -0
  291. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js.map +1 -0
  292. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +1 -1
  293. package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js +3 -0
  294. package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js.map +1 -0
  295. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  296. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  297. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  298. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  299. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  300. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  301. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js +3 -0
  302. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +1 -0
  303. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  304. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  305. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +3 -0
  307. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -0
  308. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  309. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js +3 -0
  311. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js.map +1 -0
  312. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  313. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js +3 -0
  315. package/web/.next/server/chunks/ssr/{web_features_overview_16dyz2ngvs14b._.js.map → web_features_overview_0udx5lm8igils._.js.map} +1 -1
  316. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  317. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
  318. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +1 -1
  319. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -1
  320. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  321. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  322. package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js +3 -0
  323. package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js.map +1 -0
  324. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  325. package/web/.next/server/middleware-build-manifest.js +27 -3
  326. package/web/.next/server/next-font-manifest.js +1 -1
  327. package/web/.next/server/next-font-manifest.json +8 -0
  328. package/web/.next/server/pages/500.html +1 -1
  329. package/web/.next/server/preview-props.json +3 -3
  330. package/web/.next/server/server-reference-manifest.js +1 -1
  331. package/web/.next/server/server-reference-manifest.json +76 -26
  332. package/web/.next/static/chunks/10wzmy096av_5.css +3 -0
  333. package/web/.next/static/chunks/{2_41h3v090ur9.js → 1ffk4chq_kmie.js} +1 -1
  334. package/web/.next/static/chunks/1nyfzf-d7kj96.js +1 -0
  335. package/web/.next/static/chunks/202avng4-d5jq.js +1 -0
  336. package/web/.next/static/chunks/{00njqo86bx2kb.js → 26kio8jl2dc6u.js} +1 -1
  337. package/web/.next/static/chunks/2cd4e71s711ad.js +1 -0
  338. package/web/.next/static/chunks/2i3ydqqupow_x.js +1 -0
  339. package/web/.next/static/chunks/2jvq5fses35mf.js +1 -0
  340. package/web/.next/static/chunks/2riya89_i0je8.js +1 -0
  341. package/web/.next/static/chunks/{31vy122d9fvme.js → 2sx1mxv2u71xx.js} +1 -1
  342. package/web/.next/static/chunks/3_pwm8b3mf4mf.js +1 -0
  343. package/web/.next/static/chunks/3f3s544ovqebz.js +1 -0
  344. package/web/.next/static/chunks/{2x00o45pdbkok.js → 3x_8doukmdfpu.js} +1 -1
  345. package/web/.next/static/chunks/{3apnqdh48__yw.js → 3yunex2p9do7t.js} +1 -1
  346. package/web/.next/static/chunks/{1aa1d23q1vokr.js → 40sj32h7okqjq.js} +1 -1
  347. package/web/.next/trace +1 -1
  348. package/web/.next/trace-build +1 -1
  349. package/web/.next/types/routes.d.ts +3 -1
  350. package/web/.next/types/validator.ts +34 -0
  351. package/dist/core/parties/switch-tool.d.ts +0 -29
  352. package/dist/core/parties/switch-tool.js +0 -33
  353. package/dist/core/parties/switch-tool.js.map +0 -1
  354. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +0 -3
  355. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +0 -1
  356. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +0 -1
  357. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +0 -3
  358. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +0 -1
  359. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +0 -3
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +0 -1
  361. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js +0 -3
  362. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js.map +0 -1
  363. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js +0 -3
  364. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js.map +0 -1
  365. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +0 -3
  366. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +0 -1
  367. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +0 -3
  368. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +0 -1
  369. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +0 -3
  370. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +0 -1
  371. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +0 -3
  372. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +0 -1
  373. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +0 -3
  374. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +0 -1
  375. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +0 -3
  376. package/web/.next/static/chunks/047i2x2j--shk.css +0 -3
  377. package/web/.next/static/chunks/0g4cpamshfwmn.js +0 -1
  378. package/web/.next/static/chunks/0j84uiid6fsim.js +0 -1
  379. package/web/.next/static/chunks/1ca21kggixrjz.js +0 -1
  380. package/web/.next/static/chunks/23ud2e13dn8f4.js +0 -1
  381. package/web/.next/static/chunks/3okm5g88ig1l3.js +0 -1
  382. /package/web/.next/static/{Az1CqrzgGHMZVR4nw9717 → JmnMsO8U6uK0nukLKdccI}/_buildManifest.js +0 -0
  383. /package/web/.next/static/{Az1CqrzgGHMZVR4nw9717 → JmnMsO8U6uK0nukLKdccI}/_clientMiddlewareManifest.js +0 -0
  384. /package/web/.next/static/{Az1CqrzgGHMZVR4nw9717 → JmnMsO8U6uK0nukLKdccI}/_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)("6006cd6ed5454b8c34c176236313db65f23f52094d",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)("60a68d36449bc53cbd6e751425ac86bfa7a302a8bf",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%3A2e68f8%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/ui/tool-switch.tsx","../../../../../web/features/outside-party/data%3A2ea68c%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__ [{\"6006cd6ed5454b8c34c176236313db65f23f52094d\":{\"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(\"6006cd6ed5454b8c34c176236313db65f23f52094d\",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__ [{\"60a68d36449bc53cbd6e751425ac86bfa7a302a8bf\":{\"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(\"60a68d36449bc53cbd6e751425ac86bfa7a302a8bf\",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)}.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-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,37642,e=>{var i=e.i(43476),n=e.i(71645),r=e.i(95187);let t=(0,r.createServerReference)("4094bd2603f6cb4c692f8c5bbc35b6dfa0e2cd78a8",r.callServer,void 0,r.findSourceMapURL,"answerDelivery"),a=(0,r.createServerReference)("6014a23e56a6300e1adee24bc60d3989cf9a3ffcaa",r.callServer,void 0,r.findSourceMapURL,"doneDelivery"),s=(0,r.createServerReference)("60813b25998f3aa5040c7138940db92bf5b1bba1ae",r.callServer,void 0,r.findSourceMapURL,"openDelivery");var o=e.i(38314),d=e.i(93633);function l({delivery:e,note:n,working:r,failure:t,onNoteChange:a,onAnswer:s,onDone:c,onBack:u}){let{question:v}=e,b=void 0!==r,p=v?.options.find(e=>e.key===v.pick.option);return(0,i.jsxs)("section",{"data-testid":"overview-delivery",className:"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm",children:[(0,i.jsxs)("span",{className:"text-caption text-muted-foreground",children:[e.from," · ",new Date(e.sentAt).toUTCString()]}),(0,i.jsx)("h2",{className:"text-heading font-semibold",children:v?.title??e.title}),void 0===v?void 0===e.payload?(0,i.jsx)("p",{className:"text-muted-foreground",children:"You opened this before; its content was shown to you then."}):(0,i.jsx)("pre",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-caption",children:e.payload}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("p",{className:"whitespace-pre-wrap",children:v.context}),(0,i.jsx)("div",{className:"flex flex-wrap gap-2",children:v.options.map(e=>(0,i.jsx)(o.f,{title:e.detail,variant:e.key===v.pick.option?"primary":"secondary",className:e.key===v.pick.option?"outline-2 outline-offset-2 outline-dashed outline-ring":"",isPending:r?.kind==="option"&&r.option===e.key,pendingLabel:"Sending...",disabled:b,onClick:()=>{s(e.key)},children:e.label},e.key))}),void 0===p?null:(0,i.jsxs)("p",{className:"text-muted-foreground",children:[p.label," is the pick of ",e.from,": ",v.pick.why]})]}),(0,i.jsxs)("label",{className:"grid gap-1",children:[(0,i.jsx)("span",{children:void 0===v?"Your answer":"Note"}),(0,i.jsx)("textarea",{"data-testid":"overview-note",rows:2,value:n,onChange:e=>{a(e.target.value)},placeholder:void 0===v?"":"Optional, sent with your answer",className:"rounded-md border border-input bg-background p-2"})]}),void 0===t?null:(0,i.jsx)(d.f,{message:t,isFailure:!0}),(0,i.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,i.jsx)(o.f,{"data-testid":"overview-answer",variant:void 0===v?"primary":"secondary",isPending:r?.kind==="note",pendingLabel:"Sending...",disabled:b,onClick:()=>{s(void 0)},children:void 0===v?"Answer":"Send the note alone"}),void 0===v?(0,i.jsx)(o.f,{"data-testid":"overview-done",isPending:r?.kind==="done",pendingLabel:"Marking done...",disabled:b,onClick:c,children:"Done"}):null,(0,i.jsx)("button",{type:"button",onClick:u,disabled:b,className:"inline-flex h-9 items-center rounded-md px-4 text-muted-foreground hover:bg-accent disabled:opacity-70",children:"Back to the inbox"})]})]})}function c({entry:e}){return(0,i.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col text-left",children:[(0,i.jsx)("span",{className:"truncate",children:e.title}),(0,i.jsxs)("span",{className:"text-caption text-muted-foreground",children:["from ",e.from]})]})}function u({waitingCount:e,waiting:n,opened:r,openingId:t,failure:a,onOpen:s,onFocus:l}){return(0,i.jsxs)("div",{className:"grid gap-6",children:[0===n.length?null:(0,i.jsxs)("section",{className:"grid gap-2",children:[(0,i.jsxs)("h2",{className:"text-section font-semibold",children:["Next · ",e]}),n.map(e=>(0,i.jsxs)("div",{className:"grid gap-2 rounded-md border border-border bg-card p-3",children:[(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)(c,{entry:e}),(0,i.jsx)(o.f,{"data-testid":"overview-open",isPending:t===e.deliveryId,pendingLabel:"Opening...",disabled:void 0!==t,onClick:()=>{s(e)},children:"Open"})]}),a?.deliveryId===e.deliveryId?(0,i.jsx)(d.f,{message:a.message,isFailure:!0}):null]},e.deliveryId))]}),0===r.length?null:(0,i.jsxs)("section",{className:"grid gap-2",children:[(0,i.jsxs)("h2",{className:"text-section font-semibold",children:["Opened, not yet dealt with · ",r.length]}),r.map(e=>(0,i.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,i.jsx)(c,{entry:e}),(0,i.jsx)("button",{type:"button","data-testid":"overview-deal",onClick:()=>{l(e)},className:"inline-flex h-9 items-center rounded-md border border-border px-4 hover:bg-accent",children:"Answer or be done"})]},e.deliveryId))]})]})}e.s(["InboxPanel",0,function({fleetId:e,inbox:r}){let[o,c]=(0,n.useState)(),[v,b]=(0,n.useState)(""),[p,f]=(0,n.useState)(),[g,h]=(0,n.useState)(),[m,w]=(0,n.useState)(),[x,y]=(0,n.useState)(),[j,k]=(0,n.useState)(),[,N]=(0,n.useTransition)(),S=e=>{c(e),b(""),y(void 0),k(void 0)},O=({control:e,action:i,said:n})=>{h(e),y(void 0),N(async()=>{let e=await i();h(void 0),e.isOk?(c(void 0),k(n)):y(e.message)})};return void 0!==o?(0,i.jsx)(l,{delivery:o,note:v,working:g,failure:x,onNoteChange:b,onAnswer:i=>{O({control:void 0===i?{kind:"note"}:{kind:"option",option:i},action:()=>t({fleet:e,deliveryId:o.deliveryId,input:{questionId:o.question?.id,option:i,note:v}}),said:`Your answer went to ${o.from}.`})},onDone:()=>{O({control:{kind:"done"},action:()=>a(e,o.deliveryId),said:`Done with “${o.title}”.`})},onBack:()=>{c(void 0)}}):(0,i.jsxs)("div",{className:"grid gap-4",children:[void 0===j?null:(0,i.jsx)(d.f,{message:j,isFailure:!1}),(0,i.jsx)(u,{waitingCount:r.waiting,waiting:r.deliveries,opened:r.opened,openingId:p,failure:m,onOpen:i=>{f(i.deliveryId),w(void 0),k(void 0),N(async()=>{let n=await s(e,i.deliveryId);f(void 0),n.isOk?S(n.value):w({deliveryId:i.deliveryId,message:n.message})})},onFocus:e=>{S({...e,payload:void 0,question:void 0})}})]})}],37642)},10660,e=>{var i=e.i(71645),n=e.i(18566);e.s(["LiveRefresh",0,function({fleetId:e}){let r;return r=(0,n.useRouter)(),(0,i.useEffect)(()=>{let i=new EventSource(`/overview/changes?fleet=${encodeURIComponent(e)}`);return i.onmessage=()=>{r.refresh()},()=>{i.close()}},[e,r]),(0,i.useEffect)(()=>{let i,n=()=>{let n="visible"===document.visibilityState&&document.hasFocus();n&&void 0===i?i=new EventSource(`/overview/focus?fleet=${encodeURIComponent(e)}`):n||void 0===i||(i.close(),i=void 0)};return n(),window.addEventListener("focus",n),window.addEventListener("blur",n),document.addEventListener("visibilitychange",n),()=>{window.removeEventListener("focus",n),window.removeEventListener("blur",n),document.removeEventListener("visibilitychange",n),i?.close()}},[e]),null}],10660)},55557,e=>{var i=e.i(43476),n=e.i(71645),r=e.i(95187);let t=(0,r.createServerReference)("60b48f9537cbc087081a7c9cb59da4be205bfeabdd",r.callServer,void 0,r.findSourceMapURL,"turnEmail");var a=e.i(38314),s=e.i(93633);let o=(0,r.createServerReference)("60aac98a56e7babd7b75c679560c72a3ef6741a3b7",r.callServer,void 0,r.findSourceMapURL,"turnOffWebPush"),d=(0,r.createServerReference)("60da3873bc1544318b9ef24fd1e90ef1716e80cdd3",r.callServer,void 0,r.findSourceMapURL,"turnOnWebPush"),l=[[/Edg\//,"Edge"],[/Firefox\//,"Firefox"],[/Chrome\//,"Chrome"],[/Safari\//,"Safari"]],c=[[/iPhone|iPad/,"iOS"],[/Android/,"Android"],[/Mac OS X/,"macOS"],[/Windows/,"Windows"],[/Linux/,"Linux"]],u=(e,i)=>i.find(([i])=>i.test(e))?.[1],v="/wake-worker.js";async function b(){let e=await navigator.serviceWorker.getRegistration(v);return await e?.pushManager.getSubscription()??null}async function p(e){let i;if(await Notification.requestPermission()!=="granted")return{isOk:!1,message:"Your browser did not allow notifications from this site: allow them, then turn web push on again"};let n=await navigator.serviceWorker.register(v);return await navigator.serviceWorker.ready,{isOk:!0,value:await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:(i=atob(e.replaceAll("-","+").replaceAll("_","/")),Uint8Array.from(i,e=>e.charCodeAt(0)))})}}function f({fleetId:e,webPushKey:r,browsers:t}){let[v,g]=(0,n.useState)(!0),[h,m]=(0,n.useState)(),[w,x]=(0,n.useState)(),[y,j]=(0,n.useState)(),[,k]=(0,n.useTransition)();(0,n.useEffect)(()=>{"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window?b().then(e=>{m(e?.endpoint)}):g(!1)},[]);let N=void 0!==h&&t.some(({endpoint:e,isGone:i})=>e===h&&!i);return(0,i.jsxs)("div",{className:"grid gap-2","data-testid":"overview-wake-web-push",children:[t.map(({endpoint:n,browser:r,addedAt:t,isGone:s})=>(0,i.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,i.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,i.jsxs)("span",{className:"truncate",children:["Web push in ",r,n===h?" · this browser":""]}),(0,i.jsx)("span",{className:"text-caption text-muted-foreground",children:s?"No longer takes wakes: its push service ended them. Turn web push on again in that browser, or remove it.":`On since ${new Date(t).toLocaleDateString()}: it tells you when something waits in this fleet, with a link here. Never what waits.`})]}),(0,i.jsx)(a.f,{"data-testid":"overview-web-push-remove",isPending:w===n,pendingLabel:"Removing...",disabled:void 0!==w,onClick:()=>{x(n),j(void 0),k(async()=>{n===h&&(await (await b())?.unsubscribe(),m(void 0));let i=await o(e,n);x(void 0),i.isOk||j(i.message)})},children:"Remove"})]},n)),v?N?null:(0,i.jsx)("div",{children:(0,i.jsx)(a.f,{"data-testid":"overview-web-push-on",variant:"primary",isPending:"on"===w,pendingLabel:"Turning on...",disabled:void 0!==w,onClick:()=>{x("on"),j(void 0),k(async()=>{try{var i;let n,t,a=await p(r);if(!a.isOk)return void j(a.message);let s=function(e,i){let{endpoint:n,keys:r}=e,t=r?.p256dh,a=r?.auth;return void 0===n||void 0===t||void 0===a?void 0:{endpoint:n,keys:{p256dh:t,auth:a},browser:i}}(a.value.toJSON(),(i=navigator.userAgent,n=u(i,l),t=u(i,c),void 0===n?"A browser":void 0===t?n:`${n} on ${t}`));if(void 0===s)return void j("Your browser gave no push subscription: try again");let o=await d(e,s);o.isOk?m(s.endpoint):j(o.message)}catch{j("Your browser could not turn web push on: try again")}finally{x(void 0)}})},children:"Turn on web push in this browser"})}):(0,i.jsx)("p",{className:"text-caption text-muted-foreground",children:"This browser takes no web push."}),void 0===y?null:(0,i.jsx)(s.f,{message:y,isFailure:!0})]})}e.s(["WakePanel",0,function({fleetId:e,channels:r}){let[o,d]=(0,n.useTransition)(),[l,c]=(0,n.useState)(),{email:u,webPush:v}=r;return u.isOffered||null!==v.publicKey?(0,i.jsxs)("section",{className:"grid gap-2","aria-labelledby":"overview-wake-heading",children:[(0,i.jsx)("h2",{id:"overview-wake-heading",className:"text-section font-semibold",children:"When something waits"}),u.isOffered?(0,i.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,i.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,i.jsx)("span",{children:"Email"}),(0,i.jsx)("span",{"data-testid":"overview-wake-email-state",className:"text-caption text-muted-foreground",children:u.isOn?"On: you get an email when something waits for you in this fleet, with a link here. Never what waits.":"Off: nothing tells you when something waits while you are away."})]}),(0,i.jsx)(a.f,{"data-testid":"overview-wake-email",isPending:o,pendingLabel:u.isOn?"Turning off...":"Turning on...",onClick:()=>{var i;i=!u.isOn,c(void 0),d(async()=>{let n=await t(e,i);n.isOk||c(n.message)})},children:u.isOn?"Turn off":"Turn on"})]}):null,void 0===l?null:(0,i.jsx)(s.f,{message:l,isFailure:!0}),null===v.publicKey?null:(0,i.jsx)(f,{fleetId:e,webPushKey:v.publicKey,browsers:v.browsers})]}):null}],55557)},38314,93633,e=>{var i=e.i(43476);let n={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};e.s(["f",0,function({isPending:e,pendingLabel:r,variant:t="secondary",children:a,className:s="",disabled:o,...d}){return(0,i.jsx)("button",{...d,disabled:!0===o||e,"aria-busy":e,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${n[t]} ${s}`,children:e?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),r]}):a})}],38314),e.s(["f",0,function({message:e,isFailure:n}){return n?(0,i.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:e}):(0,i.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:e})}],93633)}])})();
@@ -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 d=(0,r.createServerReference)("6006cd6ed5454b8c34c176236313db65f23f52094d",r.callServer,void 0,r.findSourceMapURL,"markA2aAgent"),l={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)(d,l),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 d=(0,r.createServerReference)("60a68d36449bc53cbd6e751425ac86bfa7a302a8bf",r.callServer,void 0,r.findSourceMapURL,"switchPartyTool"),l={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)(d,l),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)}])})();