@aeolus-fleet/gateway 0.28.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/dist/adapters/crypto/account-sign-in-seals.d.ts +7 -0
- package/dist/adapters/crypto/account-sign-in-seals.js +21 -0
- package/dist/adapters/crypto/account-sign-in-seals.js.map +1 -0
- package/dist/adapters/crypto/sign-in-seals.d.ts +1 -1
- package/dist/adapters/crypto/sign-in-seals.js +3 -6
- package/dist/adapters/crypto/sign-in-seals.js.map +1 -1
- package/dist/adapters/fleet/core-version.d.ts +1 -1
- package/dist/adapters/fleet/core-version.js +1 -1
- package/dist/adapters/fleet/fleet-ships.d.ts +6 -0
- package/dist/adapters/fleet/fleet-ships.js +23 -0
- package/dist/adapters/fleet/fleet-ships.js.map +1 -0
- package/dist/adapters/fleet/proxy-ship-reads.d.ts +2 -2
- package/dist/adapters/fleet/proxy-ship-reads.js +6 -3
- package/dist/adapters/fleet/proxy-ship-reads.js.map +1 -1
- package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -1
- package/dist/adapters/fleet/rest-fleet-door.js +34 -14
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/account-sign-in-routes.d.ts +19 -0
- package/dist/adapters/http/account-sign-in-routes.js +61 -0
- package/dist/adapters/http/account-sign-in-routes.js.map +1 -0
- package/dist/adapters/http/forms.d.ts +9 -0
- package/dist/adapters/http/forms.js +23 -0
- package/dist/adapters/http/forms.js.map +1 -0
- package/dist/adapters/http/front-door.d.ts +15 -0
- package/dist/adapters/http/front-door.js +59 -0
- package/dist/adapters/http/front-door.js.map +1 -0
- package/dist/adapters/http/live.d.ts +2 -12
- package/dist/adapters/http/live.js +4 -65
- package/dist/adapters/http/live.js.map +1 -1
- package/dist/adapters/http/oauth-routes.d.ts +14 -16
- package/dist/adapters/http/oauth-routes.js +23 -139
- package/dist/adapters/http/oauth-routes.js.map +1 -1
- package/dist/adapters/http/person-tools.d.ts +9 -4
- package/dist/adapters/http/person-tools.js +49 -5
- package/dist/adapters/http/person-tools.js.map +1 -1
- package/dist/adapters/pagasae/shared-sign-in.d.ts +11 -0
- package/dist/adapters/pagasae/shared-sign-in.js +123 -0
- package/dist/adapters/pagasae/shared-sign-in.js.map +1 -0
- package/dist/adapters/prisma/generated/browser.d.ts +1 -1
- package/dist/adapters/prisma/generated/client.d.ts +1 -1
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +30 -2
- package/dist/adapters/prisma/opened-deliveries.js +18 -12
- package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +143 -4
- package/dist/adapters/trpc/router.js +151 -5
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/adapters/web/next-web-app.d.ts +10 -0
- package/dist/adapters/web/next-web-app.js +27 -0
- package/dist/adapters/web/next-web-app.js.map +1 -0
- package/dist/app.d.ts +9 -1
- package/dist/app.js +54 -28
- package/dist/app.js.map +1 -1
- package/dist/bin/aeolus-gateway.js +12 -1
- package/dist/bin/aeolus-gateway.js.map +1 -1
- package/dist/config.d.ts +18 -0
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/core/account-sign-in/account-in-view.d.ts +43 -0
- package/dist/core/account-sign-in/account-in-view.js +52 -0
- package/dist/core/account-sign-in/account-in-view.js.map +1 -0
- package/dist/core/account-sign-in/account-of-sign-in.d.ts +23 -0
- package/dist/core/account-sign-in/account-of-sign-in.js +41 -0
- package/dist/core/account-sign-in/account-of-sign-in.js.map +1 -0
- package/dist/core/account-sign-in/complete-account-sign-in.d.ts +37 -0
- package/dist/core/account-sign-in/complete-account-sign-in.js +25 -0
- package/dist/core/account-sign-in/complete-account-sign-in.js.map +1 -0
- package/dist/core/account-sign-in/ports.d.ts +92 -0
- package/dist/core/account-sign-in/ports.js +3 -0
- package/dist/core/account-sign-in/ports.js.map +1 -0
- package/dist/core/account-sign-in/sign-out-account.d.ts +15 -0
- package/dist/core/account-sign-in/sign-out-account.js +12 -0
- package/dist/core/account-sign-in/sign-out-account.js.map +1 -0
- package/dist/core/account-sign-in/start-account-sign-in.d.ts +25 -0
- package/dist/core/account-sign-in/start-account-sign-in.js +26 -0
- package/dist/core/account-sign-in/start-account-sign-in.js.map +1 -0
- package/dist/core/actors/authenticate-actor.d.ts +14 -15
- package/dist/core/actors/authenticate-actor.js +10 -12
- package/dist/core/actors/authenticate-actor.js.map +1 -1
- package/dist/core/actors/credential-of.d.ts +4 -6
- package/dist/core/actors/credential-of.js +4 -8
- package/dist/core/actors/credential-of.js.map +1 -1
- package/dist/core/connection/answer-pings.d.ts +19 -0
- package/dist/core/connection/answer-pings.js +34 -0
- package/dist/core/connection/answer-pings.js.map +1 -0
- package/dist/core/connection/ports.d.ts +18 -1
- package/dist/core/oauth/read-authorization.js +2 -2
- package/dist/core/oauth/read-authorization.js.map +1 -1
- package/dist/core/oauth/redirect-uri.d.ts +7 -0
- package/dist/core/oauth/redirect-uri.js +23 -0
- package/dist/core/oauth/redirect-uri.js.map +1 -1
- package/dist/core/operator/authenticate-operator.d.ts +4 -3
- package/dist/core/operator/authenticate-operator.js +4 -2
- package/dist/core/operator/authenticate-operator.js.map +1 -1
- package/dist/core/parties/list-owner-choices.d.ts +24 -0
- package/dist/core/parties/list-owner-choices.js +25 -0
- package/dist/core/parties/list-owner-choices.js.map +1 -0
- package/dist/core/parties/list-parties.js +1 -1
- package/dist/core/parties/list-parties.js.map +1 -1
- package/dist/core/parties/ports.d.ts +14 -5
- package/dist/core/parties/shown-party.d.ts +8 -2
- package/dist/core/parties/shown-party.js.map +1 -1
- package/dist/core/people/crew-person-ship.d.ts +3 -5
- package/dist/core/people/crew-person-ship.js +6 -5
- package/dist/core/people/crew-person-ship.js.map +1 -1
- package/dist/core/people/inbox-entry.d.ts +2 -1
- package/dist/core/people/inbox-entry.js +3 -0
- package/dist/core/people/inbox-entry.js.map +1 -1
- package/dist/core/people/list-ships.d.ts +17 -0
- package/dist/core/people/list-ships.js +20 -0
- package/dist/core/people/list-ships.js.map +1 -0
- package/dist/core/people/open-delivery.d.ts +14 -9
- package/dist/core/people/open-delivery.js +24 -4
- package/dist/core/people/open-delivery.js.map +1 -1
- package/dist/core/people/person-crew.d.ts +13 -1
- package/dist/core/people/person-crew.js.map +1 -1
- package/dist/core/people/ports.d.ts +42 -3
- package/dist/core/people/read-inbox.d.ts +15 -9
- package/dist/core/people/read-inbox.js +17 -6
- package/dist/core/people/read-inbox.js.map +1 -1
- package/dist/core/people/send-message.d.ts +32 -0
- package/dist/core/people/send-message.js +22 -0
- package/dist/core/people/send-message.js.map +1 -0
- package/dist/core/requests/ask-for-server.d.ts +2 -2
- package/dist/core/requests/watch-waiting.d.ts +2 -1
- package/dist/core/requests/watch-waiting.js +2 -2
- package/dist/core/requests/watch-waiting.js.map +1 -1
- package/dist/core/sign-in/complete-sign-in.d.ts +4 -11
- package/dist/core/sign-in/complete-sign-in.js +1 -23
- package/dist/core/sign-in/complete-sign-in.js.map +1 -1
- package/dist/core/sign-in/own-page.d.ts +10 -0
- package/dist/core/sign-in/own-page.js +35 -0
- package/dist/core/sign-in/own-page.js.map +1 -0
- package/dist/core/sign-in/ports.d.ts +3 -24
- package/dist/ping-worker.d.ts +20 -0
- package/dist/ping-worker.js +33 -0
- package/dist/ping-worker.js.map +1 -0
- package/package.json +23 -5
- package/src/adapters/prisma/migrations/20261021120000_opened_deliveries_sent_at/migration.sql +4 -0
- package/src/adapters/prisma/schema.prisma +2 -1
- package/web/.next/BUILD_ID +1 -0
- package/web/.next/app-path-routes-manifest.json +17 -0
- package/web/.next/build/chunks/[root-of-the-server]__17pn3jjqv9c44._.js +192 -0
- package/web/.next/build/chunks/[root-of-the-server]__17pn3jjqv9c44._.js.map +8 -0
- package/web/.next/build/chunks/[root-of-the-server]__1ehkf7gbe4e6q._.js +502 -0
- package/web/.next/build/chunks/[root-of-the-server]__1ehkf7gbe4e6q._.js.map +11 -0
- package/web/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1t6pazwwggn3s._.js +13 -0
- package/web/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1t6pazwwggn3s._.js.map +5 -0
- package/web/.next/build/chunks/[turbopack]_runtime.js +1056 -0
- package/web/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
- package/web/.next/build/chunks/node_modules_0ds4fgws35qq2._.js +7337 -0
- package/web/.next/build/chunks/node_modules_0ds4fgws35qq2._.js.map +47 -0
- package/web/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_1inl-dyesk97a._.js +6 -0
- package/web/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_1inl-dyesk97a._.js.map +5 -0
- package/web/.next/build/package.json +1 -0
- package/web/.next/build-manifest.json +194 -0
- package/web/.next/diagnostics/build-diagnostics.json +6 -0
- package/web/.next/diagnostics/framework.json +1 -0
- package/web/.next/diagnostics/route-bundle-stats.json +195 -0
- package/web/.next/export-marker.json +6 -0
- package/web/.next/fallback-build-manifest.json +15 -0
- package/web/.next/images-manifest.json +68 -0
- package/web/.next/next-minimal-server.js.nft.json +1 -0
- package/web/.next/next-server.js.nft.json +1 -0
- package/web/.next/package.json +1 -0
- package/web/.next/prerender-manifest.json +40 -0
- package/web/.next/required-server-files.js +367 -0
- package/web/.next/required-server-files.json +367 -0
- package/web/.next/routes-manifest.json +144 -0
- package/web/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/_global-error/page/build-manifest.json +23 -0
- package/web/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/web/.next/server/app/_global-error/page.js +12 -0
- package/web/.next/server/app/_global-error/page.js.map +5 -0
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/_global-error.html +1 -0
- package/web/.next/server/app/_global-error.meta +30 -0
- package/web/.next/server/app/_global-error.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +23 -0
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/_not-found/page/build-manifest.json +23 -0
- package/web/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/_not-found/page.js +17 -0
- package/web/.next/server/app/_not-found/page.js.map +5 -0
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/authorize/failed/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/authorize/failed/page/build-manifest.json +23 -0
- package/web/.next/server/app/authorize/failed/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/authorize/failed/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/authorize/failed/page.js +18 -0
- package/web/.next/server/app/authorize/failed/page.js.map +5 -0
- package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -0
- package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/authorize/pick/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/authorize/pick/page/build-manifest.json +23 -0
- package/web/.next/server/app/authorize/pick/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/authorize/pick/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/authorize/pick/page.js +19 -0
- package/web/.next/server/app/authorize/pick/page.js.map +5 -0
- package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -0
- package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/authorize/waiting/approval/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +23 -0
- package/web/.next/server/app/authorize/waiting/approval/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/authorize/waiting/approval/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/authorize/waiting/approval/page.js +19 -0
- package/web/.next/server/app/authorize/waiting/approval/page.js.map +5 -0
- package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -0
- package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/outside-parties/[name]/change/page.js +22 -0
- package/web/.next/server/app/outside-parties/[name]/change/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/[name]/change/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/change/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/[name]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/[name]/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/[name]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/[name]/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/outside-parties/[name]/page.js +20 -0
- package/web/.next/server/app/outside-parties/[name]/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/[name]/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page.js +21 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/add/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/add/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/add/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/add/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/add/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/outside-parties/add/page.js +19 -0
- package/web/.next/server/app/outside-parties/add/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/add/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/add/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/outside-parties/page.js +20 -0
- package/web/.next/server/app/outside-parties/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/overview/changes/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/overview/changes/route/build-manifest.json +12 -0
- package/web/.next/server/app/overview/changes/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/overview/changes/route.js +6 -0
- package/web/.next/server/app/overview/changes/route.js.map +5 -0
- package/web/.next/server/app/overview/changes/route.js.nft.json +1 -0
- package/web/.next/server/app/overview/changes/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/overview/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/overview/page/build-manifest.json +23 -0
- package/web/.next/server/app/overview/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/overview/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/overview/page/server-reference-manifest.json +45 -0
- package/web/.next/server/app/overview/page.js +24 -0
- package/web/.next/server/app/overview/page.js.map +5 -0
- package/web/.next/server/app/overview/page.js.nft.json +1 -0
- package/web/.next/server/app/overview/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/build-manifest.json +23 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/overview/requests/[requestId]/page.js +24 -0
- package/web/.next/server/app/overview/requests/[requestId]/page.js.map +5 -0
- package/web/.next/server/app/overview/requests/[requestId]/page.js.nft.json +1 -0
- package/web/.next/server/app/overview/requests/[requestId]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/parties/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/parties/page/build-manifest.json +23 -0
- package/web/.next/server/app/parties/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/parties/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/parties/page/server-reference-manifest.json +55 -0
- package/web/.next/server/app/parties/page.js +22 -0
- package/web/.next/server/app/parties/page.js.map +5 -0
- package/web/.next/server/app/parties/page.js.nft.json +1 -0
- package/web/.next/server/app/parties/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/sign-in/failed/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/sign-in/failed/page/build-manifest.json +23 -0
- package/web/.next/server/app/sign-in/failed/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/sign-in/failed/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/sign-in/failed/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/sign-in/failed/page.js +18 -0
- package/web/.next/server/app/sign-in/failed/page.js.map +5 -0
- package/web/.next/server/app/sign-in/failed/page.js.nft.json +1 -0
- package/web/.next/server/app/sign-in/failed/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app-paths-manifest.json +17 -0
- package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +3 -0
- package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js +369 -0
- package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js.map +1 -0
- package/web/.next/server/chunks/[turbopack]_runtime.js +937 -0
- package/web/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04_bc8g0oe4jt._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04_bc8g0oe4jt._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0py1t7q9ntzgc._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0py1t7q9ntzgc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +14 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[turbopack]_runtime.js +937 -0
- package/web/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +4 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +57 -0
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js +4 -0
- package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js +4 -0
- package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +4 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js +4 -0
- package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js +4 -0
- package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js +3 -0
- package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +4 -0
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +4 -0
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0gxlxpuufujz9._.js +33 -0
- package/web/.next/server/chunks/ssr/node_modules_0gxlxpuufujz9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0h91jdk0pr40d._.js +33 -0
- package/web/.next/server/chunks/ssr/node_modules_0h91jdk0pr40d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +17 -0
- package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_164yuq6c86vw2._.js +291 -0
- package/web/.next/server/chunks/ssr/node_modules_next_164yuq6c86vw2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_17rgm9-6qzdn5._.js +313 -0
- package/web/.next/server/chunks/ssr/node_modules_next_17rgm9-6qzdn5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +6 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892nagajq.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892nagajq.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0xky89qu.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0xky89qu.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@edge-runtime_cookies_index_1kiz_an963mbg.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@edge-runtime_cookies_index_1kiz_an963mbg.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z4y02i7.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z4y02i7.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js +3 -0
- package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js +10 -0
- package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app__global-error_page_actions_0crg1npwvbfn5.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app__global-error_page_actions_0crg1npwvbfn5.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_authorize_ui_waiting-for-approval_tsx_00iwjvj4orq9g._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_authorize_ui_waiting-for-approval_tsx_00iwjvj4orq9g._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -0
- package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js +3 -0
- package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js.map +1 -0
- package/web/.next/server/functions-config-manifest.json +4 -0
- package/web/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/web/.next/server/middleware-build-manifest.js +194 -0
- package/web/.next/server/middleware-manifest.json +6 -0
- package/web/.next/server/next-font-manifest.js +1 -0
- package/web/.next/server/next-font-manifest.json +59 -0
- package/web/.next/server/pages/500.html +1 -0
- package/web/.next/server/pages-manifest.json +3 -0
- package/web/.next/server/prefetch-hints.json +11 -0
- package/web/.next/server/preview-props.json +5 -0
- package/web/.next/server/server-reference-manifest.js +1 -0
- package/web/.next/server/server-reference-manifest.json +202 -0
- package/web/.next/static/6OjpPl7qD1uqwr6E41aT5/_buildManifest.js +11 -0
- package/web/.next/static/6OjpPl7qD1uqwr6E41aT5/_clientMiddlewareManifest.js +1 -0
- package/web/.next/static/6OjpPl7qD1uqwr6E41aT5/_ssgManifest.js +1 -0
- package/web/.next/static/chunks/0a1vw3r93lh06.js +1 -0
- package/web/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
- package/web/.next/static/chunks/0lzisjsmhlhjf.js +1 -0
- package/web/.next/static/chunks/0umf92h1sb77c.js +1 -0
- package/web/.next/static/chunks/131oz96e71xwn.js +1 -0
- package/web/.next/static/chunks/1cduebcshlfd5.js +1 -0
- package/web/.next/static/chunks/1ma7v1viiz247.js +1 -0
- package/web/.next/static/chunks/1w-xaw2grqv_2.js +1 -0
- package/web/.next/static/chunks/22u81hd6kxqsx.js +1 -0
- package/web/.next/static/chunks/2ewacyhp73due.js +1 -0
- package/web/.next/static/chunks/2hz8yws_wswjz.js +31 -0
- package/web/.next/static/chunks/2qpupho1jn-iy.js +1 -0
- package/web/.next/static/chunks/2ta7dqldhv69y.js +1 -0
- package/web/.next/static/chunks/30n1j9zag1f0q.css +3 -0
- package/web/.next/static/chunks/3knqujtrdi225.js +1 -0
- package/web/.next/static/chunks/3sv0_hjr9t4cp.js +1 -0
- package/web/.next/static/chunks/3yltnnufhaitm.js +1 -0
- package/web/.next/static/chunks/41rcj9-d-7p_4.js +22 -0
- package/web/.next/static/chunks/turbopack-3-ry682tkyiqk.js +1 -0
- package/web/.next/static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2 +0 -0
- package/web/.next/static/media/geist_variable-s.p.0mrjj4bg00-he.woff2 +0 -0
- package/web/.next/trace +1 -0
- package/web/.next/trace-build +1 -0
- package/web/.next/turbopack +0 -0
- package/web/.next/types/cache-life.d.ts +114 -0
- package/web/.next/types/root-params.d.ts +3 -0
- package/web/.next/types/routes.d.ts +85 -0
- package/web/.next/types/validator.ts +288 -0
- package/web/next.config.ts +9 -0
- package/dist/adapters/crypto/page-sessions.d.ts +0 -15
- package/dist/adapters/crypto/page-sessions.js +0 -40
- package/dist/adapters/crypto/page-sessions.js.map +0 -1
- package/dist/adapters/http/add-server-page.d.ts +0 -7
- package/dist/adapters/http/add-server-page.js +0 -175
- package/dist/adapters/http/add-server-page.js.map +0 -1
- package/dist/adapters/http/delivery-page.d.ts +0 -24
- package/dist/adapters/http/delivery-page.js +0 -115
- package/dist/adapters/http/delivery-page.js.map +0 -1
- package/dist/adapters/http/html.d.ts +0 -15
- package/dist/adapters/http/html.js +0 -53
- package/dist/adapters/http/html.js.map +0 -1
- package/dist/adapters/http/outside-parties-page.d.ts +0 -33
- package/dist/adapters/http/outside-parties-page.js +0 -153
- package/dist/adapters/http/outside-parties-page.js.map +0 -1
- package/dist/adapters/http/outside-party-page.d.ts +0 -7
- package/dist/adapters/http/outside-party-page.js +0 -212
- package/dist/adapters/http/outside-party-page.js.map +0 -1
- package/dist/adapters/http/overview-page.d.ts +0 -17
- package/dist/adapters/http/overview-page.js +0 -298
- package/dist/adapters/http/overview-page.js.map +0 -1
- package/dist/adapters/http/parties-page.d.ts +0 -7
- package/dist/adapters/http/parties-page.js +0 -139
- package/dist/adapters/http/parties-page.js.map +0 -1
- package/dist/adapters/http/scope-rows.d.ts +0 -10
- package/dist/adapters/http/scope-rows.js +0 -30
- package/dist/adapters/http/scope-rows.js.map +0 -1
- package/dist/adapters/http/signal.d.ts +0 -61
- package/dist/adapters/http/signal.js +0 -263
- package/dist/adapters/http/signal.js.map +0 -1
- package/dist/core/sign-in/sign-out.d.ts +0 -10
- package/dist/core/sign-in/sign-out.js +0 -9
- package/dist/core/sign-in/sign-out.js.map +0 -1
- package/dist/core/sign-in/start-page-sign-in.d.ts +0 -25
- package/dist/core/sign-in/start-page-sign-in.js +0 -30
- package/dist/core/sign-in/start-page-sign-in.js.map +0 -1
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The gateway's page of parties: one small server-rendered page where a
|
|
3
|
-
* person signed in to the pages, holding fleet:manage, approves outside MCP
|
|
4
|
-
* servers, hands over a secret, states a party and marks its tools. Each
|
|
5
|
-
* form calls the gateway's own API as that account, so the page checks
|
|
6
|
-
* nothing the API does not; it only refuses a form sent from another origin.
|
|
7
|
-
*/
|
|
8
|
-
import { randomUUID } from 'node:crypto';
|
|
9
|
-
import { idSchema } from '@aeolus-fleet/common';
|
|
10
|
-
import { TRPCError } from '@trpc/server';
|
|
11
|
-
import { getHTTPStatusCodeFromError } from '@trpc/server/http';
|
|
12
|
-
import { z } from 'zod';
|
|
13
|
-
import { gatewayRouter } from '../trpc/router.js';
|
|
14
|
-
import { acceptForms, escaped, isSameOrigin, layout, refusalMessage } from './html.js';
|
|
15
|
-
import { signInPrompt } from './signal.js';
|
|
16
|
-
const HTTP_FORBIDDEN = 403;
|
|
17
|
-
const HTTP_SEE_OTHER = 303;
|
|
18
|
-
const HTTP_INTERNAL_ERROR = 500;
|
|
19
|
-
const PAGE = '/parties';
|
|
20
|
-
const formSchema = z.record(z.string(), z.string());
|
|
21
|
-
function field(form, name) {
|
|
22
|
-
return form[name] ?? '';
|
|
23
|
-
}
|
|
24
|
-
function partyRow(party, canManage) {
|
|
25
|
-
const name = escaped(party.name);
|
|
26
|
-
const forms = canManage
|
|
27
|
-
? [
|
|
28
|
-
party.state === 'awaitingCrew'
|
|
29
|
-
? `<form class="inline" method="post" action="${PAGE}/crew"><input type="hidden" name="name" value="${name}"><input name="secret" placeholder="secret from a new starting prompt" required><button>Crew</button></form>`
|
|
30
|
-
: '',
|
|
31
|
-
party.kind === 'mcpServer' && party.state === 'crewed'
|
|
32
|
-
? `<form class="inline" method="post" action="${PAGE}/state"><input type="hidden" name="name" value="${name}"><button>State its tools</button></form>` +
|
|
33
|
-
`<form class="inline" method="post" action="${PAGE}/mark"><input type="hidden" name="name" value="${name}"><input name="tool" placeholder="tool" required maxlength="128"><label><span><input type="checkbox" name="isRepeatable"> repeatable</span></label><button>Mark</button></form>`
|
|
34
|
-
: '',
|
|
35
|
-
].join('')
|
|
36
|
-
: '';
|
|
37
|
-
// A server shows where it is and how the gateway signs in; a client, its OAuth client id.
|
|
38
|
-
const outside = party.kind === 'mcpServer' ? `${escaped(party.url)}</td><td>${escaped(party.credentialKind)}` : `${escaped(party.clientId)}</td><td>MCP client`;
|
|
39
|
-
return `<tr><td>${name}</td><td>${outside}</td><td>${escaped(party.state)}</td><td>${escaped(party.proxyShipId ?? '')}</td><td>${forms}</td></tr>`;
|
|
40
|
-
}
|
|
41
|
-
const APPROVE_FORM = (requestId) => `<h2>Approve an MCP server</h2>
|
|
42
|
-
<form method="post" action="${PAGE}/approve">
|
|
43
|
-
<input type="hidden" name="requestId" value="${requestId}">
|
|
44
|
-
<label>Name, the proxy ship's<input name="name" required></label>
|
|
45
|
-
<label>Streamable HTTP URL<input name="url" type="url" required></label>
|
|
46
|
-
<label>Credential<select name="credentialKind"><option value="bearer">Bearer token</option><option value="clientCredentials">OAuth client credentials</option></select></label>
|
|
47
|
-
<label>Bearer token<input name="token" type="password"></label>
|
|
48
|
-
<label>Client id<input name="clientId"></label>
|
|
49
|
-
<label>Client secret<input name="clientSecret" type="password"></label>
|
|
50
|
-
<label>Issuer<input name="issuer" type="url"></label>
|
|
51
|
-
<label>Scope<input name="scope"></label>
|
|
52
|
-
<label>Owner's ship id (a person's ship, or argo)<input name="ownerShipId" required></label>
|
|
53
|
-
<label>Calls at once<input name="concurrencyLimit" type="number" min="1" max="10" value="4"></label>
|
|
54
|
-
<button>Approve</button>
|
|
55
|
-
</form>`;
|
|
56
|
-
async function renderPage(reply, page) {
|
|
57
|
-
const { context, failure } = page;
|
|
58
|
-
const caller = gatewayRouter.createCaller(context);
|
|
59
|
-
const actor = await context.authenticateActor({ cookie: context.cookie });
|
|
60
|
-
const parties = await caller.parties.list();
|
|
61
|
-
const canManage = actor.isOk && actor.value.scopes.includes('fleet:manage');
|
|
62
|
-
const body = [
|
|
63
|
-
'<h1>Parties</h1>',
|
|
64
|
-
'<p class="muted">Outside MCP servers argo approved for this fleet, each behind its proxy ship.</p>',
|
|
65
|
-
failure ? `<p class="error">${escaped(failure.message)}</p>` : '',
|
|
66
|
-
parties.length === 0
|
|
67
|
-
? '<p class="muted">No party yet.</p>'
|
|
68
|
-
: `<table><thead><tr><th>Name</th><th>URL</th><th>Credential</th><th>State</th><th>Proxy ship</th><th></th></tr></thead><tbody>${parties.map((party) => partyRow(party, canManage)).join('')}</tbody></table>`,
|
|
69
|
-
canManage ? APPROVE_FORM(randomUUID()) : '',
|
|
70
|
-
].join('');
|
|
71
|
-
return reply.code(failure?.status ?? 200).type('text/html; charset=utf-8').send(layout('Gateway parties', body));
|
|
72
|
-
}
|
|
73
|
-
function signInPage(reply, refusal) {
|
|
74
|
-
const body = signInPrompt({ message: refusalMessage(refusal.error), way: refusal.way, returnTo: PAGE });
|
|
75
|
-
return reply.code(getHTTPStatusCodeFromError(refusal.error)).type('text/html; charset=utf-8').send(layout('Gateway parties', `<h1>Parties</h1>${body}`));
|
|
76
|
-
}
|
|
77
|
-
/** The calls each form makes, as argo, from its fields. */
|
|
78
|
-
const ACTIONS = {
|
|
79
|
-
approve: (caller, form) => {
|
|
80
|
-
const ownerShipId = idSchema('ship').safeParse(field(form, 'ownerShipId'));
|
|
81
|
-
if (!ownerShipId.success) {
|
|
82
|
-
return Promise.reject(new TRPCError({ code: 'BAD_REQUEST', message: "The owner's ship id is not a ship id (shp_...)" }));
|
|
83
|
-
}
|
|
84
|
-
const scope = field(form, 'scope');
|
|
85
|
-
return caller.parties.approve({
|
|
86
|
-
requestId: field(form, 'requestId'),
|
|
87
|
-
name: field(form, 'name'),
|
|
88
|
-
url: field(form, 'url'),
|
|
89
|
-
credential: field(form, 'credentialKind') === 'clientCredentials'
|
|
90
|
-
? { kind: 'clientCredentials', clientId: field(form, 'clientId'), clientSecret: field(form, 'clientSecret'), issuer: field(form, 'issuer'), ...(scope === '' ? {} : { scope }) }
|
|
91
|
-
: { kind: 'bearer', token: field(form, 'token') },
|
|
92
|
-
ownerShipId: ownerShipId.data,
|
|
93
|
-
concurrencyLimit: Number(field(form, 'concurrencyLimit')),
|
|
94
|
-
});
|
|
95
|
-
},
|
|
96
|
-
crew: (caller, form) => caller.parties.crew({ name: field(form, 'name'), secret: field(form, 'secret') }),
|
|
97
|
-
state: (caller, form) => caller.parties.state({ name: field(form, 'name') }),
|
|
98
|
-
mark: (caller, form) => caller.parties.markTool({ name: field(form, 'name'), tool: field(form, 'tool'), isRepeatable: form.isRepeatable === 'on' }),
|
|
99
|
-
};
|
|
100
|
-
export function registerPartiesPage(server, deps) {
|
|
101
|
-
acceptForms(server);
|
|
102
|
-
const answer = async (exchange, act) => {
|
|
103
|
-
const { request, reply } = exchange;
|
|
104
|
-
const context = deps.contextFor(request.headers.cookie);
|
|
105
|
-
try {
|
|
106
|
-
if (act) {
|
|
107
|
-
await act(gatewayRouter.createCaller(context));
|
|
108
|
-
return await reply.code(HTTP_SEE_OTHER).header('location', PAGE).send();
|
|
109
|
-
}
|
|
110
|
-
return await renderPage(reply, { context });
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
if (!(error instanceof TRPCError)) {
|
|
114
|
-
throw error;
|
|
115
|
-
}
|
|
116
|
-
if (error.code === 'UNAUTHORIZED') {
|
|
117
|
-
return signInPage(reply, { way: deps.signIn, error });
|
|
118
|
-
}
|
|
119
|
-
const failure = { status: error.code === 'INTERNAL_SERVER_ERROR' ? HTTP_INTERNAL_ERROR : getHTTPStatusCodeFromError(error), message: refusalMessage(error) };
|
|
120
|
-
try {
|
|
121
|
-
return await renderPage(reply, { context, failure });
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return reply.code(failure.status).type('text/html; charset=utf-8').send(layout('Gateway parties', `<h1>Parties</h1><p class="error">${escaped(failure.message)}</p>`));
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
server.get(PAGE, (request, reply) => answer({ request, reply }));
|
|
129
|
-
for (const [action, call] of Object.entries(ACTIONS)) {
|
|
130
|
-
server.post(`${PAGE}/${action}`, (request, reply) => {
|
|
131
|
-
if (!isSameOrigin(request)) {
|
|
132
|
-
return reply.code(HTTP_FORBIDDEN).type('text/plain; charset=utf-8').send('A form for this page is sent only from this page.');
|
|
133
|
-
}
|
|
134
|
-
const form = formSchema.safeParse(request.body);
|
|
135
|
-
return answer({ request, reply }, (caller) => call(caller, form.success ? form.data : {}));
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
//# sourceMappingURL=parties-page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parties-page.js","sourceRoot":"","sources":["../../../src/adapters/http/parties-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/** The scopes every app ship gets (0046): shown locked on, and always sent. */
|
|
2
|
-
export declare const EVERY_APP_SHIP_SCOPES: readonly string[];
|
|
3
|
-
/** A form field that ticks a scope: `scope:<scope>`, one field per scope, as a form posts each name once. */
|
|
4
|
-
export declare const SCOPE_FIELD_PREFIX = "scope:";
|
|
5
|
-
/** One scope row: a locked row shows the scope ticked or not and sends nothing. */
|
|
6
|
-
export declare function scopeRow(row: {
|
|
7
|
-
scope: string;
|
|
8
|
-
isLocked?: boolean;
|
|
9
|
-
isChecked?: boolean;
|
|
10
|
-
}): string;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The scope rows a decision or a change shows (design B): each scope with
|
|
3
|
-
* its plain label and the scope itself in mono, messages:send and
|
|
4
|
-
* messages:receive locked on, as every app ship gets them (0046).
|
|
5
|
-
*/
|
|
6
|
-
import { escaped } from './html.js';
|
|
7
|
-
import { icon } from './signal.js';
|
|
8
|
-
/** The scopes every app ship gets (0046): shown locked on, and always sent. */
|
|
9
|
-
export const EVERY_APP_SHIP_SCOPES = ['messages:send', 'messages:receive'];
|
|
10
|
-
/** A scope's plain label, as the scope rows show it beside the scope itself. */
|
|
11
|
-
const SCOPE_LABELS = {
|
|
12
|
-
'messages:send': 'Send',
|
|
13
|
-
'messages:receive': 'Receive',
|
|
14
|
-
'fleet:read': 'Read the fleet',
|
|
15
|
-
};
|
|
16
|
-
/** A form field that ticks a scope: `scope:<scope>`, one field per scope, as a form posts each name once. */
|
|
17
|
-
export const SCOPE_FIELD_PREFIX = 'scope:';
|
|
18
|
-
/** One scope row: a locked row shows the scope ticked or not and sends nothing. */
|
|
19
|
-
export function scopeRow(row) {
|
|
20
|
-
const { scope } = row;
|
|
21
|
-
const isLocked = row.isLocked === true;
|
|
22
|
-
const isChecked = isLocked ? row.isChecked !== false : row.isChecked === true;
|
|
23
|
-
const label = escaped(SCOPE_LABELS[scope] ?? scope);
|
|
24
|
-
const checked = isChecked ? ' checked' : '';
|
|
25
|
-
const box = isLocked
|
|
26
|
-
? `<input type="checkbox"${checked} disabled aria-label="${label}">`
|
|
27
|
-
: `<input type="checkbox" name="${SCOPE_FIELD_PREFIX}${escaped(scope)}"${checked} aria-label="${label}">`;
|
|
28
|
-
return `<label class="scope">${box}<span class="label">${label}</span><span class="mono">${escaped(scope)}</span>${isLocked ? `<span class="muted">${icon('lock', 12)}</span>` : ''}</label>`;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=scope-rows.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scope-rows.js","sourceRoot":"","sources":["../../../src/adapters/http/scope-rows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAsB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAE9F,gFAAgF;AAChF,MAAM,YAAY,GAA2B;IAC3C,eAAe,EAAE,MAAM;IACvB,kBAAkB,EAAE,SAAS;IAC7B,YAAY,EAAE,gBAAgB;CAC/B,CAAC;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,mFAAmF;AACnF,MAAM,UAAU,QAAQ,CAAC,GAA+D;IACtF,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ;QAClB,CAAC,CAAC,yBAAyB,OAAO,yBAAyB,KAAK,IAAI;QACpE,CAAC,CAAC,gCAAgC,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,gBAAgB,KAAK,IAAI,CAAC;IAC5G,OAAO,wBAAwB,GAAG,uBAAuB,KAAK,6BAA6B,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAChM,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/** A tone family of the console: every state shows in exactly one. */
|
|
2
|
-
export type Tone = 'waiting' | 'active' | 'ok' | 'attention' | 'ended';
|
|
3
|
-
/** An icon the pages draw, from the console's icon set (Lucide), as inline SVG paths. */
|
|
4
|
-
export type Icon = 'plug' | 'power' | 'powerOff' | 'alert' | 'signIn' | 'house' | 'hourglass' | 'check' | 'x' | 'ban' | 'lock' | 'server' | 'laptop' | 'arrowLeftRight' | 'users' | 'shieldX' | 'timerOff' | 'signOut' | 'archive' | 'arrowLeft' | 'ship' | 'shield';
|
|
5
|
-
export declare function icon(name: Icon, size?: number): string;
|
|
6
|
-
/** A status as the console shows it: its tone, an icon and a label, never colour alone. */
|
|
7
|
-
export declare function statusBadge(status: {
|
|
8
|
-
tone: Tone;
|
|
9
|
-
icon: Icon;
|
|
10
|
-
label: string;
|
|
11
|
-
}): string;
|
|
12
|
-
/** The large shape that leads a page: a full ring in a tone, dashed for a state that ended, around an icon or a number. */
|
|
13
|
-
export declare function ring(shown: {
|
|
14
|
-
tone: Tone;
|
|
15
|
-
center: {
|
|
16
|
-
icon: Icon;
|
|
17
|
-
} | {
|
|
18
|
-
count: number;
|
|
19
|
-
} | {
|
|
20
|
-
text: string;
|
|
21
|
-
icon: Icon;
|
|
22
|
-
};
|
|
23
|
-
label: string;
|
|
24
|
-
isDashed?: boolean;
|
|
25
|
-
size?: number;
|
|
26
|
-
}): string;
|
|
27
|
-
/** An outside party's mark: the first two letters of its name on a tile, as the console's Avatar draws a ship. */
|
|
28
|
-
export declare function partyMark(name: string): string;
|
|
29
|
-
/** Who meets whom: the outside party's mark and the fleet's, side by side. */
|
|
30
|
-
export declare function handshake(party: {
|
|
31
|
-
name: string;
|
|
32
|
-
fleet?: string;
|
|
33
|
-
}): string;
|
|
34
|
-
/** A tab of the pages' top bar. */
|
|
35
|
-
export type Tab = 'overview' | 'outsideParties';
|
|
36
|
-
/** Where a signed-out caller signs in: the gateway's own sign-in through pagasae, or nowhere, on a gateway that signs no one in. */
|
|
37
|
-
export type SignInWay = 'pages' | 'none';
|
|
38
|
-
/** What a signed-out caller is shown: why, and the one way to sign in, coming back to the page they asked for. */
|
|
39
|
-
export declare function signInPrompt(shown: {
|
|
40
|
-
message: string;
|
|
41
|
-
way: SignInWay;
|
|
42
|
-
returnTo: string;
|
|
43
|
-
}): string;
|
|
44
|
-
/**
|
|
45
|
-
* A page a person meets on their way in, from an outside MCP client: the
|
|
46
|
-
* mark and its name above one centred column, no tabs. Its own script, if
|
|
47
|
-
* any, comes with its body.
|
|
48
|
-
*/
|
|
49
|
-
export declare function signInPage(page: {
|
|
50
|
-
title: string;
|
|
51
|
-
body: string;
|
|
52
|
-
}): string;
|
|
53
|
-
/** A whole Signal page: the top bar with its tabs, then the page's own body; a live page names itself to the live channel. */
|
|
54
|
-
export declare function signalPage(page: {
|
|
55
|
-
title: string;
|
|
56
|
-
tab?: Tab;
|
|
57
|
-
body: string;
|
|
58
|
-
isWide?: boolean;
|
|
59
|
-
live?: string;
|
|
60
|
-
isSignedIn?: boolean;
|
|
61
|
-
}): string;
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The gateway's pages in direction B, Signal (design/gateway-pages), drawn
|
|
3
|
-
* with the operator console's tokens: one large shape leads each page, a
|
|
4
|
-
* ring for a state or a count. The tokens are the console's own
|
|
5
|
-
* (aeolus-fleet packages/console/app/tokens.css), light by default and dark
|
|
6
|
-
* where the browser asks for it, as the pages have no theme switch.
|
|
7
|
-
*/
|
|
8
|
-
import { escaped } from './html.js';
|
|
9
|
-
const LIGHT_TOKENS = `--background:oklch(0.99 0.002 247);--card:oklch(1 0 0);--muted:oklch(0.967 0.005 247);--secondary:oklch(0.955 0.007 247);--accent:oklch(0.95 0.009 247);
|
|
10
|
-
--foreground:oklch(0.22 0.02 257);--muted-foreground:oklch(0.5 0.02 257);--border:oklch(0.912 0.008 247);--input:oklch(0.885 0.01 247);--ring:oklch(0.56 0.12 257);
|
|
11
|
-
--primary:oklch(0.34 0.08 257);--primary-hover:oklch(0.29 0.075 257);--primary-foreground:oklch(0.985 0.003 247);--destructive:oklch(0.53 0.2 27);--destructive-foreground:oklch(0.99 0 0);
|
|
12
|
-
--tone-waiting-bg:oklch(0.965 0.045 85);--tone-waiting-fg:oklch(0.47 0.1 62);--tone-waiting-border:oklch(0.87 0.08 80);
|
|
13
|
-
--tone-active-bg:oklch(0.955 0.03 250);--tone-active-fg:oklch(0.45 0.14 257);--tone-active-border:oklch(0.86 0.06 252);
|
|
14
|
-
--tone-ok-bg:oklch(0.96 0.04 155);--tone-ok-fg:oklch(0.44 0.1 155);--tone-ok-border:oklch(0.86 0.07 155);
|
|
15
|
-
--tone-attention-bg:oklch(0.957 0.028 25);--tone-attention-fg:oklch(0.5 0.19 27);--tone-attention-border:oklch(0.86 0.07 25);
|
|
16
|
-
--tone-ended-bg:oklch(0.957 0.005 247);--tone-ended-fg:oklch(0.47 0.015 257);--tone-ended-border:oklch(0.87 0.01 247);
|
|
17
|
-
--shadow-sm:0 1px 2px oklch(0.2 0.02 257 / 0.06);`;
|
|
18
|
-
const DARK_TOKENS = `color-scheme:dark;--background:oklch(0.172 0.012 257);--card:oklch(0.2 0.013 257);--muted:oklch(0.228 0.012 257);--secondary:oklch(0.255 0.013 257);--accent:oklch(0.26 0.014 257);
|
|
19
|
-
--foreground:oklch(0.955 0.005 247);--muted-foreground:oklch(0.72 0.016 257);--border:oklch(0.29 0.014 257);--input:oklch(0.34 0.015 257);--ring:oklch(0.7 0.1 252);
|
|
20
|
-
--primary:oklch(0.86 0.055 250);--primary-hover:oklch(0.92 0.035 250);--primary-foreground:oklch(0.21 0.035 257);--destructive:oklch(0.56 0.19 25);--destructive-foreground:oklch(0.99 0 0);
|
|
21
|
-
--tone-waiting-bg:oklch(0.29 0.055 72);--tone-waiting-fg:oklch(0.87 0.11 82);--tone-waiting-border:oklch(0.41 0.075 72);
|
|
22
|
-
--tone-active-bg:oklch(0.29 0.06 257);--tone-active-fg:oklch(0.85 0.08 252);--tone-active-border:oklch(0.42 0.09 257);
|
|
23
|
-
--tone-ok-bg:oklch(0.29 0.05 155);--tone-ok-fg:oklch(0.86 0.1 155);--tone-ok-border:oklch(0.41 0.07 155);
|
|
24
|
-
--tone-attention-bg:oklch(0.3 0.07 25);--tone-attention-fg:oklch(0.84 0.09 25);--tone-attention-border:oklch(0.45 0.11 25);
|
|
25
|
-
--tone-ended-bg:oklch(0.255 0.01 257);--tone-ended-fg:oklch(0.78 0.015 257);--tone-ended-border:oklch(0.36 0.012 257);
|
|
26
|
-
--shadow-sm:0 1px 2px oklch(0 0 0 / 0.3);`;
|
|
27
|
-
const STYLE = `
|
|
28
|
-
:root { color-scheme: light; ${LIGHT_TOKENS} --font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace; --radius-sm: 6px; --radius-md: 8px; --radius-lg: 10px; }
|
|
29
|
-
@media (prefers-color-scheme: dark) { :root { ${DARK_TOKENS} } }
|
|
30
|
-
* { box-sizing: border-box; }
|
|
31
|
-
body { margin: 0; font: 14px/20px var(--font-sans); color: var(--foreground); background: var(--background); }
|
|
32
|
-
a { color: inherit; }
|
|
33
|
-
.top { display: flex; align-items: center; gap: 16px; height: 56px; padding: 0 16px; border-bottom: 1px solid var(--border); }
|
|
34
|
-
.mark { display: flex; align-items: center; gap: 8px; font-weight: 600; text-decoration: none; }
|
|
35
|
-
.tabs { display: flex; gap: 4px; }
|
|
36
|
-
.tab { display: flex; align-items: center; gap: 6px; height: 32px; padding: 0 10px; border-radius: var(--radius-sm); color: var(--muted-foreground); text-decoration: none; }
|
|
37
|
-
.tab[aria-current="page"] { color: var(--foreground); background: var(--secondary); }
|
|
38
|
-
main { max-width: 720px; margin: 0 auto; padding: 32px 16px; display: grid; gap: 24px; }
|
|
39
|
-
.lead { display: flex; align-items: center; gap: 20px; }
|
|
40
|
-
.lead h1 { margin: 0; font-size: 22px; line-height: 28px; font-weight: 600; }
|
|
41
|
-
.ring { flex: none; }
|
|
42
|
-
.card { display: grid; gap: 12px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow-sm); }
|
|
43
|
-
.card h2 { margin: 0; font-size: 15px; line-height: 20px; font-weight: 600; }
|
|
44
|
-
.card p { margin: 0; }
|
|
45
|
-
.muted { color: var(--muted-foreground); }
|
|
46
|
-
.badge { display: inline-flex; align-items: center; gap: 4px; padding: 0 6px; height: 20px; border: 1px solid; border-radius: var(--radius-sm); font-size: 12px; font-weight: 500; }
|
|
47
|
-
.tone-waiting { color: var(--tone-waiting-fg); background: var(--tone-waiting-bg); border-color: var(--tone-waiting-border); }
|
|
48
|
-
.tone-active { color: var(--tone-active-fg); background: var(--tone-active-bg); border-color: var(--tone-active-border); }
|
|
49
|
-
.tone-ok { color: var(--tone-ok-fg); background: var(--tone-ok-bg); border-color: var(--tone-ok-border); }
|
|
50
|
-
.tone-attention { color: var(--tone-attention-fg); background: var(--tone-attention-bg); border-color: var(--tone-attention-border); }
|
|
51
|
-
.tone-ended { color: var(--tone-ended-fg); background: var(--tone-ended-bg); border-color: var(--tone-ended-border); }
|
|
52
|
-
.actions { display: flex; flex-wrap: wrap; gap: 8px; }
|
|
53
|
-
form { margin: 0; }
|
|
54
|
-
button, .button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 36px; padding: 0 14px; border: 1px solid var(--input); border-radius: var(--radius-md); font: inherit; font-weight: 500; color: var(--foreground); background: var(--card); text-decoration: none; cursor: pointer; }
|
|
55
|
-
button.primary, .button.primary { color: var(--primary-foreground); background: var(--primary); border-color: var(--primary); }
|
|
56
|
-
button.primary:hover, .button.primary:hover { background: var(--primary-hover); }
|
|
57
|
-
button.destructive { color: var(--destructive-foreground); background: var(--destructive); border-color: var(--destructive); }
|
|
58
|
-
button:focus-visible, .button:focus-visible, .tab:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }
|
|
59
|
-
.alert { border-width: 1px; border-style: solid; }
|
|
60
|
-
.party-mark { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 40px; height: 40px; border-radius: var(--radius-md); background: var(--secondary); border: 1px solid var(--border); font: 600 13px/1 var(--font-mono); }
|
|
61
|
-
.handshake { display: flex; align-items: center; justify-content: center; gap: 12px; }
|
|
62
|
-
.handshake figure { margin: 0; display: grid; justify-items: center; gap: 4px; font-size: 12px; }
|
|
63
|
-
.fleet-mark { display: inline-flex; }
|
|
64
|
-
.split { display: grid; gap: 24px; grid-template-columns: minmax(0, 1fr); }
|
|
65
|
-
@media (min-width: 900px) { main.wide { max-width: 1040px; } .split { grid-template-columns: minmax(0, 1fr) 280px; } }
|
|
66
|
-
.queue { display: grid; gap: 8px; align-content: start; }
|
|
67
|
-
.queue h2 { margin: 0; font-size: 12px; font-weight: 500; color: var(--muted-foreground); }
|
|
68
|
-
.item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--card); text-decoration: none; }
|
|
69
|
-
.item[aria-current="true"] { border-color: var(--primary); }
|
|
70
|
-
.item .text { display: grid; min-width: 0; flex: 1; } .item .text span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
71
|
-
.tag { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--muted-foreground); }
|
|
72
|
-
.mono { font-family: var(--font-mono); font-size: 12px; }
|
|
73
|
-
.field { display: grid; gap: 4px; } .field > span { font-size: 13px; font-weight: 500; }
|
|
74
|
-
input[type="text"], input[type="password"], input[type="number"], input[type="url"], select { height: 36px; padding: 0 10px; border: 1px solid var(--input); border-radius: var(--radius-md); background: var(--background); color: var(--foreground); font: inherit; }
|
|
75
|
-
.scope { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-md); }
|
|
76
|
-
.scope .label { flex: 1; }
|
|
77
|
-
.scopes { display: grid; gap: 6px; }
|
|
78
|
-
fieldset { border: 0; margin: 0; padding: 0; display: grid; gap: 8px; }
|
|
79
|
-
legend { font-size: 13px; font-weight: 500; padding: 0; margin-bottom: 4px; }
|
|
80
|
-
main.centred { max-width: 440px; min-height: 100vh; align-content: center; justify-items: center; text-align: center; }
|
|
81
|
-
main.centred > * { width: 100%; } main.centred p, main.centred h1 { margin: 0; } main.centred { gap: 16px; }
|
|
82
|
-
main.centred > .mark, main.centred > .ring, main.centred > .badge { width: auto; }
|
|
83
|
-
.tiles { display: grid; gap: 12px; grid-template-columns: 1fr 1fr; }
|
|
84
|
-
@media (max-width: 480px) { .tiles { grid-template-columns: 1fr; } }
|
|
85
|
-
.tile { display: grid; gap: 4px; justify-items: center; align-content: center; height: auto; min-height: 112px; padding: 16px; border-radius: var(--radius-lg); text-align: center; }
|
|
86
|
-
.tile:hover { border-color: var(--primary); }
|
|
87
|
-
.going-on { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted-foreground); }
|
|
88
|
-
.going-on::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--tone-ok-fg); }
|
|
89
|
-
.tab { white-space: nowrap; }
|
|
90
|
-
@media (max-width: 480px) { .top .label { display: none; } .top { gap: 8px; } }
|
|
91
|
-
.sign-out { margin-left: auto; } .sign-out button { height: 32px; border: 0; background: transparent; color: var(--muted-foreground); }
|
|
92
|
-
.answers { display: grid; gap: 8px; } .answers button { height: 44px; }
|
|
93
|
-
button.pick { outline: 2px dashed var(--ring); outline-offset: 2px; }
|
|
94
|
-
.payload { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; }
|
|
95
|
-
textarea { padding: 8px 10px; border: 1px solid var(--input); border-radius: var(--radius-md); background: var(--background); color: var(--foreground); font: inherit; resize: vertical; }
|
|
96
|
-
form > button.item { width: 100%; height: auto; justify-content: flex-start; text-align: left; font-weight: 400; }
|
|
97
|
-
.live-status { position: fixed; right: 16px; bottom: 16px; margin: 0; }
|
|
98
|
-
.party-cards { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
|
|
99
|
-
.party-card { color: inherit; text-decoration: none; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px 12px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--card); }
|
|
100
|
-
.party-card:hover { border-color: var(--ring, var(--primary)); }
|
|
101
|
-
.party-card .text { display: grid; min-width: 0; } .party-card .text > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
102
|
-
.party-card .facts { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
103
|
-
.tag.protocol { padding: 0 4px; border: 1px solid var(--border); border-radius: var(--radius-sm); font: 600 10px/16px var(--font-mono); color: var(--foreground); }
|
|
104
|
-
.back { display: inline-flex; align-items: center; gap: 6px; color: var(--primary); text-decoration: none; font-size: 14px; }
|
|
105
|
-
.party-head { display: grid; justify-items: center; gap: 8px; }
|
|
106
|
-
.party-head .facts { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
|
|
107
|
-
.fact-rows { margin: 0; padding: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--card); }
|
|
108
|
-
.fact-rows > div { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--border); }
|
|
109
|
-
.fact-rows > div:first-child { border-top: 0; }
|
|
110
|
-
.fact-rows dt { display: inline-flex; align-items: center; gap: 8px; color: var(--muted-foreground); font-size: 13px; }
|
|
111
|
-
.fact-rows dd { margin: 0; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; min-width: 0; overflow-wrap: anywhere; text-align: right; }
|
|
112
|
-
.fact-rows dd a { margin-left: 8px; color: var(--primary); font-size: 13px; font-weight: 500; text-decoration: none; }
|
|
113
|
-
.steps { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; font-size: 12px; color: var(--muted-foreground); }
|
|
114
|
-
.steps li { padding-top: 8px; border-top: 4px solid var(--border); }
|
|
115
|
-
.steps li.done { border-top-color: var(--primary); color: var(--foreground); }
|
|
116
|
-
.split-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
|
117
|
-
.split-heading > span:first-child { display: inline-flex; align-items: center; gap: 8px; }
|
|
118
|
-
.count { color: var(--muted-foreground); font-weight: 500; }
|
|
119
|
-
.tool-rows { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; width: 100%; text-align: left; }
|
|
120
|
-
.tool-rows li { display: grid; gap: 2px; padding: 8px 0; border-top: 1px solid var(--border); }
|
|
121
|
-
.consequences { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
|
|
122
|
-
.consequences li { display: flex; align-items: center; gap: 8px; }
|
|
123
|
-
.counts { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin: 4px 0 0; }
|
|
124
|
-
@media (max-width: 640px) { .actions > * { flex: 1; } button, .button { height: 44px; width: 100%; } }
|
|
125
|
-
`;
|
|
126
|
-
const ICON_PATHS = {
|
|
127
|
-
plug: '<path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/>',
|
|
128
|
-
power: '<path d="M12 2v10"/><path d="M18.4 6.6a9 9 0 1 1-12.77.04"/>',
|
|
129
|
-
powerOff: '<path d="M18.36 6.64A9 9 0 0 1 20.77 15"/><path d="M6.16 6.16a9 9 0 1 0 12.68 12.68"/><path d="M12 2v4"/><path d="m2 2 20 20"/>',
|
|
130
|
-
alert: '<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/>',
|
|
131
|
-
signIn: '<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><path d="m10 17 5-5-5-5"/><path d="M15 12H3"/>',
|
|
132
|
-
house: '<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"/><path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>',
|
|
133
|
-
hourglass: '<path d="M5 22h14"/><path d="M5 2h14"/><path d="M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22"/><path d="M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2"/>',
|
|
134
|
-
check: '<path d="M20 6 9 17l-5-5"/>',
|
|
135
|
-
x: '<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',
|
|
136
|
-
ban: '<circle cx="12" cy="12" r="10"/><path d="m4.9 4.9 14.2 14.2"/>',
|
|
137
|
-
lock: '<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',
|
|
138
|
-
server: '<rect width="20" height="8" x="2" y="2" rx="2" ry="2"/><rect width="20" height="8" x="2" y="14" rx="2" ry="2"/><path d="M6 6h.01"/><path d="M6 18h.01"/>',
|
|
139
|
-
laptop: '<path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"/><path d="M20.054 15.987H3.946"/>',
|
|
140
|
-
arrowLeftRight: '<path d="M8 3 4 7l4 4"/><path d="M4 7h16"/><path d="m16 21 4-4-4-4"/><path d="M20 17H4"/>',
|
|
141
|
-
signOut: '<path d="m16 17 5-5-5-5"/><path d="M21 12H9"/><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/>',
|
|
142
|
-
shieldX: '<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m14.5 9.5-5 5"/><path d="m9.5 9.5 5 5"/>',
|
|
143
|
-
timerOff: '<path d="M10 2h4"/><path d="M4.6 11a8 8 0 0 0 1.7 8.7 8 8 0 0 0 8.7 1.7"/><path d="M7.4 7.4a8 8 0 0 1 10.3 1 8 8 0 0 1 .9 10.2"/><path d="m2 2 20 20"/><path d="M12 12v-2"/>',
|
|
144
|
-
archive: '<rect width="20" height="5" x="2" y="3" rx="1"/><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"/><path d="M10 12h4"/>',
|
|
145
|
-
arrowLeft: '<path d="m12 19-7-7 7-7"/><path d="M19 12H5"/>',
|
|
146
|
-
ship: '<path d="M12 10.189V14"/><path d="M12 2v3"/><path d="M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6"/><path d="M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76"/><path d="M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"/>',
|
|
147
|
-
shield: '<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/>',
|
|
148
|
-
users: '<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>',
|
|
149
|
-
};
|
|
150
|
-
export function icon(name, size = 16) {
|
|
151
|
-
return `<svg width="${size}" height="${size}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${ICON_PATHS[name]}</svg>`;
|
|
152
|
-
}
|
|
153
|
-
/** A status as the console shows it: its tone, an icon and a label, never colour alone. */
|
|
154
|
-
export function statusBadge(status) {
|
|
155
|
-
return `<span class="badge tone-${status.tone}">${icon(status.icon, 12)}${escaped(status.label)}</span>`;
|
|
156
|
-
}
|
|
157
|
-
/** The app mark from aeolus-fleet brand/aeolus-mark.svg: the Ship glyph on a tile in --primary, its stroke in --primary-foreground. */
|
|
158
|
-
const MARK = `<svg width="24" height="24" viewBox="0 0 32 32" aria-hidden="true"><rect width="32" height="32" rx="7" fill="var(--primary)"/><g fill="none" stroke="var(--primary-foreground)" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" transform="translate(6 6) scale(0.8333)"><path d="M12 2v2"/><path d="M12 9.189V13"/><path d="M19 12V6a2 2 0 00-2-2H7a2 2 0 00-2 2v6"/><path d="M19.38 19A11.6 11.6 0 0021 13l-8.188-3.639a2 2 0 00-1.624 0L3 13.001a11.6 11.6 0 002.81 7.76"/><path d="M2 20c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"/></g></svg>`;
|
|
159
|
-
const MARK_LARGE = MARK.replace('width="24" height="24"', 'width="40" height="40"');
|
|
160
|
-
const RING_SIZE = 96;
|
|
161
|
-
const RING_STROKE = 6;
|
|
162
|
-
/** The large shape that leads a page: a full ring in a tone, dashed for a state that ended, around an icon or a number. */
|
|
163
|
-
export function ring(shown) {
|
|
164
|
-
const size = shown.size ?? RING_SIZE;
|
|
165
|
-
const radius = (size - RING_STROKE) / 2;
|
|
166
|
-
const middle = size / 2;
|
|
167
|
-
const dash = shown.isDashed === true ? ' stroke-dasharray="4 6"' : '';
|
|
168
|
-
const iconSize = Math.round(size * 0.3);
|
|
169
|
-
let center;
|
|
170
|
-
if ('count' in shown.center) {
|
|
171
|
-
center = `<text x="${middle}" y="${middle}" text-anchor="middle" dominant-baseline="central" font-size="28" font-weight="600" fill="currentColor">${shown.center.count}</text>`;
|
|
172
|
-
}
|
|
173
|
-
else if ('text' in shown.center) {
|
|
174
|
-
// An icon above a short text, such as the time left; the page may update the text.
|
|
175
|
-
center = `<foreignObject x="${middle - 14}" y="${middle - 34}" width="28" height="28"><div xmlns="http://www.w3.org/1999/xhtml" style="color:var(--tone-${shown.tone}-fg)">${icon(shown.center.icon, 24)}</div></foreignObject><text x="${middle}" y="${middle + 10}" text-anchor="middle" dominant-baseline="central" font-size="22" font-weight="600" fill="currentColor" data-time-left>${escaped(shown.center.text)}</text><text x="${middle}" y="${middle + 34}" text-anchor="middle" font-size="12" fill="var(--muted-foreground)">left</text>`;
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
center = `<foreignObject x="${middle - iconSize / 2}" y="${middle - iconSize / 2}" width="${iconSize}" height="${iconSize}"><div xmlns="http://www.w3.org/1999/xhtml" style="color:var(--tone-${shown.tone}-fg)">${icon(shown.center.icon, iconSize)}</div></foreignObject>`;
|
|
179
|
-
}
|
|
180
|
-
return `<svg class="ring" width="${size}" height="${size}" viewBox="0 0 ${size} ${size}" role="img" aria-label="${escaped(shown.label)}"><circle cx="${middle}" cy="${middle}" r="${radius}" fill="none" stroke="var(--tone-${shown.tone}-fg)" stroke-width="${RING_STROKE}"${dash}/>${center}</svg>`;
|
|
181
|
-
}
|
|
182
|
-
/** An outside party's mark: the first two letters of its name on a tile, as the console's Avatar draws a ship. */
|
|
183
|
-
export function partyMark(name) {
|
|
184
|
-
return `<span class="party-mark" aria-hidden="true">${escaped(name.replaceAll(/[^\p{L}\p{N}]/gu, '').slice(0, 2).toUpperCase())}</span>`;
|
|
185
|
-
}
|
|
186
|
-
/** Who meets whom: the outside party's mark and the fleet's, side by side. */
|
|
187
|
-
export function handshake(party) {
|
|
188
|
-
return `<div class="handshake"><figure>${partyMark(party.name)}<figcaption>${escaped(party.name)}</figcaption></figure><span class="muted">${icon('arrowLeftRight', 16)}</span><figure><span class="fleet-mark">${MARK_LARGE}</span><figcaption>${escaped(party.fleet ?? 'Fleet')}</figcaption></figure></div>`;
|
|
189
|
-
}
|
|
190
|
-
const TABS = {
|
|
191
|
-
overview: { label: 'Overview', icon: 'house', href: '/overview' },
|
|
192
|
-
outsideParties: { label: 'Outside parties', icon: 'plug', href: '/outside-parties' },
|
|
193
|
-
};
|
|
194
|
-
function topBar(current, isSignedIn) {
|
|
195
|
-
const tabs = Object.entries(TABS)
|
|
196
|
-
.map(([tab, shown]) => `<a class="tab" href="${shown.href}" aria-label="${escaped(shown.label)}"${tab === current ? ' aria-current="page"' : ''}>${icon(shown.icon, 14)}<span class="label">${escaped(shown.label)}</span></a>`)
|
|
197
|
-
.join('');
|
|
198
|
-
// A person signed in to the pages signs out here; a console session signs out in the console.
|
|
199
|
-
const signOut = isSignedIn ? `<form method="post" action="/sign-out" class="sign-out"><button aria-label="Sign out">${icon('signOut', 14)}<span class="label">Sign out</span></button></form>` : '';
|
|
200
|
-
return `<header class="top"><a class="mark" href="/overview">${MARK}Aeolus</a><nav class="tabs">${tabs}</nav>${signOut}</header>`;
|
|
201
|
-
}
|
|
202
|
-
/** What a signed-out caller is shown: why, and the one way to sign in, coming back to the page they asked for. */
|
|
203
|
-
export function signInPrompt(shown) {
|
|
204
|
-
if (shown.way === 'none') {
|
|
205
|
-
return `<section class="card"><h2>This gateway signs no one in</h2><p class="muted">Its pages are for people signed in through pagasae, which its operator has not set.</p></section>`;
|
|
206
|
-
}
|
|
207
|
-
const link = `<a class="button" href="/sign-in?${new URLSearchParams({ return_to: shown.returnTo }).toString().replaceAll('&', '&')}">${icon('signIn', 14)}Sign in</a>`;
|
|
208
|
-
return `<section class="card"><h2>${escaped(shown.message)}</h2><div class="actions">${link}</div></section>`;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* What a live page runs: it opens /live for itself and swaps in each section
|
|
212
|
-
* it is sent; when the socket drops it shows Reconnecting and opens again
|
|
213
|
-
* with backoff, never for a refusal (4401 to 4404). Every minute it counts
|
|
214
|
-
* each days left down from its expiry, with no call to the gateway.
|
|
215
|
-
*/
|
|
216
|
-
const LIVE_SCRIPT = `(function (query) {
|
|
217
|
-
var DAY = 86400000, wait = 500, status = document.querySelector('[data-live-status]');
|
|
218
|
-
function countDown() {
|
|
219
|
-
document.querySelectorAll('[data-expires-at]').forEach(function (holder) {
|
|
220
|
-
var badge = holder.querySelector('.badge'), label = badge && badge.lastChild;
|
|
221
|
-
if (!label) return;
|
|
222
|
-
var days = Math.ceil((Date.parse(holder.getAttribute('data-expires-at')) - Date.now()) / DAY);
|
|
223
|
-
badge.className = 'badge ' + (days <= 0 ? 'tone-ended' : days <= 1 ? 'tone-attention' : 'tone-waiting');
|
|
224
|
-
label.textContent = days <= 0 ? 'Expired' : days <= 1 ? 'Last day' : days + ' d left';
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
function open() {
|
|
228
|
-
var socket = new WebSocket((location.protocol === 'https:' ? 'wss://' : 'ws://') + location.host + '/live?' + query);
|
|
229
|
-
socket.onopen = function () { wait = 500; status.hidden = true; };
|
|
230
|
-
socket.onmessage = function (event) {
|
|
231
|
-
var sections = JSON.parse(event.data).sections;
|
|
232
|
-
Object.keys(sections).forEach(function (name) {
|
|
233
|
-
var section = document.querySelector('[data-live="' + name + '"]');
|
|
234
|
-
if (section) section.innerHTML = sections[name];
|
|
235
|
-
});
|
|
236
|
-
countDown();
|
|
237
|
-
};
|
|
238
|
-
socket.onclose = function (event) {
|
|
239
|
-
if (event.code >= 4401 && event.code <= 4404) return;
|
|
240
|
-
status.hidden = false;
|
|
241
|
-
setTimeout(open, wait);
|
|
242
|
-
wait = Math.min(wait * 2, 10000);
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
open();
|
|
246
|
-
setInterval(countDown, 60000);
|
|
247
|
-
})(document.currentScript.getAttribute('data-live-query'));`;
|
|
248
|
-
/**
|
|
249
|
-
* A page a person meets on their way in, from an outside MCP client: the
|
|
250
|
-
* mark and its name above one centred column, no tabs. Its own script, if
|
|
251
|
-
* any, comes with its body.
|
|
252
|
-
*/
|
|
253
|
-
export function signInPage(page) {
|
|
254
|
-
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>${escaped(page.title)}</title><style>${STYLE}</style></head><body><main class="centred"><div class="mark">${MARK}Aeolus</div>${page.body}</main></body></html>`;
|
|
255
|
-
}
|
|
256
|
-
/** A whole Signal page: the top bar with its tabs, then the page's own body; a live page names itself to the live channel. */
|
|
257
|
-
export function signalPage(page) {
|
|
258
|
-
const live = page.live === undefined
|
|
259
|
-
? ''
|
|
260
|
-
: `<p data-live-status hidden class="live-status">${statusBadge({ tone: 'waiting', icon: 'hourglass', label: 'Reconnecting' })}</p><script data-live-query="${escaped(page.live)}">${LIVE_SCRIPT}</script>`;
|
|
261
|
-
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>${escaped(page.title)}</title><style>${STYLE}</style></head><body>${topBar(page.tab, page.isSignedIn === true)}<main${page.isWide === true ? ' class="wide"' : ''}>${page.body}</main>${live}</body></html>`;
|
|
262
|
-
}
|
|
263
|
-
//# sourceMappingURL=signal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal.js","sourceRoot":"","sources":["../../../src/adapters/http/signal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { AccountGrants, PageSession } from './ports.js';
|
|
2
|
-
export type SignOut = (session: PageSession) => Promise<void>;
|
|
3
|
-
/**
|
|
4
|
-
* Use case: a person signs out of the gateway's pages. The session's grant
|
|
5
|
-
* ends, so a page session cookie kept after it is signed out; the account's
|
|
6
|
-
* sign-ins from its MCP clients go on.
|
|
7
|
-
*/
|
|
8
|
-
export declare function createSignOut(deps: {
|
|
9
|
-
grants: Pick<AccountGrants, 'end'>;
|
|
10
|
-
}): SignOut;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Use case: a person signs out of the gateway's pages. The session's grant
|
|
3
|
-
* ends, so a page session cookie kept after it is signed out; the account's
|
|
4
|
-
* sign-ins from its MCP clients go on.
|
|
5
|
-
*/
|
|
6
|
-
export function createSignOut(deps) {
|
|
7
|
-
return ({ fleetId, grantId }) => deps.grants.end(fleetId, grantId);
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=sign-out.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sign-out.js","sourceRoot":"","sources":["../../../src/core/sign-in/sign-out.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA4C;IACxE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { OAuthSecrets } from '../oauth/ports.js';
|
|
2
|
-
import type { Clock } from '../shared/clock.js';
|
|
3
|
-
import type { Pagasae, SignInSeals } from './ports.js';
|
|
4
|
-
/** Where a person lands once signed in, when they asked for no page of the gateway's own. */
|
|
5
|
-
export declare const FIRST_PAGE = "/overview";
|
|
6
|
-
export type StartPageSignIn = (asked: {
|
|
7
|
-
returnTo?: string | undefined;
|
|
8
|
-
}) => {
|
|
9
|
-
redirectTo: string;
|
|
10
|
-
browserSecret: string;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Use case: a person signs in to the gateway's own pages through pagasae
|
|
14
|
-
* (decision 0054), as from an MCP client: the page to go back to is sealed
|
|
15
|
-
* with the gateway's PKCE verifier into the state, and the person is sent to
|
|
16
|
-
* pagasae naming no fleet. Only a path of the gateway's own is kept, so a
|
|
17
|
-
* sign-in never sends the browser to another site. The browser is given a
|
|
18
|
-
* secret of its own, sealed too, so only it finishes the sign-in.
|
|
19
|
-
*/
|
|
20
|
-
export declare function createStartPageSignIn(deps: {
|
|
21
|
-
seals: SignInSeals;
|
|
22
|
-
pagasae: Pagasae;
|
|
23
|
-
secrets: OAuthSecrets;
|
|
24
|
-
clock: Clock;
|
|
25
|
-
}): StartPageSignIn;
|