managed-deepagents 0.4.2 → 0.4.3-dev.95
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 +78 -35
- package/dist/channels/assistant-text.js +1 -1
- package/dist/channels/assistant-text.js.map +1 -1
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +3 -1
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/index.d.ts +7 -8
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +6 -5
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/manifest.d.ts +7 -4
- package/dist/channels/manifest.d.ts.map +1 -1
- package/dist/channels/messaging-registry.d.ts +21 -0
- package/dist/channels/messaging-registry.d.ts.map +1 -0
- package/dist/channels/messaging-registry.js +50 -0
- package/dist/channels/messaging-registry.js.map +1 -0
- package/dist/channels/registry-types.d.ts +1 -1
- package/dist/channels/registry.d.ts +4 -3
- package/dist/channels/registry.d.ts.map +1 -1
- package/dist/channels/registry.js +5 -6
- package/dist/channels/registry.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +4 -1
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +3 -1
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/adapter.d.ts +1 -2
- package/dist/channels/slack/adapter.d.ts.map +1 -1
- package/dist/channels/slack/adapter.js +0 -2
- package/dist/channels/slack/adapter.js.map +1 -1
- package/dist/channels/slack/http.d.ts +7 -39
- package/dist/channels/slack/http.d.ts.map +1 -1
- package/dist/channels/slack/http.js +64 -122
- package/dist/channels/slack/http.js.map +1 -1
- package/dist/channels/slack/index.d.ts +94 -8
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +144 -6
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/slack/normalize.d.ts +6 -4
- package/dist/channels/slack/normalize.d.ts.map +1 -1
- package/dist/channels/slack/normalize.js +61 -28
- package/dist/channels/slack/normalize.js.map +1 -1
- package/dist/channels/slack/transport.d.ts.map +1 -1
- package/dist/channels/slack/transport.js +3 -2
- package/dist/channels/slack/transport.js.map +1 -1
- package/dist/channels/store.d.ts +14 -0
- package/dist/channels/store.d.ts.map +1 -1
- package/dist/channels/store.js +41 -27
- package/dist/channels/store.js.map +1 -1
- package/dist/connectors/marketplace/catalog.d.ts +96 -0
- package/dist/connectors/marketplace/catalog.d.ts.map +1 -0
- package/dist/connectors/marketplace/catalog.js +213 -0
- package/dist/connectors/marketplace/catalog.js.map +1 -0
- package/dist/connectors/marketplace/fleet-mcp.d.ts +62 -0
- package/dist/connectors/marketplace/fleet-mcp.d.ts.map +1 -0
- package/dist/connectors/marketplace/fleet-mcp.js +215 -0
- package/dist/connectors/marketplace/fleet-mcp.js.map +1 -0
- package/dist/connectors/marketplace/index.d.ts +31 -0
- package/dist/connectors/marketplace/index.d.ts.map +1 -0
- package/dist/connectors/marketplace/index.js +39 -0
- package/dist/connectors/marketplace/index.js.map +1 -0
- package/dist/connectors/marketplace/load.d.ts +14 -0
- package/dist/connectors/marketplace/load.d.ts.map +1 -0
- package/dist/connectors/marketplace/load.js +206 -0
- package/dist/connectors/marketplace/load.js.map +1 -0
- package/dist/connectors/mcp/index.d.ts +13 -20
- package/dist/connectors/mcp/index.d.ts.map +1 -1
- package/dist/connectors/mcp/index.js +92 -112
- package/dist/connectors/mcp/index.js.map +1 -1
- package/dist/connectors/mcp/load.d.ts.map +1 -1
- package/dist/connectors/mcp/load.js +16 -40
- package/dist/connectors/mcp/load.js.map +1 -1
- package/dist/connectors/slack/index.d.ts +24 -0
- package/dist/connectors/slack/index.d.ts.map +1 -0
- package/dist/connectors/slack/index.js +64 -0
- package/dist/connectors/slack/index.js.map +1 -0
- package/dist/connectors/tool-selection.d.ts +55 -0
- package/dist/connectors/tool-selection.d.ts.map +1 -0
- package/dist/connectors/tool-selection.js +112 -0
- package/dist/connectors/tool-selection.js.map +1 -0
- package/dist/connectors/toolserver/catalog.d.ts +326 -0
- package/dist/connectors/toolserver/catalog.d.ts.map +1 -0
- package/dist/connectors/toolserver/catalog.js +415 -0
- package/dist/connectors/toolserver/catalog.js.map +1 -0
- package/dist/connectors/toolserver/connectors.d.ts +698 -0
- package/dist/connectors/toolserver/connectors.d.ts.map +1 -0
- package/dist/connectors/toolserver/connectors.js +13 -0
- package/dist/connectors/toolserver/connectors.js.map +1 -0
- package/dist/connectors/toolserver/index.d.ts +142 -0
- package/dist/connectors/toolserver/index.d.ts.map +1 -0
- package/dist/connectors/toolserver/index.js +105 -0
- package/dist/connectors/toolserver/index.js.map +1 -0
- package/dist/connectors/toolserver/integrations.d.ts +103 -0
- package/dist/connectors/toolserver/integrations.d.ts.map +1 -0
- package/dist/connectors/toolserver/integrations.js +288 -0
- package/dist/connectors/toolserver/integrations.js.map +1 -0
- package/dist/connectors/toolserver/load.d.ts +55 -0
- package/dist/connectors/toolserver/load.d.ts.map +1 -0
- package/dist/connectors/toolserver/load.js +289 -0
- package/dist/connectors/toolserver/load.js.map +1 -0
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +9 -3
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/extension.d.ts +69 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +108 -0
- package/dist/extension.js.map +1 -0
- package/dist/identity/actor-subject.d.ts +60 -0
- package/dist/identity/actor-subject.d.ts.map +1 -0
- package/dist/identity/actor-subject.js +107 -0
- package/dist/identity/actor-subject.js.map +1 -0
- package/dist/identity/byo-oauth.d.ts +105 -0
- package/dist/identity/byo-oauth.d.ts.map +1 -0
- package/dist/identity/byo-oauth.js +190 -0
- package/dist/identity/byo-oauth.js.map +1 -0
- package/dist/identity/claims.d.ts +16 -0
- package/dist/identity/claims.d.ts.map +1 -0
- package/dist/identity/claims.js +33 -0
- package/dist/identity/claims.js.map +1 -0
- package/dist/identity/connect-inference.d.ts +37 -0
- package/dist/identity/connect-inference.d.ts.map +1 -0
- package/dist/identity/connect-inference.js +53 -0
- package/dist/identity/connect-inference.js.map +1 -0
- package/dist/identity/connect-provider-types.d.ts +35 -6
- package/dist/identity/connect-provider-types.d.ts.map +1 -1
- package/dist/identity/connect-provider-types.js +3 -1
- package/dist/identity/connect-provider-types.js.map +1 -1
- package/dist/identity/connect-provider.d.ts +9 -4
- package/dist/identity/connect-provider.d.ts.map +1 -1
- package/dist/identity/connect-provider.js +39 -13
- package/dist/identity/connect-provider.js.map +1 -1
- package/dist/identity/credential-resolvers.d.ts +33 -0
- package/dist/identity/credential-resolvers.d.ts.map +1 -0
- package/dist/identity/credential-resolvers.js +62 -0
- package/dist/identity/credential-resolvers.js.map +1 -0
- package/dist/identity/define-fleet-connect.d.ts +53 -0
- package/dist/identity/define-fleet-connect.d.ts.map +1 -0
- package/dist/identity/define-fleet-connect.js +76 -0
- package/dist/identity/define-fleet-connect.js.map +1 -0
- package/dist/identity/fleet-connect-hint.d.ts +41 -0
- package/dist/identity/fleet-connect-hint.d.ts.map +1 -0
- package/dist/identity/fleet-connect-hint.js +190 -0
- package/dist/identity/fleet-connect-hint.js.map +1 -0
- package/dist/identity/fleet-connect.d.ts +93 -0
- package/dist/identity/fleet-connect.d.ts.map +1 -0
- package/dist/identity/fleet-connect.js +256 -0
- package/dist/identity/fleet-connect.js.map +1 -0
- package/dist/identity/fleet-integration-connect.d.ts +32 -0
- package/dist/identity/fleet-integration-connect.d.ts.map +1 -0
- package/dist/identity/fleet-integration-connect.js +35 -0
- package/dist/identity/fleet-integration-connect.js.map +1 -0
- package/dist/identity/fleet.d.ts +56 -0
- package/dist/identity/fleet.d.ts.map +1 -0
- package/dist/identity/fleet.js +131 -0
- package/dist/identity/fleet.js.map +1 -0
- package/dist/identity/github/connect-http.d.ts +8 -4
- package/dist/identity/github/connect-http.d.ts.map +1 -1
- package/dist/identity/github/connect-http.js +32 -15
- package/dist/identity/github/connect-http.js.map +1 -1
- package/dist/identity/github/credentials-store.d.ts +10 -10
- package/dist/identity/github/credentials-store.d.ts.map +1 -1
- package/dist/identity/github/credentials-store.js +62 -49
- package/dist/identity/github/credentials-store.js.map +1 -1
- package/dist/identity/github/credentials.d.ts +16 -13
- package/dist/identity/github/credentials.d.ts.map +1 -1
- package/dist/identity/github/credentials.js +43 -23
- package/dist/identity/github/credentials.js.map +1 -1
- package/dist/identity/github/index.d.ts +1 -4
- package/dist/identity/github/index.d.ts.map +1 -1
- package/dist/identity/github/index.js +0 -3
- package/dist/identity/github/index.js.map +1 -1
- package/dist/identity/github/oauth.d.ts +18 -20
- package/dist/identity/github/oauth.d.ts.map +1 -1
- package/dist/identity/github/oauth.js +90 -109
- package/dist/identity/github/oauth.js.map +1 -1
- package/dist/identity/google/connect-http.d.ts +37 -0
- package/dist/identity/google/connect-http.d.ts.map +1 -0
- package/dist/identity/google/connect-http.js +42 -0
- package/dist/identity/google/connect-http.js.map +1 -0
- package/dist/identity/google/index.d.ts +7 -0
- package/dist/identity/google/index.d.ts.map +1 -0
- package/dist/identity/google/index.js +6 -0
- package/dist/identity/google/index.js.map +1 -0
- package/dist/identity/google/oauth.d.ts +22 -0
- package/dist/identity/google/oauth.d.ts.map +1 -0
- package/dist/identity/google/oauth.js +48 -0
- package/dist/identity/google/oauth.js.map +1 -0
- package/dist/identity/index.d.ts +40 -64
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +104 -243
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/linkedin/connect-http.d.ts +37 -0
- package/dist/identity/linkedin/connect-http.d.ts.map +1 -0
- package/dist/identity/linkedin/connect-http.js +41 -0
- package/dist/identity/linkedin/connect-http.js.map +1 -0
- package/dist/identity/linkedin/index.d.ts +7 -0
- package/dist/identity/linkedin/index.d.ts.map +1 -0
- package/dist/identity/linkedin/index.js +6 -0
- package/dist/identity/linkedin/index.js.map +1 -0
- package/dist/identity/linkedin/oauth.d.ts +22 -0
- package/dist/identity/linkedin/oauth.d.ts.map +1 -0
- package/dist/identity/linkedin/oauth.js +47 -0
- package/dist/identity/linkedin/oauth.js.map +1 -0
- package/dist/identity/loopback.d.ts +27 -2
- package/dist/identity/loopback.d.ts.map +1 -1
- package/dist/identity/loopback.js +61 -8
- package/dist/identity/loopback.js.map +1 -1
- package/dist/identity/marketplace/connect-hint.d.ts +31 -0
- package/dist/identity/marketplace/connect-hint.d.ts.map +1 -0
- package/dist/identity/marketplace/connect-hint.js +59 -0
- package/dist/identity/marketplace/connect-hint.js.map +1 -0
- package/dist/identity/marketplace/connect.d.ts +51 -0
- package/dist/identity/marketplace/connect.d.ts.map +1 -0
- package/dist/identity/marketplace/connect.js +88 -0
- package/dist/identity/marketplace/connect.js.map +1 -0
- package/dist/identity/marketplace/index.d.ts +9 -0
- package/dist/identity/marketplace/index.d.ts.map +1 -0
- package/dist/identity/marketplace/index.js +9 -0
- package/dist/identity/marketplace/index.js.map +1 -0
- package/dist/identity/microsoft/connect-http.d.ts +38 -0
- package/dist/identity/microsoft/connect-http.d.ts.map +1 -0
- package/dist/identity/microsoft/connect-http.js +42 -0
- package/dist/identity/microsoft/connect-http.js.map +1 -0
- package/dist/identity/microsoft/index.d.ts +7 -0
- package/dist/identity/microsoft/index.d.ts.map +1 -0
- package/dist/identity/microsoft/index.js +6 -0
- package/dist/identity/microsoft/index.js.map +1 -0
- package/dist/identity/microsoft/oauth.d.ts +24 -0
- package/dist/identity/microsoft/oauth.d.ts.map +1 -0
- package/dist/identity/microsoft/oauth.js +65 -0
- package/dist/identity/microsoft/oauth.js.map +1 -0
- package/dist/identity/oauth-env.d.ts +43 -0
- package/dist/identity/oauth-env.d.ts.map +1 -0
- package/dist/identity/oauth-env.js +66 -0
- package/dist/identity/oauth-env.js.map +1 -0
- package/dist/identity/oauth-tickets.d.ts +37 -0
- package/dist/identity/oauth-tickets.d.ts.map +1 -0
- package/dist/identity/oauth-tickets.js +114 -0
- package/dist/identity/oauth-tickets.js.map +1 -0
- package/dist/identity/options.d.ts +35 -0
- package/dist/identity/options.d.ts.map +1 -0
- package/dist/identity/options.js +80 -0
- package/dist/identity/options.js.map +1 -0
- package/dist/identity/slack/connect-http.d.ts +6 -4
- package/dist/identity/slack/connect-http.d.ts.map +1 -1
- package/dist/identity/slack/connect-http.js +27 -17
- package/dist/identity/slack/connect-http.js.map +1 -1
- package/dist/identity/slack/index.d.ts +1 -2
- package/dist/identity/slack/index.d.ts.map +1 -1
- package/dist/identity/slack/index.js +1 -2
- package/dist/identity/slack/index.js.map +1 -1
- package/dist/identity/slack/links.d.ts +18 -17
- package/dist/identity/slack/links.d.ts.map +1 -1
- package/dist/identity/slack/links.js +75 -61
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/identity/slack/oauth.d.ts +3 -35
- package/dist/identity/slack/oauth.d.ts.map +1 -1
- package/dist/identity/slack/oauth.js +9 -115
- package/dist/identity/slack/oauth.js.map +1 -1
- package/dist/identity/supabase.js +9 -9
- package/dist/identity/supabase.js.map +1 -1
- package/dist/identity/types.d.ts +91 -54
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/identity/x/connect-http.d.ts +38 -0
- package/dist/identity/x/connect-http.d.ts.map +1 -0
- package/dist/identity/x/connect-http.js +41 -0
- package/dist/identity/x/connect-http.js.map +1 -0
- package/dist/identity/x/index.d.ts +6 -0
- package/dist/identity/x/index.d.ts.map +1 -0
- package/dist/identity/x/index.js +5 -0
- package/dist/identity/x/index.js.map +1 -0
- package/dist/index.d.ts +9 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -11
- package/dist/index.js.map +1 -1
- package/dist/ingress/index.d.ts +52 -0
- package/dist/ingress/index.d.ts.map +1 -0
- package/dist/ingress/index.js +139 -0
- package/dist/ingress/index.js.map +1 -0
- package/dist/memory/define-memory.d.ts +39 -0
- package/dist/memory/define-memory.d.ts.map +1 -0
- package/dist/memory/define-memory.js +78 -0
- package/dist/memory/define-memory.js.map +1 -0
- package/dist/memory/index.d.ts +9 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +8 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/instructions-middleware.d.ts +74 -0
- package/dist/memory/instructions-middleware.d.ts.map +1 -0
- package/dist/memory/instructions-middleware.js +115 -0
- package/dist/memory/instructions-middleware.js.map +1 -0
- package/dist/memory/slices.d.ts +21 -0
- package/dist/memory/slices.d.ts.map +1 -0
- package/dist/memory/slices.js +61 -0
- package/dist/memory/slices.js.map +1 -0
- package/dist/memory/types.d.ts +71 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +10 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/namespaces.d.ts +262 -0
- package/dist/namespaces.d.ts.map +1 -0
- package/dist/namespaces.js +101 -0
- package/dist/namespaces.js.map +1 -0
- package/dist/runtime/auth.d.ts +46 -32
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +234 -125
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +1 -1
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +26 -5
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/channel.d.ts +91 -0
- package/dist/runtime/channel.d.ts.map +1 -0
- package/dist/runtime/channel.js +98 -0
- package/dist/runtime/channel.js.map +1 -0
- package/dist/runtime/connector.d.ts +66 -23
- package/dist/runtime/connector.d.ts.map +1 -1
- package/dist/runtime/connector.js +67 -27
- package/dist/runtime/connector.js.map +1 -1
- package/dist/runtime/cors.d.ts +12 -3
- package/dist/runtime/cors.d.ts.map +1 -1
- package/dist/runtime/cors.js +23 -5
- package/dist/runtime/cors.js.map +1 -1
- package/dist/runtime/credentials.d.ts +8 -8
- package/dist/runtime/credentials.d.ts.map +1 -1
- package/dist/runtime/credentials.js +46 -23
- package/dist/runtime/credentials.js.map +1 -1
- package/dist/runtime/http.d.ts +46 -0
- package/dist/runtime/http.d.ts.map +1 -0
- package/dist/runtime/http.js +53 -0
- package/dist/runtime/http.js.map +1 -0
- package/dist/runtime/identity-http.d.ts +13 -20
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +158 -75
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +12 -28
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +35 -72
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts +89 -225
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +92 -61
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +0 -2
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +0 -2
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +4 -12
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +9 -20
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/recursion-limit.d.ts +22 -0
- package/dist/runtime/recursion-limit.d.ts.map +1 -0
- package/dist/runtime/recursion-limit.js +46 -0
- package/dist/runtime/recursion-limit.js.map +1 -0
- package/dist/runtime/sandbox-manager.d.ts +60 -3
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +326 -26
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/sandbox-stream-retry.d.ts +18 -0
- package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -0
- package/dist/runtime/sandbox-stream-retry.js +90 -0
- package/dist/runtime/sandbox-stream-retry.js.map +1 -0
- package/dist/runtime/setup-script.d.ts.map +1 -1
- package/dist/runtime/setup-script.js +16 -2
- package/dist/runtime/setup-script.js.map +1 -1
- package/dist/runtime/types.d.ts +16 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/validated-token.d.ts +9 -14
- package/dist/runtime/validated-token.d.ts.map +1 -1
- package/dist/runtime/validated-token.js +79 -106
- package/dist/runtime/validated-token.js.map +1 -1
- package/dist/sandbox.d.ts +17 -42
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +11 -32
- package/dist/sandbox.js.map +1 -1
- package/dist/schedules.js +8 -9
- package/dist/schedules.js.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +22 -29
- package/dist/channels/collect.d.ts +0 -26
- package/dist/channels/collect.d.ts.map +0 -1
- package/dist/channels/collect.js +0 -42
- package/dist/channels/collect.js.map +0 -1
- package/dist/channels/github/adapter-core.d.ts +0 -6
- package/dist/channels/github/adapter-core.d.ts.map +0 -1
- package/dist/channels/github/adapter-core.js +0 -27
- package/dist/channels/github/adapter-core.js.map +0 -1
- package/dist/channels/github/adapter.d.ts +0 -16
- package/dist/channels/github/adapter.d.ts.map +0 -1
- package/dist/channels/github/adapter.js +0 -52
- package/dist/channels/github/adapter.js.map +0 -1
- package/dist/channels/github/define.d.ts +0 -198
- package/dist/channels/github/define.d.ts.map +0 -1
- package/dist/channels/github/define.js +0 -166
- package/dist/channels/github/define.js.map +0 -1
- package/dist/channels/github/http.d.ts +0 -25
- package/dist/channels/github/http.d.ts.map +0 -1
- package/dist/channels/github/http.js +0 -147
- package/dist/channels/github/http.js.map +0 -1
- package/dist/channels/github/index.d.ts +0 -12
- package/dist/channels/github/index.d.ts.map +0 -1
- package/dist/channels/github/index.js +0 -10
- package/dist/channels/github/index.js.map +0 -1
- package/dist/channels/github/normalize.d.ts +0 -32
- package/dist/channels/github/normalize.d.ts.map +0 -1
- package/dist/channels/github/normalize.js +0 -152
- package/dist/channels/github/normalize.js.map +0 -1
- package/dist/channels/github/source-thread.d.ts +0 -24
- package/dist/channels/github/source-thread.d.ts.map +0 -1
- package/dist/channels/github/source-thread.js +0 -54
- package/dist/channels/github/source-thread.js.map +0 -1
- package/dist/channels/github/transport.d.ts +0 -19
- package/dist/channels/github/transport.d.ts.map +0 -1
- package/dist/channels/github/transport.js +0 -92
- package/dist/channels/github/transport.js.map +0 -1
- package/dist/channels/plugin.d.ts +0 -61
- package/dist/channels/plugin.d.ts.map +0 -1
- package/dist/channels/plugin.js +0 -80
- package/dist/channels/plugin.js.map +0 -1
- package/dist/channels/slack/define.d.ts +0 -74
- package/dist/channels/slack/define.d.ts.map +0 -1
- package/dist/channels/slack/define.js +0 -160
- package/dist/channels/slack/define.js.map +0 -1
- package/dist/connectors/github/index.d.ts +0 -78
- package/dist/connectors/github/index.d.ts.map +0 -1
- package/dist/connectors/github/index.js +0 -106
- package/dist/connectors/github/index.js.map +0 -1
- package/dist/connectors/github/sandbox.d.ts +0 -54
- package/dist/connectors/github/sandbox.d.ts.map +0 -1
- package/dist/connectors/github/sandbox.js +0 -515
- package/dist/connectors/github/sandbox.js.map +0 -1
- package/dist/connectors/langsmith/index.d.ts +0 -385
- package/dist/connectors/langsmith/index.d.ts.map +0 -1
- package/dist/connectors/langsmith/index.js +0 -431
- package/dist/connectors/langsmith/index.js.map +0 -1
- package/dist/connectors/langsmith/routes.d.ts +0 -247
- package/dist/connectors/langsmith/routes.d.ts.map +0 -1
- package/dist/connectors/langsmith/routes.js +0 -1182
- package/dist/connectors/langsmith/routes.js.map +0 -1
- package/dist/runtime/memory/seed.d.ts +0 -21
- package/dist/runtime/memory/seed.d.ts.map +0 -1
- package/dist/runtime/memory/seed.js +0 -160
- package/dist/runtime/memory/seed.js.map +0 -1
- package/dist/runtime/memory/user-repo.d.ts +0 -19
- package/dist/runtime/memory/user-repo.d.ts.map +0 -1
- package/dist/runtime/memory/user-repo.js +0 -57
- package/dist/runtime/memory/user-repo.js.map +0 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory for optional BYO (bring-your-own) OAuth clients used when Fleet
|
|
3
|
+
* auth-sessions are unavailable.
|
|
4
|
+
*
|
|
5
|
+
* Vendor modules supply endpoints, authorize extras, and userinfo parsing;
|
|
6
|
+
* this module owns config env reading, authorize URL construction, token
|
|
7
|
+
* exchange, and the {@link FleetVaultByoOauth} adapter.
|
|
8
|
+
*/
|
|
9
|
+
import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS } from "../runtime/http.js";
|
|
10
|
+
import { oauthTicketsFor } from "./oauth-tickets.js";
|
|
11
|
+
import { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, resolveOauthRedirectBase, } from "./oauth-env.js";
|
|
12
|
+
export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveOauthRedirectBase, resolveSlackOauthRedirectBase, } from "./oauth-env.js";
|
|
13
|
+
function stripSlash(value) {
|
|
14
|
+
return value.replace(/\/$/, "");
|
|
15
|
+
}
|
|
16
|
+
function envKeysFromPrefix(prefix) {
|
|
17
|
+
return {
|
|
18
|
+
clientId: `${prefix}_CLIENT_ID`,
|
|
19
|
+
clientSecret: `${prefix}_CLIENT_SECRET`,
|
|
20
|
+
scopes: `${prefix}_SCOPES`,
|
|
21
|
+
authUrl: `${prefix}_AUTH_URL`,
|
|
22
|
+
tokenUrl: `${prefix}_TOKEN_URL`,
|
|
23
|
+
userInfoUrl: `${prefix}_USERINFO_URL`,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Build a BYO OAuth client for one Fleet vault Connect integration. */
|
|
27
|
+
export function createByoOauthClient(options) {
|
|
28
|
+
const keys = { ...envKeysFromPrefix(options.envPrefix), ...options.envKeys };
|
|
29
|
+
const tickets = oauthTicketsFor(options.providerId);
|
|
30
|
+
const authorizeExtras = {
|
|
31
|
+
...(options.defaultPrompt === false
|
|
32
|
+
? {}
|
|
33
|
+
: { prompt: options.defaultPrompt ?? "consent" }),
|
|
34
|
+
...options.authorizeParams,
|
|
35
|
+
};
|
|
36
|
+
const tokenFormat = options.tokenRequest?.format ?? "form";
|
|
37
|
+
const tokenHeaders = options.tokenRequest?.headers;
|
|
38
|
+
const userInfoHeaders = options.userInfoRequest?.headers;
|
|
39
|
+
const requireUserInfo = options.userInfoRequest?.required ?? false;
|
|
40
|
+
function readConfig(env = process.env) {
|
|
41
|
+
const clientId = env[keys.clientId]?.trim();
|
|
42
|
+
const clientSecret = env[keys.clientSecret]?.trim();
|
|
43
|
+
const publicAppUrl = env[MDA_PUBLIC_APP_URL_ENV]?.trim() ||
|
|
44
|
+
env[MDA_PUBLIC_API_URL_ENV]?.trim();
|
|
45
|
+
if (!clientId || !clientSecret || !publicAppUrl) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const defaults = options.defaultEndpoints(env);
|
|
49
|
+
return {
|
|
50
|
+
clientId,
|
|
51
|
+
clientSecret,
|
|
52
|
+
publicAppUrl: stripSlash(publicAppUrl),
|
|
53
|
+
scopes: env[keys.scopes]?.trim() || defaults.defaultScopes,
|
|
54
|
+
authUrl: stripSlash(env[keys.authUrl]?.trim() || defaults.authUrl),
|
|
55
|
+
tokenUrl: stripSlash(env[keys.tokenUrl]?.trim() || defaults.tokenUrl),
|
|
56
|
+
userInfoUrl: stripSlash(env[keys.userInfoUrl]?.trim() || defaults.userInfoUrl),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function buildAuthorizeUrl(config, state, redirectUri, scopes) {
|
|
60
|
+
const url = new URL(config.authUrl);
|
|
61
|
+
url.searchParams.set("client_id", config.clientId);
|
|
62
|
+
url.searchParams.set("redirect_uri", redirectUri);
|
|
63
|
+
url.searchParams.set("response_type", "code");
|
|
64
|
+
url.searchParams.set("scope", scopes?.trim() || config.scopes);
|
|
65
|
+
url.searchParams.set("state", state);
|
|
66
|
+
for (const [key, value] of Object.entries(authorizeExtras)) {
|
|
67
|
+
url.searchParams.set(key, value);
|
|
68
|
+
}
|
|
69
|
+
return url.toString();
|
|
70
|
+
}
|
|
71
|
+
async function exchangeCode(config, code, redirectUri, fetchImpl = fetch) {
|
|
72
|
+
const tokenInit = tokenFormat === "json"
|
|
73
|
+
? {
|
|
74
|
+
method: "POST",
|
|
75
|
+
headers: {
|
|
76
|
+
"Content-Type": "application/json",
|
|
77
|
+
...tokenHeaders,
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
client_id: config.clientId,
|
|
81
|
+
client_secret: config.clientSecret,
|
|
82
|
+
code,
|
|
83
|
+
redirect_uri: redirectUri,
|
|
84
|
+
}),
|
|
85
|
+
}
|
|
86
|
+
: {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers: {
|
|
89
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
90
|
+
...tokenHeaders,
|
|
91
|
+
},
|
|
92
|
+
body: new URLSearchParams({
|
|
93
|
+
code,
|
|
94
|
+
client_id: config.clientId,
|
|
95
|
+
client_secret: config.clientSecret,
|
|
96
|
+
redirect_uri: redirectUri,
|
|
97
|
+
grant_type: "authorization_code",
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
const tokenResponse = await fetchWithTimeout(config.tokenUrl, tokenInit, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
|
|
101
|
+
const tokenJson = (await tokenResponse.json());
|
|
102
|
+
if (!tokenResponse.ok || !tokenJson.access_token) {
|
|
103
|
+
throw new Error(tokenJson.error_description ??
|
|
104
|
+
tokenJson.error ??
|
|
105
|
+
`${options.displayName} OAuth token exchange failed`);
|
|
106
|
+
}
|
|
107
|
+
let accountLabel;
|
|
108
|
+
let subject;
|
|
109
|
+
let extraMetadata;
|
|
110
|
+
try {
|
|
111
|
+
const userResponse = await fetchWithTimeout(config.userInfoUrl, {
|
|
112
|
+
headers: {
|
|
113
|
+
Authorization: `Bearer ${tokenJson.access_token}`,
|
|
114
|
+
...userInfoHeaders,
|
|
115
|
+
},
|
|
116
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
|
|
117
|
+
if (!userResponse.ok) {
|
|
118
|
+
if (requireUserInfo) {
|
|
119
|
+
const errJson = (await userResponse.json().catch(() => ({})));
|
|
120
|
+
throw new Error(errJson.message ?? `${options.displayName} userinfo lookup failed`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
const userJson = (await userResponse.json());
|
|
125
|
+
const parsed = options.parseUserInfo(userJson);
|
|
126
|
+
if (parsed.email) {
|
|
127
|
+
accountLabel = parsed.email;
|
|
128
|
+
}
|
|
129
|
+
if (parsed.subject) {
|
|
130
|
+
subject = parsed.subject;
|
|
131
|
+
}
|
|
132
|
+
if (parsed.metadata) {
|
|
133
|
+
extraMetadata = parsed.metadata;
|
|
134
|
+
}
|
|
135
|
+
if (requireUserInfo && !subject) {
|
|
136
|
+
throw new Error(`${options.displayName} userinfo missing subject`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
if (requireUserInfo) {
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
// Account label is optional for vault import.
|
|
145
|
+
}
|
|
146
|
+
const metadata = {
|
|
147
|
+
...extraMetadata,
|
|
148
|
+
...(subject ? { [options.subjectMetadataKey]: subject } : {}),
|
|
149
|
+
};
|
|
150
|
+
return {
|
|
151
|
+
accessToken: tokenJson.access_token,
|
|
152
|
+
...(tokenJson.refresh_token
|
|
153
|
+
? { refreshToken: tokenJson.refresh_token }
|
|
154
|
+
: {}),
|
|
155
|
+
...(typeof tokenJson.expires_in === "number"
|
|
156
|
+
? { expiresInSeconds: tokenJson.expires_in }
|
|
157
|
+
: {}),
|
|
158
|
+
...(tokenJson.scope ? { scope: tokenJson.scope } : {}),
|
|
159
|
+
...(tokenJson.token_type ? { tokenType: tokenJson.token_type } : {}),
|
|
160
|
+
...(accountLabel ? { accountLabel } : {}),
|
|
161
|
+
...(Object.keys(metadata).length > 0 ? { metadata } : {}),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const byo = {
|
|
165
|
+
readConfig,
|
|
166
|
+
buildAuthorizeUrl(config, state, redirectUri, scopes) {
|
|
167
|
+
return buildAuthorizeUrl(config, state, redirectUri, scopes);
|
|
168
|
+
},
|
|
169
|
+
exchangeCode(config, code, redirectUri) {
|
|
170
|
+
return exchangeCode(config, code, redirectUri);
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
function resolvePublicAppUrl(env = process.env) {
|
|
174
|
+
return (readConfig(env)?.publicAppUrl ??
|
|
175
|
+
env[MDA_PUBLIC_APP_URL_ENV]?.trim().replace(/\/$/, ""));
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
providerId: options.providerId,
|
|
179
|
+
displayName: options.displayName,
|
|
180
|
+
env: keys,
|
|
181
|
+
tickets,
|
|
182
|
+
resolveRedirectBase: resolveOauthRedirectBase,
|
|
183
|
+
readConfig,
|
|
184
|
+
buildAuthorizeUrl,
|
|
185
|
+
exchangeCode,
|
|
186
|
+
byo,
|
|
187
|
+
resolvePublicAppUrl,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=byo-oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"byo-oauth.js","sourceRoot":"","sources":["../../src/identity/byo-oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claim-name resolution shared by authoring validation and the runtime token
|
|
3
|
+
* mapper, so both agree on which claim supplies each envelope field.
|
|
4
|
+
*/
|
|
5
|
+
import type { ClaimMapping } from "./types.js";
|
|
6
|
+
/** The claim supplying the caller id, or `undefined` when none is mapped. */
|
|
7
|
+
export declare function userClaimName(mapping: ClaimMapping): string | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Normalize a `groups` claim value into a list.
|
|
10
|
+
*
|
|
11
|
+
* IdPs are inconsistent here: Auth0 and Okta send an array, Entra sends an array
|
|
12
|
+
* of object ids, and some proxies flatten to a delimited string. Accept all
|
|
13
|
+
* three rather than making authors pre-process the claim.
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeGroups(value: unknown): string[];
|
|
16
|
+
//# sourceMappingURL=claims.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/identity/claims.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAaxD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claim-name resolution shared by authoring validation and the runtime token
|
|
3
|
+
* mapper, so both agree on which claim supplies each envelope field.
|
|
4
|
+
*/
|
|
5
|
+
/** The claim supplying the caller id, or `undefined` when none is mapped. */
|
|
6
|
+
export function userClaimName(mapping) {
|
|
7
|
+
return nonEmpty(mapping.user);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Normalize a `groups` claim value into a list.
|
|
11
|
+
*
|
|
12
|
+
* IdPs are inconsistent here: Auth0 and Okta send an array, Entra sends an array
|
|
13
|
+
* of object ids, and some proxies flatten to a delimited string. Accept all
|
|
14
|
+
* three rather than making authors pre-process the claim.
|
|
15
|
+
*/
|
|
16
|
+
export function normalizeGroups(value) {
|
|
17
|
+
if (Array.isArray(value)) {
|
|
18
|
+
return value
|
|
19
|
+
.map((entry) => String(entry).trim())
|
|
20
|
+
.filter((entry) => entry.length > 0);
|
|
21
|
+
}
|
|
22
|
+
if (typeof value === "string") {
|
|
23
|
+
return value
|
|
24
|
+
.split(/[,\s]+/)
|
|
25
|
+
.map((entry) => entry.trim())
|
|
26
|
+
.filter((entry) => entry.length > 0);
|
|
27
|
+
}
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
function nonEmpty(value) {
|
|
31
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/identity/claims.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,OAAqB;IACjD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK;aACT,KAAK,CAAC,QAAQ,CAAC;aACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predicates the built-in Connect-with-X providers use to decide whether a
|
|
3
|
+
* deployment needs their OAuth routes.
|
|
4
|
+
*
|
|
5
|
+
* Authors should not have to list a connect provider that the rest of their
|
|
6
|
+
* identity already implies — a credential chain that reads user GitHub tokens
|
|
7
|
+
* on a user-scoped deployment needs Connect-with-GitHub, and a Slack channel on
|
|
8
|
+
* a per-user deployment needs somewhere to link Slack accounts.
|
|
9
|
+
*/
|
|
10
|
+
import type { IdentityConnectMountContext } from "./connect-provider-types.js";
|
|
11
|
+
export { FLEET_OAUTH_INTEGRATIONS, GOOGLE_TOOLSERVER_SLUGS, LINKEDIN_TOOLSERVER_SLUGS, MICROSOFT_TOOLSERVER_SLUGS, integrationConnectorKinds, integrationById, integrationForSlug, googleConnectorKinds, googleScopesForConnectorKinds, hasIntegrationToolServerConnector, hasGoogleToolServerConnector, hasLinkedInToolServerConnector, hasMicrosoftToolServerConnector, isFleetOAuthSlug, isGoogleToolServerSlug, isLinkedInToolServerSlug, isMicrosoftToolServerSlug, linkedinConnectorKinds, linkedinScopesForConnectorKinds, microsoftConnectorKinds, microsoftScopesForConnectorKinds, scopesForIntegrationConnectorKinds, type FleetOAuthIntegration, type GoogleToolServerSlug, type LinkedInToolServerSlug, type MicrosoftToolServerSlug, } from "../connectors/toolserver/integrations.js";
|
|
12
|
+
/**
|
|
13
|
+
* True when the deployment keys anything durable on the individual caller.
|
|
14
|
+
*
|
|
15
|
+
* This is the condition under which a per-user OAuth link is meaningful: an
|
|
16
|
+
* `agent`-scoped deployment has no per-caller slice to attach a linked account
|
|
17
|
+
* to, so it never grows connect routes by inference.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isUserScopedDeployment(scope: IdentityConnectMountContext["scope"]): boolean;
|
|
20
|
+
/** True when a channel of `provider` is declared (e.g. a Slack channel). */
|
|
21
|
+
export declare function hasChannelForProvider(channels: IdentityConnectMountContext["channels"], provider: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* True when the deployment declares a connector whose kind is `"github"`.
|
|
24
|
+
*
|
|
25
|
+
* Retained for Connect-with-GitHub inference if a future surface reintroduces a
|
|
26
|
+
* GitHub connector kind; today Connect mounts from `credentials.github` instead.
|
|
27
|
+
*/
|
|
28
|
+
export declare function hasGithubConnector(connectorKinds: IdentityConnectMountContext["connectorKinds"]): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Connect provider ids the deployment's credential resolvers depend on.
|
|
31
|
+
*
|
|
32
|
+
* Unions across a per-target map, so a multi-platform deployment is treated the
|
|
33
|
+
* same as a single-platform one.
|
|
34
|
+
*/
|
|
35
|
+
export declare function credentialConnectIds(credentials: IdentityConnectMountContext["credentials"]): Set<string>;
|
|
36
|
+
export declare function isGoogleConnectorKind(kind: string | undefined): boolean;
|
|
37
|
+
//# sourceMappingURL=connect-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-inference.d.ts","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,EAClC,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,0CAA0C,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC1C,OAAO,CAOT;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,EACjD,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,GAC5D,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,2BAA2B,CAAC,aAAa,CAAC,GACtD,GAAG,CAAC,MAAM,CAAC,CAIb;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predicates the built-in Connect-with-X providers use to decide whether a
|
|
3
|
+
* deployment needs their OAuth routes.
|
|
4
|
+
*
|
|
5
|
+
* Authors should not have to list a connect provider that the rest of their
|
|
6
|
+
* identity already implies — a credential chain that reads user GitHub tokens
|
|
7
|
+
* on a user-scoped deployment needs Connect-with-GitHub, and a Slack channel on
|
|
8
|
+
* a per-user deployment needs somewhere to link Slack accounts.
|
|
9
|
+
*/
|
|
10
|
+
import { isGoogleToolServerSlug } from "../connectors/toolserver/integrations.js";
|
|
11
|
+
import { credentialConnectProviders } from "./credential-resolvers.js";
|
|
12
|
+
export { FLEET_OAUTH_INTEGRATIONS, GOOGLE_TOOLSERVER_SLUGS, LINKEDIN_TOOLSERVER_SLUGS, MICROSOFT_TOOLSERVER_SLUGS, integrationConnectorKinds, integrationById, integrationForSlug, googleConnectorKinds, googleScopesForConnectorKinds, hasIntegrationToolServerConnector, hasGoogleToolServerConnector, hasLinkedInToolServerConnector, hasMicrosoftToolServerConnector, isFleetOAuthSlug, isGoogleToolServerSlug, isLinkedInToolServerSlug, isMicrosoftToolServerSlug, linkedinConnectorKinds, linkedinScopesForConnectorKinds, microsoftConnectorKinds, microsoftScopesForConnectorKinds, scopesForIntegrationConnectorKinds, } from "../connectors/toolserver/integrations.js";
|
|
13
|
+
/**
|
|
14
|
+
* True when the deployment keys anything durable on the individual caller.
|
|
15
|
+
*
|
|
16
|
+
* This is the condition under which a per-user OAuth link is meaningful: an
|
|
17
|
+
* `agent`-scoped deployment has no per-caller slice to attach a linked account
|
|
18
|
+
* to, so it never grows connect routes by inference.
|
|
19
|
+
*/
|
|
20
|
+
export function isUserScopedDeployment(scope) {
|
|
21
|
+
if (!scope) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
// Per-caller Connect is meaningful when credentials are owned by the caller
|
|
25
|
+
// (`"user"`) or a custom resolver. Memory isolation is a separate axis.
|
|
26
|
+
return scope.credentials === "user" || scope.credentials === "custom";
|
|
27
|
+
}
|
|
28
|
+
/** True when a channel of `provider` is declared (e.g. a Slack channel). */
|
|
29
|
+
export function hasChannelForProvider(channels, provider) {
|
|
30
|
+
return Object.values(channels ?? {}).some((manifest) => manifest?.provider === provider);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* True when the deployment declares a connector whose kind is `"github"`.
|
|
34
|
+
*
|
|
35
|
+
* Retained for Connect-with-GitHub inference if a future surface reintroduces a
|
|
36
|
+
* GitHub connector kind; today Connect mounts from `credentials.github` instead.
|
|
37
|
+
*/
|
|
38
|
+
export function hasGithubConnector(connectorKinds) {
|
|
39
|
+
return (connectorKinds ?? []).some((kind) => kind === "github");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Connect provider ids the deployment's credential resolvers depend on.
|
|
43
|
+
*
|
|
44
|
+
* Unions across a per-target map, so a multi-platform deployment is treated the
|
|
45
|
+
* same as a single-platform one.
|
|
46
|
+
*/
|
|
47
|
+
export function credentialConnectIds(credentials) {
|
|
48
|
+
return new Set(credentialConnectProviders(credentials).map((provider) => provider.id));
|
|
49
|
+
}
|
|
50
|
+
export function isGoogleConnectorKind(kind) {
|
|
51
|
+
return isGoogleToolServerSlug(kind);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=connect-inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-inference.js","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,GAKnC,MAAM,0CAA0C,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA2C;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,wEAAwE;IACxE,OAAO,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC;AACxE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CACnC,QAAiD,EACjD,QAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CACvC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,cAA6D;IAE7D,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAuD;IAEvD,OAAO,IAAI,GAAG,CACZ,0BAA0B,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC5D,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connect-with-X plugin contract.
|
|
3
3
|
*
|
|
4
|
-
* List providers on `identity.connect` (e.g. `github
|
|
4
|
+
* List providers on `identity.connect` (e.g. `connect.github()`) to mount
|
|
5
5
|
* `/identity/{id}/{status,connect,callback,link}` from the managed HTTP app.
|
|
6
|
+
* Built-in providers also mount when the deployment implies them (see
|
|
7
|
+
* {@link IdentityConnectMountContext}).
|
|
6
8
|
*/
|
|
9
|
+
import type { IdentityConfig } from "./types.js";
|
|
7
10
|
/** Context for deciding whether a provider's routes should mount. */
|
|
8
11
|
export interface IdentityConnectMountContext {
|
|
9
12
|
/** Compiled channel manifests (file stem → manifest). */
|
|
@@ -12,6 +15,27 @@ export interface IdentityConnectMountContext {
|
|
|
12
15
|
}>;
|
|
13
16
|
/** True when the project declared managed identity. */
|
|
14
17
|
hasIdentity: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* True when this provider appears on `identity.connect`. False when it is
|
|
20
|
+
* offered as a built-in candidate, in which case the provider's own predicate
|
|
21
|
+
* decides whether the deployment needs it.
|
|
22
|
+
*/
|
|
23
|
+
declared?: boolean;
|
|
24
|
+
/** The deployment's resolved isolation axes. */
|
|
25
|
+
scope?: IdentityConfig["scope"];
|
|
26
|
+
/**
|
|
27
|
+
* The deployment's credential config, when one is declared: a single resolver
|
|
28
|
+
* or a per-target map. Prefer `credentialConnectIds(ctx.credentials)` over
|
|
29
|
+
* reading it directly, so both forms are handled.
|
|
30
|
+
*/
|
|
31
|
+
credentials?: IdentityConfig["credentials"];
|
|
32
|
+
/**
|
|
33
|
+
* Connector `kind` values discovered for the deployment (toolserver slugs,
|
|
34
|
+
* `github`, `slack`, …). Used to infer Connect-with-X from matching
|
|
35
|
+
* connectors (GitHub, Google, Microsoft, LinkedIn) without listing
|
|
36
|
+
* `connect.<provider>()` on identity.
|
|
37
|
+
*/
|
|
38
|
+
connectorKinds?: readonly (string | undefined)[];
|
|
15
39
|
}
|
|
16
40
|
/** JSON object returned by status / error payloads. */
|
|
17
41
|
export type IdentityConnectJson = Record<string, unknown>;
|
|
@@ -49,20 +73,25 @@ export interface IdentityConnectProvider {
|
|
|
49
73
|
readonly settingsQueryKey?: string;
|
|
50
74
|
/** Whether to mount this provider's four routes for the current project. */
|
|
51
75
|
shouldMount(ctx: IdentityConnectMountContext): boolean;
|
|
52
|
-
/** Secured status payload for the authenticated
|
|
53
|
-
status(
|
|
76
|
+
/** Secured status payload for the authenticated user. */
|
|
77
|
+
status(userId: string): IdentityConnectJson | Promise<IdentityConnectJson>;
|
|
54
78
|
/** Begin OAuth — return authorize URL or a not-configured error. */
|
|
55
|
-
startAuthorize(
|
|
79
|
+
startAuthorize(userId: string, redirectUri: string): IdentityConnectAuthorizeResult | Promise<IdentityConnectAuthorizeResult>;
|
|
56
80
|
/**
|
|
57
81
|
* Finish OAuth callback. Throw on failure; the scaffold redirects to
|
|
58
82
|
* `/settings?{settingsQueryKey}=error`.
|
|
59
83
|
*/
|
|
60
84
|
completeCallback(code: string, state: string, redirectUri: string): IdentityConnectCallbackResult | Promise<IdentityConnectCallbackResult>;
|
|
61
|
-
/** Remove the
|
|
62
|
-
unlink(
|
|
85
|
+
/** Remove the user's link / stored credentials. */
|
|
86
|
+
unlink(userId: string): void | Promise<void>;
|
|
63
87
|
/** Resolve the public Agent Server base for `redirect_uri`. */
|
|
64
88
|
resolveRedirectBase(options: IdentityConnectRedirectBaseOptions): string;
|
|
65
89
|
/** Public app origin for settings fail/success redirects when available. */
|
|
66
90
|
resolvePublicAppUrl?(): string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Optional: resolve a caller from a signed `?ticket=` on the connect start
|
|
93
|
+
* route (channel actors without a browser session). Returns the actor user id.
|
|
94
|
+
*/
|
|
95
|
+
resolveConnectTicket?(ticket: string): string | Promise<string>;
|
|
67
96
|
}
|
|
68
97
|
//# sourceMappingURL=connect-provider-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-provider-types.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connect-provider-types.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAClD;AAED,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,8BAA8B,GACtC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,aAAa,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,oEAAoE;AACpE,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvD,yDAAyD;IACzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3E,oEAAoE;IACpE,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC1E,mDAAmD;IACnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,+DAA+D;IAC/D,mBAAmB,CAAC,OAAO,EAAE,kCAAkC,GAAG,MAAM,CAAC;IACzE,4EAA4E;IAC5E,mBAAmB,CAAC,IAAI,MAAM,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjE"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connect-with-X plugin contract.
|
|
3
3
|
*
|
|
4
|
-
* List providers on `identity.connect` (e.g. `github
|
|
4
|
+
* List providers on `identity.connect` (e.g. `connect.github()`) to mount
|
|
5
5
|
* `/identity/{id}/{status,connect,callback,link}` from the managed HTTP app.
|
|
6
|
+
* Built-in providers also mount when the deployment implies them (see
|
|
7
|
+
* {@link IdentityConnectMountContext}).
|
|
6
8
|
*/
|
|
7
9
|
export {};
|
|
8
10
|
//# sourceMappingURL=connect-provider-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-provider-types.js","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connect-provider-types.js","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -17,14 +17,19 @@ export interface IdentityConnectMountedRoute {
|
|
|
17
17
|
}
|
|
18
18
|
export declare function identityConnectSettingsQueryKey(provider: IdentityConnectProvider): string;
|
|
19
19
|
/**
|
|
20
|
-
* Mount Connect-with-X routes
|
|
20
|
+
* Mount Connect-with-X routes.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* Declared providers (`defineIdentity({ connect: [connect.github(), …] })`) are
|
|
23
|
+
* offered first, then any `candidates` the deployment did not list. Every
|
|
24
|
+
* provider still decides for itself via `shouldMount`, which sees whether it was
|
|
25
|
+
* declared — so a built-in can mount because the rest of the identity implies it
|
|
26
|
+
* without ever mounting on a deployment that has no use for it.
|
|
24
27
|
*/
|
|
25
28
|
export declare function mountIdentityConnectProviders(app: Hono, cfg: IdentityConfig, ctx: IdentityConnectMountContext, mounted: IdentityConnectMountedRoute[], options?: {
|
|
26
29
|
deploymentBaseUrl?: string;
|
|
27
|
-
/** Providers from `identity.connect
|
|
30
|
+
/** Providers from `identity.connect`. */
|
|
28
31
|
providers?: IdentityConnectProvider[];
|
|
32
|
+
/** Built-in providers to offer when the deployment did not list them. */
|
|
33
|
+
candidates?: IdentityConnectProvider[];
|
|
29
34
|
}): void;
|
|
30
35
|
//# sourceMappingURL=connect-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-provider.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAIrC,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qDAAqD;AACrD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,uBAAuB,GAChC,MAAM,CAER;AAED
|
|
1
|
+
{"version":3,"file":"connect-provider.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAIrC,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qDAAqD;AACrD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,uBAAuB,GAChC,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,2BAA2B,EAChC,OAAO,EAAE,2BAA2B,EAAE,EACtC,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,SAAS,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACtC,yEAAyE;IACzE,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACnC,GACL,IAAI,CAeN"}
|
|
@@ -5,21 +5,31 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { identityConnectPaths } from "./connect-paths.js";
|
|
7
7
|
import { resolveRequestIdentity } from "../runtime/auth.js";
|
|
8
|
-
import { MDA_PUBLIC_APP_URL_ENV } from "./
|
|
8
|
+
import { MDA_PUBLIC_APP_URL_ENV } from "./oauth-env.js";
|
|
9
9
|
export { identityConnectPaths } from "./connect-paths.js";
|
|
10
10
|
export function identityConnectSettingsQueryKey(provider) {
|
|
11
11
|
return provider.settingsQueryKey?.trim() || provider.id;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* Mount Connect-with-X routes
|
|
14
|
+
* Mount Connect-with-X routes.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
16
|
+
* Declared providers (`defineIdentity({ connect: [connect.github(), …] })`) are
|
|
17
|
+
* offered first, then any `candidates` the deployment did not list. Every
|
|
18
|
+
* provider still decides for itself via `shouldMount`, which sees whether it was
|
|
19
|
+
* declared — so a built-in can mount because the rest of the identity implies it
|
|
20
|
+
* without ever mounting on a deployment that has no use for it.
|
|
18
21
|
*/
|
|
19
22
|
export function mountIdentityConnectProviders(app, cfg, ctx, mounted, options = {}) {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
const declared = options.providers ?? [];
|
|
24
|
+
const declaredIds = new Set(declared.map((provider) => provider.id));
|
|
25
|
+
const offered = [
|
|
26
|
+
...declared.map((provider) => ({ provider, declared: true })),
|
|
27
|
+
...(options.candidates ?? [])
|
|
28
|
+
.filter((provider) => !declaredIds.has(provider.id))
|
|
29
|
+
.map((provider) => ({ provider, declared: false })),
|
|
30
|
+
];
|
|
31
|
+
for (const { provider, declared: isDeclared } of offered) {
|
|
32
|
+
if (!provider.shouldMount({ ...ctx, declared: isDeclared })) {
|
|
23
33
|
continue;
|
|
24
34
|
}
|
|
25
35
|
mountOneIdentityConnectProvider(app, cfg, provider, mounted, options);
|
|
@@ -47,15 +57,31 @@ function mountOneIdentityConnectProvider(app, cfg, provider, mounted, options) {
|
|
|
47
57
|
if (identity instanceof Response) {
|
|
48
58
|
return identity;
|
|
49
59
|
}
|
|
50
|
-
return c.json(await provider.status(identity.
|
|
60
|
+
return c.json(await provider.status(identity.user.id));
|
|
51
61
|
});
|
|
52
62
|
app.get(paths.connect, async (c) => {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
const ticket = c.req.query("ticket")?.trim();
|
|
64
|
+
let userId;
|
|
65
|
+
if (ticket && provider.resolveConnectTicket) {
|
|
66
|
+
try {
|
|
67
|
+
userId = await provider.resolveConnectTicket(ticket);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const message = error instanceof Error && error.message
|
|
71
|
+
? error.message
|
|
72
|
+
: "invalid connect ticket";
|
|
73
|
+
return c.json({ error: message }, 401);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const identity = await resolveOrUnauthorized(cfg, c.req.raw);
|
|
78
|
+
if (identity instanceof Response) {
|
|
79
|
+
return identity;
|
|
80
|
+
}
|
|
81
|
+
userId = identity.user.id;
|
|
56
82
|
}
|
|
57
83
|
const redirectUri = callbackRedirectUri(provider, c.req.raw, options.deploymentBaseUrl);
|
|
58
|
-
const result = await provider.startAuthorize(
|
|
84
|
+
const result = await provider.startAuthorize(userId, redirectUri);
|
|
59
85
|
if ("notConfigured" in result) {
|
|
60
86
|
return c.json({ error: result.error }, 503);
|
|
61
87
|
}
|
|
@@ -92,7 +118,7 @@ function mountOneIdentityConnectProvider(app, cfg, provider, mounted, options) {
|
|
|
92
118
|
if (identity instanceof Response) {
|
|
93
119
|
return identity;
|
|
94
120
|
}
|
|
95
|
-
await provider.unlink(identity.
|
|
121
|
+
await provider.unlink(identity.user.id);
|
|
96
122
|
return c.json({ linked: false });
|
|
97
123
|
});
|
|
98
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-provider.js","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"connect-provider.js","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"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"}
|