@aeolus-fleet/gateway 0.29.2 → 0.31.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/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 +4 -2
- package/dist/adapters/fleet/rest-fleet-door.js +65 -6
- 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/http/person-tools.d.ts +4 -7
- package/dist/adapters/http/person-tools.js +75 -10
- package/dist/adapters/http/person-tools.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 +460 -9
- package/dist/adapters/trpc/router.js +269 -13
- 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 +277 -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/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/meetings/change-own-mic.d.ts +24 -0
- package/dist/core/meetings/change-own-mic.js +21 -0
- package/dist/core/meetings/change-own-mic.js.map +1 -0
- package/dist/core/meetings/mic-standing.d.ts +18 -0
- package/dist/core/meetings/mic-standing.js +11 -0
- package/dist/core/meetings/mic-standing.js.map +1 -0
- package/dist/core/meetings/ports.d.ts +70 -0
- package/dist/core/meetings/ports.js +2 -0
- package/dist/core/meetings/ports.js.map +1 -0
- package/dist/core/meetings/read-meeting.d.ts +30 -0
- package/dist/core/meetings/read-meeting.js +26 -0
- package/dist/core/meetings/read-meeting.js.map +1 -0
- 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/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/inbox-entry.d.ts +2 -2
- package/dist/core/people/inbox-entry.js +9 -2
- package/dist/core/people/inbox-entry.js.map +1 -1
- package/dist/core/people/open-delivery.d.ts +6 -2
- package/dist/core/people/open-delivery.js +3 -1
- 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 +158 -5
- 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 +4 -0
- package/web/.next/build-manifest.json +39 -3
- package/web/.next/diagnostics/route-bundle-stats.json +91 -42
- 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 +26 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +21 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.map +5 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +24 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +10 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +22 -2
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js +8 -5
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +24 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +9 -6
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +26 -6
- package/web/.next/server/app/(console)/outside-parties/add/page.js +10 -5
- package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
- 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/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +20 -0
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.map +5 -0
- 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/react-loadable-manifest.json +1 -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.map +5 -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/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/page.js +3 -3
- package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/overview/changes/route.js +3 -2
- package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
- 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.map +5 -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/server-reference-manifest.json +34 -4
- package/web/.next/server/app/(console)/overview/page.js +5 -5
- package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js +2 -2
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/(console)/parties/page.js +2 -2
- package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page.js +3 -3
- package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
- 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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +4 -0
- 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/[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]__0k8jiujb_0xtx._.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 +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__12_to1hq55n1y._.js → [root-of-the-server]__0-og0bl8lr2xq._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__12_to1hq55n1y._.js.map → [root-of-the-server]__0-og0bl8lr2xq._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.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]__1yydhn6iokbm4._.js.map → [root-of-the-server]__07udzu2zwg_74._.js.map} +1 -1
- 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]__197il4swfpq1a._.js.map → [root-of-the-server]__0a68v9ynev4q6._.js.map} +1 -1
- 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]__1imel8atfb770._.js.map → [root-of-the-server]__0rr5u24i9tjyc._.js.map} +1 -1
- 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]__18-8taiduk1jn._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.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/_03lk54yp-yhw3._.js +2 -2
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.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/_0pyd1_y7w8ngp._.js +1 -1
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
- 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/_1_wav28san6dm._.js +4 -0
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.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_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_next_08hq6z46rczo0._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +1 -1
- 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_1bt2ioufqh6fl.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.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_09zipglxee7tv._.js +3 -0
- package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.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_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 +1 -1
- package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +1 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js.map +1 -1
- 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_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_1k6q2m0sl54-8._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.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_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_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.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_overview_ui_action-button_tsx_14-5f45xbzbi6._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_ui_action-button_tsx_14-5f45xbzbi6._.js.map +1 -0
- 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 -3
- package/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +12 -0
- 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 +150 -24
- package/web/.next/static/chunks/183mifyxtyab5.css +3 -0
- package/web/.next/static/chunks/1bnlc-p1_cm01.js +1 -0
- package/web/.next/static/chunks/1juj2_tl8d16x.js +1 -0
- package/web/.next/static/chunks/1jvae6c-4jwji.js +1 -0
- package/web/.next/static/chunks/1pafc2gfswboo.js +1 -0
- package/web/.next/static/chunks/2-t4g6oq6tjkg.js +1 -0
- package/web/.next/static/chunks/21s2_ccrw90ok.js +1 -0
- package/web/.next/static/chunks/2hsi-sahla2aj.js +1 -0
- package/web/.next/static/chunks/2l27ty2dy2pb4.js +1 -0
- package/web/.next/static/chunks/2n2qsek2y94y5.js +1 -0
- package/web/.next/static/chunks/3o8h4o3utbvgc.js +1 -0
- package/web/.next/static/chunks/3tss77vu57zju.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/routes.d.ts +6 -2
- package/web/.next/types/validator.ts +61 -0
- package/web/public/wake-worker.js +17 -0
- package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__0k8jiujb_0xtx._.js.map +0 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_10eg3jn_qq_u_.js +0 -3
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_10eg3jn_qq_u_.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]__0k-sy-ven9f2f._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-sy-ven9f2f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1imel8atfb770._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1rmy72sai5-kh._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1rmy72sai5-kh._.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]__1yydhn6iokbm4._.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/_080ao10j8x4km._.js +0 -4
- package/web/.next/server/chunks/ssr/_080ao10j8x4km._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1gb_kwx9jg1et._.js +0 -4
- package/web/.next/server/chunks/ssr/_1gb_kwx9jg1et._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1ulh8nd8_yv_3._.js +0 -4
- package/web/.next/server/chunks/ssr/_1ulh8nd8_yv_3._.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/web_06ue1l1ujajps._.js +0 -3
- package/web/.next/server/chunks/ssr/web_06ue1l1ujajps._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_1_rm1ivvp726s._.js +0 -3
- package/web/.next/server/chunks/ssr/web_1_rm1ivvp726s._.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_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/static/chunks/1l1gmjf-hz7u_.css +0 -3
- package/web/.next/static/chunks/1ma7v1viiz247.js +0 -1
- package/web/.next/static/chunks/1tfvu44eel7g5.js +0 -1
- package/web/.next/static/chunks/2bg4wnfhuftsq.js +0 -1
- package/web/.next/static/chunks/2yplpvvjibfqw.js +0 -1
- package/web/.next/static/chunks/34syicr_5c5u1.js +0 -1
- package/web/.next/static/chunks/43zbq11isnos4.js +0 -1
- /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/static/{ESz77-eaR5ViaU4LRqo0i → 3whgLnRJ9iJe_25h6KGzQ}/_buildManifest.js +0 -0
- /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → 3whgLnRJ9iJe_25h6KGzQ}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → 3whgLnRJ9iJe_25h6KGzQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ports of pushing an outside A2A client's task to its webhook (slice 4):
|
|
3
|
+
* where its push configs and the pushes still to make are kept, how a
|
|
4
|
+
* webhook's host resolves, how a push is POSTed, and how a task's change is
|
|
5
|
+
* written as the A2A events the webhook gets.
|
|
6
|
+
*/
|
|
7
|
+
import type { FleetId } from '@aeolus-fleet/common';
|
|
8
|
+
import type { Result } from '../shared/result.js';
|
|
9
|
+
import type { TaskView } from './task-view.js';
|
|
10
|
+
/** What the webhook is called with besides its URL: the config's token, and its authentication, kept in the vault. */
|
|
11
|
+
export interface WebhookCredentials {
|
|
12
|
+
token: string | null;
|
|
13
|
+
authentication: {
|
|
14
|
+
scheme: string;
|
|
15
|
+
credentials: string;
|
|
16
|
+
} | null;
|
|
17
|
+
}
|
|
18
|
+
/** A push config of an outside A2A client's task (TaskPushNotificationConfig): where and how each change of the task is pushed. */
|
|
19
|
+
export interface PushConfig extends WebhookCredentials {
|
|
20
|
+
fleetId: FleetId;
|
|
21
|
+
party: string;
|
|
22
|
+
taskId: string;
|
|
23
|
+
id: string;
|
|
24
|
+
url: string;
|
|
25
|
+
createdAt: Date;
|
|
26
|
+
/** The task as last noticed, as `markOf` tells it; changes are pushed from there. */
|
|
27
|
+
noticedMark: string;
|
|
28
|
+
/** Whether the task is still followed: once it ended, nothing more is noticed. */
|
|
29
|
+
isFollowing: boolean;
|
|
30
|
+
}
|
|
31
|
+
interface Caller {
|
|
32
|
+
fleetId: FleetId;
|
|
33
|
+
party: string;
|
|
34
|
+
}
|
|
35
|
+
interface ConfigKey {
|
|
36
|
+
taskId: string;
|
|
37
|
+
id: string;
|
|
38
|
+
}
|
|
39
|
+
export interface PushConfigs {
|
|
40
|
+
/** Keeps the config, in place of one of the same task and id. */
|
|
41
|
+
save(config: PushConfig): Promise<void>;
|
|
42
|
+
find(caller: Caller, key: ConfigKey): Promise<PushConfig | undefined>;
|
|
43
|
+
/** The task's configs, oldest first, at most the limit after the cursor; the cursor of the next page, none at the end. */
|
|
44
|
+
list(caller: Caller, page: {
|
|
45
|
+
taskId: string;
|
|
46
|
+
limit: number;
|
|
47
|
+
after?: string;
|
|
48
|
+
}): Promise<{
|
|
49
|
+
configs: PushConfig[];
|
|
50
|
+
next: string | null;
|
|
51
|
+
}>;
|
|
52
|
+
/** Removes the config and the pushes still to make for it: whether there was one. */
|
|
53
|
+
remove(caller: Caller, key: ConfigKey): Promise<boolean>;
|
|
54
|
+
/** The party's configs whose task is still followed. */
|
|
55
|
+
following(caller: Caller): Promise<PushConfig[]>;
|
|
56
|
+
/** In one unit of work: the change noticed on the config, and a push still to make for each event, in order. */
|
|
57
|
+
notice(caller: Caller, change: ConfigKey & {
|
|
58
|
+
mark: string;
|
|
59
|
+
isFollowing: boolean;
|
|
60
|
+
events: string[];
|
|
61
|
+
at: Date;
|
|
62
|
+
}): Promise<void>;
|
|
63
|
+
}
|
|
64
|
+
/** A push still to make: one event of a config's task, POSTed to its webhook. */
|
|
65
|
+
export interface Push {
|
|
66
|
+
pushId: string;
|
|
67
|
+
config: PushConfig;
|
|
68
|
+
/** The event as the webhook gets it: A2A JSON. */
|
|
69
|
+
body: string;
|
|
70
|
+
/** How many times it was POSTed already. */
|
|
71
|
+
attempts: number;
|
|
72
|
+
}
|
|
73
|
+
export interface Pushes {
|
|
74
|
+
/** The party's pushes due now: per config, its oldest still to make, once its time came; at most the limit. */
|
|
75
|
+
due(caller: Caller, page: {
|
|
76
|
+
now: Date;
|
|
77
|
+
limit: number;
|
|
78
|
+
}): Promise<Push[]>;
|
|
79
|
+
delivered(caller: Caller, push: {
|
|
80
|
+
pushId: string;
|
|
81
|
+
attempts: number;
|
|
82
|
+
at: Date;
|
|
83
|
+
}): Promise<void>;
|
|
84
|
+
/** Another attempt at the time given, after the attempts made. */
|
|
85
|
+
again(caller: Caller, push: {
|
|
86
|
+
pushId: string;
|
|
87
|
+
attempts: number;
|
|
88
|
+
at: Date;
|
|
89
|
+
}): Promise<void>;
|
|
90
|
+
/** No attempt more, with why. */
|
|
91
|
+
givenUp(caller: Caller, push: {
|
|
92
|
+
pushId: string;
|
|
93
|
+
attempts: number;
|
|
94
|
+
reason: string;
|
|
95
|
+
at: Date;
|
|
96
|
+
}): Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
export interface HostResolver {
|
|
99
|
+
/** The addresses a host resolves to; none when it does not resolve. */
|
|
100
|
+
addressesOf(host: string): Promise<string[]>;
|
|
101
|
+
}
|
|
102
|
+
/** Why a POST got no answer: the host resolved to an address the webhook is not reached at, or nothing answered. */
|
|
103
|
+
export type PostFailure = {
|
|
104
|
+
kind: 'ADDRESS_REFUSED';
|
|
105
|
+
} | {
|
|
106
|
+
kind: 'UNREACHABLE';
|
|
107
|
+
message: string;
|
|
108
|
+
};
|
|
109
|
+
export interface WebhookPoster {
|
|
110
|
+
/** POSTs the body as JSON to the URL with the credentials, connecting only to a public address: the HTTP status it answered. */
|
|
111
|
+
post(url: string, push: {
|
|
112
|
+
body: string;
|
|
113
|
+
} & WebhookCredentials): Promise<Result<{
|
|
114
|
+
status: number;
|
|
115
|
+
}, PostFailure>>;
|
|
116
|
+
}
|
|
117
|
+
export interface PushEvents {
|
|
118
|
+
/** The events a webhook gets for the task as it stands now, as A2A JSON: a new artifact first, then the status. */
|
|
119
|
+
eventsOf(view: TaskView): string[];
|
|
120
|
+
}
|
|
121
|
+
export interface PushConfigIds {
|
|
122
|
+
newId(): string;
|
|
123
|
+
}
|
|
124
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/core/a2a-in/ports.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PushConfig } from './ports.js';
|
|
2
|
+
/** A push config as its client reads it back: never its token or authentication, which stay in the vault. */
|
|
3
|
+
export interface PushConfigView {
|
|
4
|
+
taskId: string;
|
|
5
|
+
id: string;
|
|
6
|
+
url: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const pushConfigViewOf: (config: PushConfig) => PushConfigView;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-config-view.js","sourceRoot":"","sources":["../../../src/core/a2a-in/push-config-view.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Sleep } from '../mcp-out/run-party.js';
|
|
2
|
+
import type { A2aCaller } from './authenticate-a2a-client.js';
|
|
3
|
+
import type { DeliverPushes } from './deliver-pushes.js';
|
|
4
|
+
import type { NoticeTaskChanges } from './notice-task-changes.js';
|
|
5
|
+
export type PushToWebhooks = (input: {
|
|
6
|
+
caller: A2aCaller;
|
|
7
|
+
signal: AbortSignal;
|
|
8
|
+
}) => Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Use case: an outside A2A client's pushes, round after round until stopped (slice 4): its tasks' changes noticed, then the pushes due delivered.
|
|
11
|
+
* A failure of the gateway's own (its database) is reported and the round is tried again after the poll: what was kept stays kept.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createPushToWebhooks(deps: {
|
|
14
|
+
notice: NoticeTaskChanges;
|
|
15
|
+
deliver: DeliverPushes;
|
|
16
|
+
sleep: Sleep;
|
|
17
|
+
pollMs: number;
|
|
18
|
+
failed: (error: unknown) => void;
|
|
19
|
+
}): PushToWebhooks;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use case: an outside A2A client's pushes, round after round until stopped (slice 4): its tasks' changes noticed, then the pushes due delivered.
|
|
3
|
+
* A failure of the gateway's own (its database) is reported and the round is tried again after the poll: what was kept stays kept.
|
|
4
|
+
*/
|
|
5
|
+
export function createPushToWebhooks(deps) {
|
|
6
|
+
return async ({ caller, signal }) => {
|
|
7
|
+
while (!signal.aborted) {
|
|
8
|
+
try {
|
|
9
|
+
await deps.notice(caller);
|
|
10
|
+
await deps.deliver(caller);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
deps.failed(error);
|
|
14
|
+
}
|
|
15
|
+
await deps.sleep(deps.pollMs, signal);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=push-to-webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-to-webhooks.js","sourceRoot":"","sources":["../../../src/core/a2a-in/push-to-webhooks.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA2H;IAC9J,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ClientCalls } from '../mcp-in/ports.js';
|
|
2
|
+
import type { Clock } from '../shared/clock.js';
|
|
3
|
+
import { type DomainError } from '../shared/errors.js';
|
|
4
|
+
import { type Result } from '../shared/result.js';
|
|
5
|
+
import type { A2aCaller } from './authenticate-a2a-client.js';
|
|
6
|
+
import { type TaskView } from './task-view.js';
|
|
7
|
+
export type ReadA2aTask = (caller: A2aCaller, taskId: string) => Promise<Result<TaskView, DomainError<'TASK_NOT_FOUND'>>>;
|
|
8
|
+
/** Use case: an outside A2A client reads one of its own tasks as it stands (GetTask); another party's is not found. */
|
|
9
|
+
export declare function createReadA2aTask(deps: {
|
|
10
|
+
calls: Pick<ClientCalls, 'findTask'>;
|
|
11
|
+
clock: Clock;
|
|
12
|
+
}): ReadA2aTask;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
import { taskViewOf } from './task-view.js';
|
|
4
|
+
/** Use case: an outside A2A client reads one of its own tasks as it stands (GetTask); another party's is not found. */
|
|
5
|
+
export function createReadA2aTask(deps) {
|
|
6
|
+
return async (caller, taskId) => {
|
|
7
|
+
const task = await deps.calls.findTask(caller, taskId);
|
|
8
|
+
return task === undefined ? refuse('TASK_NOT_FOUND', `No task ${taskId}`) : ok(taskViewOf(task, deps.clock.now()));
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=read-a2a-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-a2a-task.js","sourceRoot":"","sources":["../../../src/core/a2a-in/read-a2a-task.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AAI3D,uHAAuH;AACvH,MAAM,UAAU,iBAAiB,CAAC,IAA4D;IAC5F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ClientCalls } from '../mcp-in/ports.js';
|
|
2
|
+
import { type DomainError } from '../shared/errors.js';
|
|
3
|
+
import { type Result } from '../shared/result.js';
|
|
4
|
+
import type { A2aCaller } from './authenticate-a2a-client.js';
|
|
5
|
+
import type { PushConfigs } from './ports.js';
|
|
6
|
+
import { type PushConfigView } from './push-config-view.js';
|
|
7
|
+
export type ReadPushConfig = (input: {
|
|
8
|
+
caller: A2aCaller;
|
|
9
|
+
taskId: string;
|
|
10
|
+
id: string;
|
|
11
|
+
}) => Promise<Result<PushConfigView, DomainError<'TASK_NOT_FOUND' | 'PUSH_CONFIG_NOT_FOUND'>>>;
|
|
12
|
+
/** Use case: an outside A2A client reads a push config of one of its own tasks (GetTaskPushNotificationConfig, slice 4), without its credentials. */
|
|
13
|
+
export declare function createReadPushConfig(deps: {
|
|
14
|
+
calls: Pick<ClientCalls, 'findTask'>;
|
|
15
|
+
configs: Pick<PushConfigs, 'find'>;
|
|
16
|
+
}): ReadPushConfig;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
import { pushConfigViewOf } from './push-config-view.js';
|
|
4
|
+
/** Use case: an outside A2A client reads a push config of one of its own tasks (GetTaskPushNotificationConfig, slice 4), without its credentials. */
|
|
5
|
+
export function createReadPushConfig(deps) {
|
|
6
|
+
return async ({ caller, taskId, id }) => {
|
|
7
|
+
if ((await deps.calls.findTask(caller, taskId)) === undefined) {
|
|
8
|
+
return refuse('TASK_NOT_FOUND', `No task ${taskId}`);
|
|
9
|
+
}
|
|
10
|
+
const config = await deps.configs.find(caller, { taskId, id });
|
|
11
|
+
return config === undefined ? refuse('PUSH_CONFIG_NOT_FOUND', `No push config ${id} on the task ${taskId}`) : ok(pushConfigViewOf(config));
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=read-push-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-push-config.js","sourceRoot":"","sources":["../../../src/core/a2a-in/read-push-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAuB,MAAM,uBAAuB,CAAC;AAI9E,qJAAqJ;AACrJ,MAAM,UAAU,oBAAoB,CAAC,IAAkF;IACrH,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,EAAE,gBAAgB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7I,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ClientCalls } from '../mcp-in/ports.js';
|
|
2
|
+
import { type DomainError } from '../shared/errors.js';
|
|
3
|
+
import { type Result } from '../shared/result.js';
|
|
4
|
+
import type { A2aCaller } from './authenticate-a2a-client.js';
|
|
5
|
+
import type { PushConfigs } from './ports.js';
|
|
6
|
+
export type RemovePushConfig = (input: {
|
|
7
|
+
caller: A2aCaller;
|
|
8
|
+
taskId: string;
|
|
9
|
+
id: string;
|
|
10
|
+
}) => Promise<Result<undefined, DomainError<'TASK_NOT_FOUND'>>>;
|
|
11
|
+
/** Use case: an outside A2A client removes a push config of one of its own tasks (DeleteTaskPushNotificationConfig, slice 4), and the pushes still to make for it. Removing one no longer there succeeds, so a delete sent again does. */
|
|
12
|
+
export declare function createRemovePushConfig(deps: {
|
|
13
|
+
calls: Pick<ClientCalls, 'findTask'>;
|
|
14
|
+
configs: Pick<PushConfigs, 'remove'>;
|
|
15
|
+
}): RemovePushConfig;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
/** Use case: an outside A2A client removes a push config of one of its own tasks (DeleteTaskPushNotificationConfig, slice 4), and the pushes still to make for it. Removing one no longer there succeeds, so a delete sent again does. */
|
|
4
|
+
export function createRemovePushConfig(deps) {
|
|
5
|
+
return async ({ caller, taskId, id }) => {
|
|
6
|
+
if ((await deps.calls.findTask(caller, taskId)) === undefined) {
|
|
7
|
+
return refuse('TASK_NOT_FOUND', `No task ${taskId}`);
|
|
8
|
+
}
|
|
9
|
+
await deps.configs.remove(caller, { taskId, id });
|
|
10
|
+
return ok(undefined);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=remove-push-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-push-config.js","sourceRoot":"","sources":["../../../src/core/a2a-in/remove-push-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAMtD,0OAA0O;AAC1O,MAAM,UAAU,sBAAsB,CAAC,IAAoF;IACzH,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CallKeys, CallSender, ClientCalls } from '../mcp-in/ports.js';
|
|
2
|
+
import type { Sleep } from '../mcp-out/run-party.js';
|
|
3
|
+
import type { PartyStore } from '../parties/ports.js';
|
|
4
|
+
import type { Clock } from '../shared/clock.js';
|
|
5
|
+
import { type DomainError } from '../shared/errors.js';
|
|
6
|
+
import { type Result } from '../shared/result.js';
|
|
7
|
+
import type { A2aCaller } from './authenticate-a2a-client.js';
|
|
8
|
+
import type { FindReachedShip, FindReachedShipRefusal } from './find-reached-ship.js';
|
|
9
|
+
import { type InboundMessage } from './inbound-message.js';
|
|
10
|
+
import { type TaskView } from './task-view.js';
|
|
11
|
+
/** The most a payload holds (decision 0006). */
|
|
12
|
+
export declare const PAYLOAD_MAX_BYTES = 65536;
|
|
13
|
+
export type SendA2aMessageRefusal = FindReachedShipRefusal | DomainError<'PAYLOAD_TOO_LARGE' | 'TASK_NOT_FOUND' | 'TASK_TERMINAL' | 'CONTEXT_MISMATCH' | 'NOT_REACHABLE' | 'SEND_REFUSED'>;
|
|
14
|
+
export type SendA2aMessage = (input: {
|
|
15
|
+
caller: A2aCaller;
|
|
16
|
+
alias: string;
|
|
17
|
+
message: InboundMessage;
|
|
18
|
+
isBlocking: boolean;
|
|
19
|
+
}) => Promise<Result<TaskView, SendA2aMessageRefusal>>;
|
|
20
|
+
interface SendA2aMessageDeps {
|
|
21
|
+
parties: Pick<PartyStore, 'find'>;
|
|
22
|
+
findReachedShip: FindReachedShip;
|
|
23
|
+
sender: CallSender;
|
|
24
|
+
calls: ClientCalls;
|
|
25
|
+
keys: CallKeys;
|
|
26
|
+
clock: Clock;
|
|
27
|
+
sleep: Sleep;
|
|
28
|
+
/** The most a send waits for its answer, whatever its capability states. */
|
|
29
|
+
waitMaxMs: number;
|
|
30
|
+
/** How often it reads the task while it waits. */
|
|
31
|
+
waitPollMs: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function createSendA2aMessage(deps: SendA2aMessageDeps): SendA2aMessage;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
import { capabilityFor, contentOf } from './inbound-message.js';
|
|
4
|
+
import { isTerminal, taskViewOf } from './task-view.js';
|
|
5
|
+
/** The most a payload holds (decision 0006). */
|
|
6
|
+
export const PAYLOAD_MAX_BYTES = 65_536;
|
|
7
|
+
/** No signal ends a wait early: it is bounded by its own time. */
|
|
8
|
+
const UNENDING = new AbortController().signal;
|
|
9
|
+
function refusalOf(refused) {
|
|
10
|
+
switch (refused.code) {
|
|
11
|
+
// No reason why, and no ship named: the fleet's network rules are not the outside's to read.
|
|
12
|
+
case 'NOT_REACHABLE':
|
|
13
|
+
return refuse('NOT_REACHABLE', 'This client may not send to this agent now');
|
|
14
|
+
case 'UNAVAILABLE':
|
|
15
|
+
return refuse('FLEET_UNAVAILABLE', 'The message was not answered, so it may have been sent: send it again with the same messageId to send it at most once');
|
|
16
|
+
default:
|
|
17
|
+
return refuse('SEND_REFUSED', 'The message was refused');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** The message the follow-up replies to: the task's latest reply, or its latest message while none came. */
|
|
21
|
+
function inReplyToOf(task) {
|
|
22
|
+
const replies = task.calls.flatMap((call) => call.replies).sort((left, right) => left.receivedAt.getTime() - right.receivedAt.getTime());
|
|
23
|
+
return replies.at(-1)?.messageId ?? task.calls.at(-1)?.messageId;
|
|
24
|
+
}
|
|
25
|
+
export function createSendA2aMessage(deps) {
|
|
26
|
+
/** The task as it stands once its answer came or the wait passed, read after each poll; it never sleeps past the wait's end. */
|
|
27
|
+
const answerWithin = async (sent) => {
|
|
28
|
+
const waitEnd = sent.since.getTime() + Math.min(sent.waitMs, deps.waitMaxMs);
|
|
29
|
+
for (;;) {
|
|
30
|
+
const task = await deps.calls.findTask(sent.caller, sent.taskId);
|
|
31
|
+
const view = task === undefined ? undefined : taskViewOf(task, deps.clock.now());
|
|
32
|
+
const left = waitEnd - deps.clock.now().getTime();
|
|
33
|
+
if (view === undefined || (view.status.state !== 'submitted' && view.status.state !== 'working') || left <= 0) {
|
|
34
|
+
return view;
|
|
35
|
+
}
|
|
36
|
+
await deps.sleep(Math.min(deps.waitPollMs, left), UNENDING);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
/** The task the message continues, if it names one: refused when it is not the caller's, not this ship's, ended, or of another context. */
|
|
40
|
+
const continued = async (caller, sent) => {
|
|
41
|
+
const { taskId, contextId } = sent.message;
|
|
42
|
+
if (taskId === undefined) {
|
|
43
|
+
return ok(undefined);
|
|
44
|
+
}
|
|
45
|
+
const task = await deps.calls.findTask(caller, taskId);
|
|
46
|
+
if (task === undefined || task.calls.at(-1)?.shipId !== sent.shipId) {
|
|
47
|
+
return refuse('TASK_NOT_FOUND', `No task ${taskId}`);
|
|
48
|
+
}
|
|
49
|
+
if (isTerminal(taskViewOf(task, deps.clock.now()))) {
|
|
50
|
+
return refuse('TASK_TERMINAL', `The task ${taskId} has ended: send a new message without its taskId`);
|
|
51
|
+
}
|
|
52
|
+
if (contextId !== undefined && contextId !== task.contextId) {
|
|
53
|
+
return refuse('CONTEXT_MISMATCH', `The task ${taskId} is in another context`);
|
|
54
|
+
}
|
|
55
|
+
return ok(task);
|
|
56
|
+
};
|
|
57
|
+
return async ({ caller, alias, message, isBlocking }) => {
|
|
58
|
+
const ship = await deps.findReachedShip({ ...caller, alias });
|
|
59
|
+
if (!ship.isOk) {
|
|
60
|
+
return ship;
|
|
61
|
+
}
|
|
62
|
+
const content = contentOf(message);
|
|
63
|
+
if (new TextEncoder().encode(content.payload).length > PAYLOAD_MAX_BYTES) {
|
|
64
|
+
return refuse('PAYLOAD_TOO_LARGE', 'The message is over 64 KB: send where its content lives instead');
|
|
65
|
+
}
|
|
66
|
+
const task = await continued(caller, { message, shipId: ship.value.shipId });
|
|
67
|
+
if (!task.isOk) {
|
|
68
|
+
return task;
|
|
69
|
+
}
|
|
70
|
+
const party = await deps.parties.find(caller.fleetId, caller.party);
|
|
71
|
+
if (party?.crewToken == null) {
|
|
72
|
+
return refuse('PARTY_NOT_CREWED', `The party ${caller.party} is not crewed`);
|
|
73
|
+
}
|
|
74
|
+
const { statement } = ship.value;
|
|
75
|
+
const capability = capabilityFor(statement?.by === 'crew' ? statement.capabilities : [], content.contentType);
|
|
76
|
+
const inReplyTo = task.value === undefined ? undefined : inReplyToOf(task.value);
|
|
77
|
+
const sent = await deps.sender.send(party.crewToken, {
|
|
78
|
+
to: ship.value.shipId,
|
|
79
|
+
...content,
|
|
80
|
+
idempotencyKey: deps.keys.idempotencyKeyOf({ ...caller, key: message.messageId }),
|
|
81
|
+
...(inReplyTo === undefined ? {} : { inReplyTo }),
|
|
82
|
+
});
|
|
83
|
+
if (!sent.isOk) {
|
|
84
|
+
return refusalOf(sent.error);
|
|
85
|
+
}
|
|
86
|
+
const { messageId } = sent.value;
|
|
87
|
+
const sentAt = deps.clock.now();
|
|
88
|
+
const taskId = task.value?.taskId ?? deps.keys.handleOf(caller.fleetId, messageId);
|
|
89
|
+
await deps.calls.saveTask({ ...caller, taskId, contextId: task.value?.contextId ?? message.contextId ?? deps.keys.contextIdOf(caller.fleetId, messageId), createdAt: sentAt });
|
|
90
|
+
await deps.calls.save({
|
|
91
|
+
...caller,
|
|
92
|
+
messageId,
|
|
93
|
+
handle: deps.keys.handleOf(caller.fleetId, messageId),
|
|
94
|
+
shipId: ship.value.shipId,
|
|
95
|
+
capability: capability?.name ?? null,
|
|
96
|
+
outputContentType: capability?.outputModes?.[0] ?? null,
|
|
97
|
+
sentAt,
|
|
98
|
+
deadlineAt: capability?.deadlineMs === undefined ? null : new Date(sentAt.getTime() + capability.deadlineMs),
|
|
99
|
+
delivery: null,
|
|
100
|
+
task: { taskId, message: message.asJson },
|
|
101
|
+
});
|
|
102
|
+
const view = await answerWithin({ caller, taskId, since: sentAt, waitMs: isBlocking ? (capability?.waitMs ?? 0) : 0 });
|
|
103
|
+
return view === undefined ? refuse('TASK_NOT_FOUND', `No task ${taskId}`) : ok(view);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=send-a2a-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-a2a-message.js","sourceRoot":"","sources":["../../../src/core/a2a-in/send-a2a-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use case: an outside A2A client sets a push config on one of its own tasks
|
|
3
|
+
* (CreateTaskPushNotificationConfig, slice 4). Its webhook is an https URL
|
|
4
|
+
* reached only at public addresses, as its host resolves now. The config is
|
|
5
|
+
* kept with its token and authentication, in place of one of the same id,
|
|
6
|
+
* and the task is followed from as it stands: the changes after it are
|
|
7
|
+
* pushed. The client is answered the config without its credentials.
|
|
8
|
+
*/
|
|
9
|
+
import type { ClientCalls } from '../mcp-in/ports.js';
|
|
10
|
+
import type { Clock } from '../shared/clock.js';
|
|
11
|
+
import { type DomainError } from '../shared/errors.js';
|
|
12
|
+
import { type Result } from '../shared/result.js';
|
|
13
|
+
import type { A2aCaller } from './authenticate-a2a-client.js';
|
|
14
|
+
import type { HostResolver, PushConfigIds, PushConfigs, WebhookCredentials } from './ports.js';
|
|
15
|
+
import { type PushConfigView } from './push-config-view.js';
|
|
16
|
+
export type SetPushConfig = (input: {
|
|
17
|
+
caller: A2aCaller;
|
|
18
|
+
config: {
|
|
19
|
+
taskId: string;
|
|
20
|
+
id?: string;
|
|
21
|
+
url: string;
|
|
22
|
+
} & WebhookCredentials;
|
|
23
|
+
}) => Promise<Result<PushConfigView, DomainError<'TASK_NOT_FOUND' | 'WEBHOOK_REFUSED'>>>;
|
|
24
|
+
export declare function createSetPushConfig(deps: {
|
|
25
|
+
calls: Pick<ClientCalls, 'findTask'>;
|
|
26
|
+
configs: Pick<PushConfigs, 'save'>;
|
|
27
|
+
resolver: HostResolver;
|
|
28
|
+
ids: PushConfigIds;
|
|
29
|
+
clock: Clock;
|
|
30
|
+
}): SetPushConfig;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
import { pushConfigViewOf } from './push-config-view.js';
|
|
4
|
+
import { isTerminal, markOf, taskViewOf } from './task-view.js';
|
|
5
|
+
import { reachOf } from './webhook-address.js';
|
|
6
|
+
import { webhookUrlOf } from './webhook.js';
|
|
7
|
+
export function createSetPushConfig(deps) {
|
|
8
|
+
return async ({ caller, config }) => {
|
|
9
|
+
const task = await deps.calls.findTask(caller, config.taskId);
|
|
10
|
+
if (task === undefined) {
|
|
11
|
+
return refuse('TASK_NOT_FOUND', `No task ${config.taskId}`);
|
|
12
|
+
}
|
|
13
|
+
const url = webhookUrlOf(config.url);
|
|
14
|
+
if (!url.isOk) {
|
|
15
|
+
return url;
|
|
16
|
+
}
|
|
17
|
+
if ((await reachOf(deps.resolver, url.value)) !== 'public') {
|
|
18
|
+
return refuse('WEBHOOK_REFUSED', 'The webhook must resolve to public addresses only');
|
|
19
|
+
}
|
|
20
|
+
const now = deps.clock.now();
|
|
21
|
+
const view = taskViewOf(task, now);
|
|
22
|
+
const kept = { ...caller, taskId: config.taskId, id: config.id ?? deps.ids.newId(), url: config.url, token: config.token, authentication: config.authentication, createdAt: now, noticedMark: markOf(view), isFollowing: !isTerminal(view) };
|
|
23
|
+
await deps.configs.save(kept);
|
|
24
|
+
return ok(pushConfigViewOf(kept));
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=set-push-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-push-config.js","sourceRoot":"","sources":["../../../src/core/a2a-in/set-push-config.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAuB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,UAAU,mBAAmB,CAAC,IAA4I;IAC9K,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7O,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ClientCalls } from '../mcp-in/ports.js';
|
|
2
|
+
import type { Clock } from '../shared/clock.js';
|
|
3
|
+
import { type DomainError } from '../shared/errors.js';
|
|
4
|
+
import { type Result } from '../shared/result.js';
|
|
5
|
+
import type { A2aCaller } from './authenticate-a2a-client.js';
|
|
6
|
+
import type { FollowA2aTask } from './follow-a2a-task.js';
|
|
7
|
+
import { type TaskView } from './task-view.js';
|
|
8
|
+
export type SubscribeToA2aTask = (input: {
|
|
9
|
+
caller: A2aCaller;
|
|
10
|
+
taskId: string;
|
|
11
|
+
signal: AbortSignal;
|
|
12
|
+
}) => Promise<Result<AsyncIterable<TaskView>, DomainError<'TASK_NOT_FOUND' | 'TASK_TERMINAL'>>>;
|
|
13
|
+
/** Use case: an outside A2A client follows one of its own tasks still open (SubscribeToTask); another party's is not found, and an ended one is refused. */
|
|
14
|
+
export declare function createSubscribeToA2aTask(deps: {
|
|
15
|
+
calls: Pick<ClientCalls, 'findTask'>;
|
|
16
|
+
clock: Clock;
|
|
17
|
+
follow: FollowA2aTask;
|
|
18
|
+
}): SubscribeToA2aTask;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
import { isTerminal, taskViewOf } from './task-view.js';
|
|
4
|
+
/** Use case: an outside A2A client follows one of its own tasks still open (SubscribeToTask); another party's is not found, and an ended one is refused. */
|
|
5
|
+
export function createSubscribeToA2aTask(deps) {
|
|
6
|
+
return async ({ caller, taskId, signal }) => {
|
|
7
|
+
const task = await deps.calls.findTask(caller, taskId);
|
|
8
|
+
if (task === undefined) {
|
|
9
|
+
return refuse('TASK_NOT_FOUND', `No task ${taskId}`);
|
|
10
|
+
}
|
|
11
|
+
if (isTerminal(taskViewOf(task, deps.clock.now()))) {
|
|
12
|
+
return refuse('TASK_TERMINAL', `The task ${taskId} has ended: read it with GetTask`);
|
|
13
|
+
}
|
|
14
|
+
return ok(deps.follow({ caller, taskId, signal }));
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=subscribe-to-a2a-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe-to-a2a-task.js","sourceRoot":"","sources":["../../../src/core/a2a-in/subscribe-to-a2a-task.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AAIvE,4JAA4J;AAC5J,MAAM,UAAU,wBAAwB,CAAC,IAAmF;IAC1H,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,CAAC,eAAe,EAAE,YAAY,MAAM,kCAAkC,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An A2A task as its client reads it (interop 3.4, decision 0060): the
|
|
3
|
+
* calls its client made in it, in the order sent, read by the one rule of
|
|
4
|
+
* the call store. Its state is its latest call's: completed by the answer,
|
|
5
|
+
* input required by a question, the state an `application/a2a+json` reply
|
|
6
|
+
* carries, failed at the deadline or when the fleet gave the delivery up,
|
|
7
|
+
* working once the ship took it, submitted before. Its history is the
|
|
8
|
+
* client's messages and the ship's replies in the order they came.
|
|
9
|
+
*/
|
|
10
|
+
import { type CallReply } from '../mcp-in/client-call.js';
|
|
11
|
+
import type { StoredTask } from '../mcp-in/ports.js';
|
|
12
|
+
export type TaskStatus = {
|
|
13
|
+
state: 'submitted';
|
|
14
|
+
} | {
|
|
15
|
+
state: 'working';
|
|
16
|
+
} | {
|
|
17
|
+
state: 'inputRequired';
|
|
18
|
+
question: CallReply;
|
|
19
|
+
} | {
|
|
20
|
+
state: 'completed';
|
|
21
|
+
answer: CallReply;
|
|
22
|
+
} | {
|
|
23
|
+
state: 'failed';
|
|
24
|
+
}
|
|
25
|
+
/** The state an A2A reply carries, for the adapter that speaks A2A to read. */
|
|
26
|
+
| {
|
|
27
|
+
state: 'carried';
|
|
28
|
+
reply: CallReply;
|
|
29
|
+
};
|
|
30
|
+
export type TaskEntry = {
|
|
31
|
+
by: 'client';
|
|
32
|
+
message: string;
|
|
33
|
+
at: Date;
|
|
34
|
+
} | {
|
|
35
|
+
by: 'ship';
|
|
36
|
+
reply: CallReply;
|
|
37
|
+
};
|
|
38
|
+
export interface TaskView {
|
|
39
|
+
taskId: string;
|
|
40
|
+
contextId: string;
|
|
41
|
+
status: TaskStatus & {
|
|
42
|
+
since: Date;
|
|
43
|
+
};
|
|
44
|
+
history: TaskEntry[];
|
|
45
|
+
}
|
|
46
|
+
/** Whether the task ended: completed or failed, so it takes no follow-up and a follow of it ends. */
|
|
47
|
+
export declare const isTerminal: (view: TaskView) => boolean;
|
|
48
|
+
/** What tells one view of a task from the next: its state, since when, and how much history it holds. */
|
|
49
|
+
export declare const markOf: (view: TaskView) => string;
|
|
50
|
+
/** The task as its client reads it now; a task with no call kept yet is submitted since now. */
|
|
51
|
+
export declare function taskViewOf(task: StoredTask, now: Date): TaskView;
|