@aeolus-fleet/gateway 0.29.1 → 0.30.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 +11 -3
- package/dist/adapters/a2a/a2a-agents.d.ts +6 -0
- package/dist/adapters/a2a/a2a-agents.js +238 -0
- package/dist/adapters/a2a/a2a-agents.js.map +1 -0
- package/dist/adapters/a2a/agent-cards.d.ts +4 -0
- package/dist/adapters/a2a/agent-cards.js +90 -0
- package/dist/adapters/a2a/agent-cards.js.map +1 -0
- package/dist/adapters/crypto/agent-keys.d.ts +3 -0
- package/dist/adapters/crypto/agent-keys.js +13 -0
- package/dist/adapters/crypto/agent-keys.js.map +1 -0
- package/dist/adapters/crypto/call-keys.js +2 -0
- package/dist/adapters/crypto/call-keys.js.map +1 -1
- package/dist/adapters/fleet/console-sessions.js +10 -6
- package/dist/adapters/fleet/console-sessions.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 +3 -1
- package/dist/adapters/fleet/fleet-ships.js +19 -10
- package/dist/adapters/fleet/fleet-ships.js.map +1 -1
- package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -2
- package/dist/adapters/fleet/rest-fleet-door.js +29 -5
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/a2a-cards.d.ts +24 -0
- package/dist/adapters/http/a2a-cards.js +62 -0
- package/dist/adapters/http/a2a-cards.js.map +1 -0
- package/dist/adapters/http/a2a-endpoint.d.ts +28 -0
- package/dist/adapters/http/a2a-endpoint.js +424 -0
- package/dist/adapters/http/a2a-endpoint.js.map +1 -0
- package/dist/adapters/http/a2a-streams.d.ts +28 -0
- package/dist/adapters/http/a2a-streams.js +74 -0
- package/dist/adapters/http/a2a-streams.js.map +1 -0
- package/dist/adapters/http/a2a-tasks.d.ts +18 -0
- package/dist/adapters/http/a2a-tasks.js +117 -0
- package/dist/adapters/http/a2a-tasks.js.map +1 -0
- package/dist/adapters/http/front-door.js +8 -4
- package/dist/adapters/http/front-door.js.map +1 -1
- package/dist/adapters/http/live.d.ts +3 -1
- package/dist/adapters/http/live.js +6 -2
- package/dist/adapters/http/live.js.map +1 -1
- package/dist/adapters/http/oauth-routes.d.ts +1 -1
- package/dist/adapters/http/oauth-routes.js +16 -3
- package/dist/adapters/http/oauth-routes.js.map +1 -1
- package/dist/adapters/mcp/mcp-servers.js +2 -0
- package/dist/adapters/mcp/mcp-servers.js.map +1 -1
- package/dist/adapters/pagasae/email-channel.d.ts +8 -0
- package/dist/adapters/pagasae/email-channel.js +37 -0
- package/dist/adapters/pagasae/email-channel.js.map +1 -0
- package/dist/adapters/pagasae/pagasae-client.js +6 -2
- package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
- package/dist/adapters/prisma/agent-calls.d.ts +3 -0
- package/dist/adapters/prisma/agent-calls.js +49 -0
- package/dist/adapters/prisma/agent-calls.js.map +1 -0
- package/dist/adapters/prisma/changes.d.ts +17 -8
- package/dist/adapters/prisma/changes.js +18 -5
- package/dist/adapters/prisma/changes.js.map +1 -1
- package/dist/adapters/prisma/client-calls.d.ts +1 -1
- package/dist/adapters/prisma/client-calls.js +83 -21
- package/dist/adapters/prisma/client-calls.js.map +1 -1
- package/dist/adapters/prisma/email-channels.d.ts +4 -0
- package/dist/adapters/prisma/email-channels.js +14 -0
- package/dist/adapters/prisma/email-channels.js.map +1 -0
- package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
- package/dist/adapters/prisma/fleet-forgetter.js +2 -2
- package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
- package/dist/adapters/prisma/focused-pages.d.ts +4 -0
- package/dist/adapters/prisma/focused-pages.js +13 -0
- package/dist/adapters/prisma/focused-pages.js.map +1 -0
- package/dist/adapters/prisma/generated/browser.d.ts +45 -0
- package/dist/adapters/prisma/generated/client.d.ts +45 -0
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +54 -54
- package/dist/adapters/prisma/generated/internal/class.d.ts +99 -0
- 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 +783 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +101 -3
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +107 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +101 -3
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/A2aAgentCall.d.ts +1203 -0
- package/dist/adapters/prisma/generated/models/A2aAgentCall.js +2 -0
- package/dist/adapters/prisma/generated/models/A2aAgentCall.js.map +1 -0
- package/dist/adapters/prisma/generated/models/A2aAgentReply.d.ts +1003 -0
- package/dist/adapters/prisma/generated/models/A2aAgentReply.js +2 -0
- package/dist/adapters/prisma/generated/models/A2aAgentReply.js.map +1 -0
- package/dist/adapters/prisma/generated/models/A2aPush.d.ts +1413 -0
- package/dist/adapters/prisma/generated/models/A2aPush.js +2 -0
- package/dist/adapters/prisma/generated/models/A2aPush.js.map +1 -0
- package/dist/adapters/prisma/generated/models/A2aPushConfig.d.ts +1322 -0
- package/dist/adapters/prisma/generated/models/A2aPushConfig.js +2 -0
- package/dist/adapters/prisma/generated/models/A2aPushConfig.js.map +1 -0
- package/dist/adapters/prisma/generated/models/A2aTask.d.ts +1002 -0
- package/dist/adapters/prisma/generated/models/A2aTask.js +2 -0
- package/dist/adapters/prisma/generated/models/A2aTask.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ClientCall.d.ts +136 -15
- package/dist/adapters/prisma/generated/models/ClientCallReply.d.ts +0 -7
- package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +946 -0
- package/dist/adapters/prisma/generated/models/EmailChannel.js +2 -0
- package/dist/adapters/prisma/generated/models/EmailChannel.js.map +1 -0
- package/dist/adapters/prisma/generated/models/FocusedPage.d.ts +974 -0
- package/dist/adapters/prisma/generated/models/FocusedPage.js +2 -0
- package/dist/adapters/prisma/generated/models/FocusedPage.js.map +1 -0
- package/dist/adapters/prisma/generated/models/IssuedToken.d.ts +47 -41
- package/dist/adapters/prisma/generated/models/OAuthClient.d.ts +32 -8
- package/dist/adapters/prisma/generated/models/Party.d.ts +90 -3
- package/dist/adapters/prisma/generated/models/WakeSent.d.ts +975 -0
- package/dist/adapters/prisma/generated/models/WakeSent.js +2 -0
- package/dist/adapters/prisma/generated/models/WakeSent.js.map +1 -0
- package/dist/adapters/prisma/generated/models/WebPushSubscription.d.ts +1115 -0
- package/dist/adapters/prisma/generated/models/WebPushSubscription.js +2 -0
- package/dist/adapters/prisma/generated/models/WebPushSubscription.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +9 -0
- package/dist/adapters/prisma/oauth-stores.js +3 -2
- package/dist/adapters/prisma/oauth-stores.js.map +1 -1
- package/dist/adapters/prisma/party-store.js +35 -6
- package/dist/adapters/prisma/party-store.js.map +1 -1
- package/dist/adapters/prisma/person-crews.js +9 -0
- package/dist/adapters/prisma/person-crews.js.map +1 -1
- package/dist/adapters/prisma/push-store.d.ts +3 -0
- package/dist/adapters/prisma/push-store.js +102 -0
- package/dist/adapters/prisma/push-store.js.map +1 -0
- package/dist/adapters/prisma/waiter-locks.d.ts +4 -0
- package/dist/adapters/prisma/waiter-locks.js +72 -0
- package/dist/adapters/prisma/waiter-locks.js.map +1 -0
- package/dist/adapters/prisma/wakes-sent.d.ts +4 -0
- package/dist/adapters/prisma/wakes-sent.js +10 -0
- package/dist/adapters/prisma/wakes-sent.js.map +1 -0
- package/dist/adapters/prisma/web-push-subscriptions.d.ts +3 -0
- package/dist/adapters/prisma/web-push-subscriptions.js +33 -0
- package/dist/adapters/prisma/web-push-subscriptions.js.map +1 -0
- package/dist/adapters/trpc/router.d.ts +397 -9
- package/dist/adapters/trpc/router.js +247 -16
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/adapters/web-push/web-push.d.ts +9 -0
- package/dist/adapters/web-push/web-push.js +70 -0
- package/dist/adapters/web-push/web-push.js.map +1 -0
- package/dist/adapters/webhooks/allowed-lookup.d.ts +14 -0
- package/dist/adapters/webhooks/allowed-lookup.js +28 -0
- package/dist/adapters/webhooks/allowed-lookup.js.map +1 -0
- package/dist/adapters/webhooks/host-resolver.d.ts +3 -0
- package/dist/adapters/webhooks/host-resolver.js +13 -0
- package/dist/adapters/webhooks/host-resolver.js.map +1 -0
- package/dist/adapters/webhooks/webhook-poster.d.ts +6 -0
- package/dist/adapters/webhooks/webhook-poster.js +67 -0
- package/dist/adapters/webhooks/webhook-poster.js.map +1 -0
- package/dist/app.d.ts +12 -0
- package/dist/app.js +273 -14
- package/dist/app.js.map +1 -1
- package/dist/bin/aeolus-gateway.js +3 -0
- package/dist/bin/aeolus-gateway.js.map +1 -1
- package/dist/config.d.ts +14 -0
- package/dist/config.js +24 -0
- package/dist/config.js.map +1 -1
- package/dist/core/a2a-in/authenticate-a2a-client.d.ts +23 -0
- package/dist/core/a2a-in/authenticate-a2a-client.js +21 -0
- package/dist/core/a2a-in/authenticate-a2a-client.js.map +1 -0
- package/dist/core/a2a-in/deliver-pushes.d.ts +24 -0
- package/dist/core/a2a-in/deliver-pushes.js +48 -0
- package/dist/core/a2a-in/deliver-pushes.js.map +1 -0
- package/dist/core/a2a-in/find-reached-ship.d.ts +18 -0
- package/dist/core/a2a-in/find-reached-ship.js +20 -0
- package/dist/core/a2a-in/find-reached-ship.js.map +1 -0
- package/dist/core/a2a-in/follow-a2a-task.d.ts +25 -0
- package/dist/core/a2a-in/follow-a2a-task.js +23 -0
- package/dist/core/a2a-in/follow-a2a-task.js.map +1 -0
- package/dist/core/a2a-in/inbound-message.d.ts +30 -0
- package/dist/core/a2a-in/inbound-message.js +33 -0
- package/dist/core/a2a-in/inbound-message.js.map +1 -0
- package/dist/core/a2a-in/list-a2a-tasks.d.ts +18 -0
- package/dist/core/a2a-in/list-a2a-tasks.js +14 -0
- package/dist/core/a2a-in/list-a2a-tasks.js.map +1 -0
- package/dist/core/a2a-in/list-push-configs.d.ts +20 -0
- package/dist/core/a2a-in/list-push-configs.js +18 -0
- package/dist/core/a2a-in/list-push-configs.js.map +1 -0
- package/dist/core/a2a-in/list-reached-ships.d.ts +25 -0
- package/dist/core/a2a-in/list-reached-ships.js +22 -0
- package/dist/core/a2a-in/list-reached-ships.js.map +1 -0
- package/dist/core/a2a-in/notice-task-changes.d.ts +19 -0
- package/dist/core/a2a-in/notice-task-changes.js +17 -0
- package/dist/core/a2a-in/notice-task-changes.js.map +1 -0
- package/dist/core/a2a-in/ports.d.ts +124 -0
- package/dist/core/a2a-in/ports.js +2 -0
- package/dist/core/a2a-in/ports.js.map +1 -0
- package/dist/core/a2a-in/push-config-view.d.ts +8 -0
- package/dist/core/a2a-in/push-config-view.js +2 -0
- package/dist/core/a2a-in/push-config-view.js.map +1 -0
- package/dist/core/a2a-in/push-to-webhooks.d.ts +19 -0
- package/dist/core/a2a-in/push-to-webhooks.js +19 -0
- package/dist/core/a2a-in/push-to-webhooks.js.map +1 -0
- package/dist/core/a2a-in/read-a2a-task.d.ts +12 -0
- package/dist/core/a2a-in/read-a2a-task.js +11 -0
- package/dist/core/a2a-in/read-a2a-task.js.map +1 -0
- package/dist/core/a2a-in/read-push-config.d.ts +16 -0
- package/dist/core/a2a-in/read-push-config.js +14 -0
- package/dist/core/a2a-in/read-push-config.js.map +1 -0
- package/dist/core/a2a-in/remove-push-config.d.ts +15 -0
- package/dist/core/a2a-in/remove-push-config.js +13 -0
- package/dist/core/a2a-in/remove-push-config.js.map +1 -0
- package/dist/core/a2a-in/send-a2a-message.d.ts +34 -0
- package/dist/core/a2a-in/send-a2a-message.js +106 -0
- package/dist/core/a2a-in/send-a2a-message.js.map +1 -0
- package/dist/core/a2a-in/set-push-config.d.ts +30 -0
- package/dist/core/a2a-in/set-push-config.js +27 -0
- package/dist/core/a2a-in/set-push-config.js.map +1 -0
- package/dist/core/a2a-in/subscribe-to-a2a-task.d.ts +18 -0
- package/dist/core/a2a-in/subscribe-to-a2a-task.js +17 -0
- package/dist/core/a2a-in/subscribe-to-a2a-task.js.map +1 -0
- package/dist/core/a2a-in/task-view.d.ts +51 -0
- package/dist/core/a2a-in/task-view.js +49 -0
- package/dist/core/a2a-in/task-view.js.map +1 -0
- package/dist/core/a2a-in/webhook-address.d.ts +7 -0
- package/dist/core/a2a-in/webhook-address.js +17 -0
- package/dist/core/a2a-in/webhook-address.js.map +1 -0
- package/dist/core/a2a-in/webhook.d.ts +6 -0
- package/dist/core/a2a-in/webhook.js +80 -0
- package/dist/core/a2a-in/webhook.js.map +1 -0
- package/dist/core/a2a-out/agent-endpoint.d.ts +10 -0
- package/dist/core/a2a-out/agent-endpoint.js +10 -0
- package/dist/core/a2a-out/agent-endpoint.js.map +1 -0
- package/dist/core/a2a-out/agent-event.d.ts +41 -0
- package/dist/core/a2a-out/agent-event.js +64 -0
- package/dist/core/a2a-out/agent-event.js.map +1 -0
- package/dist/core/a2a-out/agent-message.d.ts +36 -0
- package/dist/core/a2a-out/agent-message.js +36 -0
- package/dist/core/a2a-out/agent-message.js.map +1 -0
- package/dist/core/a2a-out/agent-statement.d.ts +10 -0
- package/dist/core/a2a-out/agent-statement.js +45 -0
- package/dist/core/a2a-out/agent-statement.js.map +1 -0
- package/dist/core/a2a-out/follow-agent-task.d.ts +40 -0
- package/dist/core/a2a-out/follow-agent-task.js +125 -0
- package/dist/core/a2a-out/follow-agent-task.js.map +1 -0
- package/dist/core/a2a-out/hand-a2a-message.d.ts +36 -0
- package/dist/core/a2a-out/hand-a2a-message.js +132 -0
- package/dist/core/a2a-out/hand-a2a-message.js.map +1 -0
- package/dist/core/a2a-out/mark-a2a-agent.d.ts +24 -0
- package/dist/core/a2a-out/mark-a2a-agent.js +24 -0
- package/dist/core/a2a-out/mark-a2a-agent.js.map +1 -0
- package/dist/core/a2a-out/ports.d.ts +200 -0
- package/dist/core/a2a-out/ports.js +2 -0
- package/dist/core/a2a-out/ports.js.map +1 -0
- package/dist/core/a2a-out/read-agent-statement.d.ts +13 -0
- package/dist/core/a2a-out/read-agent-statement.js +13 -0
- package/dist/core/a2a-out/read-agent-statement.js.map +1 -0
- package/dist/core/a2a-out/run-a2a-agent.d.ts +26 -0
- package/dist/core/a2a-out/run-a2a-agent.js +46 -0
- package/dist/core/a2a-out/run-a2a-agent.js.map +1 -0
- package/dist/core/a2a-out/state-a2a-agent.d.ts +26 -0
- package/dist/core/a2a-out/state-a2a-agent.js +31 -0
- package/dist/core/a2a-out/state-a2a-agent.js.map +1 -0
- package/dist/core/actors/authenticate-actor.d.ts +11 -5
- package/dist/core/actors/authenticate-actor.js +7 -3
- package/dist/core/actors/authenticate-actor.js.map +1 -1
- package/dist/core/actors/credential-of.d.ts +3 -2
- package/dist/core/actors/credential-of.js +4 -3
- package/dist/core/actors/credential-of.js.map +1 -1
- package/dist/core/mcp-in/call-tool.js +2 -0
- package/dist/core/mcp-in/call-tool.js.map +1 -1
- package/dist/core/mcp-in/client-call.d.ts +35 -4
- package/dist/core/mcp-in/client-call.js +57 -10
- package/dist/core/mcp-in/client-call.js.map +1 -1
- package/dist/core/mcp-in/collect-replies.d.ts +4 -3
- package/dist/core/mcp-in/collect-replies.js +4 -0
- package/dist/core/mcp-in/collect-replies.js.map +1 -1
- package/dist/core/mcp-in/ports.d.ts +52 -3
- package/dist/core/mcp-out/hand-call.d.ts +5 -1
- package/dist/core/mcp-out/hand-call.js +9 -1
- package/dist/core/mcp-out/hand-call.js.map +1 -1
- package/dist/core/mcp-out/run-party.d.ts +29 -7
- package/dist/core/mcp-out/run-party.js +14 -6
- package/dist/core/mcp-out/run-party.js.map +1 -1
- package/dist/core/mcp-out/state-party.d.ts +4 -2
- package/dist/core/mcp-out/state-party.js +10 -3
- package/dist/core/mcp-out/state-party.js.map +1 -1
- package/dist/core/mcp-out/statement.d.ts +2 -1
- package/dist/core/mcp-out/statement.js.map +1 -1
- package/dist/core/oauth/exchange-id-jag.d.ts +28 -0
- package/dist/core/oauth/exchange-id-jag.js +66 -0
- package/dist/core/oauth/exchange-id-jag.js.map +1 -0
- package/dist/core/oauth/exchange-token.d.ts +25 -11
- package/dist/core/oauth/exchange-token.js +50 -3
- package/dist/core/oauth/exchange-token.js.map +1 -1
- package/dist/core/oauth/ports.d.ts +17 -6
- package/dist/core/oauth/register-client.js +1 -1
- package/dist/core/oauth/register-client.js.map +1 -1
- package/dist/core/operator/authenticate-operator.d.ts +5 -9
- package/dist/core/operator/authenticate-operator.js +4 -4
- package/dist/core/operator/authenticate-operator.js.map +1 -1
- package/dist/core/operator/ports.d.ts +15 -9
- package/dist/core/parties/add-a2a-agent.d.ts +34 -0
- package/dist/core/parties/add-a2a-agent.js +45 -0
- package/dist/core/parties/add-a2a-agent.js.map +1 -0
- package/dist/core/parties/add-a2a-client.d.ts +30 -0
- package/dist/core/parties/add-a2a-client.js +47 -0
- package/dist/core/parties/add-a2a-client.js.map +1 -0
- package/dist/core/parties/add-client-party.d.ts +38 -0
- package/dist/core/parties/add-client-party.js +40 -0
- package/dist/core/parties/add-client-party.js.map +1 -0
- package/dist/core/parties/approve-party.d.ts +43 -2
- package/dist/core/parties/approve-party.js +9 -5
- package/dist/core/parties/approve-party.js.map +1 -1
- package/dist/core/parties/approver.d.ts +7 -0
- package/dist/core/parties/approver.js +9 -0
- package/dist/core/parties/approver.js.map +1 -0
- package/dist/core/parties/check-server.d.ts +2 -1
- package/dist/core/parties/check-server.js +1 -1
- package/dist/core/parties/check-server.js.map +1 -1
- package/dist/core/parties/crew-party.d.ts +18 -4
- package/dist/core/parties/crew-party.js +36 -4
- package/dist/core/parties/crew-party.js.map +1 -1
- package/dist/core/parties/party.d.ts +23 -1
- package/dist/core/parties/party.js +17 -4
- package/dist/core/parties/party.js.map +1 -1
- package/dist/core/parties/ports.d.ts +16 -0
- package/dist/core/parties/read-party-tools.d.ts +4 -3
- package/dist/core/parties/read-party-tools.js +4 -2
- package/dist/core/parties/read-party-tools.js.map +1 -1
- package/dist/core/parties/shown-party.d.ts +8 -0
- package/dist/core/parties/shown-party.js +4 -0
- package/dist/core/parties/shown-party.js.map +1 -1
- package/dist/core/parties/switch-tool.d.ts +29 -0
- package/dist/core/parties/switch-tool.js +33 -0
- package/dist/core/parties/switch-tool.js.map +1 -0
- package/dist/core/parties/tool-switches.d.ts +27 -0
- package/dist/core/parties/tool-switches.js +17 -0
- package/dist/core/parties/tool-switches.js.map +1 -0
- package/dist/core/people/answer-delivery.d.ts +2 -1
- package/dist/core/people/answer-delivery.js.map +1 -1
- package/dist/core/people/done-delivery.d.ts +2 -1
- package/dist/core/people/done-delivery.js.map +1 -1
- package/dist/core/people/focus-page.d.ts +18 -0
- package/dist/core/people/focus-page.js +20 -0
- package/dist/core/people/focus-page.js.map +1 -0
- package/dist/core/people/open-delivery.d.ts +3 -1
- package/dist/core/people/open-delivery.js +2 -0
- package/dist/core/people/open-delivery.js.map +1 -1
- package/dist/core/people/opened-of.d.ts +7 -2
- package/dist/core/people/opened-of.js +6 -1
- package/dist/core/people/opened-of.js.map +1 -1
- package/dist/core/people/person-crew.d.ts +2 -0
- package/dist/core/people/person-crew.js +6 -2
- package/dist/core/people/person-crew.js.map +1 -1
- package/dist/core/people/ports.d.ts +151 -3
- package/dist/core/people/read-wake-channels.d.ts +42 -0
- package/dist/core/people/read-wake-channels.js +21 -0
- package/dist/core/people/read-wake-channels.js.map +1 -0
- package/dist/core/people/turn-email-channel.d.ts +21 -0
- package/dist/core/people/turn-email-channel.js +22 -0
- package/dist/core/people/turn-email-channel.js.map +1 -0
- package/dist/core/people/turn-off-web-push.d.ts +13 -0
- package/dist/core/people/turn-off-web-push.js +14 -0
- package/dist/core/people/turn-off-web-push.js.map +1 -0
- package/dist/core/people/turn-on-web-push.d.ts +35 -0
- package/dist/core/people/turn-on-web-push.js +49 -0
- package/dist/core/people/turn-on-web-push.js.map +1 -0
- package/dist/core/people/wait-on-person-ship.d.ts +44 -0
- package/dist/core/people/wait-on-person-ship.js +92 -0
- package/dist/core/people/wait-on-person-ship.js.map +1 -0
- package/dist/core/people/wake-person.d.ts +40 -0
- package/dist/core/people/wake-person.js +74 -0
- package/dist/core/people/wake-person.js.map +1 -0
- package/dist/core/people/web-push-channel.d.ts +17 -0
- package/dist/core/people/web-push-channel.js +35 -0
- package/dist/core/people/web-push-channel.js.map +1 -0
- package/dist/core/requests/decide-request.d.ts +0 -2
- package/dist/core/requests/decide-request.js +3 -6
- package/dist/core/requests/decide-request.js.map +1 -1
- package/dist/core/requests/list-to-decide.js +1 -1
- package/dist/core/requests/list-to-decide.js.map +1 -1
- package/dist/core/shared/errors.d.ts +1 -1
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/sign-in/ports.d.ts +13 -0
- package/dist/core/vault/credential.d.ts +6 -2
- package/dist/party-workers.d.ts +9 -1
- package/dist/party-workers.js +37 -5
- package/dist/party-workers.js.map +1 -1
- package/dist/person-waiters.d.ts +30 -0
- package/dist/person-waiters.js +89 -0
- package/dist/person-waiters.js.map +1 -0
- package/package.json +7 -3
- package/src/adapters/prisma/migrations/20261023120000_party_bearer_hash/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261023130000_client_credentials/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20261023200000_a2a_tasks/migration.sql +20 -0
- package/src/adapters/prisma/migrations/20261023210000_tool_switches/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261024090000_a2a_pushes/migration.sql +37 -0
- package/src/adapters/prisma/migrations/20261024100000_party_is_repeatable/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261024110000_a2a_agent_calls/migration.sql +29 -0
- package/src/adapters/prisma/migrations/20261024115000_wakes/migration.sql +17 -0
- package/src/adapters/prisma/migrations/20261024120000_focused_pages/migration.sql +11 -0
- package/src/adapters/prisma/migrations/20261024130000_web_push_subscriptions/migration.sql +14 -0
- package/src/adapters/prisma/schema.prisma +159 -5
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +14 -11
- package/web/.next/build-manifest.json +39 -15
- package/web/.next/diagnostics/route-bundle-stats.json +107 -58
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/next-minimal-server.js.nft.json +1 -1
- package/web/.next/next-server.js.nft.json +1 -1
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/routes-manifest.json +18 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +55 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +25 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{outside-parties/[name]/retire → (console)/outside-parties/[name]}/page/build-manifest.json +1 -1
- package/web/.next/server/app/{outside-parties/[name]/retire → (console)/outside-parties/[name]}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js +24 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +55 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +25 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/add/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{outside-parties/[name]/change → (console)/outside-parties/add}/page/build-manifest.json +1 -1
- package/web/.next/server/app/{outside-parties/[name]/change → (console)/outside-parties/add}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +55 -0
- package/web/.next/server/app/(console)/outside-parties/add/page.js +25 -0
- package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page.js +14 -13
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +21 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{outside-parties/[name] → (console)/outside-parties}/page/build-manifest.json +1 -1
- package/web/.next/server/app/{outside-parties/add → (console)/outside-parties}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/{outside-parties → (console)/outside-parties}/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/{outside-parties → (console)/outside-parties}/page.js +13 -12
- package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/overview/changes/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/overview/changes/route.js +7 -0
- package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -0
- package/web/.next/server/app/(console)/overview/changes/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/overview/focus/route/build-manifest.json +12 -0
- package/web/.next/server/app/(console)/overview/focus/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/(console)/overview/focus/route.js +7 -0
- package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -0
- package/web/.next/server/app/(console)/overview/focus/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/overview/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{sign-in/failed → (console)/overview}/page/build-manifest.json +1 -1
- package/web/.next/server/app/{parties → (console)/overview}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +75 -0
- package/web/.next/server/app/{overview/requests/[requestId] → (console)/overview}/page.js +15 -14
- package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/{overview → (console)/overview}/requests/[requestId]/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/{overview → (console)/overview/requests/[requestId]}/page.js +15 -14
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.map +5 -0
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/parties/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{outside-parties → (console)/parties}/page/build-manifest.json +1 -1
- package/web/.next/server/app/{outside-parties → (console)/parties}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(console)/parties/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/{parties → (console)/parties}/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/{parties → (console)/parties}/page.js +12 -11
- package/web/.next/server/app/(console)/parties/page.js.map +5 -0
- package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/sign-in/failed/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{outside-parties/add → (console)/sign-in/failed}/page/build-manifest.json +1 -1
- package/web/.next/server/app/{outside-parties/[name] → (console)/sign-in/failed}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/{sign-in → (console)/sign-in}/failed/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/{sign-in → (console)/sign-in}/failed/page.js +13 -12
- package/web/.next/server/app/(console)/sign-in/failed/page.js.map +5 -0
- package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/_global-error/page.js +3 -3
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page.js +7 -7
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/failed/page.js +11 -9
- package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/pick/page.js +12 -10
- package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page.js +11 -9
- package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +14 -11
- package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +3 -0
- package/web/.next/server/chunks/1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js +3 -0
- package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js +3 -0
- package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js.map +1 -0
- package/web/.next/server/chunks/{[root-of-the-server]__00bbah0fbuex2._.js → [root-of-the-server]__0ykc8bq_c06a1._.js} +22 -22
- package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -0
- package/web/.next/server/chunks/_04is-uopj3op9._.js +3 -0
- package/web/.next/server/chunks/_04is-uopj3op9._.js.map +1 -0
- package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +3 -0
- package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1qpk1uw97id0a._.js → [root-of-the-server]__0-og0bl8lr2xq._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__197il4swfpq1a._.js → [root-of-the-server]__0a68v9ynev4q6._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0grpi5wnl9ppf._.js +10 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0grpi5wnl9ppf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1vkw2kvzx6fpw._.js.map → [root-of-the-server]__0l2_dk9d4o01n._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0ntyo9p3x-w6a._.js → [root-of-the-server]__179upda-y7uap._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__179upda-y7uap._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1m9atpy0vkbmj._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0dywrno7zb0r_._.js.map → [root-of-the-server]__1m9atpy0vkbmj._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__216xd8otb96uo._.js.map → [root-of-the-server]__1w5swo8gmjyx6._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +3 -0
- package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +4 -0
- package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_13qzwpag13tvy._.js → _0pyd1_y7w8ngp._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +3 -0
- package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +4 -0
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js +3 -0
- package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1datokkgym0.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1datokkgym0.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_1nqu01kfi0u66._.js → web_1loiet18xbddu._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_1loiet18xbddu._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_layout_tsx_1t-5g79yb9xtl._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_layout_tsx_1t-5g79yb9xtl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js → web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js → web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_app_overview_error_tsx_17_cklg40kzxe._.js → web_app_(console)_overview_error_tsx_087e7ba8loavc._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_087e7ba8loavc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +39 -15
- package/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +21 -13
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/preview-props.json +3 -3
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +176 -74
- package/web/.next/static/chunks/00njqo86bx2kb.js +1 -0
- package/web/.next/static/chunks/047i2x2j--shk.css +3 -0
- package/web/.next/static/chunks/07j7jnfe13wx6.js +1 -0
- package/web/.next/static/chunks/0g4cpamshfwmn.js +1 -0
- package/web/.next/static/chunks/0j84uiid6fsim.js +1 -0
- package/web/.next/static/chunks/0p_kl57bddsiy.js +1 -0
- package/web/.next/static/chunks/1aa1d23q1vokr.js +1 -0
- package/web/.next/static/chunks/1ca21kggixrjz.js +1 -0
- package/web/.next/static/chunks/1jvae6c-4jwji.js +1 -0
- package/web/.next/static/chunks/23ud2e13dn8f4.js +1 -0
- package/web/.next/static/chunks/2_41h3v090ur9.js +1 -0
- package/web/.next/static/chunks/2x00o45pdbkok.js +1 -0
- package/web/.next/static/chunks/31vy122d9fvme.js +1 -0
- package/web/.next/static/chunks/3apnqdh48__yw.js +1 -0
- package/web/.next/static/chunks/3okm5g88ig1l3.js +1 -0
- package/web/.next/static/chunks/{0a1vw3r93lh06.js → 3v6tr952p9dba.js} +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/routes.d.ts +8 -3
- package/web/.next/types/validator.ts +128 -50
- package/web/public/wake-worker.js +17 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/outside-parties/[name]/change/page/server-reference-manifest.json +0 -35
- package/web/.next/server/app/outside-parties/[name]/change/page.js +0 -22
- package/web/.next/server/app/outside-parties/[name]/change/page.js.nft.json +0 -1
- package/web/.next/server/app/outside-parties/[name]/change/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/outside-parties/[name]/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/outside-parties/[name]/page/server-reference-manifest.json +0 -15
- package/web/.next/server/app/outside-parties/[name]/page.js +0 -20
- package/web/.next/server/app/outside-parties/[name]/page.js.nft.json +0 -1
- package/web/.next/server/app/outside-parties/[name]/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/outside-parties/[name]/retire/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/outside-parties/[name]/retire/page/server-reference-manifest.json +0 -35
- package/web/.next/server/app/outside-parties/[name]/retire/page.js +0 -21
- package/web/.next/server/app/outside-parties/[name]/retire/page.js.nft.json +0 -1
- package/web/.next/server/app/outside-parties/[name]/retire/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/outside-parties/add/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/outside-parties/add/page/server-reference-manifest.json +0 -35
- package/web/.next/server/app/outside-parties/add/page.js.nft.json +0 -1
- package/web/.next/server/app/outside-parties/add/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/outside-parties/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/outside-parties/page.js.nft.json +0 -1
- package/web/.next/server/app/outside-parties/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/overview/changes/route/app-paths-manifest.json +0 -3
- package/web/.next/server/app/overview/changes/route.js +0 -6
- package/web/.next/server/app/overview/changes/route.js.nft.json +0 -1
- package/web/.next/server/app/overview/changes/route_client-reference-manifest.js +0 -3
- package/web/.next/server/app/overview/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/overview/page/build-manifest.json +0 -23
- package/web/.next/server/app/overview/page/next-font-manifest.json +0 -11
- package/web/.next/server/app/overview/page/server-reference-manifest.json +0 -45
- package/web/.next/server/app/overview/page.js.nft.json +0 -1
- package/web/.next/server/app/overview/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/overview/requests/[requestId]/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/overview/requests/[requestId]/page/build-manifest.json +0 -23
- package/web/.next/server/app/overview/requests/[requestId]/page/next-font-manifest.json +0 -11
- package/web/.next/server/app/overview/requests/[requestId]/page.js.nft.json +0 -1
- package/web/.next/server/app/overview/requests/[requestId]/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/parties/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/parties/page/build-manifest.json +0 -23
- package/web/.next/server/app/parties/page.js.nft.json +0 -1
- package/web/.next/server/app/parties/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/sign-in/failed/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/sign-in/failed/page/next-font-manifest.json +0 -11
- package/web/.next/server/app/sign-in/failed/page.js.nft.json +0 -1
- package/web/.next/server/app/sign-in/failed/page_client-reference-manifest.js +0 -3
- package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js.map +0 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js +0 -3
- package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +0 -3
- package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js +0 -4
- package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js +0 -4
- package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js +0 -4
- package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js +0 -3
- package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js +0 -3
- package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js +0 -3
- package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js +0 -3
- package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js +0 -3
- package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js +0 -10
- package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js +0 -3
- package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js +0 -3
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js +0 -3
- package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +0 -1
- package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js +0 -3
- package/web/.next/static/chunks/0214opd1iq3ld.js +0 -1
- package/web/.next/static/chunks/0hobzrlhklo3e.js +0 -1
- package/web/.next/static/chunks/1ma7v1viiz247.js +0 -1
- package/web/.next/static/chunks/1sgi4p93eayf4.js +0 -1
- package/web/.next/static/chunks/22u81hd6kxqsx.js +0 -1
- package/web/.next/static/chunks/2qpupho1jn-iy.js +0 -1
- package/web/.next/static/chunks/2rap-vrom5-zw.css +0 -3
- package/web/.next/static/chunks/3jr0srcv_-pfa.js +0 -1
- package/web/.next/static/chunks/3l_1gcuoe8bfn.js +0 -1
- package/web/.next/static/chunks/3sv0_hjr9t4cp.js +0 -1
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/change/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/change/page.js.map +0 -0
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/page.js.map +0 -0
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/retire/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/retire/page.js.map +0 -0
- /package/web/.next/server/app/{overview → (console)/outside-parties/add}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{overview → (console)/outside-parties/add}/page.js.map +0 -0
- /package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page.js.map +0 -0
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties/add-a2a-client}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{outside-parties → (console)/outside-parties/add-a2a-client}/page.js.map +0 -0
- /package/web/.next/server/app/{overview/requests/[requestId] → (console)/outside-parties}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{overview/requests/[requestId] → (console)/outside-parties}/page.js.map +0 -0
- /package/web/.next/server/app/{overview → (console)/overview}/changes/route/build-manifest.json +0 -0
- /package/web/.next/server/app/{overview → (console)/overview}/changes/route/server-reference-manifest.json +0 -0
- /package/web/.next/server/app/{overview → (console)/overview}/changes/route.js.map +0 -0
- /package/web/.next/server/app/{parties/page.js.map → (console)/overview/focus/route.js.map} +0 -0
- /package/web/.next/server/app/{parties → (console)/overview}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{sign-in/failed → (console)/overview}/page.js.map +0 -0
- /package/web/.next/server/app/{sign-in/failed → (console)/overview/requests/[requestId]}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/chunks/{[externals]__12s2uxrv8n30f._.js.map → 0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js.map} +0 -0
- /package/web/.next/server/chunks/{web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js.map → 1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js.map} +0 -0
- /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_buildManifest.js +0 -0
- /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/forms/form-state.ts","../../../../../web/features/forms/ui/action-form.tsx","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/outcome.tsx","../../../../../web/features/forms/ui/submit-button.tsx"],"sourcesContent":["/**\n * What a page's form (a server action) answers the browser: nothing yet,\n * done with what changed, or refused with why, as the API said it. The\n * open network's warning asks for a confirm (interop I-3).\n */\nexport type FormState =\n | { kind: 'idle' }\n | { kind: 'done'; message: string }\n | { kind: 'refused'; message: string }\n | { kind: 'openNetwork'; message: string };\n\nexport const IDLE: FormState = { kind: 'idle' };\n\n/** A form's text field, empty when it was not sent. */\nexport function fieldOf(form: FormData, name: string): string {\n const value = form.get(name);\n return typeof value === 'string' ? value : '';\n}\n\n/** The form's fields as text, files left out. */\nexport function fieldsOf(form: FormData): Record<string, string> {\n return Object.fromEntries([...form.entries()].flatMap(([name, value]) => (typeof value === 'string' ? [[name, value]] : [])));\n}\n\n/** The fleet a page's form names: the page's own, sent in a hidden field. */\nexport const FLEET_FIELD = 'fleet';\n","'use client';\n\nimport { useActionState, type ReactNode } from 'react';\n\nimport { FLEET_FIELD, IDLE, type FormState } from '../form-state';\nimport type { ButtonKind } from './look';\nimport { Outcome } from './outcome';\nimport { SubmitButton } from './submit-button';\n\n/** A page's form: its fields, the fleet it is for, its button, and how it ended. */\nexport function ActionForm({\n action,\n fleetId,\n children,\n submit,\n className = 'grid gap-3',\n testId,\n}: {\n action: (previous: FormState, form: FormData) => Promise<FormState>;\n fleetId: string;\n children?: ReactNode;\n submit: { label: ReactNode; pending: string; kind?: ButtonKind };\n className?: string;\n testId?: string;\n}) {\n const [state, formAction] = useActionState(action, IDLE);\n return (\n <form action={formAction} className={className} data-testid={testId}>\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n {children}\n <div>\n <SubmitButton pending={submit.pending} {...(submit.kind === undefined ? {} : { kind: submit.kind })}>\n {submit.label}\n </SubmitButton>\n </div>\n <Outcome state={state} />\n </form>\n );\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","import type { FormState } from '../form-state';\n\n/** How a form ended: what changed, or why it was refused. Nothing while it has not been sent. */\nexport function Outcome({ state, testId }: { state: FormState; testId?: string }) {\n switch (state.kind) {\n case 'idle':\n return null;\n case 'done':\n return (\n <p role=\"status\" data-testid={testId} className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {state.message}\n </p>\n );\n case 'refused':\n case 'openNetwork':\n return (\n <p role=\"alert\" data-testid={testId} className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {state.message}\n </p>\n );\n }\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useFormStatus } from 'react-dom';\n\nimport { BUTTONS, type ButtonKind } from './look';\n\n/** A form's button: it says the form is on its way at once, and takes no second press meanwhile. */\nexport function SubmitButton({ children, pending, kind = 'primary', testId }: { children: ReactNode; pending: string; kind?: ButtonKind; testId?: string }) {\n const status = useFormStatus();\n return (\n <button type=\"submit\" className={BUTTONS[kind]} disabled={status.pending} aria-busy={status.pending} data-testid={testId}>\n {status.pending ? pending : children}\n </button>\n );\n}\n"],"names":["IDLE","kind","fieldOf","form","name","value","get","fieldsOf","Object","fromEntries","entries","flatMap","FLEET_FIELD","ActionForm","action","fleetId","children","submit","className","testId","state","formAction","type","pending","undefined","label","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","Outcome","role","message"],"mappings":"wDAyB2B,cAdI,CAAEC,KAAM,MAAO,gCCT9C,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,2BAGO,SAAoB,AAAXY,QACdC,CAAM,SACNC,CAAO,UACPC,CAAQ,QACRC,CAAM,CACNC,YAAY,YAAY,QACxBC,CAAM,CAQP,EACC,GAAM,CAACC,EAAOC,EAAW,CAAG,CAAA,EAAA,EAAA,cAAc,AAAd,EAAeP,EAAQ,EAAA,CAAI,EACvD,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKA,OAAQO,EAAYH,UAAWA,EAAW,cAAaC,YAC3D,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAMG,KAAK,SAASlB,KAAM,EAAA,CAAW,CAAEC,MAAOU,IAC9CC,EACD,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,UACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAACO,QAASN,EAAOM,OAAO,CAAG,QAAoBC,IAAhBP,EAAOhB,IAAI,CAAiB,CAAC,EAAI,CAAEA,KAAMgB,EAAOhB,IAAI,AAAC,CAAC,UAC/FgB,EAAOQ,KAAK,KAGjB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,CAAA,CAACL,MAAOA,MAGtB,eCnCA,IAAMO,EAAS,oGAEFC,EAAU,CACrBC,QAAS,CAAA,EAAGF,EAAO,0DAA0D,CAAC,CAC9EG,UAAW,CAAA,EAAGH,EAAO,6CAA6C,CAAC,CACnEI,YAAa,CAAA,EAAGJ,EAAO,2CAA2C,CAAC,AACrE,qBARoB,mFAYC,yFAEA,4DCZd,SAASO,AAAQ,OAAEd,CAAK,QAAED,CAAM,CAAyC,EAC9E,OAAQC,EAAMnB,IAAI,EAChB,IAAK,OACH,OAAO,IACT,KAAK,OACH,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEkC,KAAK,SAAS,cAAahB,EAAQD,UAAU,2FAC7CE,EAAMgB,OAAO,EAGpB,KAAK,UACL,IAAK,cACH,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAED,KAAK,QAAQ,cAAahB,EAAQD,UAAU,gHAC5CE,EAAMgB,OAAO,EAGtB,CACF,UClBA,IAAA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,kBAGO,SAAS,AAAa,UAAE,CAAQ,SAAE,CAAO,CAAE,OAAO,SAAS,QAAE,CAAM,CAAgF,EACxJ,IAAM,EAAS,CAAA,EAAA,EAAA,aAAA,AAAa,IAC5B,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,KAAK,SAAS,UAAW,EAAA,CAAO,CAAC,EAAK,CAAE,SAAU,EAAO,OAAO,CAAE,YAAW,EAAO,OAAO,CAAE,cAAa,WAC/G,EAAO,OAAO,CAAGjB,EAAU,GAGlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/forms/form-state.ts"],"sourcesContent":["/**\n * What a page's form (a server action) answers the browser: nothing yet,\n * done with what changed, or refused with why, as the API said it. The\n * open network's warning asks for a confirm (interop I-3).\n */\nexport type FormState =\n | { kind: 'idle' }\n | { kind: 'done'; message: string }\n | { kind: 'refused'; message: string }\n | { kind: 'openNetwork'; message: string };\n\nexport const IDLE: FormState = { kind: 'idle' };\n\n/** A form's text field, empty when it was not sent. */\nexport function fieldOf(form: FormData, name: string): string {\n const value = form.get(name);\n return typeof value === 'string' ? value : '';\n}\n\n/** The form's fields as text, files left out. */\nexport function fieldsOf(form: FormData): Record<string, string> {\n return Object.fromEntries([...form.entries()].flatMap(([name, value]) => (typeof value === 'string' ? [[name, value]] : [])));\n}\n\n/** The fleet a page's form names: the page's own, sent in a hidden field. */\nexport const FLEET_FIELD = 'fleet';\n"],"names":["IDLE","kind","fieldOf","form","name","value","get","fieldsOf","Object","fromEntries","entries","flatMap","FLEET_FIELD"],"mappings":"kDAyB2B,cAdI,CAAEC,KAAM,MAAO"}
|
package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[60224,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(51636),e=a.i(88412);a.s(["f",0,function({legend:a,fields:f,noneHelp:g}){let[h,i]=(0,c.useState)((0,d.C)(f.credentialKind??""));return(0,b.jsxs)("fieldset",{className:"grid gap-3",children:[(0,b.jsx)("legend",{className:"font-medium",children:a}),(0,b.jsxs)("label",{className:e.z,children:[(0,b.jsx)("span",{children:"Credential"}),(0,b.jsx)("select",{className:e.w,name:"credentialKind",value:h,onChange:a=>{i((0,d.C)(a.target.value))},children:d.x.map(({kind:a,label:c})=>(0,b.jsx)("option",{value:a,children:c},a))})]}),"clientCredentials"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("label",{className:e.z,children:[(0,b.jsx)("span",{children:"Client id"}),(0,b.jsx)("input",{className:e.w,type:"text",name:"clientId",defaultValue:f.clientId??""})]}),(0,b.jsxs)("label",{className:e.z,children:[(0,b.jsx)("span",{children:"Client secret"}),(0,b.jsx)("input",{className:e.w,type:"password",name:"clientSecret"})]}),(0,b.jsxs)("label",{className:e.z,children:[(0,b.jsx)("span",{children:"Issuer"}),(0,b.jsx)("input",{className:e.w,type:"url",name:"issuer",defaultValue:f.issuer??""})]}),(0,b.jsxs)("label",{className:e.z,children:[(0,b.jsx)("span",{children:"Scope"}),(0,b.jsx)("input",{className:e.w,type:"text",name:"scope",defaultValue:f.scope??""})]})]}):"bearer"===h?(0,b.jsxs)("label",{className:e.z,children:[(0,b.jsx)("span",{children:"Bearer token"}),(0,b.jsx)("input",{className:e.w,type:"password",name:"token"})]}):(0,b.jsx)("p",{className:"text-muted-foreground",children:g})]})}])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/forms/ui/credential-fields.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\nimport { CREDENTIAL_KINDS, credentialKindOf } from '../server-credential';\nimport { INPUT, LABEL } from './look';\n\n/**\n * The credential the vault keeps for an outside party the gateway calls: its\n * kind, then only the fields of that kind. A secret is never shown back, so\n * it is typed again after a refusal.\n */\nexport function CredentialFields({ legend, fields, noneHelp }: { legend: string; fields: Readonly<Record<string, string>>; noneHelp: string }) {\n const [credentialKind, setCredentialKind] = useState(credentialKindOf(fields.credentialKind ?? ''));\n return (\n <fieldset className=\"grid gap-3\">\n <legend className=\"font-medium\">{legend}</legend>\n <label className={LABEL}>\n <span>Credential</span>\n <select className={INPUT} name=\"credentialKind\" value={credentialKind} onChange={(event) => { setCredentialKind(credentialKindOf(event.target.value)); }}>\n {CREDENTIAL_KINDS.map(({ kind, label }) => (\n <option key={kind} value={kind}>\n {label}\n </option>\n ))}\n </select>\n </label>\n {credentialKind === 'clientCredentials' ? (\n <>\n <label className={LABEL}>\n <span>Client id</span>\n <input className={INPUT} type=\"text\" name=\"clientId\" defaultValue={fields.clientId ?? ''} />\n </label>\n <label className={LABEL}>\n <span>Client secret</span>\n <input className={INPUT} type=\"password\" name=\"clientSecret\" />\n </label>\n <label className={LABEL}>\n <span>Issuer</span>\n <input className={INPUT} type=\"url\" name=\"issuer\" defaultValue={fields.issuer ?? ''} />\n </label>\n <label className={LABEL}>\n <span>Scope</span>\n <input className={INPUT} type=\"text\" name=\"scope\" defaultValue={fields.scope ?? ''} />\n </label>\n </>\n ) : credentialKind === 'bearer' ? (\n <label className={LABEL}>\n <span>Bearer token</span>\n <input className={INPUT} type=\"password\" name=\"token\" />\n </label>\n ) : (\n <p className=\"text-muted-foreground\">{noneHelp}</p>\n )}\n </fieldset>\n );\n}\n"],"names":["CredentialFields","legend","fields","noneHelp","credentialKind","setCredentialKind","className","name","value","onChange","event","target","map","kind","label","type","defaultValue","clientId","issuer","scope"],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,kBAOO,SAASA,AAAiB,QAAEC,CAAM,QAAEC,CAAM,UAAEC,CAAQ,CAAkF,EAC3I,GAAM,CAACC,EAAgBC,EAAkB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CAAA,EAAA,EAAA,CAAgB,AAAhB,EAAiBH,EAAOE,cAAc,EAAI,KAC/F,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,WAAA,CAASE,UAAU,uBAClB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOA,UAAU,uBAAeL,IACjC,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAMK,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,eACN,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOA,UAAW,EAAA,CAAK,CAAEC,KAAK,iBAAiBC,MAAOJ,EAAgBK,SAAU,AAACC,IAAYL,EAAkB,CAAA,EAAA,EAAA,CAAA,AAAgB,EAACK,EAAMC,MAAM,CAACH,KAAK,EAAI,WACpJ,EAAA,CAAgB,CAACI,GAAG,CAAC,CAAC,MAAEC,CAAI,OAAEC,CAAK,CAAE,GACpC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAkBN,MAAOK,WACvBC,GADUD,SAMC,sBAAnBT,EACC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAME,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,cACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAMA,UAAW,EAAA,CAAK,CAAES,KAAK,OAAOR,KAAK,WAAWS,aAAcd,EAAOe,QAAQ,EAAI,QAExF,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAMX,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,kBACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAMA,UAAW,EAAA,CAAK,CAAES,KAAK,WAAWR,KAAK,oBAEhD,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAMD,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAMA,UAAW,EAAA,CAAK,CAAES,KAAK,MAAMR,KAAK,SAASS,aAAcd,EAAOgB,MAAM,EAAI,QAEnF,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAMZ,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,UACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAMA,UAAW,EAAA,CAAK,CAAES,KAAK,OAAOR,KAAK,QAAQS,aAAcd,EAAOiB,KAAK,EAAI,WAG/D,WAAnBf,EACF,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAME,UAAW,EAAA,CAAK,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,iBACN,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAMA,UAAW,EAAA,CAAK,CAAES,KAAK,WAAWR,KAAK,aAGhD,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAED,UAAU,iCAAyBH,MAI9C"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[72704,a=>{var b=a.i(7997),c=a.i(8403);function d({header:a,children:c}){return(0,b.jsxs)("div",{className:"flex min-h-dvh flex-col",children:[(0,b.jsx)("div",{"data-testid":"frame-header",className:"contents",children:a}),(0,b.jsx)("main",{className:"mx-auto w-full max-w-5xl flex-1 px-4 py-6",children:c})]})}var e=a.i(717),f=a.i(66283);async function g(){try{return await (await (0,f.z)(void 0)).account.apps.query()}catch(a){if(void 0!==(0,f.T)(a))return;throw a}}var h=a.i(75416),i=a.i(49310),j=a.i(26972),k=a.i(54757),k=k,l=a.i(27221),m=a.i(89963),n=a.i(83931),o=a.i(29517);let p=i.z.enum(["console","gateway","account","admin"]),q=j.z.object({app:p,url:k.httpUrl()});j.z.object({account:j.z.object({id:h.s,email:l.z.string()}),apps:m.z.array(q),fleets:m.z.array(j.z.object({id:(0,o.f)("fleet"),name:l.z.string(),argo:n.z.boolean(),apps:m.z.array(q)}))});var r=a.i(91156);let s=(0,o.f)("fleet");function t(a){return a.flatMap(({app:a,url:b})=>{let c=p.safeParse(a);return c.success?[{app:c.data,url:b}]:[]})}var u=a.i(73952);function v(){return(0,b.jsx)("header",{"data-testid":"plain-header",className:"flex h-14 items-center border-b border-border px-4",children:(0,b.jsx)("a",{href:"/overview",className:"text-section font-semibold",children:"Aeolus"})})}async function w({theme:a}){let c=await g(),d=void 0===c?[]:function(a){let b=h.s.safeParse(a.account.id),c=a.fleets.map(a=>s.safeParse(a.id));if(!b.success||c.some(a=>!a.success))return[];let d={account:{id:b.data,email:a.account.email},apps:t(a.apps),fleets:a.fleets.flatMap((a,b)=>{let d=c[b];return d?.success===!0?[{id:d.data,name:a.name,argo:!1,apps:t(a.apps)}]:[]})};return d.fleets.map(({id:a,name:b})=>(0,r.f)({list:d,fleet:{id:a,name:b},app:"gateway"}))}(c);return void 0===c||0===d.length?(0,b.jsx)(v,{}):(0,b.jsx)(e.Suspense,{fallback:(0,b.jsx)(v,{}),children:(0,b.jsx)(u.GatewayHeader,{switchers:d,email:c.account.email,accountUrl:c.apps.find(({app:a})=>"account"===a)?.url,theme:a})})}async function x({children:a}){return(0,b.jsx)(d,{header:(0,b.jsx)(w,{theme:await (0,c.f)()}),children:a})}a.s(["f",0,x],72704)},56397,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call GatewayHeader() from the server but GatewayHeader is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/frame/ui/gateway-header.tsx","GatewayHeader");a.s(["GatewayHeader",0,b])},73952,a=>{var b=a.i(56397);a.n(b)}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_frame_0pe8cwpxe1egb._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/frame/hooks/read-header.ts","../../../../../web/features/frame/services/header-switchers.ts","../../../../../node_modules/%40aeolus-fleet/common/src/schemas/apps-list.ts","../../../../../web/features/frame/state/header.tsx","../../../../../web/features/frame/ui/plain-header.tsx","../../../../../web/features/frame/state/console-frame.tsx","../../../../../web/features/frame/ui/frame.tsx","../../../../../web/features/frame/ui/gateway-header.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/frame/ui/gateway-header.tsx%22%20%7D"],"sourcesContent":["/**\n * What the header shows, read through the gateway's API by the browser's\n * shared sign-in (header design H1): the account and the apps and fleets it\n * may open. A browser signed in to no account, a gateway that signs no one\n * in to its pages, or pagasae not answering, shows the plain bar: the page\n * itself says what to do.\n */\nimport { refusalCodeOf, requestApi } from '../../../lib/gateway-api/page-api';\nimport type { AccountApps } from '../services/header-switchers';\n\nexport async function readHeader(): Promise<AccountApps | undefined> {\n try {\n return await (await requestApi(undefined)).account.apps.query();\n } catch (error) {\n if (refusalCodeOf(error) !== undefined) {\n return undefined;\n }\n throw error;\n }\n}\n","/*\n * The switcher in the title of the header the gateway's pages show\n * (aeolus-fleet, header design H1, H9), from the apps and fleets the account\n * may open as the gateway's API answers them. The fleet in view is the one\n * the page's address names; a layout cannot read the address, so the server\n * offers one switcher per listed fleet and the header picks by the address.\n */\nimport { accountIdSchema, headerAppSchema, idSchema, type AppLink, type AppsList } from '@aeolus-fleet/common';\nimport { appSwitcherOf, type AppSwitcherModel } from '@aeolus-fleet/common/header';\n\n/** The apps and fleets the account may open, as the API's account.apps answers them. */\nexport interface AccountApps {\n account: { id: string; email: string };\n apps: readonly { app: string; url: string }[];\n fleets: readonly { id: string; name: string; apps: readonly { app: string; url: string }[] }[];\n}\n\nconst fleetIdSchema = idSchema('fleet');\n\n/** The apps the header knows (H12), the others left out; the addresses as the API answers them. */\nfunction headerAppsOf(apps: AccountApps['apps']): AppLink[] {\n return apps.flatMap(({ app, url }) => {\n const known = headerAppSchema.safeParse(app);\n return known.success ? [{ app: known.data, url }] : [];\n });\n}\n\n/** The switchers for the gateway, one per listed fleet with it in view; none for an answer with a malformed id. */\nexport function headerSwitchersOf(answer: AccountApps): AppSwitcherModel[] {\n const accountId = accountIdSchema.safeParse(answer.account.id);\n const fleetIds = answer.fleets.map((fleet) => fleetIdSchema.safeParse(fleet.id));\n if (!accountId.success || fleetIds.some((fleetId) => !fleetId.success)) {\n return [];\n }\n const list: AppsList = {\n account: { id: accountId.data, email: answer.account.email },\n apps: headerAppsOf(answer.apps),\n // Whether the account may sign in as argo is the console's alone: the gateway's header never shows it.\n fleets: answer.fleets.flatMap((fleet, index) => {\n const fleetId = fleetIds[index];\n return fleetId?.success === true ? [{ id: fleetId.data, name: fleet.name, argo: false, apps: headerAppsOf(fleet.apps) }] : [];\n }),\n };\n return list.fleets.map(({ id, name }) => appSwitcherOf({ list, fleet: { id, name }, app: 'gateway' }));\n}\n","unable to read source [project]/node_modules/@aeolus-fleet/common/src/schemas/apps-list.ts","import type { Theme } from '@aeolus-fleet/common';\nimport { Suspense } from 'react';\n\nimport { readHeader } from '../hooks/read-header';\nimport { headerSwitchersOf } from '../services/header-switchers';\nimport { GatewayHeader } from '../ui/gateway-header';\nimport { PlainHeader } from '../ui/plain-header';\n\n/** The header for the account signed in, or the plain bar for no account (or one that may open no fleet here, or an answer it cannot read). */\nexport async function Header({ theme }: { theme: Theme }) {\n const answer = await readHeader();\n const switchers = answer === undefined ? [] : headerSwitchersOf(answer);\n if (answer === undefined || switchers.length === 0) {\n return <PlainHeader />;\n }\n return (\n // The header reads the fleet in view from the address.\n <Suspense fallback={<PlainHeader />}>\n <GatewayHeader switchers={switchers} email={answer.account.email} accountUrl={answer.apps.find(({ app }) => app === 'account')?.url} theme={theme} />\n </Suspense>\n );\n}\n","/** The bar of a page shown to no account signed in: the sign-in pages, and a gateway that signs no one in to its pages. */\nexport function PlainHeader() {\n return (\n <header data-testid=\"plain-header\" className=\"flex h-14 items-center border-b border-border px-4\">\n <a href=\"/overview\" className=\"text-section font-semibold\">\n Aeolus\n </a>\n </header>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { readTheme } from '../hooks/read-theme';\nimport { Frame } from '../ui/frame';\nimport { Header } from './header';\n\n/** The frame of the gateway's own pages: the header every Aeolus app shows, for the account signed in. */\nexport async function ConsoleFrame({ children }: { children: ReactNode }) {\n return <Frame header={<Header theme={await readTheme()} />}>{children}</Frame>;\n}\n","import type { ReactNode } from 'react';\n\n/**\n * Every page of the gateway's web app: the header on top, the page below.\n * The header is the one every Aeolus app shows (@aeolus-fleet/common/header,\n * header design H2) for an account signed in, else a plain bar.\n */\nexport function Frame({ header, children }: { header: ReactNode; children: ReactNode }) {\n return (\n <div className=\"flex min-h-dvh flex-col\">\n <div data-testid=\"frame-header\" className=\"contents\">\n {header}\n </div>\n <main className=\"mx-auto w-full max-w-5xl flex-1 px-4 py-6\">{children}</main>\n </div>\n );\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const GatewayHeader = registerClientReference(\n function() { throw new Error(\"Attempted to call GatewayHeader() from the server but GatewayHeader is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/frame/ui/gateway-header.tsx\",\n \"GatewayHeader\",\n);\n"],"names":["Frame","header","children","className","GatewayHeader","Error"],"mappings":"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","ignoreList":[2,7]}
|
package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[45648,a=>{"use strict";var b=a.i(87924),c=a.i(64831);let d={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]};d.node;let e=(0,c.f)(d);var f=a.i(78400),g=a.i(21244),h=a.i(95725),i=a.i(6158),j=a.i(18486);function k({switcher:a,account:c,onSearch:d,searchLabel:l="Search or jump to",children:m,actions:n,className:o}){return(0,b.jsxs)("header",{"data-slot":"app-header",className:(0,j.f)("sticky top-0 z-30 flex h-(--size-header) shrink-0 items-center justify-between gap-4 border-b border-border bg-background px-6",o),children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[void 0===a?(0,b.jsx)("span",{"data-testid":"app-switcher-loading","aria-hidden":!0,className:"h-4 w-36 shrink-0 animate-pulse rounded bg-muted motion-reduce:animate-none"}):(0,b.jsx)(f.AppSwitcher,{switcher:a,layout:"full",className:"shrink-0"}),m]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-3",children:[n,d?(0,b.jsxs)(g.f,{size:"sm",icon:(0,b.jsx)(e,{"aria-hidden":!0}),"data-testid":"header-search",className:"w-60 justify-start font-normal text-muted-foreground max-lg:w-auto",onClick:d,children:[(0,b.jsx)("span",{className:"grow text-left max-lg:sr-only",children:l}),(0,b.jsx)(h.f,{children:"⌘K"})]}):null,(0,b.jsx)(i.AvatarMenu,{...c})]})]})}var l=a.i(50944),m=a.i(72131),n=a.i(5050);let o=(0,n.createServerReference)("40e9a42ba8cfd90f0dd74f6fcb1ee9c16c64e374ae",n.callServer,void 0,n.findSourceMapURL,"setTheme"),p=["light","dark","system"];var q=a.i(25959);let r=[{key:"overview",label:"Overview",path:"/overview"},{key:"outside-parties",label:"Outside parties",path:"/outside-parties"},{key:"parties",label:"Parties",path:"/parties"}];function s({fleetId:a}){let c=(0,l.usePathname)();return(0,b.jsx)("nav",{"aria-label":"Gateway",className:"flex shrink-0 items-center gap-1",children:r.map(({key:d,label:e,path:f})=>{let g=c===f||c.startsWith(`${f}/`);return(0,b.jsx)("a",{href:(0,q.f)(f,a),"data-testid":`frame-tab-${d}`,"aria-current":g?"page":void 0,className:`whitespace-nowrap rounded-md px-2 py-1 text-sm ${g?"bg-accent font-semibold":"text-muted-foreground hover:bg-accent"}`,children:e},d)})})}a.s(["GatewayHeader",0,function({switchers:a,email:c,accountUrl:d,theme:e}){let g=(0,l.useSearchParams)().get("fleet"),h=a.find(({fleet:a})=>a.id===g)??a[0],[j,n]=(0,m.useState)(e),[q,r]=(0,m.useState)(!1),t=(0,m.useRef)(null),u={name:c,signedInAs:"account",accountUrl:d,theme:j,themes:p,hasTheme:!0,onThemeChange:a=>{let b;n(a),document.documentElement.dataset.theme=a,b="dark"===a||"system"===a&&window.matchMedia("(prefers-color-scheme: dark)").matches,document.documentElement.classList.toggle("dark",b),o(a)},shortcuts:[],helpUrl:"https://github.com/ThomasHendrickx/aeolus-fleet",onSignOut:()=>{r(!0),t.current?.requestSubmit()},isSigningOut:q};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("form",{ref:t,method:"post",action:"/sign-in/end",hidden:!0}),(0,b.jsx)(k,{switcher:h,account:u,className:"max-sm:hidden",children:void 0===h?null:(0,b.jsx)(s,{fleetId:h.fleet.id})}),(0,b.jsxs)("header",{className:"sticky top-0 z-30 flex h-14 shrink-0 items-center gap-3 border-b border-border bg-background px-4 sm:hidden",children:[void 0===h?null:(0,b.jsx)(f.AppSwitcher,{switcher:h,layout:"compact",className:"min-w-0"}),void 0===h?null:(0,b.jsx)(s,{fleetId:h.fleet.id}),(0,b.jsx)("span",{className:"grow"}),(0,b.jsx)(i.AvatarMenuSheet,{...u})]})]})}],45648)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map
|
package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/frame/data%3A6ed796%20%3Ctext/javascript%3E","../../../../../web/features/frame/ui/gateway-header.tsx","../../../../../web/features/frame/ui/gateway-tabs.tsx","../../../../../node_modules/%40aeolus-fleet/common/src/header/app-header.tsx","../../../../../web/features/frame/theme.ts","../../../../../node_modules/lucide-react/src/icons/search.ts"],"sourcesContent":["/* __next_internal_action_entry_do_not_use__ [{\"40e9a42ba8cfd90f0dd74f6fcb1ee9c16c64e374ae\":{\"name\":\"setTheme\"}},\"web/features/frame/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(\"40e9a42ba8cfd90f0dd74f6fcb1ee9c16c64e374ae\",callServer,void 0,findSourceMapURL,\"setTheme\");export{$$RSC_SERVER_ACTION_0 as setTheme};","'use client';\n\nimport type { Theme } from '@aeolus-fleet/common';\nimport { AppHeader, AppSwitcher, AvatarMenuSheet, type AppSwitcherModel, type AvatarMenuProps } from '@aeolus-fleet/common/header';\nimport { useSearchParams } from 'next/navigation';\nimport { useRef, useState } from 'react';\n\nimport { setTheme } from '../actions';\nimport { THEMES } from '../theme';\nimport { GatewayTabs } from './gateway-tabs';\n\n/** Where the avatar menu's Help leads, as in the console. */\nconst HELP_URL = 'https://github.com/ThomasHendrickx/aeolus-fleet';\n\n/** The gateway's server ends the shared sign-in here, in every app at once, for a form sent from its own pages. */\nconst SIGN_OUT_PATH = '/sign-in/end';\n\n/** Applies a theme at once, as the root layout's script does on the next load. */\nfunction applyTheme(theme: Theme): void {\n document.documentElement.dataset.theme = theme;\n const isDark = theme === 'dark' || (theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches);\n document.documentElement.classList.toggle('dark', isDark);\n}\n\ninterface GatewayHeaderProps {\n /** One per fleet the account may open, with it in view; the address picks one. */\n switchers: readonly AppSwitcherModel[];\n email: string;\n /** Account's address, for the avatar menu's Your account, Your rights and Email updates. */\n accountUrl: string | undefined;\n theme: Theme;\n}\n\n/**\n * The header every Aeolus app shows (aeolus-fleet, header design), on the\n * gateway's pages: from 640 px the shared AppHeader, with the switcher in\n * the title and the avatar menu; on phone a bar with the switcher compact\n * and the avatar's bottom Sheet (H6). After the title, the tabs to the\n * overview, the outside parties and the parties. The fleet in view is the one the\n * address names, else the account's first. Sign out ends the shared\n * sign-in in every app and shows \"Signing out\" until the page leaves.\n */\nexport function GatewayHeader({ switchers, email, accountUrl, theme }: GatewayHeaderProps) {\n const requested = useSearchParams().get('fleet');\n const switcher = switchers.find(({ fleet }) => fleet.id === requested) ?? switchers[0];\n const [shownTheme, setShownTheme] = useState(theme);\n const [isSigningOut, setIsSigningOut] = useState(false);\n const signOutForm = useRef<HTMLFormElement>(null);\n\n const account: AvatarMenuProps = {\n name: email,\n signedInAs: 'account',\n accountUrl,\n theme: shownTheme,\n themes: THEMES,\n hasTheme: true,\n onThemeChange: (next) => {\n setShownTheme(next);\n applyTheme(next);\n void setTheme(next);\n },\n shortcuts: [],\n helpUrl: HELP_URL,\n onSignOut: () => {\n setIsSigningOut(true);\n signOutForm.current?.requestSubmit();\n },\n isSigningOut,\n };\n return (\n <>\n <form ref={signOutForm} method=\"post\" action={SIGN_OUT_PATH} hidden />\n <AppHeader switcher={switcher} account={account} className=\"max-sm:hidden\">\n {switcher === undefined ? null : <GatewayTabs fleetId={switcher.fleet.id} />}\n </AppHeader>\n <header className=\"sticky top-0 z-30 flex h-14 shrink-0 items-center gap-3 border-b border-border bg-background px-4 sm:hidden\">\n {switcher === undefined ? null : <AppSwitcher switcher={switcher} layout=\"compact\" className=\"min-w-0\" />}\n {switcher === undefined ? null : <GatewayTabs fleetId={switcher.fleet.id} />}\n <span className=\"grow\" />\n <AvatarMenuSheet {...account} />\n </header>\n </>\n );\n}\n","'use client';\n\nimport { usePathname } from 'next/navigation';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\n\n/** The gateway's pages a person goes between. */\nconst TABS = [\n { key: 'overview', label: 'Overview', path: '/overview' },\n { key: 'outside-parties', label: 'Outside parties', path: '/outside-parties' },\n { key: 'parties', label: 'Parties', path: '/parties' },\n] as const;\n\n/** Whether the page at this path is the tab's page or one of its own. */\nfunction isTabOf(pathname: string, path: string): boolean {\n return pathname === path || pathname.startsWith(`${path}/`);\n}\n\n/** The header's tabs: the overview, the outside parties and the parties of the fleet in view, the page shown current. */\nexport function GatewayTabs({ fleetId }: { fleetId: string }) {\n const pathname = usePathname();\n return (\n <nav aria-label=\"Gateway\" className=\"flex shrink-0 items-center gap-1\">\n {TABS.map(({ key, label, path }) => {\n const isCurrent = isTabOf(pathname, path);\n return (\n <a\n key={key}\n href={inFleet(path, fleetId)}\n data-testid={`frame-tab-${key}`}\n aria-current={isCurrent ? 'page' : undefined}\n className={`whitespace-nowrap rounded-md px-2 py-1 text-sm ${isCurrent ? 'bg-accent font-semibold' : 'text-muted-foreground hover:bg-accent'}`}\n >\n {label}\n </a>\n );\n })}\n </nav>\n );\n}\n","unable to read source [project]/node_modules/@aeolus-fleet/common/src/header/app-header.tsx","/**\n * The theme this browser chose for the gateway's pages (header design H13:\n * each app keeps its own), System until chosen.\n */\nimport type { Theme } from '@aeolus-fleet/common';\n\n/** The themes, as common names them: written here so the header's browser code loads no schema (decision 0033). */\nexport const THEMES: readonly Theme[] = ['light', 'dark', 'system'];\n\n/** The cookie that keeps it. */\nexport const THEME_COOKIE = 'aeolus_gateway_theme';\n\nexport function isTheme(value: unknown): value is Theme {\n return THEMES.some((theme) => theme === value);\n}\n\n/** The theme a cookie names, or System. */\nexport function themeFrom(value: string | undefined): Theme {\n return isTheme(value) ? value : 'system';\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'search',\n size: 24,\n node: [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon(__iconData);\n\nexport default Search;\n"],"names":["node","cx","key"],"mappings":"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","ignoreList":[3,5]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[18434,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(30587),e=a.i(88412),f=a.i(36855),g=a.i(77237),h=a.i(5050);let i=(0,h.createServerReference)("
|
|
1
|
+
module.exports=[18434,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(30587),e=a.i(88412),f=a.i(36855),g=a.i(77237),h=a.i(5050);let i=(0,h.createServerReference)("60efb6926106563b19c1a54b070d26520408b32a05",h.callServer,void 0,h.findSourceMapURL,"switchOutsideParties");var j=a.i(47763);a.s(["SwitchCard",0,function({isOn:a,canSwitch:h,fleetId:k}){let[l,m]=(0,c.useActionState)(i,d.Q);return(0,b.jsxs)("section",{className:`${e.r} grid gap-3`,"data-testid":"outside-parties-switch",children:[(0,b.jsxs)("h2",{className:"flex items-center gap-2 text-section font-semibold",children:["Outside parties are ",a?"on":"off"," ",a?(0,b.jsx)(j.T,{tone:"ok",label:"On"}):(0,b.jsx)(j.T,{tone:"ended",label:"Off"})]}),(0,b.jsx)("p",{className:"text-muted-foreground",children:a?"Approved outside MCP servers and clients reach the fleet, as its network rules allow.":"No outside MCP server or client reaches the fleet, and no request for one can be approved."}),"openNetwork"===l.kind?(0,b.jsxs)("form",{action:m,role:"alert",className:"grid gap-3 rounded-md border border-tone-attention-border bg-tone-attention-bg p-4 text-tone-attention-fg",children:[(0,b.jsx)("h3",{className:"font-semibold",children:"Open network"}),(0,b.jsx)("p",{children:l.message}),(0,b.jsx)("input",{type:"hidden",name:d.H,value:k}),(0,b.jsx)("input",{type:"hidden",name:"isOn",value:"true"}),(0,b.jsx)("input",{type:"hidden",name:"isOpenNetworkConfirmed",value:"true"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(g.f,{kind:"destructive",pending:"Turning on…",testId:"outside-parties-turn-on-anyway",children:"Turn on anyway"}),(0,b.jsx)("a",{className:e.x.secondary,href:"",children:"Keep off"})]})]}):h?(0,b.jsxs)("form",{action:m,children:[(0,b.jsx)("input",{type:"hidden",name:d.H,value:k}),(0,b.jsx)("input",{type:"hidden",name:"isOn",value:String(!a)}),(0,b.jsx)(g.f,{kind:a?"secondary":"primary",pending:a?"Turning off…":"Turning on…",testId:"outside-parties-turn",children:a?"Turn off":"Turn on"})]}):(0,b.jsxs)("p",{className:"text-muted-foreground",children:["Turning them on or off needs ","fleet:network","."]}),"openNetwork"===l.kind?null:(0,b.jsx)(f.f,{state:l})]})}],18434)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../web/features/outside-parties/ui/switch-card.tsx","../../../../../web/features/outside-parties/data%
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/outside-parties/ui/switch-card.tsx","../../../../../web/features/outside-parties/data%3Ac7a2ae%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useActionState } from 'react';\n\nimport { FLEET_FIELD, IDLE } from '../../forms/form-state';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { SubmitButton } from '../../forms/ui/submit-button';\nimport { switchOutsideParties } from '../actions';\nimport { StatusBadge } from './status-badge';\n\n/** The scope that turns outside parties on or off (0056). */\nconst SWITCHING_SCOPE = 'fleet:network';\n\n/**\n * Whether the fleet's outside parties are on, and the switch for an account\n * holding fleet:network. An open network's warning asks to confirm, or to\n * keep them off.\n */\nexport function SwitchCard({ isOn, canSwitch, fleetId }: { isOn: boolean; canSwitch: boolean; fleetId: string }) {\n const [state, formAction] = useActionState(switchOutsideParties, IDLE);\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-parties-switch\">\n <h2 className=\"flex items-center gap-2 text-section font-semibold\">\n Outside parties are {isOn ? 'on' : 'off'} {isOn ? <StatusBadge tone=\"ok\" label=\"On\" /> : <StatusBadge tone=\"ended\" label=\"Off\" />}\n </h2>\n <p className=\"text-muted-foreground\">\n {isOn ? 'Approved outside MCP servers and clients reach the fleet, as its network rules allow.' : 'No outside MCP server or client reaches the fleet, and no request for one can be approved.'}\n </p>\n {state.kind === 'openNetwork' ? (\n <form action={formAction} role=\"alert\" className=\"grid gap-3 rounded-md border border-tone-attention-border bg-tone-attention-bg p-4 text-tone-attention-fg\">\n <h3 className=\"font-semibold\">Open network</h3>\n <p>{state.message}</p>\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"isOn\" value=\"true\" />\n <input type=\"hidden\" name=\"isOpenNetworkConfirmed\" value=\"true\" />\n <div className=\"flex gap-2\">\n <SubmitButton kind=\"destructive\" pending=\"Turning on…\" testId=\"outside-parties-turn-on-anyway\">\n Turn on anyway\n </SubmitButton>\n <a className={BUTTONS.secondary} href=\"\">\n Keep off\n </a>\n </div>\n </form>\n ) : canSwitch ? (\n <form action={formAction}>\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"isOn\" value={String(!isOn)} />\n <SubmitButton kind={isOn ? 'secondary' : 'primary'} pending={isOn ? 'Turning off…' : 'Turning on…'} testId=\"outside-parties-turn\">\n {isOn ? 'Turn off' : 'Turn on'}\n </SubmitButton>\n </form>\n ) : (\n <p className=\"text-muted-foreground\">Turning them on or off needs {SWITCHING_SCOPE}.</p>\n )}\n {state.kind === 'openNetwork' ? null : <Outcome state={state} />}\n </section>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"60efb6926106563b19c1a54b070d26520408b32a05\":{\"name\":\"switchOutsideParties\"}},\"web/features/outside-parties/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(\"60efb6926106563b19c1a54b070d26520408b32a05\",callServer,void 0,findSourceMapURL,\"switchOutsideParties\");export{$$RSC_SERVER_ACTION_0 as switchOutsideParties};"],"names":["$$RSC_SERVER_ACTION_0"],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCP8M,EAAA,EAAA,CAAA,CAAA,MAAsG,IAAMA,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,wBDSnc,IAAA,EAAA,EAAA,CAAA,CAAA,2BAUO,SAAS,AAAW,MAAE,CAAI,WAAE,CAAS,SAAE,CAAO,CAA0D,EAC7G,GAAM,CAAC,EAAO,EAAW,CAAG,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAsB,EAAA,CAAI,EACrE,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAW,CAAA,EAAG,EAAA,CAAI,CAAC,WAAW,CAAC,CAAE,cAAY,mCACpD,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,+DAAqD,uBAC5C,EAAO,KAAO,MAAM,IAAE,EAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,CAAA,CAAC,KAAK,KAAK,MAAM,OAAU,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,CAAA,CAAC,KAAK,QAAQ,MAAM,WAE3H,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iCACV,EAAO,wFAA0F,+FAEpF,gBAAf,EAAM,IAAI,CACT,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,OAAQ,EAAY,KAAK,QAAQ,UAAU,sHAC/C,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,yBAAgB,iBAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAG,EAAM,OAAO,GACjB,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,SAAS,KAAM,EAAA,CAAW,CAAE,MAAO,IAC/C,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,SAAS,KAAK,OAAO,MAAM,SACvC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,SAAS,KAAK,yBAAyB,MAAM,SACzD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAAC,KAAK,cAAc,QAAQ,cAAc,OAAO,0CAAiC,mBAG/F,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAW,EAAA,CAAO,CAAC,SAAS,CAAE,KAAK,YAAG,mBAK3C,EACF,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,OAAQ,YACZ,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,SAAS,KAAM,EAAA,CAAW,CAAE,MAAO,IAC/C,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,SAAS,KAAK,OAAO,MAAO,OAAO,CAAC,KAChD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,CAAA,CAAC,KAAM,EAAO,YAAc,UAAW,QAAS,EAAO,eAAiB,cAAe,OAAO,gCACxG,EAAO,WAAa,eAIzB,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,kCAAwB,gCA1CrB,gBA0CmE,OAErE,gBAAf,EAAM,IAAI,CAAqB,KAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,CAAA,CAAC,MAAO,MAG7D"}
|
package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[94705,
|
|
1
|
+
module.exports=[94705,a=>{"use strict";var b=a.i(37936),c=a.i(18558);a.i(70396);var d=a.i(73727),e=a.i(55476),f=a.i(66283),g=a.i(1324),h=a.i(72913),i=a.i(18379),j=a.i(13095);let k="name";async function l(a,b){let c=(0,g.v)(b,g.H),j=(0,g.v)(b,k),l=await (0,f.z)(c);try{let[a,c]=await Promise.all([l.parties.get.query({name:j}),l.account.inView.query()]),d=(0,i.t)(a,{form:(0,g.O)(b),scopes:"signedIn"===c.kind?c.scopes:[]});if("refused"===d.kind)return d;void 0!==d.ownerShipId&&await l.parties.changeOwner.mutate({name:j,ownerShipId:d.ownerShipId}),(d.grant.length>0||d.revoke.length>0)&&await l.parties.changeScopes.mutate({name:j,grant:d.grant,revoke:d.revoke})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)((0,h.N)(j),c))}async function m(a,b){let d=(0,g.v)(b,g.H),e=(0,g.v)(b,k),i=await (0,f.z)(d);try{let{tool:a,isOn:d,statementRefusal:f}=await i.parties.switchTool.mutate({name:e,tool:(0,g.v)(b,"tool"),isOn:"true"===(0,g.v)(b,"isOn")});return(0,c.revalidatePath)((0,h.N)(e)),{kind:"switched",isOn:d,message:function({tool:a,isOn:b,statementRefusal:c}){let d=`${a} is ${b?"on":"off"}`;return null!==c?`${d}; the fleet sees it at the proxy ship's next statement: ${c}`:b?`${d}: the fleet may call it.`:`${d}: the fleet sees it no more, and a call to it is refused.`}({tool:a,isOn:d,statementRefusal:f})}}catch(a){return{kind:"refused",message:(0,f.s)(a)}}}async function n(a,b){let d=(0,g.v)(b,g.H),e=(0,g.v)(b,k),i=await (0,f.z)(d);try{let{isRepeatable:a,statementRefusal:d}=await i.parties.markA2aAgent.mutate({name:e,isRepeatable:"true"===(0,g.v)(b,"isRepeatable")});return(0,c.revalidatePath)((0,h.N)(e)),{kind:"marked",isRepeatable:a,message:function({name:a,isRepeatable:b,statementRefusal:c}){let d=`${a} is ${b?"repeatable":"not repeatable"}`;return null!==c?`${d}; the fleet sees it at the proxy ship's next statement: ${c}`:b?`${d}: a message that died before it confirmed it is handed again.`:`${d}: a message that died before it confirmed it is not handed again, as it may have run.`}({name:e,isRepeatable:a,statementRefusal:d})}}catch(a){return{kind:"refused",message:(0,f.s)(a)}}}async function o(a,b){let c=(0,g.v)(b,g.H),i=await (0,f.z)(c);try{await i.parties.retire.mutate({name:(0,g.v)(b,k)})}catch(a){return{kind:"refused",message:(0,f.s)(a)}}(0,d.redirect)((0,e.i)(h.$,c))}(0,j.ensureServerEntryExports)([l,m,n,o]),(0,b.registerServerReference)(l,"60203ae0831583bb989b90f838af8ad09ce21f97c3",null),(0,b.registerServerReference)(m,"60a68d36449bc53cbd6e751425ac86bfa7a302a8bf",null),(0,b.registerServerReference)(n,"6006cd6ed5454b8c34c176236313db65f23f52094d",null),(0,b.registerServerReference)(o,"607a9bab4971285771a37307805823b3418205ff2e",null),a.s(["v",0,l,"o",0,n,"t",0,o,"z",0,m],94705)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map
|
package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../web/features/outside-party/actions.ts","../../../../../web/features/outside-party/
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/outside-party/actions.ts","../../../../../web/features/outside-party/marked-message.ts","../../../../../web/features/outside-party/switched-message.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, switching a server's tools, marking an\n * A2A agent repeatable or not, and retiring it. Each asks the API, which\n * checks the account's scopes; a refusal is said on the form.\n */\nimport { revalidatePath } from 'next/cache';\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';\nimport { markedMessageOf } from './marked-message';\nimport { switchedMessageOf } from './switched-message';\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\n/** How one tool's switch ended: as it stands now and what the fleet sees, or why the API refused it. */\nexport type ToolSwitchState = { kind: 'idle' } | { kind: 'switched'; isOn: boolean; message: string } | { kind: 'refused'; message: string };\n\nexport async function switchPartyTool(_previous: ToolSwitchState, form: FormData): Promise<ToolSwitchState> {\n const fleetId = fieldOf(form, FLEET_FIELD);\n const name = fieldOf(form, NAME_FIELD);\n const api = await requestApi(fleetId);\n try {\n const { tool, isOn, statementRefusal } = await api.parties.switchTool.mutate({ name, tool: fieldOf(form, 'tool'), isOn: fieldOf(form, 'isOn') === 'true' });\n revalidatePath(partyPath(name));\n return { kind: 'switched', isOn, message: switchedMessageOf({ tool, isOn, statementRefusal }) };\n } catch (error) {\n return { kind: 'refused', message: refusalMessageOf(error) };\n }\n}\n\n/** How an A2A agent's repeatable mark ended: as it stands now and what it means, or why the API refused it. */\nexport type MarkState = { kind: 'idle' } | { kind: 'marked'; isRepeatable: boolean; message: string } | { kind: 'refused'; message: string };\n\nexport async function markA2aAgent(_previous: MarkState, form: FormData): Promise<MarkState> {\n const fleetId = fieldOf(form, FLEET_FIELD);\n const name = fieldOf(form, NAME_FIELD);\n const api = await requestApi(fleetId);\n try {\n const { isRepeatable, statementRefusal } = await api.parties.markA2aAgent.mutate({ name, isRepeatable: fieldOf(form, 'isRepeatable') === 'true' });\n revalidatePath(partyPath(name));\n return { kind: 'marked', isRepeatable, message: markedMessageOf({ name, isRepeatable, statementRefusal }) };\n } catch (error) {\n return { kind: 'refused', message: refusalMessageOf(error) };\n }\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","/** What an A2A agent's repeatable mark says once the API kept it (A9): what a message that died unconfirmed comes to, or that the proxy ship shows it at its next statement, and why. */\nexport function markedMessageOf({ name, isRepeatable, statementRefusal }: { name: string; isRepeatable: boolean; statementRefusal: string | null }): string {\n const state = `${name} is ${isRepeatable ? 'repeatable' : 'not repeatable'}`;\n if (statementRefusal !== null) {\n return `${state}; the fleet sees it at the proxy ship's next statement: ${statementRefusal}`;\n }\n return isRepeatable ? `${state}: a message that died before it confirmed it is handed again.` : `${state}: a message that died before it confirmed it is not handed again, as it may have run.`;\n}\n","/** What a tool's switch says once the API kept it: what the fleet sees now, or that the proxy ship shows it at its next statement, and why. */\nexport function switchedMessageOf({ tool, isOn, statementRefusal }: { tool: string; isOn: boolean; statementRefusal: string | null }): string {\n const state = `${tool} is ${isOn ? 'on' : 'off'}`;\n if (statementRefusal !== null) {\n return `${state}; the fleet sees it at the proxy ship's next statement: ${statementRefusal}`;\n }\n return isOn ? `${state}: the fleet may call it.` : `${state}: the fleet sees it no more, and a call to it is refused.`;\n}\n"],"names":["markedMessageOf","name","isRepeatable","statementRefusal","state"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[9181,a=>{var b=a.i(7997),c=a.i(55476),d=a.i(66283),e=a.i(29493),f=a.i(49144),g=a.i(65253),h=a.i(72913),i=a.i(1130),j=a.i(98323),k=a.i(30438);function l({tool:a,control:c,testId:d}){let{name:e,description:f,isReadOnly:g,isNew:h=!1}=a,i=void 0===f?"":(0,k.A)(f),m=void 0!==f&&f.trim()!==i;return(0,b.jsxs)("li",{className:"grid gap-1 border-b border-border py-2 last:border-b-0","data-testid":d,children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,b.jsx)("span",{className:"font-mono",children:e}),g?(0,b.jsx)(j.E,{children:"reads only"}):null,h?(0,b.jsx)(j.T,{tone:"attention",label:"New"}):null]}),""===i?null:m?(0,b.jsxs)("details",{className:"text-muted-foreground",children:[(0,b.jsx)("summary",{className:"cursor-pointer",children:i}),(0,b.jsx)("p",{className:"mt-1 whitespace-pre-line",children:f})]}):(0,b.jsx)("p",{className:"text-muted-foreground",children:i})]})}var m=a.i(35670),n=a.i(41738);let o="fleet:owner",p="scopes:grant",q="gateway:approve";function r({fleetId:a}){return(0,b.jsx)("a",{href:(0,c.i)(h.$,a),className:"text-muted-foreground hover:text-foreground",children:"← Outside parties"})}function s({children:a}){return(0,b.jsx)("p",{role:"alert",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a})}let t={mcpServer:"Address",mcpClient:"Client id",a2aClient:"Address",a2aAgent:"Card address"},u=(0,b.jsx)("span",{className:"text-muted-foreground",children:"Not known"});function v({label:a,children:c}){return(0,b.jsxs)("div",{className:"grid gap-1 sm:grid-cols-[10rem_1fr]",children:[(0,b.jsx)("dt",{className:"text-muted-foreground",children:a}),(0,b.jsx)("dd",{className:"flex flex-wrap items-center gap-2",children:c})]})}function w({party:a}){let{protocol:c,side:d}=g.G[a.kind],e=g.Y[a.state];return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("h1",{className:"text-title font-semibold",children:a.name}),(0,b.jsx)(j.E,{children:c}),(0,b.jsx)(j.E,{children:g.N[d].one}),(0,b.jsx)(j.T,{tone:e.tone,label:e.label})]})}async function x({page:a,name:k}){let{api:y,fleetId:z,scopes:A}=a,B=await (0,d.F)(y.parties.get.query({name:k}));if(!B.isOk)return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(r,{fleetId:z}),(0,b.jsx)(s,{children:B.refusal})]});let C=B.value,D=(0,g.M)(C),[E,F]=await Promise.all(["mcpServer"===C.kind?(0,d.F)(y.parties.tools.query({name:k})):void 0,"a2aClient"===C.kind?(0,d.F)(y.parties.cardAddresses.query({name:k})):void 0]),G=(0,b.jsx)("a",{href:(0,c.i)((0,h.N)(C.name,"change"),z),className:"text-primary hover:underline","data-testid":"outside-party-change",children:"Change"});return(0,b.jsxs)("div",{className:"grid gap-4",children:[(0,b.jsx)(r,{fleetId:z}),(0,b.jsx)(w,{party:C}),(0,b.jsxs)("dl",{className:`${f.r} grid gap-3`,children:[(0,b.jsx)(v,{label:"Proxy ship",children:C.proxyShipName??u}),(0,b.jsxs)(v,{label:"Owner",children:[C.ownerName??u,A.includes(o)?G:null]}),(0,b.jsxs)(v,{label:"Scopes",children:[null===C.scopes?u:C.scopes.map(a=>{let c;return(0,b.jsx)(j.E,{children:(c=i.K.safeParse(a)).success?i.q[c.data]:a},a)}),A.includes(p)?G:null]}),"mcpServer"===C.kind||"a2aAgent"===C.kind?(0,b.jsx)(v,{label:"Credential",children:e.x.find(({kind:a})=>a===C.credentialKind)?.label}):null,null===D?null:(0,b.jsx)(v,{label:t[C.kind],children:(0,b.jsx)("span",{className:"font-mono",children:D})}),"a2aAgent"===C.kind?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{label:"Messages at once",children:C.concurrencyLimit}),(0,b.jsx)(v,{label:"Repeatable",children:A.includes(q)?(0,b.jsx)(m.RepeatableSwitch,{fleetId:z,party:C.name,isRepeatable:C.isRepeatable}):(0,b.jsx)(j.E,{children:C.isRepeatable?"Repeatable":"Not repeatable"})})]}):null]}),void 0===E?null:(0,b.jsxs)("section",{className:`${f.r} grid gap-2`,"data-testid":"outside-party-tools",children:[(0,b.jsxs)("h2",{className:"flex justify-between text-section font-semibold",children:[(0,b.jsx)("span",{children:"Tools"}),E.isOk?(0,b.jsxs)("span",{children:[E.value.tools.filter(a=>a.isOn).length," of ",E.value.tools.length," on"]}):null]}),E.isOk?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-muted-foreground",children:["The fleet may call only the tools switched on; every ship that may reach ",C.name," reaches the same. ",A.includes(q)?null:"Switching them needs gateway:approve."]}),(0,b.jsx)("ul",{className:"grid",children:E.value.tools.map(a=>(0,b.jsx)(l,{tool:a,testId:"outside-party-tool",control:A.includes(q)?(0,b.jsx)(n.ToolSwitch,{fleetId:z,party:C.name,tool:a.name,isOn:a.isOn}):(0,b.jsx)(j.E,{children:a.isOn?"On":"Off"})},a.name))})]}):(0,b.jsx)("p",{className:"text-muted-foreground",children:E.refusal})]}),void 0===F?null:(0,b.jsxs)("section",{className:`${f.r} grid gap-2`,"data-testid":"outside-party-cards",children:[(0,b.jsxs)("h2",{className:"flex justify-between text-section font-semibold",children:[(0,b.jsx)("span",{children:"Card addresses"}),F.isOk?(0,b.jsx)("span",{children:F.value.addresses.length}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground",children:"One per ship its proxy ship reaches now. Its owner hands them to the client."}),F.isOk?0===F.value.addresses.length?(0,b.jsx)("p",{className:"text-muted-foreground",children:"It reaches no ship now."}):(0,b.jsx)("ul",{className:"grid gap-1",children:F.value.addresses.map(a=>(0,b.jsx)("li",{className:"break-all font-mono text-code",children:a},a))}):(0,b.jsx)("p",{className:"text-muted-foreground",children:F.refusal})]}),A.includes("fleet:manage")?(0,b.jsx)("div",{children:(0,b.jsxs)("a",{className:f.x.secondary,href:(0,c.i)((0,h.N)(C.name,"retire"),z),"data-testid":"outside-party-retire",children:["Retire ",C.name,"…"]})}):null]})}a.s(["N",0,q,"W",0,r,"p",0,p,"J",0,o,"b",0,x,"y",0,s],9181)},56786,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call RepeatableSwitch() from the server but RepeatableSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/outside-party/ui/repeatable-switch.tsx","RepeatableSwitch");a.s(["RepeatableSwitch",0,b])},35670,a=>{var b=a.i(56786);a.n(b)},66746,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call ToolSwitch() from the server but ToolSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/web/features/outside-party/ui/tool-switch.tsx","ToolSwitch");a.s(["ToolSwitch",0,b])},41738,a=>{var b=a.i(66746);a.n(b)}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_outside-party_ui_20x5u9bhxeehi._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/outside-party/ui/outside-party.tsx","../../../../../web/features/outside-parties/scope-words.ts","../../../../../web/features/outside-parties/ui/tool-row.tsx","../../../../../web/features/outside-party/ui/repeatable-switch.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/repeatable-switch.tsx%22%20%7D","../../../../../web/features/outside-party/ui/tool-switch.tsx/__nextjs-internal-proxy.mjs%20%7B%20server%20%3D%3E%20%22%5Bproject%5D/web/features/outside-party/ui/tool-switch.tsx%22%20%7D"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { readOf, type SignedInPage } from '../../../lib/gateway-api/page-api';\nimport { CREDENTIAL_KINDS } from '../../forms/server-credential';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { outsideAddressOf, PARTY_KINDS, PARTY_STATES, SIDES, type ListedParty } from '../../outside-parties/party-kinds';\nimport { OUTSIDE_PARTIES_PATH, partyPath } from '../../outside-parties/paths';\nimport { scopeWords } from '../../outside-parties/scope-words';\nimport { StatusBadge, Tag } from '../../outside-parties/ui/status-badge';\nimport { ToolRow } from '../../outside-parties/ui/tool-row';\nimport { RepeatableSwitch } from './repeatable-switch';\nimport { ToolSwitch } from './tool-switch';\n\n/** The scopes that change a party's owner, its scopes, and retire it (0056). */\nexport const OWNING_SCOPE = 'fleet:owner';\nexport const GRANTING_SCOPE = 'scopes:grant';\nexport const RETIRING_SCOPE = 'fleet:manage';\n\n/** The scope that switches a server's tools (aeolus-fleet#1151) and marks an A2A agent (A9). */\nexport const APPROVING_SCOPE = 'gateway:approve';\n\n/** The way back to the list, in the page's fleet. */\nexport function Back({ fleetId }: { fleetId: string }) {\n return (\n <a href={inFleet(OUTSIDE_PARTIES_PATH, fleetId)} className=\"text-muted-foreground hover:text-foreground\">\n ← Outside parties\n </a>\n );\n}\n\n/** Why the API refused: said in place of the page. */\nexport function Refusal({ children }: { children: ReactNode }) {\n return (\n <p role=\"alert\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {children}\n </p>\n );\n}\n\n/** What a party's outside address is called on its page. */\nconst ADDRESS_LABELS: Record<ListedParty['kind'], string> = { mcpServer: 'Address', mcpClient: 'Client id', a2aClient: 'Address', a2aAgent: 'Card address' };\n\nconst UNKNOWN = <span className=\"text-muted-foreground\">Not known</span>;\n\nfunction Fact({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div className=\"grid gap-1 sm:grid-cols-[10rem_1fr]\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd className=\"flex flex-wrap items-center gap-2\">{children}</dd>\n </div>\n );\n}\n\n/** The party's head: its name, protocol, side and state. */\nexport function PartyHead({ party }: { party: ListedParty }) {\n const { protocol, side } = PARTY_KINDS[party.kind];\n const state = PARTY_STATES[party.state];\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <h1 className=\"text-title font-semibold\">{party.name}</h1>\n <Tag>{protocol}</Tag>\n <Tag>{SIDES[side].one}</Tag>\n <StatusBadge tone={state.tone} label={state.label} />\n </div>\n );\n}\n\n/**\n * One outside party (design B, screens 12 and 14): its proxy ship's state,\n * then its facts as the fleet holds them, and for an MCP server the tools\n * it lists now, each with its switch for an approver (aeolus-fleet#1151);\n * for an A2A agent its repeatable mark, a switch for an approver (A9). Each control shows only to an account holding\n * its scope; the API checks it again.\n */\nexport async function OutsideParty({ page, name }: { page: SignedInPage; name: string }) {\n const { api, fleetId, scopes } = page;\n const read = await readOf(api.parties.get.query({ name }));\n if (!read.isOk) {\n return (\n <div className=\"grid gap-4\">\n <Back fleetId={fleetId} />\n <Refusal>{read.refusal}</Refusal>\n </div>\n );\n }\n const party = read.value;\n const address = outsideAddressOf(party);\n const [tools, cards] = await Promise.all([\n party.kind === 'mcpServer' ? readOf(api.parties.tools.query({ name })) : undefined,\n party.kind === 'a2aClient' ? readOf(api.parties.cardAddresses.query({ name })) : undefined,\n ]);\n const change = (\n <a href={inFleet(partyPath(party.name, 'change'), fleetId)} className=\"text-primary hover:underline\" data-testid=\"outside-party-change\">\n Change\n </a>\n );\n return (\n <div className=\"grid gap-4\">\n <Back fleetId={fleetId} />\n <PartyHead party={party} />\n <dl className={`${CARD} grid gap-3`}>\n <Fact label=\"Proxy ship\">{party.proxyShipName ?? UNKNOWN}</Fact>\n <Fact label=\"Owner\">\n {party.ownerName ?? UNKNOWN}\n {scopes.includes(OWNING_SCOPE) ? change : null}\n </Fact>\n <Fact label=\"Scopes\">\n {party.scopes === null\n ? UNKNOWN\n : party.scopes.map((scope) => <Tag key={scope}>{scopeWords(scope)}</Tag>)}\n {scopes.includes(GRANTING_SCOPE) ? change : null}\n </Fact>\n {party.kind === 'mcpServer' || party.kind === 'a2aAgent' ? <Fact label=\"Credential\">{CREDENTIAL_KINDS.find(({ kind }) => kind === party.credentialKind)?.label}</Fact> : null}\n {address === null ? null : (\n <Fact label={ADDRESS_LABELS[party.kind]}>\n <span className=\"font-mono\">{address}</span>\n </Fact>\n )}\n {party.kind === 'a2aAgent' ? (\n <>\n <Fact label=\"Messages at once\">{party.concurrencyLimit}</Fact>\n <Fact label=\"Repeatable\">\n {scopes.includes(APPROVING_SCOPE) ? <RepeatableSwitch fleetId={fleetId} party={party.name} isRepeatable={party.isRepeatable} /> : <Tag>{party.isRepeatable ? 'Repeatable' : 'Not repeatable'}</Tag>}\n </Fact>\n </>\n ) : null}\n </dl>\n {tools === undefined ? null : (\n <section className={`${CARD} grid gap-2`} data-testid=\"outside-party-tools\">\n <h2 className=\"flex justify-between text-section font-semibold\">\n <span>Tools</span>\n {tools.isOk ? (\n <span>\n {tools.value.tools.filter((tool) => tool.isOn).length} of {tools.value.tools.length} on\n </span>\n ) : null}\n </h2>\n {tools.isOk ? (\n <>\n <p className=\"text-muted-foreground\">\n The fleet may call only the tools switched on; every ship that may reach {party.name} reaches the same. {scopes.includes(APPROVING_SCOPE) ? null : 'Switching them needs gateway:approve.'}\n </p>\n <ul className=\"grid\">\n {tools.value.tools.map((tool) => (\n <ToolRow\n key={tool.name}\n tool={tool}\n testId=\"outside-party-tool\"\n control={scopes.includes(APPROVING_SCOPE) ? <ToolSwitch fleetId={fleetId} party={party.name} tool={tool.name} isOn={tool.isOn} /> : <Tag>{tool.isOn ? 'On' : 'Off'}</Tag>}\n />\n ))}\n </ul>\n </>\n ) : (\n <p className=\"text-muted-foreground\">{tools.refusal}</p>\n )}\n </section>\n )}\n {cards === undefined ? null : (\n <section className={`${CARD} grid gap-2`} data-testid=\"outside-party-cards\">\n <h2 className=\"flex justify-between text-section font-semibold\">\n <span>Card addresses</span>\n {cards.isOk ? <span>{cards.value.addresses.length}</span> : null}\n </h2>\n <p className=\"text-muted-foreground\">One per ship its proxy ship reaches now. Its owner hands them to the client.</p>\n {!cards.isOk ? (\n <p className=\"text-muted-foreground\">{cards.refusal}</p>\n ) : cards.value.addresses.length === 0 ? (\n <p className=\"text-muted-foreground\">It reaches no ship now.</p>\n ) : (\n <ul className=\"grid gap-1\">\n {cards.value.addresses.map((address) => (\n <li key={address} className=\"break-all font-mono text-code\">\n {address}\n </li>\n ))}\n </ul>\n )}\n </section>\n )}\n {scopes.includes(RETIRING_SCOPE) ? (\n <div>\n <a className={BUTTONS.secondary} href={inFleet(partyPath(party.name, 'retire'), fleetId)} data-testid=\"outside-party-retire\">\n Retire {party.name}…\n </a>\n </div>\n ) : null}\n </div>\n );\n}\n","import { CORE_SCOPE_DESCRIPTIONS, scopeSchema } from '@aeolus-fleet/common';\n\n/** A scope in plain words: what a core scope allows, as the fleet words it (decision 0046); a plugin's scope by its name. */\nexport function scopeWords(scope: string): string {\n const core = scopeSchema.safeParse(scope);\n return core.success ? CORE_SCOPE_DESCRIPTIONS[core.data] : scope;\n}\n","import type { ReactNode } from 'react';\n\nimport { firstLineOf } from '../../add-server/tool-choice';\nimport { StatusBadge, Tag } from './status-badge';\n\n/** A tool of an outside MCP server, as its row shows it. */\nexport interface ShownTool {\n name: string;\n description?: string | undefined;\n isReadOnly: boolean;\n isNew?: boolean;\n}\n\n/**\n * One tool in a list an approver scans (aeolus-fleet#1151): its switch, its\n * name, whether the server says it reads only, whether it is new, and its\n * description's first line, the whole description folded open on a click.\n */\nexport function ToolRow({ tool, control, testId }: { tool: ShownTool; control: ReactNode; testId?: string }) {\n const { name, description, isReadOnly, isNew = false } = tool;\n const firstLine = description === undefined ? '' : firstLineOf(description);\n const isFolded = description !== undefined && description.trim() !== firstLine;\n return (\n <li className=\"grid gap-1 border-b border-border py-2 last:border-b-0\" data-testid={testId}>\n <div className=\"flex flex-wrap items-center gap-2\">\n {control}\n <span className=\"font-mono\">{name}</span>\n {isReadOnly ? <Tag>reads only</Tag> : null}\n {isNew ? <StatusBadge tone=\"attention\" label=\"New\" /> : null}\n </div>\n {firstLine === '' ? null : isFolded ? (\n <details className=\"text-muted-foreground\">\n <summary className=\"cursor-pointer\">{firstLine}</summary>\n <p className=\"mt-1 whitespace-pre-line\">{description}</p>\n </details>\n ) : (\n <p className=\"text-muted-foreground\">{firstLine}</p>\n )}\n </li>\n );\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const RepeatableSwitch = registerClientReference(\n function() { throw new Error(\"Attempted to call RepeatableSwitch() from the server but RepeatableSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/outside-party/ui/repeatable-switch.tsx\",\n \"RepeatableSwitch\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const ToolSwitch = registerClientReference(\n function() { throw new Error(\"Attempted to call ToolSwitch() from the server but ToolSwitch is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/web/features/outside-party/ui/tool-switch.tsx\",\n \"ToolSwitch\",\n);\n"],"names":["scopeWords","scope","core","safeParse","success","data","RepeatableSwitch","Error","ToolSwitch"],"mappings":"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","ignoreList":[3,4]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[25964,a=>{var b=a.i(
|
|
1
|
+
(()=>{"use strict";module.exports=[25964,a=>{var b=a.i(72131),c=a.i(50944);a.s(["LiveRefresh",0,function({fleetId:a}){let d;return d=(0,c.useRouter)(),(0,b.useEffect)(()=>{let b=new EventSource(`/overview/changes?fleet=${encodeURIComponent(a)}`);return b.onmessage=()=>{d.refresh()},()=>{b.close()}},[a,d]),(0,b.useEffect)(()=>{let b,c=()=>{let c="visible"===document.visibilityState&&document.hasFocus();c&&void 0===b?b=new EventSource(`/overview/focus?fleet=${encodeURIComponent(a)}`):c||void 0===b||(b.close(),b=void 0)};return c(),window.addEventListener("focus",c),window.addEventListener("blur",c),document.addEventListener("visibilitychange",c),()=>{window.removeEventListener("focus",c),window.removeEventListener("blur",c),document.removeEventListener("visibilitychange",c),b?.close()}},[a]),null}],25964)},1542,24229,a=>{var b=a.i(87924);let c={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent"};a.s(["f",0,function({isPending:a,pendingLabel:d,variant:e="secondary",children:f,className:g="",disabled:h,...i}){return(0,b.jsx)("button",{...i,disabled:!0===h||a,"aria-busy":a,className:`inline-flex h-9 items-center gap-2 rounded-md px-4 disabled:cursor-not-allowed disabled:opacity-70 ${c[e]} ${g}`,children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),d]}):f})}],1542),a.s(["f",0,function({message:a,isFailure:c}){return c?(0,b.jsx)("p",{role:"alert","data-testid":"overview-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a}):(0,b.jsx)("p",{role:"status","data-testid":"overview-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a})}],24229)}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=web_features_overview_16dyz2ngvs14b._.js.map
|
|
@@ -1 +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":["
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/overview/hooks/use-focus-report.ts","../../../../../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 { useEffect } from 'react';\n\n/** The stream the page holds while in focus, which the web app's server follows on the gateway's API for the browser. */\nexport const FOCUS_PATH = '/overview/focus';\n\n/**\n * Tells the gateway while the page is in focus (wake a person, W6): it holds\n * the focus stream open while the window has focus and the page shows, and\n * closes it when either ends. While a page of the person is in focus, what\n * arrives is shown there and no wake goes out; an open page not in focus\n * changes nothing. A lost connection no longer counts as in focus.\n */\nexport function useFocusReport(fleetId: string): void {\n useEffect(() => {\n let focus: EventSource | undefined;\n const report = () => {\n const isInFocus = document.visibilityState === 'visible' && document.hasFocus();\n if (isInFocus && focus === undefined) {\n focus = new EventSource(`${FOCUS_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n } else if (!isInFocus && focus !== undefined) {\n focus.close();\n focus = undefined;\n }\n };\n report();\n window.addEventListener('focus', report);\n window.addEventListener('blur', report);\n document.addEventListener('visibilitychange', report);\n return () => {\n window.removeEventListener('focus', report);\n window.removeEventListener('blur', report);\n document.removeEventListener('visibilitychange', report);\n focus?.close();\n };\n }, [fleetId]);\n}\n","'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 { useFocusReport } from '../hooks/use-focus-report';\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\n\n/** Keeps the page it sits in live, and tells the gateway while it is in focus (wake a person, W6): it shows nothing itself. */\nexport function LiveRefresh({ fleetId }: { fleetId: string }) {\n useLiveRefresh(fleetId);\n useFocusReport(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":["FOCUS_PATH","useFocusReport","fleetId","focus","report","isInFocus","document","visibilityState","hasFocus","undefined","EventSource","encodeURIComponent","close","window","addEventListener","removeEventListener","VARIANTS","primary","secondary","ActionButton","isPending","pendingLabel","variant","children","className","disabled","button"],"mappings":"6CAEA,IAAA,EAAA,EAAA,CAAA,CAAA,OCAA,EAAA,EAAA,CAAA,CAAA,4BCIO,SAAS,AAAY,SAAE,CAAO,CAAuB,QAG1D,ODKM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IACxB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAM,EAAU,IAAI,YAAY,GAAG,aAAa,OAAO,IAAE,mBAAmB,ACT/D,IDSyE,EAItF,OAHA,EAAQ,SAAS,CAAG,KAClB,EAAO,OAAO,EAChB,EACO,KACL,EAAQ,KAAK,EACf,CACFO,EAAG,GAAU,EAAO,EDRpB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KAER,IADIJ,EACEC,EAAS,KACb,IAAMC,EAAyC,YAA7BC,SAASC,eAAe,EAAkBD,SAASE,QAAQ,EACzEH,SAAuBI,IAAVN,EACfA,EAAQ,GAD4B,CACxBO,YAAY,GAAGV,WAAW,OAAO,IAAEW,mBAAmBT,IAAU,EAClEG,QAAuBI,IAAVN,IACvBA,EAAMS,CADsC,IACjC,GACXT,OAAQM,EAEZ,EAKA,OAJAL,IACAS,OAAOC,gBAAgB,CAAC,QAASV,GACjCS,OAAOC,gBAAgB,CAAC,OAAQV,GAChCE,SAASQ,gBAAgB,CAAC,mBAAoBV,GACvC,KACLS,OAAOE,mBAAmB,CAAC,QAASX,GACpCS,OAAOE,mBAAmB,CAAC,OAAQX,GACnCE,SAASS,mBAAmB,CAAC,mBAAoBX,GACjDD,GAAOS,OACT,CACF,EAAG,CE5BY,EF4BH,EE3BL,IACT,2CCRA,IAAMI,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,SAAS,AAAO,SAAE,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"}
|
|
@@ -1,3 +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(
|
|
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(29493),i=a.i(54757),i=i,j=a.i(27221),k=a.i(26972),l=i,m=a.i(89963),n=i,o=i;let p=i.int().min(1),q=j.z.string().min(1),r=k.z.object({key:p,label:q,detail:j.z.string().default("")}),s=k.z.object({id:l.uuid(),title:q,context:j.z.string(),options:m.z.array(r).min(1),pick:k.z.object({option:p,why:q})}).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"]});k.z.object({questionId:l.uuid()}),k.z.object({questionId:l.uuid(),question:s}).refine(({questionId:a,question:b})=>b.id!==a,{message:"The new question has a uuid of its own",path:["question","id"]}),n.union([k.z.object({option:p,note:q.optional()}),k.z.object({note:q})]);let t=n.union([k.z.object({questionId:l.uuid(),option:p,note:q.optional()}),k.z.object({questionId:l.uuid(),note:q})]),u=k.z.object({messageId:(0,c.f)("message"),sentAt:o.iso.datetime(),option:p.nullable(),note:j.z.string().nullable()});k.z.object({id:l.uuid(),title:j.z.string(),context:j.z.string(),options:m.z.array(r),pick:k.z.object({option:p,why:j.z.string()}),answer:u.nullable()});var v=a.i(11393),w=a.i(10351);async function x(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:`${w.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)(w.K),c}async function y(a,b){return x(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=s.safeParse(JSON.parse(a.payload));return b.success?b.data:void 0}catch{return}}({contentType:c,payload:d})}})}async function z({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=t.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?x(a,async a=>{await a.people.answer.mutate({deliveryId:b,...d.value})}):d}async function A(a,b){return x(a,async a=>{await a.people.done.mutate({deliveryId:b})})}async function B(a,b){return x(a,async a=>{await a.people.turnEmail.mutate({isOn:b})})}async function C(a,b){return x(a,async a=>{await a.people.turnOnWebPush.mutate({endpoint:b.endpoint,keys:{p256dh:b.keys.p256dh,auth:b.keys.auth},browser:b.browser})})}async function D(a,b){return x(a,async a=>{await a.people.turnOffWebPush.mutate({endpoint:b})})}async function E({fleet:a,requestId:b,input:d}){if("deny"===d.kind)return x(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([...v._,...d.scopes])]},{server:g}=d,i=void 0===g?void 0:(0,h.y)(g);return x(a,async a=>{await a.requests.decide.mutate({requestId:b,decision:{kind:"approve",party:f,...void 0===g||void 0===i?{}:{server:{credential:i,concurrencyLimit:g.concurrencyLimit}}}})})}(0,a.i(13095).ensureServerEntryExports)([y,z,A,B,C,D,E]),(0,b.registerServerReference)(y,"60813b25998f3aa5040c7138940db92bf5b1bba1ae",null),(0,b.registerServerReference)(z,"4094bd2603f6cb4c692f8c5bbc35b6dfa0e2cd78a8",null),(0,b.registerServerReference)(A,"6014a23e56a6300e1adee24bc60d3989cf9a3ffcaa",null),(0,b.registerServerReference)(B,"60b48f9537cbc087081a7c9cb59da4be205bfeabdd",null),(0,b.registerServerReference)(C,"60da3873bc1544318b9ef24fd1e90ef1716e80cdd3",null),(0,b.registerServerReference)(D,"60aac98a56e7babd7b75c679560c72a3ef6741a3b7",null),(0,b.registerServerReference)(E,"4084bf9f28c49a623dd2f7cf9c1254bb378e2b87bf",null),a.s(["q",0,z,"Q",0,E,"G",0,A,"v",0,y,"_",0,B,"W",0,D,"y",0,C],4757)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map
|
|
@@ -1 +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":"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","ignoreList":[0]}
|
|
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 { serverCredentialOf } from '../../forms/server-credential';\nimport { answerOf, questionOf, type AnswerInput, type FocusedDelivery } from '../services/deliveries';\nimport type { SubscriptionInput } from '../services/web-push';\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/** Turns email on or off, to be woken when something waits for the person's own ship (wake a person, W8). */\nexport async function turnEmail(fleet: string, isOn: boolean): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnEmail.mutate({ isOn });\n return undefined;\n });\n}\n\n/** Turns web push on for the browser that subscribed (wake a person, W8). */\nexport async function turnOnWebPush(fleet: string, subscription: SubscriptionInput): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnOnWebPush.mutate({ endpoint: subscription.endpoint, keys: { p256dh: subscription.keys.p256dh, auth: subscription.keys.auth }, browser: subscription.browser });\n return undefined;\n });\n}\n\n/** Removes a browser the person turned web push on in. */\nexport async function turnOffWebPush(fleet: string, endpoint: string): Promise<ActionOutcome<undefined>> {\n return attempt(fleet, async (api) => {\n await api.people.turnOffWebPush.mutate({ endpoint });\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 = server === undefined ? undefined : serverCredentialOf(server);\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/** The channels that wake a person when something waits for their person ship, as the API shows them (wake a person, W8). */\nexport type WakeChannels = inferRouterOutputs<GatewayRouter>['people']['wakeChannels'];\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,OACA,EAAA,EAAA,CAAA,CAAA,sDDfA,EAAwB,CAAjB,CAAiB,CAAf,AAAe,CAAd,AAAc,EAAZ,MAAM,KAAK,CAAC,CA4CxB,IAAM,EAAkB,CAAC,CAAA,GAAI,EAAE,CAAC,GAAA,CAHhC,AAGoC,GAE9B,EAAa,EAAA,CAAC,CAAC,IAAL,EAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,AAG/B,EAAA,EAAA,CAAgB,CAAC,MAAM,CAAC,CAAE,GAAG,CAAE,EAAiB,MAAO,EAAY,MAAM,CAAE,EAAA,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,AAG9F,EAAiB,EAAA,CAAC,CAC5B,MAAA,CAAO,CACN,AAFuB,EAErB,CAAE,CAAC,CAAC,IAAI,EAAE,CACZ,MAAO,UACE,EAAA,CAAC,CAAC,MAAM,EAAE,CACnB,QAAS,EAAA,CAAC,CAAC,KAAK,CAAC,GAAc,GAAG,CAAC,CAAC,CAAC,MAC/B,EAAA,CAAA,CAAE,MAAM,CAAC,QAAU,EAAiB,GAAG,CAAE,CAAU,CAAE,CAAC,CAC7D,EACA,MAAM,CAAC,CAAC,SAAE,CAAO,CAAE,EAAE,CAAG,CAAD,GAAK,GAAG,CAAC,EAAQ,GAAG,CAAC,CAAC,AAAN,KAAQ,CAAG,CAAE,EAAE,CAAG,CAAD,EAAI,CAAC,AAAE,CAAD,GAAK,GAAK,EAAQ,KAAD,CAAO,CAAE,CACvF,OAAO,CAAE,iCAAiC,CAC1C,KAAM,CAAC,SAAS,CAAC,CAClB,EACA,MAAM,CAAC,CAAC,SAAE,CAAO,MAAE,CAAI,CAAE,EAAE,CAAG,CAAD,CAAS,IAAI,CAAL,AAAM,CAAC,KAAE,CAAG,CAAE,EAAE,CAAG,CAAD,EAAI,CAAK,EAAK,EAAD,IAAO,CAAC,CAAE,SACpE,oCACT,KAAM,CAAC,OAAQ,SAAS,CACzB,EAK6B,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,AAGlC,EAAA,CAAC,CAC/B,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC,IAAI,EAAE,CAAE,QAAQ,CAAE,CAAc,CAAE,CAAC,CAC1D,MAAM,CAAC,CAAC,EAD+C,UAC7C,CAAU,UAAE,CAAA,CAAU,EAAE,CAAG,CAAD,CAAU,EAAE,GAAK,EAAY,CAChE,QAAS,+CACF,WAAY,KAAK,CACzB,CAAC,CAG8B,AAH7B,CAG8B,CAAC,KAAK,CAAC,CACxC,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,MAAM,CAAE,EAAiB,IAAI,CAAE,EAAW,MAAnB,EAAkB,AAAS,EAAE,CAAE,CAAC,CAClE,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,IAAI,CAAE,CAAU,CAAE,CAAC,CAC/B,CAAC,CAAC,AAKI,IAAM,AANgB,EAMD,CAAC,CAAA,KAAM,CAAC,IACjC,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,CAAC,CAKW,AALV,EAK8B,EAAA,AANkB,CAMjB,CAAC,MAAM,CAAC,CACxC,GAD4B,OACjB,CAAA,EAAA,EAAA,CAAQ,AAAR,EAAS,SAAS,CAAC,CAC9B,OAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CACxB,OAAQ,EAAgB,QAAQ,EAAE,MAC5B,EAAA,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAC5B,EAGkC,EAAA,CAAC,CAAC,MAAM,CAAC,CAC1C,EAAE,CAAE,CAAC,CAAC,IAAI,EAAE,CACZ,MAAO,EAAA,CAAC,CAAC,MAAM,EAAE,CACjB,QAAS,EAAA,CAAC,CAAC,MAAM,EAAE,CACnB,QAAS,EAAA,CAAA,CAAE,KAAA,CAAA,QACL,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,GC/FtC,ED+F2B,EC/F3B,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,GAAI,AAAS,gBAAgB,GAC3B,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,QAAS,KAAS,MAb1B,MAasC,8CAAY,CAAA,EAAA,EAAA,CAAA,AAAgB,EAAC,EAAO,CAC1F,CAEA,MADA,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,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,SAAU,ACbnC,SAAS,AAAW,CAAgD,EACzE,GFpBmC,AAY5B,CEQH,CAAC,QFRY,WAAW,CAAC,KAAK,WAZuC,CAAC,EAM5E,OAMyD,CAAC,CANjD,AAAU,CAAmB,EACpC,GAAM,CAAC,EADS,AACC,EAAE,CAAC,CAAG,CAAT,CAAqB,KAAK,CAAC,GAAG,AAAV,CAAW,CAAC,AAC9C,OAAO,EAAQ,IAAI,CAAL,CAAO,CAAC,WAAW,EAAE,AACrC,CADsC,AACrC,CEW4B,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,EDK0C,aAAE,UAAa,CAAQ,EAAG,CAC7E,EACF,CAEO,eAAe,EAAe,OAAE,CAAK,YAAE,CAAU,OAAE,CAAK,CAA6D,EAC1H,IAAM,EAAS,ACEV,SAAkB,AAAT,CAA2B,EACzC,IAAM,EAAO,EAAM,IAAI,CAAC,IAAI,GAC5B,GAAyB,SAArB,EAAM,AAA0B,UAAhB,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,YF5Cd,CE4C2B,mCF5CS,CAAC,AE4CW,QAAS,KAAK,SAAS,CAAC,EAAO,IAAI,CAAE,CAAE,EAAI,CAAE,MAAM,EAAO,QAAS,gCAAiC,CACvL,EDT0B,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,EAAU,CAAa,CAAE,CAAa,EAC1D,OAAO,EAAQ,EAAO,MAAO,IAC3B,MAAM,EAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAE,CAAK,EAE3C,EACF,CAGO,eAAe,EAAc,CAAa,CAAE,CAA+B,EAChF,OAAO,EAAQ,EAAO,MAAO,IAC3B,MAAM,EAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAE,SAAU,EAAa,QAAQ,CAAE,KAAM,CAAE,OAAQ,EAAa,IAAI,CAAC,MAAM,CAAE,KAAM,EAAa,IAAI,CAAC,IAAI,AAAC,EAAG,QAAS,EAAa,OAAO,AAAC,EAEnL,EACF,CAGO,eAAe,EAAe,CAAa,CAAE,CAAgB,EAClE,OAAO,EAAQ,EAAO,MAAO,IAC3B,MAAM,EAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,UAAE,CAAS,EAEpD,EACF,CAGO,eAAe,EAAc,OAAE,CAAK,WAAE,CAAS,OAAE,CAAK,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,CAAQ,AAAR,EAAS,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,EAAa,KAAW,WAAY,EAAY,CAAA,EAAA,EAAA,CAAA,AAAkB,EAAC,GACzE,OAAO,EAAQ,EAAO,MAAO,IAC3B,MAAM,EAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAE,EAAW,SAAU,CAAE,KAAM,gBAAW,EAAO,QAAe,IAAX,QAAuC,IAAf,EAA2B,CAAC,EAAI,CAAE,OAAQ,YAAE,EAAY,iBAAkB,EAAO,gBAAgB,AAAC,CAAE,CAAC,AAAE,CAAE,EAEzN,EACF,0CArEsB,EAQA,EAWA,EAQA,EAQA,EAQA,EAQA,IAnDA,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,MAQA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAQA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAQA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA","ignoreList":[0]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[72839,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("4094bd2603f6cb4c692f8c5bbc35b6dfa0e2cd78a8",d.callServer,void 0,d.findSourceMapURL,"answerDelivery"),f=(0,d.createServerReference)("6014a23e56a6300e1adee24bc60d3989cf9a3ffcaa",d.callServer,void 0,d.findSourceMapURL,"doneDelivery"),g=(0,d.createServerReference)("60813b25998f3aa5040c7138940db92bf5b1bba1ae",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)},50850,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("60b48f9537cbc087081a7c9cb59da4be205bfeabdd",d.callServer,void 0,d.findSourceMapURL,"turnEmail");var f=a.i(1542),g=a.i(24229);let h=(0,d.createServerReference)("60aac98a56e7babd7b75c679560c72a3ef6741a3b7",d.callServer,void 0,d.findSourceMapURL,"turnOffWebPush"),i=(0,d.createServerReference)("60da3873bc1544318b9ef24fd1e90ef1716e80cdd3",d.callServer,void 0,d.findSourceMapURL,"turnOnWebPush"),j=[[/Edg\//,"Edge"],[/Firefox\//,"Firefox"],[/Chrome\//,"Chrome"],[/Safari\//,"Safari"]],k=[[/iPhone|iPad/,"iOS"],[/Android/,"Android"],[/Mac OS X/,"macOS"],[/Windows/,"Windows"],[/Linux/,"Linux"]],l=(a,b)=>b.find(([b])=>b.test(a))?.[1],m="/wake-worker.js";async function n(){let a=await navigator.serviceWorker.getRegistration(m);return await a?.pushManager.getSubscription()??null}async function o(a){let b;if(await Notification.requestPermission()!=="granted")return{isOk:!1,message:"Your browser did not allow notifications from this site: allow them, then turn web push on again"};let c=await navigator.serviceWorker.register(m);return await navigator.serviceWorker.ready,{isOk:!0,value:await c.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:(b=atob(a.replaceAll("-","+").replaceAll("_","/")),Uint8Array.from(b,a=>a.charCodeAt(0)))})}}function p({fleetId:a,webPushKey:d,browsers:e}){let[m,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(),[t,u]=(0,c.useState)(),[v,w]=(0,c.useState)(),[,x]=(0,c.useTransition)();(0,c.useEffect)(()=>{"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window?n().then(a=>{s(a?.endpoint)}):q(!1)},[]);let y=void 0!==r&&e.some(({endpoint:a,isGone:b})=>a===r&&!b);return(0,b.jsxs)("div",{className:"grid gap-2","data-testid":"overview-wake-web-push",children:[e.map(({endpoint:c,browser:d,addedAt:e,isGone:g})=>(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsxs)("span",{className:"truncate",children:["Web push in ",d,c===r?" · this browser":""]}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:g?"No longer takes wakes: its push service ended them. Turn web push on again in that browser, or remove it.":`On since ${new Date(e).toLocaleDateString()}: it tells you when something waits in this fleet, with a link here. Never what waits.`})]}),(0,b.jsx)(f.f,{"data-testid":"overview-web-push-remove",isPending:t===c,pendingLabel:"Removing...",disabled:void 0!==t,onClick:()=>{u(c),w(void 0),x(async()=>{c===r&&(await (await n())?.unsubscribe(),s(void 0));let b=await h(a,c);u(void 0),b.isOk||w(b.message)})},children:"Remove"})]},c)),m?y?null:(0,b.jsx)("div",{children:(0,b.jsx)(f.f,{"data-testid":"overview-web-push-on",variant:"primary",isPending:"on"===t,pendingLabel:"Turning on...",disabled:void 0!==t,onClick:()=>{u("on"),w(void 0),x(async()=>{try{var b;let c,e,f=await o(d);if(!f.isOk)return void w(f.message);let g=function(a,b){let{endpoint:c,keys:d}=a,e=d?.p256dh,f=d?.auth;return void 0===c||void 0===e||void 0===f?void 0:{endpoint:c,keys:{p256dh:e,auth:f},browser:b}}(f.value.toJSON(),(b=navigator.userAgent,c=l(b,j),e=l(b,k),void 0===c?"A browser":void 0===e?c:`${c} on ${e}`));if(void 0===g)return void w("Your browser gave no push subscription: try again");let h=await i(a,g);h.isOk?s(g.endpoint):w(h.message)}catch{w("Your browser could not turn web push on: try again")}finally{u(void 0)}})},children:"Turn on web push in this browser"})}):(0,b.jsx)("p",{className:"text-caption text-muted-foreground",children:"This browser takes no web push."}),void 0===v?null:(0,b.jsx)(g.f,{message:v,isFailure:!0})]})}a.s(["WakePanel",0,function({fleetId:a,channels:d}){let[h,i]=(0,c.useTransition)(),[j,k]=(0,c.useState)(),{email:l,webPush:m}=d;return l.isOffered||null!==m.publicKey?(0,b.jsxs)("section",{className:"grid gap-2","aria-labelledby":"overview-wake-heading",children:[(0,b.jsx)("h2",{id:"overview-wake-heading",className:"text-section font-semibold",children:"When something waits"}),l.isOffered?(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border bg-card p-3",children:[(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{children:"Email"}),(0,b.jsx)("span",{"data-testid":"overview-wake-email-state",className:"text-caption text-muted-foreground",children:l.isOn?"On: you get an email when something waits for you in this fleet, with a link here. Never what waits.":"Off: nothing tells you when something waits while you are away."})]}),(0,b.jsx)(f.f,{"data-testid":"overview-wake-email",isPending:h,pendingLabel:l.isOn?"Turning off...":"Turning on...",onClick:()=>{var b;b=!l.isOn,k(void 0),i(async()=>{let c=await e(a,b);c.isOk||k(c.message)})},children:l.isOn?"Turn off":"Turn on"})]}):null,void 0===j?null:(0,b.jsx)(g.f,{message:j,isFailure:!0}),null===m.publicKey?null:(0,b.jsx)(p,{fleetId:a,webPushKey:m.publicKey,browsers:m.browsers})]}):null}],50850)}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=web_features_overview_state_1wuk95dw2_whp._.js.map
|