@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
package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/outside-party/actions.ts","../../../../../web/features/outside-party/scope-changes.ts"],"sourcesContent":["'use server';\n\n/**\n * One outside party's forms, as the account signed in (decision 0056):\n * changing its owner and scopes, and retiring it. Each asks the API, which\n * checks the account's scopes; a refusal is said on the form.\n */\nimport { redirect } from 'next/navigation';\n\nimport { inFleet } from '../../lib/gateway-api/page-account';\nimport { refusalMessageOf, requestApi } from '../../lib/gateway-api/page-api';\nimport { FLEET_FIELD, fieldOf, fieldsOf, type FormState } from '../forms/form-state';\nimport { OUTSIDE_PARTIES_PATH, partyPath } from '../outside-parties/paths';\nimport { changesOf } from './scope-changes';\n\n/** The field a party's form names it by. */\nconst NAME_FIELD = 'name';\n\nexport async function changeParty(_previous: FormState, form: FormData): Promise<FormState> {\n const fleetId = fieldOf(form, FLEET_FIELD);\n const name = fieldOf(form, NAME_FIELD);\n const api = await requestApi(fleetId);\n try {\n const [party, account] = await Promise.all([api.parties.get.query({ name }), api.account.inView.query()]);\n const changes = changesOf(party, { form: fieldsOf(form), scopes: account.kind === 'signedIn' ? account.scopes : [] });\n if (changes.kind === 'refused') {\n return changes;\n }\n if (changes.ownerShipId !== undefined) {\n await api.parties.changeOwner.mutate({ name, ownerShipId: changes.ownerShipId });\n }\n if (changes.grant.length > 0 || changes.revoke.length > 0) {\n await api.parties.changeScopes.mutate({ name, grant: changes.grant, revoke: changes.revoke });\n }\n } catch (error) {\n return { kind: 'refused', message: refusalMessageOf(error) };\n }\n redirect(inFleet(partyPath(name), fleetId));\n}\n\nexport async function retireParty(_previous: FormState, form: FormData): Promise<FormState> {\n const fleetId = fieldOf(form, FLEET_FIELD);\n const api = await requestApi(fleetId);\n try {\n await api.parties.retire.mutate({ name: fieldOf(form, NAME_FIELD) });\n } catch (error) {\n return { kind: 'refused', message: refusalMessageOf(error) };\n }\n redirect(inFleet(OUTSIDE_PARTIES_PATH, fleetId));\n}\n","/**\n * What a party's change form asks of the API (decision 0056): only what\n * differs from the party as the fleet holds it. Scope rows it did not show\n * revoke nothing; the scopes every app ship gets, and those the actor does\n * not hold, are never changed.\n */\nimport { idSchema } from '@aeolus-fleet/common';\n\n/** The scopes every app ship gets (0046): shown locked on, and never changed. */\nexport const EVERY_APP_SHIP_SCOPES: readonly string[] = ['messages:send', 'messages:receive'];\n\n/** A form field that ticks a scope: `scope:<scope>`, one field per scope. */\nexport const SCOPE_FIELD_PREFIX = 'scope:';\n\n/** The field a change form sends when it shows the scope rows. */\nexport const SCOPES_SHOWN_FIELD = 'scopesShown';\n\nexport type Changes = { kind: 'changes'; ownerShipId?: string; grant: string[]; revoke: string[] } | { kind: 'refused'; message: string };\n\nexport function changesOf(party: { ownerShipId: string | null; scopes: readonly string[] | null }, sent: { form: Readonly<Record<string, string>>; scopes: readonly string[] }): Changes {\n const { form, scopes } = sent;\n const sentOwner = form.ownerShipId?.trim();\n let ownerShipId: string | undefined;\n if (sentOwner !== undefined && sentOwner !== party.ownerShipId) {\n const parsed = idSchema('ship').safeParse(sentOwner);\n if (!parsed.success) {\n return { kind: 'refused', message: \"The owner's ship id is not a ship id (shp_...)\" };\n }\n ownerShipId = parsed.data;\n }\n const owner = ownerShipId === undefined ? {} : { ownerShipId };\n const held = party.scopes;\n if (form[SCOPES_SHOWN_FIELD] !== 'true' || held === null) {\n return { kind: 'changes', ...owner, grant: [], revoke: [] };\n }\n const own = scopes.filter((scope) => !EVERY_APP_SHIP_SCOPES.includes(scope));\n const isTicked = (scope: string) => form[`${SCOPE_FIELD_PREFIX}${scope}`] !== undefined;\n return {\n kind: 'changes',\n ...owner,\n grant: own.filter((scope) => isTicked(scope) && !held.includes(scope)),\n revoke: own.filter((scope) => !isTicked(scope) && held.includes(scope)),\n };\n}\n"],"names":["EVERY_APP_SHIP_SCOPES","SCOPE_FIELD_PREFIX","SCOPES_SHOWN_FIELD","changesOf","party","sent","form","scopes","sentOwner","ownerShipId","trim","undefined","parsed","safeParse","success","kind","message","data","owner","held","grant","revoke","own","filter","scope","includes","isTicked"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[9181,a=>{"use strict";var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(49144),f=a.i(65253),g=a.i(72913),h=a.i(1130),i=a.i(98323);let j="fleet:owner",k="scopes:grant";function l({fleetId:a}){return(0,b.jsx)("a",{href:(0,c.i)(g.$,a),className:"text-muted-foreground hover:text-foreground",children:"← Outside parties"})}function m({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 n=(0,b.jsx)("span",{className:"text-muted-foreground",children:"Not known"});function o({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 p({party:a}){let{protocol:c,side:d}=f.G[a.kind],e=f.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)(i.E,{children:c}),(0,b.jsx)(i.E,{children:f.N[d].one}),(0,b.jsx)(i.T,{tone:e.tone,label:e.label})]})}async function q({page:a,name:f}){let{api:r,fleetId:s,scopes:t}=a,u=await (0,d.F)(r.parties.get.query({name:f}));if(!u.isOk)return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(l,{fleetId:s}),(0,b.jsx)(m,{children:u.refusal})]});let v=u.value,w="mcpServer"===v.kind?await (0,d.F)(r.parties.tools.query({name:f})):void 0,x=(0,b.jsx)("a",{href:(0,c.i)((0,g.N)(v.name,"change"),s),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)(l,{fleetId:s}),(0,b.jsx)(p,{party:v}),(0,b.jsxs)("dl",{className:`${e.r} grid gap-3`,children:[(0,b.jsx)(o,{label:"Proxy ship",children:v.proxyShipName??n}),(0,b.jsxs)(o,{label:"Owner",children:[v.ownerName??n,t.includes(j)?x:null]}),(0,b.jsxs)(o,{label:"Scopes",children:[null===v.scopes?n:v.scopes.map(a=>{let c;return(0,b.jsx)(i.E,{children:(c=h.K.safeParse(a)).success?h.q[c.data]:a},a)}),t.includes(k)?x:null]}),(0,b.jsx)(o,{label:"mcpServer"===v.kind?"Address":"Client id",children:(0,b.jsx)("span",{className:"font-mono",children:"mcpServer"===v.kind?v.url:v.clientId})})]}),void 0===w?null:(0,b.jsxs)("section",{className:`${e.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"}),w.isOk?(0,b.jsx)("span",{children:w.value.tools.length}):null]}),w.isOk?(0,b.jsx)("ul",{className:"grid gap-1",children:w.value.tools.map(a=>(0,b.jsxs)("li",{className:"grid",children:[(0,b.jsx)("span",{className:"font-mono",children:a.name}),void 0===a.description?null:(0,b.jsx)("span",{className:"text-muted-foreground",children:a.description})]},a.name))}):(0,b.jsx)("p",{className:"text-muted-foreground",children:w.refusal})]}),t.includes("fleet:manage")?(0,b.jsx)("div",{children:(0,b.jsxs)("a",{className:e.x.secondary,href:(0,c.i)((0,g.N)(v.name,"retire"),s),"data-testid":"outside-party-retire",children:["Retire ",v.name,"…"]})}):null]})}a.s(["W",0,l,"p",0,k,"J",0,j,"b",0,q,"y",0,m],9181)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/outside-party/ui/outside-party.tsx","../../../../../web/features/outside-parties/scope-words.ts"],"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 { BUTTONS, CARD } from '../../forms/ui/look';\nimport { 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';\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 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\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, read-only. 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 tools = party.kind === 'mcpServer' ? await readOf(api.parties.tools.query({ name })) : undefined;\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 <Fact label={party.kind === 'mcpServer' ? 'Address' : 'Client id'}>\n <span className=\"font-mono\">{party.kind === 'mcpServer' ? party.url : party.clientId}</span>\n </Fact>\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 ? <span>{tools.value.tools.length}</span> : null}\n </h2>\n {tools.isOk ? (\n <ul className=\"grid gap-1\">\n {tools.value.tools.map((tool) => (\n <li key={tool.name} className=\"grid\">\n <span className=\"font-mono\">{tool.name}</span>\n {tool.description === undefined ? null : <span className=\"text-muted-foreground\">{tool.description}</span>}\n </li>\n ))}\n </ul>\n ) : (\n <p className=\"text-muted-foreground\">{tools.refusal}</p>\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"],"names":["scopeWords","scope","core","safeParse","success","data"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[25964,a=>{var b=a.i(50944),c=a.i(72131);a.s(["LiveRefresh",0,function({fleetId:a}){let d;return d=(0,b.useRouter)(),(0,c.useEffect)(()=>{let b=new EventSource(`/overview/changes?fleet=${encodeURIComponent(a)}`);return b.onmessage=()=>{d.refresh()},()=>{b.close()}},[a,d]),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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/overview/hooks/use-live-refresh.ts","../../../../../web/features/overview/state/live-refresh.tsx","../../../../../web/features/overview/ui/action-button.tsx","../../../../../web/features/overview/ui/notice.tsx"],"sourcesContent":["'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect } from 'react';\n\n/** The page's live updates, which the web app's server follows on the gateway's API for the browser. */\nexport const CHANGES_PATH = '/overview/changes';\n\n/**\n * Keeps the page in step with its fleet's requests: whenever one changes,\n * the page reads itself again on the server, as its own caller. The browser\n * opens the stream again by itself when it drops.\n */\nexport function useLiveRefresh(fleetId: string): void {\n const router = useRouter();\n useEffect(() => {\n const changes = new EventSource(`${CHANGES_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n changes.onmessage = () => {\n router.refresh();\n };\n return () => {\n changes.close();\n };\n }, [fleetId, router]);\n}\n","'use client';\n\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\n\n/** Keeps the page it sits in live: it shows nothing itself. */\nexport function LiveRefresh({ fleetId }: { fleetId: string }) {\n useLiveRefresh(fleetId);\n return null;\n}\n","import type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nconst VARIANTS = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'border border-border bg-card text-card-foreground hover:bg-accent',\n} as const;\n\n/**\n * A button for an action: the moment it is pressed and until the answer\n * comes, it shows a spinner and its working label, and cannot run twice.\n */\nexport function ActionButton({\n isPending,\n pendingLabel,\n variant = 'secondary',\n children,\n className = '',\n disabled,\n ...button\n}: ButtonHTMLAttributes<HTMLButtonElement> & { isPending: boolean; pendingLabel: string; variant?: keyof typeof VARIANTS; children: ReactNode }) {\n return (\n <button\n {...button}\n disabled={disabled === true || isPending}\n aria-busy={isPending}\n className={`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${VARIANTS[variant]} ${className}`}\n >\n {isPending ? (\n <>\n <span aria-hidden=\"true\" className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {pendingLabel}\n </>\n ) : (\n children\n )}\n </button>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <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\">\n {message}\n </p>\n ) : (\n <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\">\n {message}\n </p>\n );\n}\n"],"names":["CHANGES_PATH","useLiveRefresh","fleetId","router","changes","EventSource","encodeURIComponent","onmessage","refresh","close","VARIANTS","primary","secondary","ActionButton","isPending","pendingLabel","variant","children","className","disabled","button"],"mappings":"6CAEA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,4BCEO,SAAS,AAAY,SAAE,CAAO,CAAuB,QAE1D,ODOMG,EAAS,CAAA,EAAA,EAAA,SAAS,AAAT,IACf,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAMC,EAAU,IAAIC,YAAY,GAAGL,aAAa,OAAO,IAAEM,mBAAmBJ,IAAU,EAItF,OAHAE,EAAQG,SAAS,CAAG,KAClBJ,EAAOK,OAAO,EAChB,EACO,KACLJ,EAAQK,KAAK,EACf,CACF,EAAG,CCjBY,EDiBFN,EAAO,EChBb,IACT,2CCNA,IAAMO,EAAW,CACfC,QAAS,4DACTC,UAAW,mEACb,aAMO,SAASC,AAAa,WAC3BC,CAAS,CACTC,cAAY,SACZC,EAAU,WAAW,UACrBC,CAAQ,WACRC,EAAY,EAAE,UACdC,CAAQ,CACR,GAAGC,EAC0I,EAC7I,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACE,GAAGA,CAAM,CACVD,UAAuB,IAAbA,GAAqBL,EAC/B,YAAWA,EACXI,UAAW,CAAC,mGAAmG,EAAER,CAAQ,CAACM,EAAQ,CAAC,CAAC,EAAEE,EAAAA,CAAW,UAEhJJ,EACC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,cAAY,OAAOI,UAAU,oFAClCH,KAGHE,GAIR,oBCpCO,SAAgB,AAAP,SAAS,CAAO,WAAE,CAAS,CAA2C,EACpF,OAAO,EACL,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,KAAK,QAAQ,cAAY,mBAAmB,UAAU,gHACtD,IAGH,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,KAAK,SAAS,cAAY,mBAAmB,UAAU,2FACvD,GAGP"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[4757,a=>{"use strict";var b=a.i(37936),c=a.i(29517),d=a.i(18558);a.i(70396);var e=a.i(73727),f=a.i(55476),g=a.i(66283),h=a.i(54757),h=h,i=a.i(27221),j=a.i(26972),k=h,l=a.i(89963),m=h,n=h;let o=h.int().min(1),p=i.z.string().min(1),q=j.z.object({key:o,label:p,detail:i.z.string().default("")}),r=j.z.object({id:k.uuid(),title:p,context:i.z.string(),options:l.z.array(q).min(1),pick:j.z.object({option:o,why:p})}).refine(({options:a})=>new Set(a.map(({key:a})=>a)).size===a.length,{message:"Every option has its own number",path:["options"]}).refine(({options:a,pick:b})=>a.some(({key:a})=>a===b.option),{message:"The pick names one of the options",path:["pick","option"]});j.z.object({questionId:k.uuid()}),j.z.object({questionId:k.uuid(),question:r}).refine(({questionId:a,question:b})=>b.id!==a,{message:"The new question has a uuid of its own",path:["question","id"]}),m.union([j.z.object({option:o,note:p.optional()}),j.z.object({note:p})]);let s=m.union([j.z.object({questionId:k.uuid(),option:o,note:p.optional()}),j.z.object({questionId:k.uuid(),note:p})]),t=j.z.object({messageId:(0,c.f)("message"),sentAt:n.iso.datetime(),option:o.nullable(),note:i.z.string().nullable()});j.z.object({id:k.uuid(),title:i.z.string(),context:i.z.string(),options:l.z.array(q),pick:j.z.object({option:o,why:i.z.string()}),answer:t.nullable()});var u=a.i(11393),v=a.i(10351);async function w(a,b){let c;try{c={isOk:!0,value:await b(await (0,g.z)(a))}}catch(c){let b=(0,g.T)(c);if("UNAUTHORIZED"===b)return(0,e.redirect)(`/sign-in/start?${new URLSearchParams({return_to:`${v.K}?${new URLSearchParams({[f.n]:a}).toString()}`}).toString()}`);return{isOk:!1,message:void 0===b?"The gateway did not answer: try again in a moment":(0,g.s)(c)}}return(0,d.revalidatePath)(v.K),c}async function x(a,b){return w(a,async a=>{let{contentType:c,payload:d,...e}=await a.people.open.mutate({deliveryId:b});return{...e,payload:d,question:function(a){if("application/vnd.aeolus.question+json"===function(a){let[b=""]=a.split(";");return b.trim().toLowerCase()}(a.contentType))try{let b=r.safeParse(JSON.parse(a.payload));return b.success?b.data:void 0}catch{return}}({contentType:c,payload:d})}})}async function y({fleet:a,deliveryId:b,input:c}){let d=function(a){let b=a.note.trim();if(void 0===a.questionId)return""===b?{isOk:!1,message:"Write your answer first"}:{isOk:!0,value:{contentType:"text/plain",payload:b}};let c=s.safeParse({questionId:a.questionId,...void 0===a.option?{}:{option:a.option},...""===b?{}:{note:b}});return c.success?{isOk:!0,value:{contentType:"application/vnd.aeolus.answer+json",payload:JSON.stringify(c.data)}}:{isOk:!1,message:"Tap an option, or write a note"}}(c);return d.isOk?w(a,async a=>{await a.people.answer.mutate({deliveryId:b,...d.value})}):d}async function z(a,b){return w(a,async a=>{await a.people.done.mutate({deliveryId:b})})}async function A({fleet:a,requestId:b,input:d}){if("deny"===d.kind)return w(a,async a=>{await a.requests.decide.mutate({requestId:b,decision:{kind:"deny"}})});let e=(0,c.f)("ship").safeParse(d.ownerShipId.trim());if(!e.success)return{isOk:!1,message:"The owner's ship id is not a ship id (shp_...)"};let f={name:d.name,ownerShipId:e.data,scopes:[...new Set([...u._,...d.scopes])]},{server:g}=d,h=void 0===g?void 0:"clientCredentials"===g.credentialKind?{kind:"clientCredentials",clientId:g.clientId,clientSecret:g.clientSecret,issuer:g.issuer,...""===g.scope?{}:{scope:g.scope}}:{kind:"bearer",token:g.token};return w(a,async a=>{await a.requests.decide.mutate({requestId:b,decision:{kind:"approve",party:f,...void 0===g||void 0===h?{}:{server:{credential:h,concurrencyLimit:g.concurrencyLimit}}}})})}(0,a.i(13095).ensureServerEntryExports)([x,y,z,A]),(0,b.registerServerReference)(x,"60c077631742623c9762991560ecd94a5eb2a455d0",null),(0,b.registerServerReference)(y,"40c5249ea57e0c0beec38cd25044e8bf9674b10f23",null),(0,b.registerServerReference)(z,"6061938a5346120bdc3640cd5b530ba13181f66cd5",null),(0,b.registerServerReference)(A,"404d9c119589c6de0da022497dd1772a81acb94daa",null),a.s(["q",0,y,"Q",0,A,"G",0,z,"v",0,x],4757)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/%40aeolus-fleet/common/src/schemas/question.ts","../../../../../web/features/overview/hooks/overview-actions.ts","../../../../../web/features/overview/services/deliveries.ts"],"sourcesContent":["unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/question.ts","'use server';\n/**\n * The Overview's actions, each one call of the gateway's API as the\n * signed-in account, on the server (0033): opening, answering and being done\n * with a delivery, and deciding a request. The API checks everything; a\n * refusal comes back in its own words for the page to say by the control. A\n * sign-in that ended sends the person to sign in again.\n */\nimport { idSchema } from '@aeolus-fleet/common';\nimport { revalidatePath } from 'next/cache';\nimport { redirect } from 'next/navigation';\n\nimport type { GatewayApi } from '../../../lib/gateway-api/gateway-api';\nimport { FLEET_PARAMETER } from '../../../lib/gateway-api/page-account';\nimport { refusalCodeOf, refusalMessageOf, requestApi } from '../../../lib/gateway-api/page-api';\nimport { answerOf, questionOf, type AnswerInput, type FocusedDelivery } from '../services/deliveries';\nimport { EVERY_APP_SHIP_SCOPES, type DecisionInput } from '../services/requests';\nimport { OVERVIEW_PATH } from './read-overview';\n\n/** What an action says when the gateway gave no answer of its own. */\nconst NO_ANSWER = 'The gateway did not answer: try again in a moment';\n\nexport type ActionOutcome<T> = { readonly isOk: true; readonly value: T } | { readonly isOk: false; readonly message: string };\n\nasync function attempt<T>(fleet: string, run: (api: GatewayApi) => Promise<T>): Promise<ActionOutcome<T>> {\n let outcome: ActionOutcome<T>;\n try {\n outcome = { isOk: true, value: await run(await requestApi(fleet)) };\n } catch (error) {\n const code = refusalCodeOf(error);\n if (code === 'UNAUTHORIZED') {\n return redirect(`/sign-in/start?${new URLSearchParams({ return_to: `${OVERVIEW_PATH}?${new URLSearchParams({ [FLEET_PARAMETER]: fleet }).toString()}` }).toString()}`);\n }\n return { isOk: false, message: code === undefined ? NO_ANSWER : refusalMessageOf(error) };\n }\n revalidatePath(OVERVIEW_PATH);\n return outcome;\n}\n\n/** Opens a delivery that waits: the gateway acknowledges it for the person, and it is shown whole, once. */\nexport async function openDelivery(fleet: string, deliveryId: string): Promise<ActionOutcome<FocusedDelivery>> {\n return attempt(fleet, async (api) => {\n const opened = await api.people.open.mutate({ deliveryId });\n const { contentType, payload, ...entry } = opened;\n return { ...entry, payload, question: questionOf({ contentType, payload }) };\n });\n}\n\nexport async function answerDelivery({ fleet, deliveryId, input }: { fleet: string; deliveryId: string; input: AnswerInput }): Promise<ActionOutcome<undefined>> {\n const answer = answerOf(input);\n if (!answer.isOk) {\n return answer;\n }\n return attempt(fleet, async (api) => {\n await api.people.answer.mutate({ deliveryId, ...answer.value });\n return undefined;\n });\n}\n\nexport async function doneDelivery(fleet: string, deliveryId: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.done.mutate({ deliveryId });\n return undefined;\n });\n}\n\n/** Decides a request; approving names the proxy ship, its owner and its scopes, messages:send and messages:receive always among them. */\nexport async function decideRequest({ fleet, requestId, input }: { fleet: string; requestId: string; input: DecisionInput }): Promise<ActionOutcome<undefined>> {\n if (input.kind === 'deny') {\n return attempt(fleet, async (api) => {\n await api.requests.decide.mutate({ requestId, decision: { kind: 'deny' } });\n return undefined;\n });\n }\n const ownerShipId = idSchema('ship').safeParse(input.ownerShipId.trim());\n if (!ownerShipId.success) {\n return { isOk: false, message: \"The owner's ship id is not a ship id (shp_...)\" };\n }\n const party = { name: input.name, ownerShipId: ownerShipId.data, scopes: [...new Set([...EVERY_APP_SHIP_SCOPES, ...input.scopes])] };\n const { server } = input;\n const credential =\n server === undefined\n ? undefined\n : server.credentialKind === 'clientCredentials'\n ? { kind: 'clientCredentials' as const, clientId: server.clientId, clientSecret: server.clientSecret, issuer: server.issuer, ...(server.scope === '' ? {} : { scope: server.scope }) }\n : { kind: 'bearer' as const, token: server.token };\n return attempt(fleet, async (api) => {\n await api.requests.decide.mutate({ requestId, decision: { kind: 'approve', party, ...(server === undefined || credential === undefined ? {} : { server: { credential, concurrencyLimit: server.concurrencyLimit } }) } });\n return undefined;\n });\n}\n","/**\n * A delivery that waits on a person, as the Overview shows it once opened,\n * and the answer its form sends: pure view logic, no React and no API client.\n */\nimport { ANSWER_CONTENT_TYPE, answerSchema, isQuestionContentType, questionSchema, type Question } from '@aeolus-fleet/common';\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\n\n/** What waits on a person's own ship, as the API shows it. */\nexport type Inbox = inferRouterOutputs<GatewayRouter>['people']['inbox'];\n\n/** A delivery as the inbox lists it: by title only. */\nexport type InboxEntry = Inbox['deliveries'][number];\n\n/**\n * A delivery in focus: whole once, as the person opened it, with its\n * question when it is one; or, opened before, by its title alone, as the\n * gateway keeps no payload.\n */\nexport interface FocusedDelivery {\n readonly deliveryId: string;\n readonly from: string;\n readonly title: string;\n readonly sentAt: string;\n readonly payload: string | undefined;\n readonly question: Question | undefined;\n}\n\n/** A question, when the delivery is one the fleet's question content type carries. */\nexport function questionOf(opened: { contentType: string; payload: string }): Question | undefined {\n if (!isQuestionContentType(opened.contentType)) {\n return undefined;\n }\n try {\n const question = questionSchema.safeParse(JSON.parse(opened.payload));\n return question.success ? question.data : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** What the person sends: an option they tapped and a note, or a note alone. */\nexport interface AnswerInput {\n readonly questionId: string | undefined;\n readonly option: number | undefined;\n readonly note: string;\n}\n\n/** The answer a form sends: an option and a note, or a note alone, for a question; a note as plain text otherwise. */\nexport function answerOf(input: AnswerInput): { isOk: true; value: { contentType: string; payload: string } } | { isOk: false; message: string } {\n const note = input.note.trim();\n if (input.questionId === undefined) {\n return note === '' ? { isOk: false, message: 'Write your answer first' } : { isOk: true, value: { contentType: 'text/plain', payload: note } };\n }\n const answer = answerSchema.safeParse({ questionId: input.questionId, ...(input.option === undefined ? {} : { option: input.option }), ...(note === '' ? {} : { note }) });\n return answer.success ? { isOk: true, value: { contentType: ANSWER_CONTENT_TYPE, payload: JSON.stringify(answer.data) } } : { isOk: false, message: 'Tap an option, or write a note' };\n}\n"],"names":[],"mappings":"uDCQA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OAGA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,sDDdA,EAAwB,CAAjB,CAAiB,CAAf,AAAe,CAAA,AAAd,EAAE,MAAM,KAAK,CAAC,CA4CxB,IAAM,EAAkB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,AAHf,CAAC,CAAC,CAKjB,EAAa,EAAA,CAAA,CAAE,MAAA,GAAA,GAAY,CAAC,CAAC,CAAC,CAAC,AAG/B,EAAe,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,GAAG,CAAE,EAAiB,KAAK,CAAE,EAAY,KAArB,CAA2B,CAAE,CAAV,CAAU,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,AAG9F,EAAiB,EAAA,CAAC,CAC5B,MAAM,CAAC,CACN,EAAE,CAAE,CAAC,CAAA,IAAK,EAAE,CACZ,KAAK,CAAE,EACP,QAAS,EAAA,CAAC,CAAC,MAAM,GACjB,OAAO,CAAE,EAAA,CAAC,CAAC,KAAK,CAAC,GAAc,GAAG,CAAC,CAAC,CAAC,CACrC,EAD6B,CAAC,CAC1B,CAAE,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,MAAM,CAAE,EAAiB,GAAG,CAAE,CAAU,CAAE,CAAC,CAC7D,CAAC,CACD,GAFyC,CAAiB,EAEpD,CAAC,CAAC,SAAE,CAAA,CAAS,EAAE,CAAG,CAAD,GAAK,GAAG,CAAA,EAAS,GAAG,CAAC,CAAC,KAAE,CAAG,CAAE,GAAK,IAAM,IAAI,GAAK,EAAQ,KAAD,CAAO,CAAE,CACvF,QAAS,kCACT,KAAM,CAAC,UAAU,CAClB,EACA,MAAM,CAAA,CAAE,SAAE,CAAA,MAAS,CAAI,CAAE,EAAE,CAAG,CAAD,CAAS,IAAI,CAAC,CAAC,CAAE,KAAG,CAAE,EAAE,CAAG,CAAD,EAAI,CAAK,EAAK,EAAD,IAAO,CAAC,CAAE,SACpE,oCACT,IAAI,CAAA,CAAG,OAAQ,UAChB,EAK6B,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,AAGlC,EAAA,CAAC,CAC/B,MAAM,CAAC,CAAE,WAAY,CAAC,CAAC,IAAI,EAAE,CAAE,QAAQ,CAAE,CAAc,CAAE,CAAC,CAC1D,MAAM,CAAC,CAAC,EAD+C,UAC7C,CAAA,UAAY,CAAQ,CAAE,EAAE,CAAG,CAAD,CAAU,EAAE,GAAK,EAAY,QAAF,CACrD,wCAAwC,CACjD,IAAI,CAAE,CAAC,UAAU,CAAE,IAAI,CAAC,GAIM,CAAC,CAAC,KAAK,CAAC,CACxC,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,MAAM,CAAE,EAAiB,KAAM,EAAW,QAAQ,EAAE,CAAE,CAAC,CAClE,EAAA,CAAC,CAAC,MAAA,CAAO,CAAE,KAAM,CAAU,CAAE,CAAC,CAC/B,CAAC,CAKK,AALJ,IAKI,EAAqB,CAAC,CAAC,KAAK,CAAC,CAClC,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC,IAAI,EAAE,CAAE,MAAM,CAAE,EAAiB,IAAI,CAAE,EAAW,MAAnB,EAAkB,AAAS,EAAE,CAAE,CAAC,CACxF,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC,IAAI,EAAE,CAAE,IAAI,CAAE,CAAU,CAAE,CAAC,CACrD,EAKY,EAAoB,EANkB,AAMlB,CAAC,CAAA,MAAO,CAAC,CACxC,SAAS,CAAA,CAAA,EAAE,EAAA,CAAA,AAAQ,EAAC,SAAS,CAAC,CAC9B,OAAQ,CAAC,CAAC,GAAG,CAAA,QAAS,EAAE,CACxB,OAAQ,EAAgB,QAAQ,EAAE,CAClC,KAAM,EAAA,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAC5B,CAAC,CAAC,AAGgC,EAAA,CAAC,CAAC,MAAM,CAAC,CAC1C,EAAE,CAAE,CAAC,CAAA,IAAK,EAAE,CACZ,KAAK,CAAE,EAAA,CAAA,CAAE,MAAM,EAAE,CACjB,QAAS,EAAA,CAAC,CAAC,MAAM,EAAE,SACV,EAAA,CAAA,CAAE,KAAK,CAAC,QACX,EAAA,CAAA,CAAE,MAAM,CAAC,CAAE,MAAM,CAAE,EAAiB,GAAG,CAAE,EAAA,CAAC,CAAC,KAAT,CAAe,EAAE,CAAE,CAAC,CAC5D,MAAM,CAAE,EAAkB,QAAQ,EAAE,CACrC,CAAC,CAAC,AClGH,EDiG2B,ECjG3B,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAOA,eAAe,EAAW,CAAa,CAAE,CAAoC,EAC3E,IAAI,EACJ,GAAI,CACF,EAAU,CAAE,MAAM,EAAM,MAAO,MAAM,EAAI,MAAM,CAAA,EAAA,EAAA,CAAA,AAAU,EAAC,GAAQ,CACpE,CAAE,MAAO,EAAO,CACd,IAAM,EAAO,CAAA,EAAA,EAAA,CAAA,AAAa,EAAC,GAC3B,GAAa,gBAAgB,CAAzB,EACF,MAAO,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CAAC,eAAe,EAAE,IAAI,gBAAgB,CAAE,UAAW,CAAA,EAAG,EAAA,CAAa,CAAC,CAAC,EAAE,IAAI,gBAAgB,CAAE,CAAC,EAAA,CAAe,CAAC,CAAE,CAAM,GAAG,QAAQ,GAAA,CAAI,AAAC,GAAG,QAAQ,GAAA,CAAI,EAEvK,MAAO,CAAE,MAAM,EAAO,aAAkB,IAAT,EAbjB,MAasC,8CAAY,CAAA,EAAA,EAAA,CAAA,AAAgB,EAAC,EAAO,CAC1F,CAEA,MADA,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAA,CAAa,EACrB,CACT,CAGO,eAAe,EAAa,CAAa,CAAE,CAAkB,EAClE,OAAO,EAAQ,EAAO,MAAO,IAE3B,GAAM,aAAE,CAAW,SAAE,CAAO,CAAE,GAAG,EAAO,CADzB,EAC4B,IADtB,EAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAE,CAAW,GAEzD,MAAO,CAAE,GAAG,CAAK,SAAE,EAAS,SCdzB,ADcmC,SCd1B,AAAW,CAAgD,EACzE,GFjBmC,AAY5B,CEKH,CAAC,OFLW,CAAC,WAAW,CAAC,KAAK,WAZuC,CAAC,EAK8B,OAOjD,CAAC,CANjD,AAAU,CAAmB,EACpC,GAAM,CAAC,EADS,AACC,EAAE,CAAC,CAAG,CAAT,CAAqB,KAAK,CAAC,GAAP,AAAU,CAAC,CAAC,AAC9C,OAAO,EAAQ,IAAI,CAAL,CAAO,CAAC,WAAW,EAAE,CAAC,CEST,EAAO,WAAW,EAG7C,CAHgD,EAG5C,CACF,IAAM,EAAW,EAAe,SAAS,CAAC,KAAK,KAAK,CAAC,EAAO,OAAO,GACnE,OAAO,EAAS,OAAO,CAAG,EAAS,IAAI,MAAG,CAC5C,CAAE,KAAM,CACN,MACF,CACF,AAFW,EDM0C,aAAE,UAAa,CAAQ,EAAG,CAC7E,EACF,CAEO,eAAe,EAAe,OAAE,CAAK,CAAE,YAAU,OAAE,CAAK,CAA6D,EAC1H,IAAM,ECCD,ADDU,SCCD,AAAS,CAAkB,EACzC,IAAM,EAAO,EAAM,IAAI,CAAC,IAAI,GAC5B,QAAyB,IAArB,EAAM,KAA0B,KAAhB,CAClB,MAAgB,KAAT,EAAc,CAAE,MAAM,EAAO,QAAS,yBAA0B,EAAI,CAAE,MAAM,EAAM,MAAO,CAAE,YAAa,aAAc,QAAS,CAAK,CAAE,EAE/I,IAAM,EAAS,EAAa,SAAS,CAAC,CAAE,WAAY,EAAM,UAAU,CAAE,QAAqB,IAAjB,EAAM,MAAM,CAAiB,CAAC,EAAI,CAAE,OAAQ,EAAM,MAAM,AAAC,CAAC,CAAG,GAAa,KAAT,EAAc,CAAC,EAAI,MAAE,CAAK,CAAC,AAAE,GACxK,OAAO,EAAO,OAAO,CAAG,CAAE,MAAM,EAAM,MAAO,CAAE,YFzCd,CEyC2B,mCFzCS,CEyCY,AFzCX,QEyCoB,KAAK,SAAS,CAAC,EAAO,IAAI,CAAE,CAAE,EAAI,CAAE,MAAM,EAAO,QAAS,gCAAiC,CACvL,EDR0B,UACxB,AAAK,EAAO,EAAR,EAAY,CAGT,CAHW,CAGH,EAAO,MAAO,IAC3B,MAAM,EAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAE,EAAY,GAAG,EAAO,KAAK,AAAC,EAE/D,GALS,CAMX,CAEO,eAAe,EAAa,CAAa,CAAE,CAAkB,EAClE,OAAO,EAAQ,EAAO,MAAO,IAC3B,MAAM,EAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAE,CAAW,EAE5C,EACF,CAGO,eAAe,EAAc,OAAE,CAAK,WAAE,CAAS,CAAE,OAAK,CAA8D,EACzH,GAAmB,QAAQ,CAAvB,EAAM,IAAI,CACZ,OAAO,EAAQ,EAAO,MAAO,IAC3B,MAAM,EAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAE,EAAW,SAAU,CAAE,KAAM,MAAO,CAAE,EAE3E,GAEF,IAAM,EAAc,CAAA,EAAA,EAAA,CAAA,AAAQ,EAAC,QAAQ,SAAS,CAAC,EAAM,WAAW,CAAC,IAAI,IACrE,GAAI,CAAC,EAAY,OAAO,CACtB,CADwB,KACjB,CAAE,MAAM,EAAO,QAAS,gDAAiD,EAElF,IAAM,EAAQ,CAAE,KAAM,EAAM,IAAI,CAAE,YAAa,EAAY,IAAI,CAAE,OAAQ,IAAI,IAAI,IAAI,IAAI,EAAA,CAAqB,IAAK,EAAM,MAAM,CAAC,EAAE,AAAC,EAC7H,QAAE,CAAM,CAAE,CAAG,EACb,OACO,IAAX,OACI,EACA,AAA0B,wBAAnB,cAAc,CACnB,CAAE,KAAM,oBAA8B,SAAU,EAAO,QAAQ,CAAE,aAAc,EAAO,YAAY,CAAE,OAAQ,EAAO,MAAM,CAAE,GAAqB,KAAjB,EAAO,KAAK,CAAU,CAAC,EAAI,CAAE,MAAO,EAAO,KAAM,AAAD,CAAE,AAAE,EACnL,CAAE,KAAM,SAAmB,MAAO,EAAO,KAAK,AAAC,EACvD,OAAO,EAAQ,EAAO,MAAO,IAC3B,MAAM,EAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAE,EAAW,SAAU,CAAE,KAAM,UAAW,QAAO,QAAe,IAAX,QAAuC,IAAf,EAA2B,CAAC,EAAI,CAAE,OAAQ,YAAE,EAAY,iBAAkB,EAAO,gBAAgB,AAAC,CAAE,CAAC,AAAE,CAAE,EAEzN,EACF,0CAlDsB,EAQA,EAWA,EAQA,IA3BA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAQA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAWA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAQA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA","ignoreList":[0]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[91445,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(72131),e=a.i(5050);let f=(0,e.createServerReference)("404d9c119589c6de0da022497dd1772a81acb94daa",e.callServer,void 0,e.findSourceMapURL,"decideRequest");var g=a.i(35149);let h=["messages:send","messages:receive"],i={"messages:send":"Send","messages:receive":"Receive","fleet:read":"Read the fleet"};var j=a.i(1542),k=a.i(24229);let l="rounded-md border border-input bg-background px-2 py-1.5";function m({scope:a,isLocked:c}){return(0,b.jsxs)("label",{className:"flex items-center gap-2",children:[c?(0,b.jsx)("input",{type:"checkbox",checked:!0,disabled:!0,"aria-label":i[a]??a}):(0,b.jsx)("input",{type:"checkbox",name:"scope",value:a,"aria-label":i[a]??a}),(0,b.jsx)("span",{children:i[a]??a}),(0,b.jsx)("span",{className:"font-mono text-caption text-muted-foreground",children:a}),c?(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:"(always)"}):null]})}function n(a,b){let c=a.get(b);return"string"==typeof c?c:""}function o({request:a,heldScopes:c,owners:e,working:f,failure:i,onDecide:p}){let[q,r]=(0,d.useState)("bearer"),s=function(a){switch(a.subject.kind){case"client":return a.subject.clientName;case"server":return URL.canParse(a.subject.url)?new URL(a.subject.url).host:a.subject.url}}(a),t="server"===a.subject.kind;return(0,b.jsxs)("section",{className:"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm",children:[(0,b.jsxs)("h2",{className:"text-heading font-semibold",children:["Approve ",s]}),(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault();let b=new FormData(a.currentTarget),c=b.getAll("scope").filter(a=>"string"==typeof a);p({kind:"approve",name:n(b,"name"),ownerShipId:n(b,"ownerShipId"),scopes:c,server:t?{credentialKind:"clientCredentials"===n(b,"credentialKind")?"clientCredentials":"bearer",token:n(b,"token"),clientId:n(b,"clientId"),clientSecret:n(b,"clientSecret"),issuer:n(b,"issuer"),scope:n(b,"scope-requested"),concurrencyLimit:Number(n(b,"concurrencyLimit"))}:void 0})},className:"grid gap-3",children:[(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Proxy ship's name"}),(0,b.jsx)("input",{name:"name",defaultValue:s.toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-+|-+$/g,""),required:!0,className:l})]}),(0,b.jsx)(g.f,{choices:e.isOk?e.value:[],current:null,help:"A person ship or argo. It answers for this party.",refusal:e.isOk?void 0:e.refusal}),(0,b.jsxs)("fieldset",{className:"grid gap-1",children:[(0,b.jsx)("legend",{children:"Scopes"}),h.map(a=>(0,b.jsx)(m,{scope:a,isLocked:!0},a)),c.filter(a=>!h.includes(a)).map(a=>(0,b.jsx)(m,{scope:a,isLocked:!1},a))]}),t?(0,b.jsxs)("fieldset",{className:"grid gap-2",children:[(0,b.jsx)("legend",{children:"The server's credential"}),(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Credential"}),(0,b.jsxs)("select",{name:"credentialKind",value:q,onChange:a=>{r("clientCredentials"===a.target.value?"clientCredentials":"bearer")},className:l,children:[(0,b.jsx)("option",{value:"bearer",children:"Bearer token"}),(0,b.jsx)("option",{value:"clientCredentials",children:"OAuth client credentials"})]})]}),"bearer"===q?(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Bearer token"}),(0,b.jsx)("input",{type:"password",name:"token",className:l})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Client id"}),(0,b.jsx)("input",{name:"clientId",className:l})]}),(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Client secret"}),(0,b.jsx)("input",{type:"password",name:"clientSecret",className:l})]}),(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Issuer"}),(0,b.jsx)("input",{type:"url",name:"issuer",className:l})]}),(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Scope"}),(0,b.jsx)("input",{name:"scope-requested",className:l})]})]}),(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:"Calls at once"}),(0,b.jsx)("input",{type:"number",name:"concurrencyLimit",min:1,max:10,defaultValue:4,className:l})]})]}):null,void 0===i?null:(0,b.jsx)(k.f,{message:i,isFailure:!0}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(j.f,{type:"submit",variant:"primary","data-testid":"overview-approve",isPending:"approve"===f,pendingLabel:"Approving...",disabled:void 0!==f,children:"Approve"}),(0,b.jsx)(j.f,{type:"button","data-testid":"overview-deny",isPending:"deny"===f,pendingLabel:"Denying...",disabled:void 0!==f,onClick:()=>{p({kind:"deny"})},children:"Deny"})]})]})]})}a.s(["DecisionPanel",0,function({fleetId:a,request:e,heldScopes:g,owners:h}){let i=(0,c.useRouter)(),[j,k]=(0,d.useState)(),[l,m]=(0,d.useState)(),[,n]=(0,d.useTransition)();return(0,b.jsx)(o,{request:e,heldScopes:g,owners:h,working:j,failure:l,onDecide:b=>{k(b.kind),m(void 0),n(async()=>{let c=await f({fleet:a,requestId:e.requestId,input:b});c.isOk?i.push(`/overview?${new URLSearchParams({fleet:a,decided:b.kind}).toString()}`):(k(void 0),m(c.message))})}})}],91445)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/overview/state/decision-panel.tsx","../../../../../web/features/overview/hooks/data%3A59425f%20%3Ctext/javascript%3E","../../../../../web/features/overview/ui/decision-form.tsx","../../../../../web/features/overview/services/requests.ts"],"sourcesContent":["'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useState, useTransition } from 'react';\n\nimport type { OwnerChoices } from '../../forms/ui/owner-field';\nimport { decideRequest } from '../hooks/overview-actions';\nimport type { DecisionInput, ShownRequest } from '../services/requests';\nimport { DecisionForm } from '../ui/decision-form';\n\n/** Decides one request as the signed-in approver, then goes back to the Overview, which says nothing more waits here. */\nexport function DecisionPanel({ fleetId, request, heldScopes, owners }: { fleetId: string; request: ShownRequest; heldScopes: readonly string[]; owners: OwnerChoices }) {\n const router = useRouter();\n const [working, setWorking] = useState<DecisionInput['kind'] | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n const decide = (decision: DecisionInput) => {\n setWorking(decision.kind);\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await decideRequest({ fleet: fleetId, requestId: request.requestId, input: decision });\n if (outcome.isOk) {\n router.push(`/overview?${new URLSearchParams({ fleet: fleetId, decided: decision.kind }).toString()}`);\n return;\n }\n setWorking(undefined);\n setFailure(outcome.message);\n });\n };\n return <DecisionForm request={request} heldScopes={heldScopes} owners={owners} working={working} failure={failure} onDecide={decide} />;\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"404d9c119589c6de0da022497dd1772a81acb94daa\":{\"name\":\"decideRequest\"}},\"web/features/overview/hooks/overview-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"404d9c119589c6de0da022497dd1772a81acb94daa\",callServer,void 0,findSourceMapURL,\"decideRequest\");export{$$RSC_SERVER_ACTION_3 as decideRequest};","'use client';\n\nimport { useState, type SyntheticEvent } from 'react';\n\nimport { OwnerField, type OwnerChoices } from '../../forms/ui/owner-field';\nimport { EVERY_APP_SHIP_SCOPES, scopeLabel, subjectName, suggestedName, type DecisionInput, type ServerCredentialInput, type ShownRequest } from '../services/requests';\nimport { ActionButton } from './action-button';\nimport { Notice } from './notice';\n\nconst CONCURRENCY_LIMIT_DEFAULT = 4;\n\nconst FIELD = 'rounded-md border border-input bg-background px-2 py-1.5';\n\nfunction ScopeRow({ scope, isLocked }: { scope: string; isLocked: boolean }) {\n return (\n <label className=\"flex items-center gap-2\">\n {isLocked ? <input type=\"checkbox\" checked disabled aria-label={scopeLabel(scope)} /> : <input type=\"checkbox\" name=\"scope\" value={scope} aria-label={scopeLabel(scope)} />}\n <span>{scopeLabel(scope)}</span>\n <span className=\"font-mono text-caption text-muted-foreground\">{scope}</span>\n {isLocked ? <span className=\"text-caption text-muted-foreground\">(always)</span> : null}\n </label>\n );\n}\n\nfunction text(form: FormData, name: string): string {\n const value = form.get(name);\n return typeof value === 'string' ? value : '';\n}\n\nfunction serverOf(form: FormData): ServerCredentialInput {\n return {\n credentialKind: text(form, 'credentialKind') === 'clientCredentials' ? 'clientCredentials' : 'bearer',\n token: text(form, 'token'),\n clientId: text(form, 'clientId'),\n clientSecret: text(form, 'clientSecret'),\n issuer: text(form, 'issuer'),\n scope: text(form, 'scope-requested'),\n concurrencyLimit: Number(text(form, 'concurrencyLimit')),\n };\n}\n\n/**\n * The decision on a request: approving names the proxy ship and its owner,\n * and offers as scope rows only the scopes the approver holds, messages:send\n * and messages:receive locked on (0046, 0053); a server's credential too.\n * What was typed stays when the API refuses.\n */\nexport function DecisionForm({\n request,\n heldScopes,\n owners,\n working,\n failure,\n onDecide,\n}: {\n request: ShownRequest;\n heldScopes: readonly string[];\n owners: OwnerChoices;\n working: DecisionInput['kind'] | undefined;\n failure: string | undefined;\n onDecide: (decision: DecisionInput) => void;\n}) {\n const [credentialKind, setCredentialKind] = useState<ServerCredentialInput['credentialKind']>('bearer');\n const name = subjectName(request);\n const isServer = request.subject.kind === 'server';\n const approve = (event: SyntheticEvent<HTMLFormElement>) => {\n event.preventDefault();\n const form = new FormData(event.currentTarget);\n const scopes = form.getAll('scope').filter((scope) => typeof scope === 'string');\n onDecide({ kind: 'approve', name: text(form, 'name'), ownerShipId: text(form, 'ownerShipId'), scopes, server: isServer ? serverOf(form) : undefined });\n };\n return (\n <section className=\"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm\">\n <h2 className=\"text-heading font-semibold\">Approve {name}</h2>\n <form onSubmit={approve} className=\"grid gap-3\">\n <label className=\"grid gap-1\">\n <span>Proxy ship's name</span>\n <input name=\"name\" defaultValue={suggestedName(name)} required className={FIELD} />\n </label>\n <OwnerField choices={owners.isOk ? owners.value : []} current={null} help=\"A person ship or argo. It answers for this party.\" refusal={owners.isOk ? undefined : owners.refusal} />\n <fieldset className=\"grid gap-1\">\n <legend>Scopes</legend>\n {EVERY_APP_SHIP_SCOPES.map((scope) => (\n <ScopeRow key={scope} scope={scope} isLocked />\n ))}\n {heldScopes\n .filter((scope) => !EVERY_APP_SHIP_SCOPES.includes(scope))\n .map((scope) => (\n <ScopeRow key={scope} scope={scope} isLocked={false} />\n ))}\n </fieldset>\n {isServer ? (\n <fieldset className=\"grid gap-2\">\n <legend>The server's credential</legend>\n <label className=\"grid gap-1\">\n <span>Credential</span>\n <select name=\"credentialKind\" value={credentialKind} onChange={(event) => { setCredentialKind(event.target.value === 'clientCredentials' ? 'clientCredentials' : 'bearer'); }} className={FIELD}>\n <option value=\"bearer\">Bearer token</option>\n <option value=\"clientCredentials\">OAuth client credentials</option>\n </select>\n </label>\n {credentialKind === 'bearer' ? (\n <label className=\"grid gap-1\">\n <span>Bearer token</span>\n <input type=\"password\" name=\"token\" className={FIELD} />\n </label>\n ) : (\n <>\n <label className=\"grid gap-1\">\n <span>Client id</span>\n <input name=\"clientId\" className={FIELD} />\n </label>\n <label className=\"grid gap-1\">\n <span>Client secret</span>\n <input type=\"password\" name=\"clientSecret\" className={FIELD} />\n </label>\n <label className=\"grid gap-1\">\n <span>Issuer</span>\n <input type=\"url\" name=\"issuer\" className={FIELD} />\n </label>\n <label className=\"grid gap-1\">\n <span>Scope</span>\n <input name=\"scope-requested\" className={FIELD} />\n </label>\n </>\n )}\n <label className=\"grid gap-1\">\n <span>Calls at once</span>\n <input type=\"number\" name=\"concurrencyLimit\" min={1} max={10} defaultValue={CONCURRENCY_LIMIT_DEFAULT} className={FIELD} />\n </label>\n </fieldset>\n ) : null}\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n <div className=\"flex gap-2\">\n <ActionButton type=\"submit\" variant=\"primary\" data-testid=\"overview-approve\" isPending={working === 'approve'} pendingLabel=\"Approving...\" disabled={working !== undefined}>\n Approve\n </ActionButton>\n <ActionButton type=\"button\" data-testid=\"overview-deny\" isPending={working === 'deny'} pendingLabel=\"Denying...\" disabled={working !== undefined} onClick={() => { onDecide({ kind: 'deny' }); }}>\n Deny\n </ActionButton>\n </div>\n </form>\n </section>\n );\n}\n","/**\n * How the Overview names and states a request for an outside party (design\n * B, Signal): pure view logic, no React and no API client.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\n\n/** A request as the API shows it. */\nexport type ShownRequest = inferRouterOutputs<GatewayRouter>['requests']['toDecide'][number];\n\n/** The tones a status shows, from the design tokens; a status always has its words too. */\nexport type Tone = 'waiting' | 'active' | 'ok' | 'attention' | 'ended';\n\nexport interface Status {\n readonly tone: Tone;\n readonly label: string;\n}\n\nconst DAY_MS = 86_400_000;\n\n/** How an outside party is named before it has a proxy ship: a client by its name, a server by its host. */\nexport function subjectName(request: ShownRequest): string {\n switch (request.subject.kind) {\n case 'client':\n return request.subject.clientName;\n case 'server':\n return URL.canParse(request.subject.url) ? new URL(request.subject.url).host : request.subject.url;\n }\n}\n\nexport function subjectKind(request: ShownRequest): string {\n switch (request.subject.kind) {\n case 'client':\n return 'MCP client';\n case 'server':\n return 'MCP server';\n }\n}\n\n/** Days left of the 7 a request is kept, counted up, so its last day reads as such, in the attention tone. */\nexport function daysLeft(request: ShownRequest, now: Date): Status {\n const days = Math.ceil((Date.parse(request.expiresAt) - now.getTime()) / DAY_MS);\n return days <= 1 ? { tone: 'attention', label: 'Last day' } : { tone: 'waiting', label: `${String(days)} d left` };\n}\n\n/** A request's state as the console shows a status; one still pending shows its days left. */\nexport function requestStatus(request: ShownRequest, now: Date): Status {\n switch (request.state) {\n case 'pending':\n return daysLeft(request, now);\n case 'approving':\n return { tone: 'active', label: 'Approving' };\n case 'approved':\n return { tone: 'ok', label: 'Approved' };\n case 'denied':\n return { tone: 'ended', label: 'Denied' };\n case 'expired':\n return { tone: 'ended', label: 'Expired' };\n }\n}\n\n/** A proxy ship's name offered from the party's own: lower case letters, digits and dashes. */\nexport function suggestedName(name: string): string {\n return name\n .toLowerCase()\n .replaceAll(/[^a-z0-9]+/g, '-')\n .replaceAll(/^-+|-+$/g, '');\n}\n\n/** The scopes every app ship gets (0046): shown locked on, and always sent. */\nexport const EVERY_APP_SHIP_SCOPES: readonly string[] = ['messages:send', 'messages:receive'];\n\nconst SCOPE_LABELS: Record<string, string> = {\n 'messages:send': 'Send',\n 'messages:receive': 'Receive',\n 'fleet:read': 'Read the fleet',\n};\n\n/** A scope's plain label, shown beside the scope itself. */\nexport function scopeLabel(scope: string): string {\n return SCOPE_LABELS[scope] ?? scope;\n}\n\n/** The server's credential as the decision form takes it. */\nexport interface ServerCredentialInput {\n readonly credentialKind: 'bearer' | 'clientCredentials';\n readonly token: string;\n readonly clientId: string;\n readonly clientSecret: string;\n readonly issuer: string;\n readonly scope: string;\n readonly concurrencyLimit: number;\n}\n\nexport type DecisionInput = { readonly kind: 'deny' } | { readonly kind: 'approve'; readonly name: string; readonly ownerShipId: string; readonly scopes: readonly string[]; readonly server: ServerCredentialInput | undefined };\n"],"names":["$$RSC_SERVER_ACTION_3"],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCH+M,EAAA,EAAA,CAAA,CAAA,MAAsG,IAAMA,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,iBCIpc,IAAA,EAAA,EAAA,CAAA,CAAA,OCmEO,IAAM,EAA2C,CAAC,gBAAiB,mBAAmB,CAEvF,EAAuC,CAC3C,gBAAiB,OACjB,mBAAoB,UACpB,aAAc,gBAChB,EDvEA,IAAA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OAIA,IAAM,EAAQ,2DAEd,SAAS,EAAS,OAAE,CAAK,UAAE,CAAQ,CAAwC,EACzE,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,oCACd,EAAW,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,WAAW,OAAO,CAAA,CAAA,EAAC,QAAQ,CAAA,CAAA,EAAC,cAAY,KAAW,IAAa,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,WAAW,KAAK,QAAQ,MAAO,EAAO,cCiE3H,ADjEuI,CCiEtI,EAAM,EDjE2I,ECiEvI,EDhE1B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UCgEE,CDhEI,KAAW,IAClB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wDAAgD,IAC/D,EAAW,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,8CAAqC,aAAkB,OAGzF,CAEA,SAAS,EAAK,CAAc,CAAE,CAAY,EACxC,IAAM,EAAQ,EAAK,GAAG,CAAC,GACvB,MAAwB,UAAjB,OAAO,EAAqB,EAAQ,EAC7C,CAoBO,SAAS,EAAa,SAC3B,CAAO,CACP,YAAU,QACV,CAAM,SACN,CAAO,SACP,CAAO,CACP,UAAQ,CAQT,EACC,GAAM,CAAC,EAAgB,EAAkB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAA0C,UACxF,ECzCD,ADyCQ,SCzCC,AAAY,CAAqB,EAC/C,OAAQ,EAAQ,OAAO,CAAC,IAAI,EAC1B,IAAK,SACH,OAAO,EAAQ,OAAO,CAAC,UAAU,AACnC,KAAK,SACH,OAAO,IAAI,QAAQ,CAAC,EAAQ,OAAO,CAAC,GAAG,EAAI,IAAI,IAAI,EAAQ,OAAO,CAAC,GAAG,EAAE,IAAI,CAAG,EAAQ,OAAO,CAAC,GAAG,AACtG,CACF,EDkC2B,GACnB,EAAoC,WAAzB,EAAQ,OAAO,CAAC,IAAI,CAOrC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,kGACjB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,uCAA6B,WAAS,KACpD,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,SATM,AAAC,CASG,GARlB,EAAM,cAAc,GACpB,IAAM,EAAO,IAAI,SAAS,EAAM,aAAa,EACvC,EAAS,EAAK,MAAM,CAAC,SAAS,MAAM,CAAC,AAAC,GAA2B,UAAjB,OAAO,GAC7D,EAAS,CAAE,KAAM,UAAW,KAAM,EAAK,EAAM,QAAS,YAAa,EAAK,EAAM,sBAAgB,EAAQ,OAAQ,EAvCzG,CACL,QAsCyH,OAtCzG,AAAiC,KAA5B,qBAAM,kBAA4C,oBAAsB,SAC7F,MAAO,IAAW,CAAN,QACZ,SAAU,EAoCwH,EApC7G,CAAN,WACf,aAAc,IAAW,CAAN,eACnB,OAAQ,IAAW,CAAN,SACb,MAAO,IAAW,CAAN,kBACZ,iBAAkB,OAAO,IAAW,CAAN,mBAChC,OA+B4I,CAAU,EACtJ,EAI6B,UAAU,uBACjC,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,sBACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,OAAO,aCbpB,ADagD,CAAd,CCZtC,WAAW,GACX,UAAU,CAAC,cAAe,KAC1B,UAAU,CAAC,WAAY,IDUoC,QAAQ,CAAA,CAAA,EAAC,UAAW,OAE5E,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,CAAA,CAAC,QAAS,EAAO,IAAI,CAAG,EAAO,KAAK,CAAG,EAAE,CAAE,QAAS,KAAM,KAAK,oDAAoD,QAAS,EAAO,IAAI,CAAG,OAAY,EAAO,OAAO,GAC/K,CAAA,EAAA,EAAA,IAAA,EAAC,WAAA,CAAS,UAAU,uBAClB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAO,WACP,EAAsB,GAAG,CAAC,AAAC,GAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAqB,MAAO,EAAO,QAAQ,CAAA,CAAA,GAA7B,IAEhB,EACE,MAAM,CAAE,AAAD,GAAW,CAAC,EAAsB,QAAQ,CAAC,IAClD,GAAG,CAAC,AAAC,GACJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAqB,MAAO,EAAO,UAAU,GAA/B,OAGpB,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,WAAA,CAAS,UAAU,uBAClB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAO,4BACR,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,eACN,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,KAAK,iBAAiB,MAAO,EAAgB,SAAU,AAAC,IAAY,EAAyC,sBAAvB,EAAM,MAAM,CAAC,KAAK,CAA2B,oBAAsB,SAAW,EAAG,UAAW,YACxL,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,kBAAS,iBACvB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,6BAAoB,mCAGlB,WAAnB,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,iBACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,WAAW,KAAK,QAAQ,UAAW,OAGjD,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,cACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,WAAW,UAAW,OAEpC,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,kBACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,WAAW,KAAK,eAAe,UAAW,OAExD,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,MAAM,KAAK,SAAS,UAAW,OAE7C,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,UACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,kBAAkB,UAAW,UAI/C,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,uBACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,kBACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,SAAS,KAAK,mBAAmB,IAAK,EAAG,IAAK,GAAI,aAvH1C,CAuHwD,CAA2B,UAAW,UAGpH,UACS,IAAZ,EAAwB,KAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,CAAA,CAAC,QAAS,EAAS,SAAS,CAAA,CAAA,IACnE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAAC,KAAK,SAAS,QAAQ,UAAU,cAAY,mBAAmB,UAAuB,YAAZ,EAAuB,aAAa,eAAe,SAAU,KAAY,eAAW,YAG5K,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAAC,KAAK,SAAS,cAAY,gBAAgB,UAAuB,SAAZ,EAAoB,aAAa,aAAa,SAAU,AAAY,WAAW,QAAS,KAAQ,EAAS,CAAE,KAAM,MAAO,EAAI,WAAG,iBAO5M,wBFrIO,SAAS,AAAc,SAAE,CAAO,SAAE,CAAO,YAAE,CAAU,QAAE,CAAM,CAAmG,EACrK,IAAM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClB,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,IAChC,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,IAChC,EAAG,EAAgB,CAAG,CAAA,EAAA,EAAA,aAAA,AAAa,IAczC,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,QAAS,EAAS,WAAY,EAAY,OAAQ,EAAQ,QAAS,EAAS,QAAS,EAAS,SAbpG,AAAC,CAa6G,GAZ3H,EAAW,EAAS,IAAI,EACxB,OAAW,GACX,EAAgB,UACd,IAAM,EAAU,MAAM,EAAc,CAAE,MAAO,EAAS,UAAW,EAAQ,SAAS,CAAE,MAAO,CAAS,EACpG,CAAI,EAAQ,IAAI,CACd,CADgB,CACT,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,gBAAgB,CAAE,MAAO,EAAS,QAAS,EAAS,IAAI,AAAC,GAAG,QAAQ,GAAA,CAAI,GAGvG,OAAW,GACX,EAAW,EAAQ,OAAO,EAC5B,EACF,GAEF"}
|
package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[72839,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("40c5249ea57e0c0beec38cd25044e8bf9674b10f23",d.callServer,void 0,d.findSourceMapURL,"answerDelivery"),f=(0,d.createServerReference)("6061938a5346120bdc3640cd5b530ba13181f66cd5",d.callServer,void 0,d.findSourceMapURL,"doneDelivery"),g=(0,d.createServerReference)("60c077631742623c9762991560ecd94a5eb2a455d0",d.callServer,void 0,d.findSourceMapURL,"openDelivery");var h=a.i(1542),i=a.i(24229);function j({delivery:a,note:c,working:d,failure:e,onNoteChange:f,onAnswer:g,onDone:k,onBack:l}){let{question:m}=a,n=void 0!==d,o=m?.options.find(a=>a.key===m.pick.option);return(0,b.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,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:[a.from," · ",new Date(a.sentAt).toUTCString()]}),(0,b.jsx)("h2",{className:"text-heading font-semibold",children:m?.title??a.title}),void 0===m?void 0===a.payload?(0,b.jsx)("p",{className:"text-muted-foreground",children:"You opened this before; its content was shown to you then."}):(0,b.jsx)("pre",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-caption",children:a.payload}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"whitespace-pre-wrap",children:m.context}),(0,b.jsx)("div",{className:"flex flex-wrap gap-2",children:m.options.map(a=>(0,b.jsx)(h.f,{title:a.detail,variant:a.key===m.pick.option?"primary":"secondary",className:a.key===m.pick.option?"outline-2 outline-offset-2 outline-dashed outline-ring":"",isPending:d?.kind==="option"&&d.option===a.key,pendingLabel:"Sending...",disabled:n,onClick:()=>{g(a.key)},children:a.label},a.key))}),void 0===o?null:(0,b.jsxs)("p",{className:"text-muted-foreground",children:[o.label," is the pick of ",a.from,": ",m.pick.why]})]}),(0,b.jsxs)("label",{className:"grid gap-1",children:[(0,b.jsx)("span",{children:void 0===m?"Your answer":"Note"}),(0,b.jsx)("textarea",{"data-testid":"overview-note",rows:2,value:c,onChange:a=>{f(a.target.value)},placeholder:void 0===m?"":"Optional, sent with your answer",className:"rounded-md border border-input bg-background p-2"})]}),void 0===e?null:(0,b.jsx)(i.f,{message:e,isFailure:!0}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(h.f,{"data-testid":"overview-answer",variant:void 0===m?"primary":"secondary",isPending:d?.kind==="note",pendingLabel:"Sending...",disabled:n,onClick:()=>{g(void 0)},children:void 0===m?"Answer":"Send the note alone"}),void 0===m?(0,b.jsx)(h.f,{"data-testid":"overview-done",isPending:d?.kind==="done",pendingLabel:"Marking done...",disabled:n,onClick:k,children:"Done"}):null,(0,b.jsx)("button",{type:"button",onClick:l,disabled:n,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 k({entry:a}){return(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col text-left",children:[(0,b.jsx)("span",{className:"truncate",children:a.title}),(0,b.jsxs)("span",{className:"text-caption text-muted-foreground",children:["from ",a.from]})]})}function l({waitingCount:a,waiting:c,opened:d,openingId:e,failure:f,onOpen:g,onFocus:j}){return(0,b.jsxs)("div",{className:"grid gap-6",children:[0===c.length?null:(0,b.jsxs)("section",{className:"grid gap-2",children:[(0,b.jsxs)("h2",{className:"text-section font-semibold",children:["Next · ",a]}),c.map(a=>(0,b.jsxs)("div",{className:"grid gap-2 rounded-md border border-border bg-card p-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(k,{entry:a}),(0,b.jsx)(h.f,{"data-testid":"overview-open",isPending:e===a.deliveryId,pendingLabel:"Opening...",disabled:void 0!==e,onClick:()=>{g(a)},children:"Open"})]}),f?.deliveryId===a.deliveryId?(0,b.jsx)(i.f,{message:f.message,isFailure:!0}):null]},a.deliveryId))]}),0===d.length?null:(0,b.jsxs)("section",{className:"grid gap-2",children:[(0,b.jsxs)("h2",{className:"text-section font-semibold",children:["Opened, not yet dealt with · ",d.length]}),d.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,b.jsx)(k,{entry:a}),(0,b.jsx)("button",{type:"button","data-testid":"overview-deal",onClick:()=>{j(a)},className:"inline-flex h-9 items-center rounded-md border border-border px-4 hover:bg-accent",children:"Answer or be done"})]},a.deliveryId))]})]})}a.s(["InboxPanel",0,function({fleetId:a,inbox:d}){let[h,k]=(0,c.useState)(),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(),[q,r]=(0,c.useState)(),[s,t]=(0,c.useState)(),[u,v]=(0,c.useState)(),[w,x]=(0,c.useState)(),[,y]=(0,c.useTransition)(),z=a=>{k(a),n(""),v(void 0),x(void 0)},A=({control:a,action:b,said:c})=>{r(a),v(void 0),y(async()=>{let a=await b();r(void 0),a.isOk?(k(void 0),x(c)):v(a.message)})};return void 0!==h?(0,b.jsx)(j,{delivery:h,note:m,working:q,failure:u,onNoteChange:n,onAnswer:b=>{A({control:void 0===b?{kind:"note"}:{kind:"option",option:b},action:()=>e({fleet:a,deliveryId:h.deliveryId,input:{questionId:h.question?.id,option:b,note:m}}),said:`Your answer went to ${h.from}.`})},onDone:()=>{A({control:{kind:"done"},action:()=>f(a,h.deliveryId),said:`Done with “${h.title}”.`})},onBack:()=>{k(void 0)}}):(0,b.jsxs)("div",{className:"grid gap-4",children:[void 0===w?null:(0,b.jsx)(i.f,{message:w,isFailure:!1}),(0,b.jsx)(l,{waitingCount:d.waiting,waiting:d.deliveries,opened:d.opened,openingId:o,failure:s,onOpen:b=>{p(b.deliveryId),t(void 0),x(void 0),y(async()=>{let c=await g(a,b.deliveryId);p(void 0),c.isOk?z(c.value):t({deliveryId:b.deliveryId,message:c.message})})},onFocus:a=>{z({...a,payload:void 0,question:void 0})}})]})}],72839)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/overview/state/inbox-panel.tsx","../../../../../web/features/overview/hooks/data%3Aa10302%20%3Ctext/javascript%3E","../../../../../web/features/overview/hooks/data%3A1755f7%20%3Ctext/javascript%3E","../../../../../web/features/overview/hooks/data%3A8c65a4%20%3Ctext/javascript%3E","../../../../../web/features/overview/ui/delivery-card.tsx","../../../../../web/features/overview/ui/inbox-list.tsx"],"sourcesContent":["'use client';\n\nimport { useState, useTransition } from 'react';\n\nimport { answerDelivery, doneDelivery, openDelivery, type ActionOutcome } from '../hooks/overview-actions';\nimport type { FocusedDelivery, Inbox, InboxEntry } from '../services/deliveries';\nimport { DeliveryCard, type DeliveryControl } from '../ui/delivery-card';\nimport { InboxList } from '../ui/inbox-list';\nimport { Notice } from '../ui/notice';\n\n/**\n * The person's inbox with one delivery in focus at a time. Opening is their\n * own act, so it is a press, never a link: the gateway acknowledges the\n * delivery for them, and it is shown whole, once. Answering or being done\n * says so in place, and the inbox reads itself again.\n */\nexport function InboxPanel({ fleetId, inbox }: { fleetId: string; inbox: Inbox }) {\n const [focus, setFocus] = useState<FocusedDelivery | undefined>();\n const [note, setNote] = useState('');\n const [openingId, setOpeningId] = useState<string | undefined>();\n const [working, setWorking] = useState<DeliveryControl | undefined>();\n const [openFailure, setOpenFailure] = useState<{ deliveryId: string; message: string } | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [done, setDone] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n\n const show = (delivery: FocusedDelivery) => {\n setFocus(delivery);\n setNote('');\n setFailure(undefined);\n setDone(undefined);\n };\n\n const open = (entry: InboxEntry) => {\n setOpeningId(entry.deliveryId);\n setOpenFailure(undefined);\n setDone(undefined);\n startTransition(async () => {\n const outcome = await openDelivery(fleetId, entry.deliveryId);\n setOpeningId(undefined);\n if (outcome.isOk) {\n show(outcome.value);\n } else {\n setOpenFailure({ deliveryId: entry.deliveryId, message: outcome.message });\n }\n });\n };\n\n const settle = ({ control, action, said }: { control: DeliveryControl; action: () => Promise<ActionOutcome<undefined>>; said: string }) => {\n setWorking(control);\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await action();\n setWorking(undefined);\n if (outcome.isOk) {\n setFocus(undefined);\n setDone(said);\n } else {\n setFailure(outcome.message);\n }\n });\n };\n\n if (focus !== undefined) {\n return (\n <DeliveryCard\n delivery={focus}\n note={note}\n working={working}\n failure={failure}\n onNoteChange={setNote}\n onAnswer={(option) => { settle({ control: option === undefined ? { kind: 'note' } : { kind: 'option', option }, action: () => answerDelivery({ fleet: fleetId, deliveryId: focus.deliveryId, input: { questionId: focus.question?.id, option, note } }), said: `Your answer went to ${focus.from}.` }); }\n }\n onDone={() => { settle({ control: { kind: 'done' }, action: () => doneDelivery(fleetId, focus.deliveryId), said: `Done with “${focus.title}”.` }); }}\n onBack={() => { setFocus(undefined); }}\n />\n );\n }\n return (\n <div className=\"grid gap-4\">\n {done === undefined ? null : <Notice message={done} isFailure={false} />}\n <InboxList\n waitingCount={inbox.waiting}\n waiting={inbox.deliveries}\n opened={inbox.opened}\n openingId={openingId}\n failure={openFailure}\n onOpen={open}\n onFocus={(entry) => { show({ ...entry, payload: undefined, question: undefined }); }}\n />\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40c5249ea57e0c0beec38cd25044e8bf9674b10f23\":{\"name\":\"answerDelivery\"}},\"web/features/overview/hooks/overview-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(\"40c5249ea57e0c0beec38cd25044e8bf9674b10f23\",callServer,void 0,findSourceMapURL,\"answerDelivery\");export{$$RSC_SERVER_ACTION_1 as answerDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"6061938a5346120bdc3640cd5b530ba13181f66cd5\":{\"name\":\"doneDelivery\"}},\"web/features/overview/hooks/overview-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(\"6061938a5346120bdc3640cd5b530ba13181f66cd5\",callServer,void 0,findSourceMapURL,\"doneDelivery\");export{$$RSC_SERVER_ACTION_2 as doneDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"60c077631742623c9762991560ecd94a5eb2a455d0\":{\"name\":\"openDelivery\"}},\"web/features/overview/hooks/overview-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"60c077631742623c9762991560ecd94a5eb2a455d0\",callServer,void 0,findSourceMapURL,\"openDelivery\");export{$$RSC_SERVER_ACTION_0 as openDelivery};","import type { FocusedDelivery } from '../services/deliveries';\nimport { ActionButton } from './action-button';\nimport { Notice } from './notice';\n\n/** Which of the card's controls is working: an option of the question, the note alone, or done. */\nexport type DeliveryControl = { kind: 'option'; option: number } | { kind: 'note' } | { kind: 'done' };\n\n/**\n * One delivery in focus (design B, Signal). A question is answered with one\n * tap on a button that names the option it sends, the asker's pick on a\n * dashed edge; any delivery may get a note as its answer, and a message may\n * be done with. Opened before, it shows by its title alone, as its content\n * was shown once.\n */\nexport function DeliveryCard({\n delivery,\n note,\n working,\n failure,\n onNoteChange,\n onAnswer,\n onDone,\n onBack,\n}: {\n delivery: FocusedDelivery;\n note: string;\n working: DeliveryControl | undefined;\n failure: string | undefined;\n onNoteChange: (note: string) => void;\n onAnswer: (option: number | undefined) => void;\n onDone: () => void;\n onBack: () => void;\n}) {\n const { question } = delivery;\n const isWorking = working !== undefined;\n const picked = question?.options.find((option) => option.key === question.pick.option);\n return (\n <section data-testid=\"overview-delivery\" className=\"grid gap-3 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm\">\n <span className=\"text-caption text-muted-foreground\">\n {delivery.from} · {new Date(delivery.sentAt).toUTCString()}\n </span>\n <h2 className=\"text-heading font-semibold\">{question?.title ?? delivery.title}</h2>\n {question === undefined ? (\n delivery.payload === undefined ? (\n <p className=\"text-muted-foreground\">You opened this before; its content was shown to you then.</p>\n ) : (\n <pre className=\"whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-caption\">{delivery.payload}</pre>\n )\n ) : (\n <>\n <p className=\"whitespace-pre-wrap\">{question.context}</p>\n <div className=\"flex flex-wrap gap-2\">\n {question.options.map((option) => (\n <ActionButton\n key={option.key}\n title={option.detail}\n variant={option.key === question.pick.option ? 'primary' : 'secondary'}\n className={option.key === question.pick.option ? 'outline-2 outline-offset-2 outline-dashed outline-ring' : ''}\n isPending={working?.kind === 'option' && working.option === option.key}\n pendingLabel=\"Sending...\"\n disabled={isWorking}\n onClick={() => { onAnswer(option.key); }}\n >\n {option.label}\n </ActionButton>\n ))}\n </div>\n {picked === undefined ? null : (\n <p className=\"text-muted-foreground\">\n {picked.label} is the pick of {delivery.from}: {question.pick.why}\n </p>\n )}\n </>\n )}\n <label className=\"grid gap-1\">\n <span>{question === undefined ? 'Your answer' : 'Note'}</span>\n <textarea\n data-testid=\"overview-note\"\n rows={2}\n value={note}\n onChange={(event) => { onNoteChange(event.target.value); }}\n placeholder={question === undefined ? '' : 'Optional, sent with your answer'}\n className=\"rounded-md border border-input bg-background p-2\"\n />\n </label>\n {failure === undefined ? null : <Notice message={failure} isFailure />}\n <div className=\"flex flex-wrap gap-2\">\n <ActionButton data-testid=\"overview-answer\" variant={question === undefined ? 'primary' : 'secondary'} isPending={working?.kind === 'note'} pendingLabel=\"Sending...\" disabled={isWorking} onClick={() => { onAnswer(undefined); }}>\n {question === undefined ? 'Answer' : 'Send the note alone'}\n </ActionButton>\n {question === undefined ? (\n <ActionButton data-testid=\"overview-done\" isPending={working?.kind === 'done'} pendingLabel=\"Marking done...\" disabled={isWorking} onClick={onDone}>\n Done\n </ActionButton>\n ) : null}\n <button type=\"button\" onClick={onBack} disabled={isWorking} className=\"inline-flex h-9 items-center rounded-md px-4 text-muted-foreground hover:bg-accent disabled:opacity-70\">\n Back to the inbox\n </button>\n </div>\n </section>\n );\n}\n","import type { InboxEntry } from '../services/deliveries';\nimport { ActionButton } from './action-button';\nimport { Notice } from './notice';\n\nfunction EntryText({ entry }: { entry: InboxEntry }) {\n return (\n <span className=\"flex min-w-0 flex-1 flex-col text-left\">\n <span className=\"truncate\">{entry.title}</span>\n <span className=\"text-caption text-muted-foreground\">from {entry.from}</span>\n </span>\n );\n}\n\n/**\n * The person's inbox in two groups (aeolus-fleet #1046): what waits, which\n * they open one at a time, and what they opened and have not answered or\n * been done with yet. A failure to open says why by the delivery.\n */\nexport function InboxList({\n waitingCount,\n waiting,\n opened,\n openingId,\n failure,\n onOpen,\n onFocus,\n}: {\n waitingCount: number;\n waiting: readonly InboxEntry[];\n opened: readonly InboxEntry[];\n openingId: string | undefined;\n failure: { deliveryId: string; message: string } | undefined;\n onOpen: (entry: InboxEntry) => void;\n onFocus: (entry: InboxEntry) => void;\n}) {\n return (\n <div className=\"grid gap-6\">\n {waiting.length === 0 ? null : (\n <section className=\"grid gap-2\">\n <h2 className=\"text-section font-semibold\">Next · {waitingCount}</h2>\n {waiting.map((entry) => (\n <div key={entry.deliveryId} className=\"grid gap-2 rounded-md border border-border bg-card p-3\">\n <div className=\"flex items-center gap-3\">\n <EntryText entry={entry} />\n <ActionButton data-testid=\"overview-open\" isPending={openingId === entry.deliveryId} pendingLabel=\"Opening...\" disabled={openingId !== undefined} onClick={() => { onOpen(entry); }}>\n Open\n </ActionButton>\n </div>\n {failure?.deliveryId === entry.deliveryId ? <Notice message={failure.message} isFailure /> : null}\n </div>\n ))}\n </section>\n )}\n {opened.length === 0 ? null : (\n <section className=\"grid gap-2\">\n <h2 className=\"text-section font-semibold\">Opened, not yet dealt with · {opened.length}</h2>\n {opened.map((entry) => (\n <div key={entry.deliveryId} className=\"flex items-center gap-3 rounded-md border border-border bg-card p-3\">\n <EntryText entry={entry} />\n <button type=\"button\" data-testid=\"overview-deal\" onClick={() => { onFocus(entry); }} className=\"inline-flex h-9 items-center rounded-md border border-border px-4 hover:bg-accent\">\n Answer or be done\n </button>\n </div>\n ))}\n </section>\n )}\n </div>\n );\n}\n"],"names":["$$RSC_SERVER_ACTION_1"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[5901,33621,a=>{"use strict";var b=a.i(37936),c=a.i(29517),d=a.i(18558),e=a.i(66283),f=a.i(1324);let g="/parties";async function h(a,b){let c,h=await (0,e.z)((0,f.v)(a,f.H));try{c=await b(h)}catch(a){return{kind:"refused",message:(0,e.s)(a)}}return(0,d.revalidatePath)(g),{kind:"done",message:c}}async function i(a,b){let d=(0,c.f)("ship").safeParse((0,f.v)(b,"ownerShipId"));if(!d.success)return{kind:"refused",message:"The owner's ship id is not a ship id (shp_...)"};let e=(0,f.v)(b,"scope");return h(b,async a=>{let c=await a.parties.approve.mutate({requestId:(0,f.v)(b,"requestId"),name:(0,f.v)(b,"name"),url:(0,f.v)(b,"url"),credential:"clientCredentials"===(0,f.v)(b,"credentialKind")?{kind:"clientCredentials",clientId:(0,f.v)(b,"clientId"),clientSecret:(0,f.v)(b,"clientSecret"),issuer:(0,f.v)(b,"issuer"),...""===e?{}:{scope:e}}:{kind:"bearer",token:(0,f.v)(b,"token")},ownerShipId:d.data,concurrencyLimit:Number((0,f.v)(b,"concurrencyLimit"))});return`${c.name} is approved`})}async function j(a,b){return h(b,async a=>{let c=await a.parties.crew.mutate({name:(0,f.v)(b,"name"),secret:(0,f.v)(b,"secret")});return`${c.name} is crewed`})}async function k(a,b){let c=(0,f.v)(b,"name");return h(b,async a=>(await a.parties.state.mutate({name:c}),`${c}'s tools are stated`))}async function l(a,b){let c=(0,f.v)(b,"tool");return h(b,async a=>(await a.parties.markTool.mutate({name:(0,f.v)(b,"name"),tool:c,isRepeatable:"on"===(0,f.v)(b,"isRepeatable")}),`${c} is marked`))}a.s(["f",0,g],33621),(0,a.i(13095).ensureServerEntryExports)([i,j,k,l]),(0,b.registerServerReference)(i,"603c9dbed5cc81606c2c6f83d9b6b971c18c66fa93",null),(0,b.registerServerReference)(j,"6089e34e50ae8b96d670d87a9cc4e3337f83273bd4",null),(0,b.registerServerReference)(k,"6061e3ffff0317db796e89eed74879a86386da5b98",null),(0,b.registerServerReference)(l,"60bd7bde6ebb1cbfb94b3ad8a2cb455572d771155d",null),a.s(["L",0,i,"P",0,j,"p",0,l,"g",0,k],5901)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/parties/actions.ts","../../../../../web/features/parties/paths.ts"],"sourcesContent":["'use server';\n\n/**\n * The Parties page's forms, for an account holding fleet:manage: approving\n * an outside MCP server, handing over a secret, stating a party and marking\n * its tools. Each asks the API as the account, which checks its scopes.\n */\nimport { idSchema } from '@aeolus-fleet/common';\nimport { revalidatePath } from 'next/cache';\n\nimport { refusalMessageOf, requestApi } from '../../lib/gateway-api/page-api';\nimport type { GatewayApi } from '../../lib/gateway-api/gateway-api';\nimport { FLEET_FIELD, fieldOf, type FormState } from '../forms/form-state';\nimport { PARTIES_PATH } from './paths';\n\n/** Calls the API as the account in the form's fleet: done says what changed, a refusal why. */\nasync function asAccount(form: FormData, call: (api: GatewayApi) => Promise<string>): Promise<FormState> {\n const api = await requestApi(fieldOf(form, FLEET_FIELD));\n let message: string;\n try {\n message = await call(api);\n } catch (error) {\n return { kind: 'refused', message: refusalMessageOf(error) };\n }\n revalidatePath(PARTIES_PATH);\n return { kind: 'done', message };\n}\n\nexport async function approveParty(_previous: FormState, form: FormData): Promise<FormState> {\n const ownerShipId = idSchema('ship').safeParse(fieldOf(form, 'ownerShipId'));\n if (!ownerShipId.success) {\n return { kind: 'refused', message: \"The owner's ship id is not a ship id (shp_...)\" };\n }\n const scope = fieldOf(form, 'scope');\n return asAccount(form, async (api) => {\n const approved = await api.parties.approve.mutate({\n requestId: fieldOf(form, 'requestId'),\n name: fieldOf(form, 'name'),\n url: fieldOf(form, 'url'),\n credential:\n fieldOf(form, 'credentialKind') === 'clientCredentials'\n ? { kind: 'clientCredentials', clientId: fieldOf(form, 'clientId'), clientSecret: fieldOf(form, 'clientSecret'), issuer: fieldOf(form, 'issuer'), ...(scope === '' ? {} : { scope }) }\n : { kind: 'bearer', token: fieldOf(form, 'token') },\n ownerShipId: ownerShipId.data,\n concurrencyLimit: Number(fieldOf(form, 'concurrencyLimit')),\n });\n return `${approved.name} is approved`;\n });\n}\n\nexport async function crewParty(_previous: FormState, form: FormData): Promise<FormState> {\n return asAccount(form, async (api) => {\n const crewed = await api.parties.crew.mutate({ name: fieldOf(form, 'name'), secret: fieldOf(form, 'secret') });\n return `${crewed.name} is crewed`;\n });\n}\n\nexport async function stateParty(_previous: FormState, form: FormData): Promise<FormState> {\n const name = fieldOf(form, 'name');\n return asAccount(form, async (api) => {\n await api.parties.state.mutate({ name });\n return `${name}'s tools are stated`;\n });\n}\n\nexport async function markTool(_previous: FormState, form: FormData): Promise<FormState> {\n const tool = fieldOf(form, 'tool');\n return asAccount(form, async (api) => {\n await api.parties.markTool.mutate({ name: fieldOf(form, 'name'), tool, isRepeatable: fieldOf(form, 'isRepeatable') === 'on' });\n return `${tool} is marked`;\n });\n}\n","/** The Parties page. */\nexport const PARTIES_PATH = '/parties';\n"],"names":["PARTIES_PATH"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]";
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
globalThis.__BUILD_MANIFEST = {
|
|
2
|
+
"pages": {
|
|
3
|
+
"/_app": []
|
|
4
|
+
},
|
|
5
|
+
"devFiles": [],
|
|
6
|
+
"polyfillFiles": [
|
|
7
|
+
"static/chunks/0cz1d0mv5g_q7.js"
|
|
8
|
+
],
|
|
9
|
+
"lowPriorityFiles": [
|
|
10
|
+
"static/6OjpPl7qD1uqwr6E41aT5/_buildManifest.js",
|
|
11
|
+
"static/6OjpPl7qD1uqwr6E41aT5/_ssgManifest.js",
|
|
12
|
+
"static/6OjpPl7qD1uqwr6E41aT5/_clientMiddlewareManifest.js"
|
|
13
|
+
],
|
|
14
|
+
"rootMainFiles": [
|
|
15
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
16
|
+
"static/chunks/3knqujtrdi225.js",
|
|
17
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
18
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
19
|
+
"static/chunks/2ewacyhp73due.js",
|
|
20
|
+
"static/chunks/turbopack-3-ry682tkyiqk.js"
|
|
21
|
+
],
|
|
22
|
+
"rootMainFilesTree": {},
|
|
23
|
+
"pagesChunkGroupBootstrapParams": {
|
|
24
|
+
"/_not-found/page": {
|
|
25
|
+
"otherChunks": [
|
|
26
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
27
|
+
"static/chunks/3knqujtrdi225.js",
|
|
28
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
29
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
30
|
+
"static/chunks/2ewacyhp73due.js"
|
|
31
|
+
],
|
|
32
|
+
"runtimeModuleIds": [
|
|
33
|
+
94553
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"/_global-error/page": {
|
|
37
|
+
"otherChunks": [
|
|
38
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
39
|
+
"static/chunks/3knqujtrdi225.js",
|
|
40
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
41
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
42
|
+
"static/chunks/2ewacyhp73due.js"
|
|
43
|
+
],
|
|
44
|
+
"runtimeModuleIds": [
|
|
45
|
+
94553
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"/authorize/failed/page": {
|
|
49
|
+
"otherChunks": [
|
|
50
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
51
|
+
"static/chunks/3knqujtrdi225.js",
|
|
52
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
53
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
54
|
+
"static/chunks/2ewacyhp73due.js"
|
|
55
|
+
],
|
|
56
|
+
"runtimeModuleIds": [
|
|
57
|
+
94553
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"/authorize/pick/page": {
|
|
61
|
+
"otherChunks": [
|
|
62
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
63
|
+
"static/chunks/3knqujtrdi225.js",
|
|
64
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
65
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
66
|
+
"static/chunks/2ewacyhp73due.js"
|
|
67
|
+
],
|
|
68
|
+
"runtimeModuleIds": [
|
|
69
|
+
94553
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"/authorize/waiting/approval/page": {
|
|
73
|
+
"otherChunks": [
|
|
74
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
75
|
+
"static/chunks/3knqujtrdi225.js",
|
|
76
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
77
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
78
|
+
"static/chunks/2ewacyhp73due.js"
|
|
79
|
+
],
|
|
80
|
+
"runtimeModuleIds": [
|
|
81
|
+
94553
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"/outside-parties/page": {
|
|
85
|
+
"otherChunks": [
|
|
86
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
87
|
+
"static/chunks/3knqujtrdi225.js",
|
|
88
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
89
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
90
|
+
"static/chunks/2ewacyhp73due.js"
|
|
91
|
+
],
|
|
92
|
+
"runtimeModuleIds": [
|
|
93
|
+
94553
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
"/outside-parties/[name]/page": {
|
|
97
|
+
"otherChunks": [
|
|
98
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
99
|
+
"static/chunks/3knqujtrdi225.js",
|
|
100
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
101
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
102
|
+
"static/chunks/2ewacyhp73due.js"
|
|
103
|
+
],
|
|
104
|
+
"runtimeModuleIds": [
|
|
105
|
+
94553
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"/outside-parties/[name]/change/page": {
|
|
109
|
+
"otherChunks": [
|
|
110
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
111
|
+
"static/chunks/3knqujtrdi225.js",
|
|
112
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
113
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
114
|
+
"static/chunks/2ewacyhp73due.js"
|
|
115
|
+
],
|
|
116
|
+
"runtimeModuleIds": [
|
|
117
|
+
94553
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
"/outside-parties/[name]/retire/page": {
|
|
121
|
+
"otherChunks": [
|
|
122
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
123
|
+
"static/chunks/3knqujtrdi225.js",
|
|
124
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
125
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
126
|
+
"static/chunks/2ewacyhp73due.js"
|
|
127
|
+
],
|
|
128
|
+
"runtimeModuleIds": [
|
|
129
|
+
94553
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
"/outside-parties/add/page": {
|
|
133
|
+
"otherChunks": [
|
|
134
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
135
|
+
"static/chunks/3knqujtrdi225.js",
|
|
136
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
137
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
138
|
+
"static/chunks/2ewacyhp73due.js"
|
|
139
|
+
],
|
|
140
|
+
"runtimeModuleIds": [
|
|
141
|
+
94553
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
"/overview/page": {
|
|
145
|
+
"otherChunks": [
|
|
146
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
147
|
+
"static/chunks/3knqujtrdi225.js",
|
|
148
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
149
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
150
|
+
"static/chunks/2ewacyhp73due.js"
|
|
151
|
+
],
|
|
152
|
+
"runtimeModuleIds": [
|
|
153
|
+
94553
|
|
154
|
+
]
|
|
155
|
+
},
|
|
156
|
+
"/overview/requests/[requestId]/page": {
|
|
157
|
+
"otherChunks": [
|
|
158
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
159
|
+
"static/chunks/3knqujtrdi225.js",
|
|
160
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
161
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
162
|
+
"static/chunks/2ewacyhp73due.js"
|
|
163
|
+
],
|
|
164
|
+
"runtimeModuleIds": [
|
|
165
|
+
94553
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
"/parties/page": {
|
|
169
|
+
"otherChunks": [
|
|
170
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
171
|
+
"static/chunks/3knqujtrdi225.js",
|
|
172
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
173
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
174
|
+
"static/chunks/2ewacyhp73due.js"
|
|
175
|
+
],
|
|
176
|
+
"runtimeModuleIds": [
|
|
177
|
+
94553
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
"/sign-in/failed/page": {
|
|
181
|
+
"otherChunks": [
|
|
182
|
+
"static/chunks/2hz8yws_wswjz.js",
|
|
183
|
+
"static/chunks/3knqujtrdi225.js",
|
|
184
|
+
"static/chunks/0lzisjsmhlhjf.js",
|
|
185
|
+
"static/chunks/41rcj9-d-7p_4.js",
|
|
186
|
+
"static/chunks/2ewacyhp73due.js"
|
|
187
|
+
],
|
|
188
|
+
"runtimeModuleIds": [
|
|
189
|
+
94553
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"chunkLoadingGlobal": "TURBOPACK"
|
|
194
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/web/app/_not-found/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/authorize/failed/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/authorize/pick/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/authorize/waiting/approval/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/outside-parties/[name]/change/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/outside-parties/[name]/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/outside-parties/[name]/retire/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/outside-parties/add/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/outside-parties/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/overview/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/overview/requests/[requestId]/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/parties/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ],\n \"[project]/web/app/sign-in/failed/page\": [\n \"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2\",\n \"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"[project]/web/app/_not-found/page": [
|
|
4
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
5
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
6
|
+
],
|
|
7
|
+
"[project]/web/app/authorize/failed/page": [
|
|
8
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
9
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
10
|
+
],
|
|
11
|
+
"[project]/web/app/authorize/pick/page": [
|
|
12
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
13
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
14
|
+
],
|
|
15
|
+
"[project]/web/app/authorize/waiting/approval/page": [
|
|
16
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
17
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
18
|
+
],
|
|
19
|
+
"[project]/web/app/outside-parties/[name]/change/page": [
|
|
20
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
21
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
22
|
+
],
|
|
23
|
+
"[project]/web/app/outside-parties/[name]/page": [
|
|
24
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
25
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
26
|
+
],
|
|
27
|
+
"[project]/web/app/outside-parties/[name]/retire/page": [
|
|
28
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
29
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
30
|
+
],
|
|
31
|
+
"[project]/web/app/outside-parties/add/page": [
|
|
32
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
33
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
34
|
+
],
|
|
35
|
+
"[project]/web/app/outside-parties/page": [
|
|
36
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
37
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
38
|
+
],
|
|
39
|
+
"[project]/web/app/overview/page": [
|
|
40
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
41
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
42
|
+
],
|
|
43
|
+
"[project]/web/app/overview/requests/[requestId]/page": [
|
|
44
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
45
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
46
|
+
],
|
|
47
|
+
"[project]/web/app/parties/page": [
|
|
48
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
49
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
50
|
+
],
|
|
51
|
+
"[project]/web/app/sign-in/failed/page": [
|
|
52
|
+
"static/media/geist_variable-s.p.0mrjj4bg00-he.woff2",
|
|
53
|
+
"static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"appUsingSizeAdjust": true,
|
|
57
|
+
"pages": {},
|
|
58
|
+
"pagesUsingSizeAdjust": false
|
|
59
|
+
}
|