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
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { importPKCS8, SignJWT } from "jose";
|
|
2
|
+
import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS, } from "../../runtime/http.js";
|
|
3
|
+
import { connect as githubConnect } from "./connect-http.js";
|
|
2
4
|
import { getGitHubCredentialStore } from "./credentials-store.js";
|
|
3
5
|
const DEFAULT_READ_CHAIN = ["installation", "pat"];
|
|
4
|
-
const DEFAULT_WRITE_CHAIN = ["
|
|
6
|
+
const DEFAULT_WRITE_CHAIN = ["user"];
|
|
7
|
+
const USER_TOKEN_SOURCES = ["user"];
|
|
5
8
|
const GITHUB_API_VERSION = "2022-11-28";
|
|
6
9
|
const USER_AGENT = "managed-deepagents";
|
|
7
10
|
/**
|
|
@@ -13,18 +16,21 @@ const USER_AGENT = "managed-deepagents";
|
|
|
13
16
|
* import { defineIdentity, github } from "managed-deepagents";
|
|
14
17
|
*
|
|
15
18
|
* export const identity = defineIdentity({
|
|
16
|
-
*
|
|
17
|
-
* scoping: { memory: "actor", credentials: "custom" },
|
|
18
|
-
* credentials: github.credentials({ repositories: ["acme/*"] }),
|
|
19
|
+
* credentials: credentials.github({ repositories: ["acme/*"] }),
|
|
19
20
|
* });
|
|
20
21
|
* ```
|
|
22
|
+
*
|
|
23
|
+
* When a chain reads user tokens from the managed vault, the returned config
|
|
24
|
+
* declares Connect-with-GitHub so `defineIdentity` mounts `/identity/github/…`
|
|
25
|
+
* without a separate `connect` entry.
|
|
21
26
|
*/
|
|
22
27
|
export function credentials(options = {}) {
|
|
23
28
|
validateGithubCredentialsOptions(options);
|
|
24
29
|
return {
|
|
30
|
+
...(usesUserTokens(options) ? { connect: [githubConnect()] } : {}),
|
|
25
31
|
async resolve({ identity, target }) {
|
|
26
32
|
if (target.name !== "github") {
|
|
27
|
-
throw new Error(`github
|
|
33
|
+
throw new Error(`credentials.github(...) can only resolve target name "github" (received "${target.name}").`);
|
|
28
34
|
}
|
|
29
35
|
const repo = repoFromTarget(target) ?? defaultRepoFromPatterns(options.repositories);
|
|
30
36
|
assertRepoAllowed(repo, options.repositories);
|
|
@@ -37,17 +43,31 @@ export function credentials(options = {}) {
|
|
|
37
43
|
return credential;
|
|
38
44
|
}
|
|
39
45
|
}
|
|
40
|
-
throw new Error(`github
|
|
46
|
+
throw new Error(`credentials.github(...) could not resolve a GitHub credential for target "${target.name}".`);
|
|
41
47
|
},
|
|
42
48
|
};
|
|
43
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* True when either chain can reach the per-user OAuth vault.
|
|
52
|
+
*
|
|
53
|
+
* A custom `resolveUserToken` hook replaces the vault, so a deployment that
|
|
54
|
+
* supplies one owns its token source and needs no Connect-with-GitHub routes.
|
|
55
|
+
*/
|
|
56
|
+
function usesUserTokens(options) {
|
|
57
|
+
if (options.resolveUserToken) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
const read = options.read ?? DEFAULT_READ_CHAIN;
|
|
61
|
+
const write = options.write ?? DEFAULT_WRITE_CHAIN;
|
|
62
|
+
return [...read, ...write].some((source) => USER_TOKEN_SOURCES.includes(source));
|
|
63
|
+
}
|
|
44
64
|
function validateGithubCredentialsOptions(options) {
|
|
45
65
|
validateChain("read", options.read);
|
|
46
66
|
validateChain("write", options.write);
|
|
47
67
|
if (options.repositories) {
|
|
48
68
|
for (const pattern of options.repositories) {
|
|
49
69
|
if (!isAllowedRepoPattern(pattern)) {
|
|
50
|
-
throw new Error(`github
|
|
70
|
+
throw new Error(`credentials.github(...) repository allowlist entry "${pattern}" must look like "owner/repo" or "owner/*".`);
|
|
51
71
|
}
|
|
52
72
|
}
|
|
53
73
|
}
|
|
@@ -56,11 +76,11 @@ function validateChain(name, chain) {
|
|
|
56
76
|
if (chain === undefined)
|
|
57
77
|
return;
|
|
58
78
|
if (!Array.isArray(chain) || chain.length === 0) {
|
|
59
|
-
throw new Error(`github
|
|
79
|
+
throw new Error(`credentials.github(...) \`${name}\` must be a non-empty token source list.`);
|
|
60
80
|
}
|
|
61
81
|
for (const source of chain) {
|
|
62
|
-
if (source !== "
|
|
63
|
-
throw new Error(`github
|
|
82
|
+
if (source !== "user" && source !== "installation" && source !== "pat") {
|
|
83
|
+
throw new Error(`credentials.github(...) unknown token source "${String(source)}".`);
|
|
64
84
|
}
|
|
65
85
|
}
|
|
66
86
|
}
|
|
@@ -69,8 +89,8 @@ async function resolveSource(source, ctx, options) {
|
|
|
69
89
|
const token = options.pat ?? process.env.GITHUB_TOKEN ?? process.env.GITHUB_PAT;
|
|
70
90
|
return token ? bearer(token) : undefined;
|
|
71
91
|
}
|
|
72
|
-
if (source === "
|
|
73
|
-
const resolve = options.
|
|
92
|
+
if (source === "user") {
|
|
93
|
+
const resolve = options.resolveUserToken ?? defaultResolveUserToken;
|
|
74
94
|
const token = await resolve({
|
|
75
95
|
identity: ctx.identity,
|
|
76
96
|
scopes: ["repo"],
|
|
@@ -87,13 +107,13 @@ async function installationCredential(target, options) {
|
|
|
87
107
|
return undefined;
|
|
88
108
|
}
|
|
89
109
|
if (!appId || !privateKey) {
|
|
90
|
-
throw new Error('github
|
|
110
|
+
throw new Error('credentials.github(...) token source "installation" requires `appId` and `privateKey` (or GITHUB_APP_ID / GITHUB_APP_PRIVATE_KEY).');
|
|
91
111
|
}
|
|
92
112
|
const appJwt = options.createAppJwt
|
|
93
113
|
? await options.createAppJwt({ appId, privateKey })
|
|
94
114
|
: await createGitHubAppJwt({ appId, privateKey });
|
|
95
115
|
const fetchImpl = options.fetch ?? fetch;
|
|
96
|
-
const response = await
|
|
116
|
+
const response = await fetchWithTimeout(`https://api.github.com/app/installations/${encodeURIComponent(installationId)}/access_tokens`, {
|
|
97
117
|
method: "POST",
|
|
98
118
|
headers: {
|
|
99
119
|
Accept: "application/vnd.github+json",
|
|
@@ -101,13 +121,13 @@ async function installationCredential(target, options) {
|
|
|
101
121
|
"User-Agent": USER_AGENT,
|
|
102
122
|
"X-GitHub-Api-Version": GITHUB_API_VERSION,
|
|
103
123
|
},
|
|
104
|
-
});
|
|
124
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
|
|
105
125
|
if (!response.ok) {
|
|
106
|
-
throw new Error(`github
|
|
126
|
+
throw new Error(`credentials.github(...) GitHub installation token request failed with ${response.status}.`);
|
|
107
127
|
}
|
|
108
128
|
const body = (await response.json());
|
|
109
129
|
if (typeof body.token !== "string" || body.token.length === 0) {
|
|
110
|
-
throw new Error("github
|
|
130
|
+
throw new Error("credentials.github(...) GitHub installation token response did not include `token`.");
|
|
111
131
|
}
|
|
112
132
|
return {
|
|
113
133
|
...bearer(body.token),
|
|
@@ -127,11 +147,11 @@ async function createGitHubAppJwt({ appId, privateKey, }) {
|
|
|
127
147
|
.sign(key);
|
|
128
148
|
}
|
|
129
149
|
/**
|
|
130
|
-
* Default
|
|
131
|
-
* Returns undefined when the
|
|
150
|
+
* Default user-token lookup: Connect-with-GitHub vault keyed by user id.
|
|
151
|
+
* Returns undefined when the user has not connected GitHub yet.
|
|
132
152
|
*/
|
|
133
|
-
export async function
|
|
134
|
-
const record = await getGitHubCredentialStore().
|
|
153
|
+
export async function defaultResolveUserToken(args) {
|
|
154
|
+
const record = await getGitHubCredentialStore().getByUserId(args.identity.user.id);
|
|
135
155
|
return record?.accessToken;
|
|
136
156
|
}
|
|
137
157
|
function bearer(token) {
|
|
@@ -153,10 +173,10 @@ function assertRepoAllowed(repo, patterns) {
|
|
|
153
173
|
if (!patterns || patterns.length === 0)
|
|
154
174
|
return;
|
|
155
175
|
if (!repo) {
|
|
156
|
-
throw new Error("github
|
|
176
|
+
throw new Error("credentials.github(...) target metadata must include `repo` when repositories allowlist is configured (or include an exact owner/repo entry to default).");
|
|
157
177
|
}
|
|
158
178
|
if (!patterns.some((pattern) => repoMatches(repo, pattern))) {
|
|
159
|
-
throw new Error(`github
|
|
179
|
+
throw new Error(`credentials.github(...) repository "${repo}" is not allowed by the configured repositories allowlist.`);
|
|
160
180
|
}
|
|
161
181
|
}
|
|
162
182
|
/** First exact `owner/repo` pattern, used when callers omit `metadata.repo`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/identity/github/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/identity/github/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub identity helpers — credentials resolver + Connect-with-GitHub opt-in.
|
|
3
|
-
*
|
|
4
|
-
* Channel authoring lives under `managed-deepagents/channels/github`
|
|
5
|
-
* (`defineGitHubChannel`). Sandbox connector: `github.connector(...)`.
|
|
6
3
|
*/
|
|
7
|
-
export { credentials, type
|
|
4
|
+
export { credentials, type GitHubUserTokenArgs, type GitHubAppJwtArgs, type GitHubCredentialsOptions, type GitHubTokenSource, } from "./credentials.js";
|
|
8
5
|
export { connect, createGitHubIdentityConnectProvider, githubIdentityConnectProvider, GITHUB_CONNECT_CALLBACK_PATH, GITHUB_CONNECT_LINK_PATH, GITHUB_CONNECT_START_PATH, GITHUB_CONNECT_STATUS_PATH, } from "./connect-http.js";
|
|
9
6
|
export type { GitHubIdentityConnectProviderOptions } from "./connect-http.js";
|
|
10
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identity/github/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identity/github/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,OAAO,EACP,mCAAmC,EACnC,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,oCAAoC,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub identity helpers — credentials resolver + Connect-with-GitHub opt-in.
|
|
3
|
-
*
|
|
4
|
-
* Channel authoring lives under `managed-deepagents/channels/github`
|
|
5
|
-
* (`defineGitHubChannel`). Sandbox connector: `github.connector(...)`.
|
|
6
3
|
*/
|
|
7
4
|
export { credentials, } from "./credentials.js";
|
|
8
5
|
export { connect, createGitHubIdentityConnectProvider, githubIdentityConnectProvider, GITHUB_CONNECT_CALLBACK_PATH, GITHUB_CONNECT_LINK_PATH, GITHUB_CONNECT_START_PATH, GITHUB_CONNECT_STATUS_PATH, } from "./connect-http.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/github/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/github/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,GAKZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,OAAO,EACP,mCAAmC,EACnC,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC"}
|
|
@@ -2,25 +2,20 @@
|
|
|
2
2
|
* GitHub OAuth helpers for Connect-with-GitHub credential binding.
|
|
3
3
|
*
|
|
4
4
|
* Unlike Slack Connect (channel identity remap only), GitHub Connect stores a
|
|
5
|
-
* per-actor OAuth access token so `github
|
|
5
|
+
* per-actor OAuth access token so `credentials.github({ write: ["actor"] })`
|
|
6
6
|
* can act as the signed-in user (e.g. open pull requests).
|
|
7
|
+
*
|
|
8
|
+
* Implemented as a {@link createByoOauthClient} descriptor with GitHub-specific
|
|
9
|
+
* token (JSON body) and userinfo (API headers) quirks.
|
|
7
10
|
*/
|
|
8
|
-
import {
|
|
9
|
-
export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, };
|
|
11
|
+
import { type ByoOauthClient, type ByoOauthConfig } from "../byo-oauth.js";
|
|
10
12
|
export declare const GITHUB_CLIENT_ID_ENV = "GITHUB_CLIENT_ID";
|
|
11
13
|
export declare const GITHUB_CLIENT_SECRET_ENV = "GITHUB_CLIENT_SECRET";
|
|
12
14
|
/** Space-separated OAuth scopes. Defaults to `repo read:user`. */
|
|
13
15
|
export declare const GITHUB_OAUTH_SCOPES_ENV = "GITHUB_OAUTH_SCOPES";
|
|
14
16
|
/** Override GitHub OAuth/API base (tests). */
|
|
15
17
|
export declare const GITHUB_OAUTH_BASE_ENV = "GITHUB_OAUTH_BASE";
|
|
16
|
-
export
|
|
17
|
-
clientId: string;
|
|
18
|
-
clientSecret: string;
|
|
19
|
-
publicAppUrl: string;
|
|
20
|
-
scopes: string;
|
|
21
|
-
oauthBase: string;
|
|
22
|
-
apiBase: string;
|
|
23
|
-
}
|
|
18
|
+
export type GitHubOauthConfig = ByoOauthConfig;
|
|
24
19
|
export interface GitHubOauthTokenResult {
|
|
25
20
|
accessToken: string;
|
|
26
21
|
tokenType?: string;
|
|
@@ -30,20 +25,23 @@ export interface GitHubOauthTokenResult {
|
|
|
30
25
|
login: string;
|
|
31
26
|
email?: string;
|
|
32
27
|
}
|
|
28
|
+
/** GitHub BYO OAuth client (config, authorize, exchange). */
|
|
29
|
+
export declare const githubByoOauth: ByoOauthClient;
|
|
30
|
+
/** GitHub-bound OAuth state / connect-ticket helpers. */
|
|
31
|
+
export declare const githubOauthTickets: import("../oauth-tickets.js").OauthTickets;
|
|
32
|
+
export declare const resolveGitHubOauthRedirectBase: typeof import("../oauth-env.js").resolveOauthRedirectBase;
|
|
33
|
+
/**
|
|
34
|
+
* Requires `MDA_PUBLIC_APP_URL` — unlike Fleet BYO readers, do not fall back
|
|
35
|
+
* to `MDA_PUBLIC_API_URL`; post-OAuth redirect targets the managed app
|
|
36
|
+
* (`/settings?github=connected`).
|
|
37
|
+
*/
|
|
33
38
|
export declare function readGitHubOauthConfig(env?: NodeJS.ProcessEnv): GitHubOauthConfig | null;
|
|
34
|
-
|
|
35
|
-
export declare const resolveGitHubOauthRedirectBase: typeof resolveSlackOauthRedirectBase;
|
|
36
|
-
export declare function buildGitHubAuthorizeUrl(config: GitHubOauthConfig, state: string, redirectUri: string): string;
|
|
37
|
-
/** Signed state binding the authenticated actor to the OAuth round-trip. */
|
|
38
|
-
export declare function createGitHubOauthState(actorId: string, signingKey: string, nowMs?: number): Promise<string>;
|
|
39
|
-
export declare function verifyGitHubOauthState(state: string, signingKey: string, nowMs?: number): Promise<{
|
|
40
|
-
actorId: string;
|
|
41
|
-
}>;
|
|
39
|
+
export declare const buildGitHubAuthorizeUrl: (config: ByoOauthConfig, state: string, redirectUri: string, scopes?: string) => string;
|
|
42
40
|
/**
|
|
43
41
|
* Exchange an authorization code for a user access token and profile.
|
|
44
42
|
*
|
|
45
43
|
* GitHub returns `application/x-www-form-urlencoded` unless `Accept:
|
|
46
|
-
* application/json` is set.
|
|
44
|
+
* application/json` is set — handled by the BYO tokenRequest config.
|
|
47
45
|
*/
|
|
48
46
|
export declare function exchangeGitHubOauthCode(config: GitHubOauthConfig, code: string, redirectUri: string, fetchImpl?: typeof fetch): Promise<GitHubOauthTokenResult>;
|
|
49
47
|
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAGzB,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAQzD,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyBD,6DAA6D;AAC7D,eAAO,MAAM,cAAc,EAAE,cAkD3B,CAAC;AAEH,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,4CAAyB,CAAC;AAEzD,eAAO,MAAM,8BAA8B,2DACP,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,GAAG,IAAI,CAK1B;AAED,eAAO,MAAM,uBAAuB,yFAAmC,CAAC;AAExE;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAqBjC"}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* GitHub OAuth helpers for Connect-with-GitHub credential binding.
|
|
3
3
|
*
|
|
4
4
|
* Unlike Slack Connect (channel identity remap only), GitHub Connect stores a
|
|
5
|
-
* per-actor OAuth access token so `github
|
|
5
|
+
* per-actor OAuth access token so `credentials.github({ write: ["actor"] })`
|
|
6
6
|
* can act as the signed-in user (e.g. open pull requests).
|
|
7
|
+
*
|
|
8
|
+
* Implemented as a {@link createByoOauthClient} descriptor with GitHub-specific
|
|
9
|
+
* token (JSON body) and userinfo (API headers) quirks.
|
|
7
10
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveSlackOauthRedirectBase, } from "../slack/oauth.js";
|
|
11
|
-
export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, };
|
|
11
|
+
import { createByoOauthClient, } from "../byo-oauth.js";
|
|
12
|
+
import { MDA_PUBLIC_APP_URL_ENV } from "../oauth-env.js";
|
|
12
13
|
export const GITHUB_CLIENT_ID_ENV = "GITHUB_CLIENT_ID";
|
|
13
14
|
export const GITHUB_CLIENT_SECRET_ENV = "GITHUB_CLIENT_SECRET";
|
|
14
15
|
/** Space-separated OAuth scopes. Defaults to `repo read:user`. */
|
|
@@ -18,126 +19,106 @@ export const GITHUB_OAUTH_BASE_ENV = "GITHUB_OAUTH_BASE";
|
|
|
18
19
|
const DEFAULT_OAUTH_BASE = "https://github.com";
|
|
19
20
|
const DEFAULT_API_BASE = "https://api.github.com";
|
|
20
21
|
const DEFAULT_SCOPES = "repo read:user";
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const clientId = env[GITHUB_CLIENT_ID_ENV]?.trim();
|
|
25
|
-
const clientSecret = env[GITHUB_CLIENT_SECRET_ENV]?.trim();
|
|
26
|
-
const publicAppUrl = env[MDA_PUBLIC_APP_URL_ENV]?.trim();
|
|
27
|
-
if (!clientId || !clientSecret || !publicAppUrl) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
22
|
+
const SUBJECT_METADATA_KEY = "github_user_id";
|
|
23
|
+
const LOGIN_METADATA_KEY = "github_login";
|
|
24
|
+
function githubEndpoints(env) {
|
|
30
25
|
const oauthBase = (env[GITHUB_OAUTH_BASE_ENV]?.trim() || DEFAULT_OAUTH_BASE).replace(/\/$/, "");
|
|
26
|
+
const apiBase = oauthBase === DEFAULT_OAUTH_BASE ? DEFAULT_API_BASE : `${oauthBase}/api/v3`;
|
|
31
27
|
return {
|
|
32
|
-
clientId,
|
|
33
|
-
clientSecret,
|
|
34
|
-
publicAppUrl: publicAppUrl.replace(/\/$/, ""),
|
|
35
|
-
scopes: env[GITHUB_OAUTH_SCOPES_ENV]?.trim() || DEFAULT_SCOPES,
|
|
36
28
|
oauthBase,
|
|
37
|
-
apiBase
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
apiBase,
|
|
30
|
+
authUrl: `${oauthBase}/login/oauth/authorize`,
|
|
31
|
+
tokenUrl: `${oauthBase}/login/oauth/access_token`,
|
|
32
|
+
userInfoUrl: `${apiBase}/user`,
|
|
33
|
+
defaultScopes: DEFAULT_SCOPES,
|
|
40
34
|
};
|
|
41
35
|
}
|
|
42
|
-
/**
|
|
43
|
-
export const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
throw err;
|
|
80
|
-
}
|
|
81
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
82
|
-
if (/exp|expir/i.test(message)) {
|
|
83
|
-
throw new Error("OAuth state expired");
|
|
36
|
+
/** GitHub BYO OAuth client (config, authorize, exchange). */
|
|
37
|
+
export const githubByoOauth = createByoOauthClient({
|
|
38
|
+
providerId: "github",
|
|
39
|
+
displayName: "GitHub",
|
|
40
|
+
envPrefix: "GITHUB",
|
|
41
|
+
envKeys: {
|
|
42
|
+
scopes: GITHUB_OAUTH_SCOPES_ENV,
|
|
43
|
+
},
|
|
44
|
+
defaultPrompt: false,
|
|
45
|
+
tokenRequest: {
|
|
46
|
+
format: "json",
|
|
47
|
+
headers: { Accept: "application/json" },
|
|
48
|
+
},
|
|
49
|
+
userInfoRequest: {
|
|
50
|
+
required: true,
|
|
51
|
+
headers: {
|
|
52
|
+
Accept: "application/vnd.github+json",
|
|
53
|
+
"User-Agent": "managed-deepagents",
|
|
54
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
defaultEndpoints(env) {
|
|
58
|
+
const endpoints = githubEndpoints(env);
|
|
59
|
+
return {
|
|
60
|
+
authUrl: endpoints.authUrl,
|
|
61
|
+
tokenUrl: endpoints.tokenUrl,
|
|
62
|
+
userInfoUrl: endpoints.userInfoUrl,
|
|
63
|
+
defaultScopes: endpoints.defaultScopes,
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
parseUserInfo(json) {
|
|
67
|
+
const id = json.id;
|
|
68
|
+
const login = typeof json.login === "string" ? json.login : undefined;
|
|
69
|
+
if (id === undefined || !login) {
|
|
70
|
+
throw new Error(typeof json.message === "string"
|
|
71
|
+
? json.message
|
|
72
|
+
: "GitHub /user lookup failed");
|
|
84
73
|
}
|
|
85
|
-
|
|
74
|
+
return {
|
|
75
|
+
...(typeof json.email === "string" && json.email
|
|
76
|
+
? { email: json.email }
|
|
77
|
+
: {}),
|
|
78
|
+
subject: String(id),
|
|
79
|
+
metadata: {
|
|
80
|
+
[LOGIN_METADATA_KEY]: login,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
subjectMetadataKey: SUBJECT_METADATA_KEY,
|
|
85
|
+
});
|
|
86
|
+
/** GitHub-bound OAuth state / connect-ticket helpers. */
|
|
87
|
+
export const githubOauthTickets = githubByoOauth.tickets;
|
|
88
|
+
export const resolveGitHubOauthRedirectBase = githubByoOauth.resolveRedirectBase;
|
|
89
|
+
/**
|
|
90
|
+
* Requires `MDA_PUBLIC_APP_URL` — unlike Fleet BYO readers, do not fall back
|
|
91
|
+
* to `MDA_PUBLIC_API_URL`; post-OAuth redirect targets the managed app
|
|
92
|
+
* (`/settings?github=connected`).
|
|
93
|
+
*/
|
|
94
|
+
export function readGitHubOauthConfig(env = process.env) {
|
|
95
|
+
if (!env[MDA_PUBLIC_APP_URL_ENV]?.trim()) {
|
|
96
|
+
return null;
|
|
86
97
|
}
|
|
98
|
+
return githubByoOauth.readConfig(env);
|
|
87
99
|
}
|
|
100
|
+
export const buildGitHubAuthorizeUrl = githubByoOauth.buildAuthorizeUrl;
|
|
88
101
|
/**
|
|
89
102
|
* Exchange an authorization code for a user access token and profile.
|
|
90
103
|
*
|
|
91
104
|
* GitHub returns `application/x-www-form-urlencoded` unless `Accept:
|
|
92
|
-
* application/json` is set.
|
|
105
|
+
* application/json` is set — handled by the BYO tokenRequest config.
|
|
93
106
|
*/
|
|
94
107
|
export async function exchangeGitHubOauthCode(config, code, redirectUri, fetchImpl = fetch) {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
},
|
|
101
|
-
body: JSON.stringify({
|
|
102
|
-
client_id: config.clientId,
|
|
103
|
-
client_secret: config.clientSecret,
|
|
104
|
-
code,
|
|
105
|
-
redirect_uri: redirectUri,
|
|
106
|
-
}),
|
|
107
|
-
});
|
|
108
|
-
const tokenJson = (await tokenResponse.json());
|
|
109
|
-
if (!tokenResponse.ok || !tokenJson.access_token) {
|
|
110
|
-
throw new Error(tokenJson.error_description ??
|
|
111
|
-
tokenJson.error ??
|
|
112
|
-
"GitHub OAuth token exchange failed");
|
|
113
|
-
}
|
|
114
|
-
const userResponse = await fetchImpl(`${config.apiBase}/user`, {
|
|
115
|
-
headers: {
|
|
116
|
-
Accept: "application/vnd.github+json",
|
|
117
|
-
Authorization: `Bearer ${tokenJson.access_token}`,
|
|
118
|
-
"User-Agent": "managed-deepagents",
|
|
119
|
-
"X-GitHub-Api-Version": "2022-11-28",
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
const userJson = (await userResponse.json());
|
|
123
|
-
if (!userResponse.ok || userJson.id === undefined || !userJson.login) {
|
|
124
|
-
throw new Error(userJson.message ?? "GitHub /user lookup failed");
|
|
108
|
+
const result = await githubByoOauth.exchangeCode(config, code, redirectUri, fetchImpl);
|
|
109
|
+
const userId = result.metadata?.[SUBJECT_METADATA_KEY];
|
|
110
|
+
const login = result.metadata?.[LOGIN_METADATA_KEY];
|
|
111
|
+
if (typeof userId !== "string" || typeof login !== "string" || !login) {
|
|
112
|
+
throw new Error("GitHub /user lookup failed");
|
|
125
113
|
}
|
|
126
114
|
return {
|
|
127
|
-
accessToken:
|
|
128
|
-
...(
|
|
129
|
-
...(
|
|
130
|
-
...(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
login: userJson.login,
|
|
135
|
-
...(typeof userJson.email === "string" && userJson.email
|
|
136
|
-
? { email: userJson.email }
|
|
137
|
-
: {}),
|
|
115
|
+
accessToken: result.accessToken,
|
|
116
|
+
...(result.tokenType ? { tokenType: result.tokenType } : {}),
|
|
117
|
+
...(result.scope ? { scope: result.scope } : {}),
|
|
118
|
+
...(result.refreshToken ? { refreshToken: result.refreshToken } : {}),
|
|
119
|
+
userId,
|
|
120
|
+
login,
|
|
121
|
+
...(result.accountLabel ? { email: result.accountLabel } : {}),
|
|
138
122
|
};
|
|
139
123
|
}
|
|
140
|
-
function stateSigningKey(signingKey) {
|
|
141
|
-
return new TextEncoder().encode(signingKey);
|
|
142
|
-
}
|
|
143
124
|
//# sourceMappingURL=oauth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connect-with-Google — thin adapter over {@link defineFleetIntegrationConnect}.
|
|
3
|
+
*
|
|
4
|
+
* Mounted under `/identity/google/*` when listed on `identity.connect`, or
|
|
5
|
+
* inferred from declared Google toolserver connectors on a user-scoped
|
|
6
|
+
* deployment.
|
|
7
|
+
*/
|
|
8
|
+
import type { FleetIntegrationConnectProviderOptions } from "../fleet-integration-connect.js";
|
|
9
|
+
export declare const GOOGLE_CONNECT_STATUS_PATH: string;
|
|
10
|
+
export declare const GOOGLE_CONNECT_START_PATH: string;
|
|
11
|
+
export declare const GOOGLE_CONNECT_CALLBACK_PATH: string;
|
|
12
|
+
export declare const GOOGLE_CONNECT_LINK_PATH: string;
|
|
13
|
+
export declare const isGoogleActorSubjectEnabled: () => boolean;
|
|
14
|
+
export declare const enableGoogleActorSubject: () => void;
|
|
15
|
+
/**
|
|
16
|
+
* Enable actor-subject mode when Google connectors imply per-user vault subjects.
|
|
17
|
+
*
|
|
18
|
+
* Prefer {@link enableActorSubjectIntegrationsFromConnectors} at compile seams.
|
|
19
|
+
*/
|
|
20
|
+
export declare const enableGoogleActorSubjectFromConnectors: (connectorKinds: readonly (string | undefined)[] | undefined, scope?: import("../connect-provider-types.js").IdentityConnectMountContext["scope"]) => void;
|
|
21
|
+
export declare const resetGoogleActorSubjectEnabledForTests: () => void;
|
|
22
|
+
export declare const isGoogleConnectConfigured: (env?: NodeJS.ProcessEnv) => boolean;
|
|
23
|
+
export declare const googleConnectUrl: (publicAppUrl: string) => string;
|
|
24
|
+
/** Options for {@link createGoogleIdentityConnectProvider}. */
|
|
25
|
+
export type GoogleIdentityConnectProviderOptions = FleetIntegrationConnectProviderOptions;
|
|
26
|
+
/** Build a Google connect provider. */
|
|
27
|
+
export declare const createGoogleIdentityConnectProvider: (options?: FleetIntegrationConnectProviderOptions) => import("../connect-provider-types.js").IdentityConnectProvider;
|
|
28
|
+
/** Default Google connect provider used as a built-in mount candidate. */
|
|
29
|
+
export declare const googleIdentityConnectProvider: import("../connect-provider-types.js").IdentityConnectProvider;
|
|
30
|
+
/**
|
|
31
|
+
* Opt into Connect-with-Google on `defineIdentity({ connect: […] })`.
|
|
32
|
+
*
|
|
33
|
+
* Usually unnecessary: declaring Google toolserver connectors on a user-scoped
|
|
34
|
+
* identity deployment mounts this provider and derives OAuth scopes automatically.
|
|
35
|
+
*/
|
|
36
|
+
export declare const connect: (options?: FleetIntegrationConnectProviderOptions) => import("../connect-provider-types.js").IdentityConnectProvider;
|
|
37
|
+
//# sourceMappingURL=connect-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/google/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,iCAAiC,CAAC;AAS9F,eAAO,MAAM,0BAA0B,QAAsB,CAAC;AAC9D,eAAO,MAAM,yBAAyB,QAAuB,CAAC;AAC9D,eAAO,MAAM,4BAA4B,QAAwB,CAAC;AAClE,eAAO,MAAM,wBAAwB,QAAoB,CAAC;AAE1D,eAAO,MAAM,2BAA2B,eAA+B,CAAC;AACxE,eAAO,MAAM,wBAAwB,YAA4B,CAAC;AAClE;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,4JACV,CAAC;AAC1C,eAAO,MAAM,sCAAsC,YACV,CAAC;AAC1C,eAAO,MAAM,yBAAyB,sCAA6B,CAAC;AACpE,eAAO,MAAM,gBAAgB,kCAAoB,CAAC;AAElD,+DAA+D;AAC/D,MAAM,MAAM,oCAAoC,GAC9C,sCAAsC,CAAC;AAEzC,uCAAuC;AACvC,eAAO,MAAM,mCAAmC,sHAAwB,CAAC;AAEzE,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B,gEAAkB,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,OAAO,sHAAiB,CAAC"}
|