managed-deepagents 0.5.0-dev.79 → 0.5.0-dev.81
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 +56 -13
- 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 +6 -8
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +5 -5
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/manifest.d.ts +36 -3
- package/dist/channels/manifest.d.ts.map +1 -1
- package/dist/channels/messaging-registry.d.ts +17 -0
- package/dist/channels/messaging-registry.d.ts.map +1 -0
- package/dist/channels/messaging-registry.js +44 -0
- package/dist/channels/messaging-registry.js.map +1 -0
- package/dist/channels/registry.d.ts +4 -3
- package/dist/channels/registry.d.ts.map +1 -1
- package/dist/channels/registry.js +6 -5
- 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 +4 -2
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/connectors/github/adapter-core.d.ts +15 -0
- package/dist/connectors/github/adapter-core.d.ts.map +1 -0
- package/dist/connectors/github/adapter-core.js +52 -0
- package/dist/connectors/github/adapter-core.js.map +1 -0
- package/dist/{channels → connectors}/github/define.d.ts +28 -58
- package/dist/connectors/github/define.d.ts.map +1 -0
- package/dist/connectors/github/define.js +72 -0
- package/dist/connectors/github/define.js.map +1 -0
- package/dist/{channels → connectors}/github/http.d.ts +4 -4
- package/dist/connectors/github/http.d.ts.map +1 -0
- package/dist/{channels → connectors}/github/http.js +24 -25
- package/dist/connectors/github/http.js.map +1 -0
- package/dist/connectors/github/index.d.ts +59 -16
- package/dist/connectors/github/index.d.ts.map +1 -1
- package/dist/connectors/github/index.js +159 -73
- package/dist/connectors/github/index.js.map +1 -1
- package/dist/connectors/github/match.d.ts +20 -0
- package/dist/connectors/github/match.d.ts.map +1 -0
- package/dist/connectors/github/match.js +41 -0
- package/dist/connectors/github/match.js.map +1 -0
- package/dist/{channels → connectors}/github/normalize.d.ts +1 -1
- package/dist/connectors/github/normalize.d.ts.map +1 -0
- package/dist/{channels → connectors}/github/normalize.js +2 -2
- package/dist/connectors/github/normalize.js.map +1 -0
- package/dist/connectors/github/sandbox.d.ts.map +1 -1
- package/dist/connectors/github/sandbox.js +30 -23
- package/dist/connectors/github/sandbox.js.map +1 -1
- package/dist/connectors/github/source-thread.d.ts.map +1 -0
- package/dist/connectors/github/source-thread.js.map +1 -0
- package/dist/{channels → connectors}/github/transport.d.ts +7 -1
- package/dist/connectors/github/transport.d.ts.map +1 -0
- package/dist/{channels → connectors}/github/transport.js +18 -4
- package/dist/connectors/github/transport.js.map +1 -0
- package/dist/connectors/langsmith/index.d.ts +29 -17
- package/dist/connectors/langsmith/index.d.ts.map +1 -1
- package/dist/connectors/langsmith/index.js +34 -29
- package/dist/connectors/langsmith/index.js.map +1 -1
- package/dist/connectors/langsmith/routes.d.ts +4 -15
- package/dist/connectors/langsmith/routes.d.ts.map +1 -1
- package/dist/connectors/langsmith/routes.js +63 -72
- package/dist/connectors/langsmith/routes.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 +15 -0
- package/dist/connectors/marketplace/load.d.ts.map +1 -0
- package/dist/connectors/marketplace/load.js +265 -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/{channels → connectors}/slack/adapter-core.d.ts +1 -1
- package/dist/connectors/slack/adapter-core.d.ts.map +1 -0
- package/dist/connectors/slack/adapter-core.js.map +1 -0
- package/dist/{channels → connectors}/slack/adapter.d.ts +3 -4
- package/dist/connectors/slack/adapter.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/adapter.js +1 -1
- package/dist/connectors/slack/adapter.js.map +1 -0
- package/dist/{channels → connectors}/slack/http.d.ts +6 -40
- package/dist/connectors/slack/http.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/http.js +38 -127
- package/dist/connectors/slack/http.js.map +1 -0
- package/dist/connectors/slack/index.d.ts +108 -0
- package/dist/connectors/slack/index.d.ts.map +1 -0
- package/dist/connectors/slack/index.js +191 -0
- package/dist/connectors/slack/index.js.map +1 -0
- package/dist/{channels → connectors}/slack/normalize.d.ts +5 -5
- package/dist/connectors/slack/normalize.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/normalize.js +21 -20
- package/dist/connectors/slack/normalize.js.map +1 -0
- package/dist/connectors/slack/source-thread.d.ts.map +1 -0
- package/dist/connectors/slack/source-thread.js.map +1 -0
- package/dist/{channels → connectors}/slack/transport.d.ts +1 -1
- package/dist/connectors/slack/transport.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/transport.js +4 -3
- package/dist/connectors/slack/transport.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 +332 -0
- package/dist/connectors/toolserver/catalog.d.ts.map +1 -0
- package/dist/connectors/toolserver/catalog.js +463 -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 +144 -0
- package/dist/connectors/toolserver/index.d.ts.map +1 -0
- package/dist/connectors/toolserver/index.js +107 -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 +277 -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 +290 -0
- package/dist/connectors/toolserver/load.js.map +1 -0
- package/dist/extension.d.ts +77 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +127 -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 +81 -0
- package/dist/identity/byo-oauth.d.ts.map +1 -0
- package/dist/identity/byo-oauth.js +145 -0
- package/dist/identity/byo-oauth.js.map +1 -0
- package/dist/identity/claims.d.ts +18 -0
- package/dist/identity/claims.d.ts.map +1 -0
- package/dist/identity/claims.js +37 -0
- package/dist/identity/claims.js.map +1 -0
- package/dist/identity/connect-inference.d.ts +38 -0
- package/dist/identity/connect-inference.d.ts.map +1 -0
- package/dist/identity/connect-inference.js +55 -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 +38 -12
- 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/fleet-connect-hint.d.ts +39 -0
- package/dist/identity/fleet-connect-hint.d.ts.map +1 -0
- package/dist/identity/fleet-connect-hint.js +134 -0
- package/dist/identity/fleet-connect-hint.js.map +1 -0
- package/dist/identity/fleet-connect.d.ts +92 -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 +133 -0
- package/dist/identity/fleet.js.map +1 -0
- package/dist/identity/github/connect-http.d.ts +9 -4
- package/dist/identity/github/connect-http.d.ts.map +1 -1
- package/dist/identity/github/connect-http.js +34 -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 +40 -43
- 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 +2 -3
- package/dist/identity/github/index.d.ts.map +1 -1
- package/dist/identity/github/index.js +1 -2
- package/dist/identity/github/index.js.map +1 -1
- package/dist/identity/github/oauth.d.ts +3 -6
- package/dist/identity/github/oauth.d.ts.map +1 -1
- package/dist/identity/github/oauth.js +9 -48
- package/dist/identity/github/oauth.js.map +1 -1
- package/dist/identity/google/connect-http.d.ts +38 -0
- package/dist/identity/google/connect-http.d.ts.map +1 -0
- package/dist/identity/google/connect-http.js +59 -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 +51 -29
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +122 -131
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/linkedin/connect-http.d.ts +38 -0
- package/dist/identity/linkedin/connect-http.d.ts.map +1 -0
- package/dist/identity/linkedin/connect-http.js +59 -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 +39 -0
- package/dist/identity/microsoft/connect-http.d.ts.map +1 -0
- package/dist/identity/microsoft/connect-http.js +60 -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-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 +95 -0
- package/dist/identity/options.d.ts.map +1 -0
- package/dist/identity/options.js +175 -0
- package/dist/identity/options.js.map +1 -0
- package/dist/identity/slack/connect-http.d.ts +3 -3
- package/dist/identity/slack/connect-http.d.ts.map +1 -1
- package/dist/identity/slack/connect-http.js +23 -15
- 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 +15 -15
- package/dist/identity/slack/links.d.ts.map +1 -1
- package/dist/identity/slack/links.js +50 -53
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/identity/slack/oauth.d.ts +2 -5
- package/dist/identity/slack/oauth.d.ts.map +1 -1
- package/dist/identity/slack/oauth.js +8 -63
- 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 +96 -38
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/identity/x/connect-http.d.ts +39 -0
- package/dist/identity/x/connect-http.d.ts.map +1 -0
- package/dist/identity/x/connect-http.js +69 -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 +14 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -12
- package/dist/index.js.map +1 -1
- package/dist/ingress/index.d.ts +54 -0
- package/dist/ingress/index.d.ts.map +1 -0
- package/dist/ingress/index.js +128 -0
- package/dist/ingress/index.js.map +1 -0
- package/dist/namespaces.d.ts +306 -0
- package/dist/namespaces.d.ts.map +1 -0
- package/dist/namespaces.js +127 -0
- package/dist/namespaces.js.map +1 -0
- package/dist/runtime/auth.d.ts +18 -14
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +88 -68
- 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/connector.d.ts +66 -23
- package/dist/runtime/connector.d.ts.map +1 -1
- package/dist/runtime/connector.js +63 -27
- package/dist/runtime/connector.js.map +1 -1
- package/dist/runtime/cors.d.ts +2 -3
- package/dist/runtime/cors.d.ts.map +1 -1
- package/dist/runtime/cors.js +2 -7
- package/dist/runtime/cors.js.map +1 -1
- package/dist/runtime/credentials.d.ts +2 -2
- package/dist/runtime/credentials.d.ts.map +1 -1
- package/dist/runtime/credentials.js +41 -16
- package/dist/runtime/credentials.js.map +1 -1
- package/dist/runtime/http.d.ts +47 -0
- package/dist/runtime/http.d.ts.map +1 -0
- package/dist/runtime/http.js +54 -0
- package/dist/runtime/http.js.map +1 -0
- package/dist/runtime/identity-http.d.ts +6 -16
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +112 -54
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +18 -17
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +55 -39
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts +85 -222
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +73 -34
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +1 -0
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +1 -0
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/lazy-context-backend.d.ts +66 -0
- package/dist/runtime/memory/lazy-context-backend.d.ts.map +1 -0
- package/dist/runtime/memory/lazy-context-backend.js +154 -0
- package/dist/runtime/memory/lazy-context-backend.js.map +1 -0
- package/dist/runtime/memory/user-repo.js +3 -3
- package/dist/runtime/memory/user-repo.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 +33 -0
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +173 -9
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/sandbox-stream-retry.d.ts +16 -0
- package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -0
- package/dist/runtime/sandbox-stream-retry.js +61 -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 +4 -2
- package/dist/runtime/setup-script.js.map +1 -1
- package/dist/runtime/validated-token.d.ts +1 -1
- package/dist/runtime/validated-token.d.ts.map +1 -1
- package/dist/runtime/validated-token.js +75 -33
- package/dist/runtime/validated-token.js.map +1 -1
- package/dist/sandbox.d.ts +19 -22
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +20 -34
- package/dist/sandbox.js.map +1 -1
- package/dist/schedules.js +8 -9
- package/dist/schedules.js.map +1 -1
- package/package.json +19 -28
- 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.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.map +0 -1
- 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.map +0 -1
- package/dist/channels/github/normalize.js.map +0 -1
- package/dist/channels/github/source-thread.d.ts.map +0 -1
- package/dist/channels/github/source-thread.js.map +0 -1
- package/dist/channels/github/transport.d.ts.map +0 -1
- 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/adapter-core.d.ts.map +0 -1
- package/dist/channels/slack/adapter-core.js.map +0 -1
- package/dist/channels/slack/adapter.d.ts.map +0 -1
- package/dist/channels/slack/adapter.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/channels/slack/http.d.ts.map +0 -1
- package/dist/channels/slack/http.js.map +0 -1
- package/dist/channels/slack/index.d.ts +0 -18
- package/dist/channels/slack/index.d.ts.map +0 -1
- package/dist/channels/slack/index.js +0 -13
- package/dist/channels/slack/index.js.map +0 -1
- package/dist/channels/slack/normalize.d.ts.map +0 -1
- package/dist/channels/slack/normalize.js.map +0 -1
- package/dist/channels/slack/source-thread.d.ts.map +0 -1
- package/dist/channels/slack/source-thread.js.map +0 -1
- package/dist/channels/slack/transport.d.ts.map +0 -1
- package/dist/channels/slack/transport.js.map +0 -1
- /package/dist/{channels → connectors}/github/source-thread.d.ts +0 -0
- /package/dist/{channels → connectors}/github/source-thread.js +0 -0
- /package/dist/{channels → connectors}/slack/adapter-core.js +0 -0
- /package/dist/{channels → connectors}/slack/source-thread.d.ts +0 -0
- /package/dist/{channels → connectors}/slack/source-thread.js +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The contribution API behind the extensible MDA primitives.
|
|
3
|
+
*
|
|
4
|
+
* `defineExtension(kind, options)` returns the factory an agent project calls —
|
|
5
|
+
* `connectors.slack({ … })`, `connectors.github({ … })`, `sandboxes.langsmith()`.
|
|
6
|
+
* The `kind` narrows which hooks the primitive may implement; argument parsing,
|
|
7
|
+
* branding, and manifest stamping are shared.
|
|
8
|
+
*
|
|
9
|
+
* Every kind declares its input through `args`, which takes a schema from any
|
|
10
|
+
* [Standard Schema](https://standardschema.dev) library — Zod, Valibot,
|
|
11
|
+
* ArkType — or a plain function where a schema does not fit. Validating through
|
|
12
|
+
* that interface keeps the vendor out of this package's dependencies, so a
|
|
13
|
+
* contributor picks whichever library they already use.
|
|
14
|
+
*
|
|
15
|
+
* This module is deliberately absent from the package barrel. Only the
|
|
16
|
+
* first-party namespaces in `namespaces.ts` contribute primitives, so an agent
|
|
17
|
+
* project cannot mount its own adapter, HTTP route, or sandbox backend into the
|
|
18
|
+
* managed runtime. Opening it up to third-party packages is a later step.
|
|
19
|
+
*
|
|
20
|
+
* The `auth`, `credentials`, and `connect` primitives are extended by plain
|
|
21
|
+
* factories rather than through here: they return inert configuration objects
|
|
22
|
+
* with no brand, hooks, or normalization to share. They gain an envelope when
|
|
23
|
+
* this API is exported and their inputs need validating at the boundary.
|
|
24
|
+
*/
|
|
25
|
+
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
26
|
+
import type { ChannelTransport } from "./channels/runtime.js";
|
|
27
|
+
import { type Connector, type ConnectorRequirements, type ConnectorToolList, type EventsContext, type HttpContext, type SandboxContext, type ToolContext } from "./runtime/connector.js";
|
|
28
|
+
import { type SandboxOptions, type SandboxDefinition, type SandboxProviderClass } from "./sandbox.js";
|
|
29
|
+
/** The primitives that carry a shared construction envelope. */
|
|
30
|
+
export type ExtensionKind = "connector" | "sandbox";
|
|
31
|
+
/**
|
|
32
|
+
* How author input becomes the arguments a primitive is built from.
|
|
33
|
+
*
|
|
34
|
+
* Either a schema from any [Standard Schema](https://standardschema.dev)
|
|
35
|
+
* library — Zod, Valibot, ArkType, … — or a plain function for the cases a
|
|
36
|
+
* schema cannot express. Both run at module load, so misconfiguration surfaces
|
|
37
|
+
* at build or dev startup rather than mid-run. Defaults and coercions belong
|
|
38
|
+
* here too: whatever this produces is what the primitive carries.
|
|
39
|
+
*/
|
|
40
|
+
export type ExtensionArgs<TInput, TArgs> = StandardSchemaV1<TInput, TArgs> | ((input: TInput) => TArgs);
|
|
41
|
+
/** Shared by every kind: how the factory's input is validated, and its name. */
|
|
42
|
+
interface ExtensionEnvelope<TInput, TArgs> {
|
|
43
|
+
args: ExtensionArgs<TInput, TArgs>;
|
|
44
|
+
/**
|
|
45
|
+
* How the factory is spelled in an agent project, e.g. `"connectors.mcp"`.
|
|
46
|
+
* Prefixes validation errors, which is the only place an author sees it.
|
|
47
|
+
*/
|
|
48
|
+
label: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A connector contributes tools, HTTP routes, sandbox provisioning, inbound
|
|
52
|
+
* events, and/or a named messaging surface. Hooks receive the built connector,
|
|
53
|
+
* so they can read the parsed arguments spread onto it.
|
|
54
|
+
*/
|
|
55
|
+
export interface ConnectorExtensionOptions<TInput, TArgs extends object, TKind extends string> extends ExtensionEnvelope<TInput, TArgs> {
|
|
56
|
+
/** Diagnostic label (e.g. `"mcp_servers"`). Mounts use the file-stem name. */
|
|
57
|
+
kind: TKind;
|
|
58
|
+
tools?(ctx: ToolContext, self: ConnectorInstance<TArgs, TKind>): ConnectorToolList | Promise<ConnectorToolList>;
|
|
59
|
+
http?(ctx: HttpContext, self: ConnectorInstance<TArgs, TKind>): void | Promise<void>;
|
|
60
|
+
sandbox?(ctx: SandboxContext, self: ConnectorInstance<TArgs, TKind>): void | Promise<void>;
|
|
61
|
+
events?(ctx: EventsContext, self: ConnectorInstance<TArgs, TKind>): Response | Promise<Response>;
|
|
62
|
+
messaging?(env: NodeJS.ProcessEnv, self: ConnectorInstance<TArgs, TKind>): ChannelTransport | undefined;
|
|
63
|
+
requirements?(name: string, self: ConnectorInstance<TArgs, TKind>): ConnectorRequirements;
|
|
64
|
+
}
|
|
65
|
+
/** The connector a `"connector"` extension builds: its brand, kind, and args. */
|
|
66
|
+
export type ConnectorInstance<TArgs extends object, TKind extends string> = Connector & TArgs & {
|
|
67
|
+
readonly kind: TKind;
|
|
68
|
+
};
|
|
69
|
+
/** A sandbox contributes the execution environment the agent's shell runs in. */
|
|
70
|
+
export interface SandboxExtensionOptions<TInput, TProvider extends SandboxProviderClass<any, any>> extends ExtensionEnvelope<TInput, SandboxOptions<TProvider>> {
|
|
71
|
+
/** Backend class MDA constructs with `new Provider({ sandbox, … })`. */
|
|
72
|
+
provider: TProvider;
|
|
73
|
+
}
|
|
74
|
+
export declare function defineExtension<TInput, TArgs extends object, TKind extends string>(kind: "connector", options: ConnectorExtensionOptions<TInput, TArgs, TKind>): (input: TInput) => ConnectorInstance<TArgs, TKind>;
|
|
75
|
+
export declare function defineExtension<TInput, TProvider extends SandboxProviderClass<any, any>>(kind: "sandbox", options: SandboxExtensionOptions<TInput, TProvider>): (input: TInput) => SandboxDefinition<TProvider>;
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The contribution API behind the extensible MDA primitives.
|
|
3
|
+
*
|
|
4
|
+
* `defineExtension(kind, options)` returns the factory an agent project calls —
|
|
5
|
+
* `connectors.slack({ … })`, `connectors.github({ … })`, `sandboxes.langsmith()`.
|
|
6
|
+
* The `kind` narrows which hooks the primitive may implement; argument parsing,
|
|
7
|
+
* branding, and manifest stamping are shared.
|
|
8
|
+
*
|
|
9
|
+
* Every kind declares its input through `args`, which takes a schema from any
|
|
10
|
+
* [Standard Schema](https://standardschema.dev) library — Zod, Valibot,
|
|
11
|
+
* ArkType — or a plain function where a schema does not fit. Validating through
|
|
12
|
+
* that interface keeps the vendor out of this package's dependencies, so a
|
|
13
|
+
* contributor picks whichever library they already use.
|
|
14
|
+
*
|
|
15
|
+
* This module is deliberately absent from the package barrel. Only the
|
|
16
|
+
* first-party namespaces in `namespaces.ts` contribute primitives, so an agent
|
|
17
|
+
* project cannot mount its own adapter, HTTP route, or sandbox backend into the
|
|
18
|
+
* managed runtime. Opening it up to third-party packages is a later step.
|
|
19
|
+
*
|
|
20
|
+
* The `auth`, `credentials`, and `connect` primitives are extended by plain
|
|
21
|
+
* factories rather than through here: they return inert configuration objects
|
|
22
|
+
* with no brand, hooks, or normalization to share. They gain an envelope when
|
|
23
|
+
* this API is exported and their inputs need validating at the boundary.
|
|
24
|
+
*/
|
|
25
|
+
import { CONNECTOR_BRAND, } from "./runtime/connector.js";
|
|
26
|
+
import { normalizeSandboxOptions, sandboxProviderKey, } from "./sandbox.js";
|
|
27
|
+
export function defineExtension(kind, options) {
|
|
28
|
+
switch (kind) {
|
|
29
|
+
case "connector":
|
|
30
|
+
return connectorExtension(options);
|
|
31
|
+
case "sandbox":
|
|
32
|
+
return sandboxExtension(options);
|
|
33
|
+
default:
|
|
34
|
+
throw new TypeError(`Unknown extension kind: ${String(kind)}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function connectorExtension(options) {
|
|
38
|
+
const parse = parser(options);
|
|
39
|
+
return (input) => {
|
|
40
|
+
const args = parse(input);
|
|
41
|
+
const self = { kind: options.kind, ...args };
|
|
42
|
+
// Hooks and the brand stay non-enumerable so a connector still spreads and
|
|
43
|
+
// serializes as its plain configuration.
|
|
44
|
+
hide(self, CONNECTOR_BRAND, true);
|
|
45
|
+
if (options.tools) {
|
|
46
|
+
const tools = options.tools;
|
|
47
|
+
hide(self, "tools", (ctx) => tools(ctx, self));
|
|
48
|
+
}
|
|
49
|
+
if (options.http) {
|
|
50
|
+
const http = options.http;
|
|
51
|
+
hide(self, "http", (ctx) => http(ctx, self));
|
|
52
|
+
}
|
|
53
|
+
if (options.sandbox) {
|
|
54
|
+
const sandbox = options.sandbox;
|
|
55
|
+
hide(self, "sandbox", (ctx) => sandbox(ctx, self));
|
|
56
|
+
}
|
|
57
|
+
if (options.events) {
|
|
58
|
+
const events = options.events;
|
|
59
|
+
hide(self, "events", (ctx) => events(ctx, self));
|
|
60
|
+
}
|
|
61
|
+
if (options.messaging) {
|
|
62
|
+
const messaging = options.messaging;
|
|
63
|
+
hide(self, "messaging", (env) => messaging(env, self));
|
|
64
|
+
}
|
|
65
|
+
if (options.requirements) {
|
|
66
|
+
const requirements = options.requirements;
|
|
67
|
+
hide(self, "requirements", (name) => requirements(name, self));
|
|
68
|
+
}
|
|
69
|
+
return self;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function sandboxExtension(options) {
|
|
73
|
+
const parse = parser(options);
|
|
74
|
+
return (input) => {
|
|
75
|
+
if (sandboxProviderKey(options.provider) !== "LangSmithSandbox") {
|
|
76
|
+
throw new TypeError("MDA only supports deepagents' LangSmithSandbox provider");
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
kind: "sandbox",
|
|
80
|
+
provider: options.provider,
|
|
81
|
+
// The managed-key rule is MDA policy, not the provider's, so it runs
|
|
82
|
+
// here rather than in each provider's `args`.
|
|
83
|
+
options: normalizeSandboxOptions(parse(input)),
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Resolve `args` into the function the factory runs on its input.
|
|
89
|
+
*
|
|
90
|
+
* A schema is validated through the Standard Schema interface, so the vendor
|
|
91
|
+
* (Zod, Valibot, …) never has to be a dependency of this package.
|
|
92
|
+
*/
|
|
93
|
+
function parser(options) {
|
|
94
|
+
const { args, label } = options;
|
|
95
|
+
if (typeof args === "function") {
|
|
96
|
+
return args;
|
|
97
|
+
}
|
|
98
|
+
const { validate } = args["~standard"];
|
|
99
|
+
return (input) => {
|
|
100
|
+
const result = validate(input);
|
|
101
|
+
if (result instanceof Promise) {
|
|
102
|
+
throw new TypeError(`${label}(...) needs a schema that validates synchronously, because ` +
|
|
103
|
+
"primitives are declared at module load. Drop the async refinement " +
|
|
104
|
+
"or validate inside a hook instead.");
|
|
105
|
+
}
|
|
106
|
+
if (result.issues) {
|
|
107
|
+
throw new Error(`${label}(...) ${describeIssues(result.issues)}`);
|
|
108
|
+
}
|
|
109
|
+
return result.value;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/** Render schema issues as `path: message`, in the order the vendor reported. */
|
|
113
|
+
function describeIssues(issues) {
|
|
114
|
+
const lines = issues.map((issue) => {
|
|
115
|
+
const path = (issue.path ?? [])
|
|
116
|
+
.map((segment) => String(typeof segment === "object" ? segment.key : segment))
|
|
117
|
+
.join(".");
|
|
118
|
+
return path.length > 0 ? `${path}: ${issue.message}` : issue.message;
|
|
119
|
+
});
|
|
120
|
+
return lines.length === 1
|
|
121
|
+
? `received invalid configuration — ${lines[0]}.`
|
|
122
|
+
: `received invalid configuration:\n - ${lines.join("\n - ")}`;
|
|
123
|
+
}
|
|
124
|
+
function hide(target, key, value) {
|
|
125
|
+
Object.defineProperty(target, key, { value, enumerable: false });
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic LangSmith agent_id for an MDA actor's Fleet vault subject.
|
|
3
|
+
*
|
|
4
|
+
* Tokens imported via Connect-with-X and toolserver `?agent_id=` must use the
|
|
5
|
+
* same derivation so each caller reaches their own vault connections. One
|
|
6
|
+
* actor has one agent_id; multiple Fleet OAuth integrations attach as distinct
|
|
7
|
+
* `provider_id`s on that subject.
|
|
8
|
+
*/
|
|
9
|
+
import { type FleetOAuthIntegration } from "../connectors/toolserver/integrations.js";
|
|
10
|
+
import type { IdentityConnectMountContext } from "./connect-provider-types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Fixed namespace for MDA actor vault subjects (UUID form).
|
|
13
|
+
* Stable across releases so reconnects hit the same vault row.
|
|
14
|
+
*/
|
|
15
|
+
export declare const NAMESPACE_MDA_ACTOR = "c0ffee00-0da0-4111-8111-000000000001";
|
|
16
|
+
export interface AgentIdFromActorOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Workspace discriminator so ids do not collide across workspaces.
|
|
19
|
+
* Defaults to {@link resolveActorDeploymentId} (`LANGCHAIN_WORKSPACE_ID`).
|
|
20
|
+
*/
|
|
21
|
+
deploymentId?: string;
|
|
22
|
+
/** Override process env (tests). */
|
|
23
|
+
env?: NodeJS.ProcessEnv;
|
|
24
|
+
/** Override the UUID namespace (tests). */
|
|
25
|
+
namespace?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the workspace slice for {@link agentIdFromActor}.
|
|
29
|
+
*
|
|
30
|
+
* Uses `LANGCHAIN_WORKSPACE_ID`, else `"local"`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveActorDeploymentId(env?: NodeJS.ProcessEnv): string;
|
|
33
|
+
/**
|
|
34
|
+
* Derive the vault `agent_id` for an authenticated MDA actor.
|
|
35
|
+
*
|
|
36
|
+
* `uuidv5(`${workspaceId}:${userId}`, NAMESPACE_MDA_ACTOR)`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function agentIdFromActor(userId: string, options?: AgentIdFromActorOptions): string;
|
|
39
|
+
/** Enable actor-subject routing for a Fleet OAuth integration. */
|
|
40
|
+
export declare function enableActorSubjectIntegration(integrationId: string): void;
|
|
41
|
+
/** True when actor-subject routing is on for `integrationId`. */
|
|
42
|
+
export declare function isActorSubjectIntegrationEnabled(integrationId: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* True when `slug` belongs to an enabled Fleet OAuth integration (per-actor
|
|
45
|
+
* `?agent_id=` routing).
|
|
46
|
+
*/
|
|
47
|
+
export declare function isActorSubjectSlugEnabled(slug: string | undefined): boolean;
|
|
48
|
+
/** Enabled integration ids (for connect-hint middleware, etc.). */
|
|
49
|
+
export declare function enabledActorSubjectIntegrations(): readonly string[];
|
|
50
|
+
/**
|
|
51
|
+
* Enable actor-subject mode for every Fleet integration implied by connectors on a
|
|
52
|
+
* user-scoped deployment. Agent-scoped deployments keep the shared
|
|
53
|
+
* `MDA_TOOLSERVER_AGENT_ID` subject.
|
|
54
|
+
*/
|
|
55
|
+
export declare function enableActorSubjectIntegrationsFromConnectors(connectorKinds: readonly (string | undefined)[] | undefined, scope?: IdentityConnectMountContext["scope"]): void;
|
|
56
|
+
/** Enable a specific integration when connectors imply it (user-scoped only). */
|
|
57
|
+
export declare function enableActorSubjectIntegrationFromConnectors(integration: FleetOAuthIntegration, connectorKinds: readonly (string | undefined)[] | undefined, scope?: IdentityConnectMountContext["scope"]): void;
|
|
58
|
+
/** Test-only reset. */
|
|
59
|
+
export declare function resetActorSubjectEnabledForTests(): void;
|
|
60
|
+
//# sourceMappingURL=actor-subject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-subject.d.ts","sourceRoot":"","sources":["../../src/identity/actor-subject.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAY/E;;;GAGG;AACH,eAAO,MAAM,mBAAmB,yCAAyC,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAUR;AAKD,kEAAkE;AAClE,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAKzE;AAED,iEAAiE;AACjE,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAG3E;AAED,mEAAmE;AACnE,wBAAgB,+BAA+B,IAAI,SAAS,MAAM,EAAE,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CAC1D,cAAc,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,EAC3D,KAAK,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC3C,IAAI,CAcN;AAED,iFAAiF;AACjF,wBAAgB,2CAA2C,CACzD,WAAW,EAAE,qBAAqB,EAClC,cAAc,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,EAC3D,KAAK,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC3C,IAAI,CAON;AAED,uBAAuB;AACvB,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic LangSmith agent_id for an MDA actor's Fleet vault subject.
|
|
3
|
+
*
|
|
4
|
+
* Tokens imported via Connect-with-X and toolserver `?agent_id=` must use the
|
|
5
|
+
* same derivation so each caller reaches their own vault connections. One
|
|
6
|
+
* actor has one agent_id; multiple Fleet OAuth integrations attach as distinct
|
|
7
|
+
* `provider_id`s on that subject.
|
|
8
|
+
*/
|
|
9
|
+
import { v5 as uuidv5 } from "uuid";
|
|
10
|
+
import { MARKETPLACE_MCP_INTEGRATIONS, hasMarketplaceConnector, } from "../connectors/marketplace/catalog.js";
|
|
11
|
+
import { FLEET_OAUTH_INTEGRATIONS, integrationForSlug, hasIntegrationToolServerConnector, } from "../connectors/toolserver/integrations.js";
|
|
12
|
+
function isUserScoped(scope) {
|
|
13
|
+
if (!scope) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
// Per-caller Connect / actor-subject vault ownership. Memory is unrelated.
|
|
17
|
+
return scope.credentials === "user" || scope.credentials === "custom";
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Fixed namespace for MDA actor vault subjects (UUID form).
|
|
21
|
+
* Stable across releases so reconnects hit the same vault row.
|
|
22
|
+
*/
|
|
23
|
+
export const NAMESPACE_MDA_ACTOR = "c0ffee00-0da0-4111-8111-000000000001";
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the workspace slice for {@link agentIdFromActor}.
|
|
26
|
+
*
|
|
27
|
+
* Uses `LANGCHAIN_WORKSPACE_ID`, else `"local"`.
|
|
28
|
+
*/
|
|
29
|
+
export function resolveActorDeploymentId(env = process.env) {
|
|
30
|
+
return trimmed(env.LANGCHAIN_WORKSPACE_ID) ?? "local";
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Derive the vault `agent_id` for an authenticated MDA actor.
|
|
34
|
+
*
|
|
35
|
+
* `uuidv5(`${workspaceId}:${userId}`, NAMESPACE_MDA_ACTOR)`.
|
|
36
|
+
*/
|
|
37
|
+
export function agentIdFromActor(userId, options = {}) {
|
|
38
|
+
const id = userId.trim();
|
|
39
|
+
if (!id) {
|
|
40
|
+
throw new Error("agentIdFromActor requires a non-empty userId");
|
|
41
|
+
}
|
|
42
|
+
const deploymentId = options.deploymentId?.trim() ||
|
|
43
|
+
resolveActorDeploymentId(options.env ?? process.env);
|
|
44
|
+
const namespace = options.namespace ?? NAMESPACE_MDA_ACTOR;
|
|
45
|
+
return uuidv5(`${deploymentId}:${id}`, namespace);
|
|
46
|
+
}
|
|
47
|
+
/** Integrations with per-actor toolserver subject routing enabled in this process. */
|
|
48
|
+
const enabledIntegrations = new Set();
|
|
49
|
+
/** Enable actor-subject routing for a Fleet OAuth integration. */
|
|
50
|
+
export function enableActorSubjectIntegration(integrationId) {
|
|
51
|
+
const id = integrationId.trim();
|
|
52
|
+
if (id) {
|
|
53
|
+
enabledIntegrations.add(id);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** True when actor-subject routing is on for `integrationId`. */
|
|
57
|
+
export function isActorSubjectIntegrationEnabled(integrationId) {
|
|
58
|
+
return enabledIntegrations.has(integrationId);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* True when `slug` belongs to an enabled Fleet OAuth integration (per-actor
|
|
62
|
+
* `?agent_id=` routing).
|
|
63
|
+
*/
|
|
64
|
+
export function isActorSubjectSlugEnabled(slug) {
|
|
65
|
+
const integration = integrationForSlug(slug);
|
|
66
|
+
return integration != null && enabledIntegrations.has(integration.id);
|
|
67
|
+
}
|
|
68
|
+
/** Enabled integration ids (for connect-hint middleware, etc.). */
|
|
69
|
+
export function enabledActorSubjectIntegrations() {
|
|
70
|
+
return [...enabledIntegrations];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Enable actor-subject mode for every Fleet integration implied by connectors on a
|
|
74
|
+
* user-scoped deployment. Agent-scoped deployments keep the shared
|
|
75
|
+
* `MDA_TOOLSERVER_AGENT_ID` subject.
|
|
76
|
+
*/
|
|
77
|
+
export function enableActorSubjectIntegrationsFromConnectors(connectorKinds, scope) {
|
|
78
|
+
if (!isUserScoped(scope)) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
for (const integration of FLEET_OAUTH_INTEGRATIONS) {
|
|
82
|
+
if (hasIntegrationToolServerConnector(integration, connectorKinds)) {
|
|
83
|
+
enableActorSubjectIntegration(integration.id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
for (const integration of MARKETPLACE_MCP_INTEGRATIONS) {
|
|
87
|
+
if (hasMarketplaceConnector(integration.id, connectorKinds)) {
|
|
88
|
+
enableActorSubjectIntegration(integration.id);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Enable a specific integration when connectors imply it (user-scoped only). */
|
|
93
|
+
export function enableActorSubjectIntegrationFromConnectors(integration, connectorKinds, scope) {
|
|
94
|
+
if (hasIntegrationToolServerConnector(integration, connectorKinds) &&
|
|
95
|
+
isUserScoped(scope)) {
|
|
96
|
+
enableActorSubjectIntegration(integration.id);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Test-only reset. */
|
|
100
|
+
export function resetActorSubjectEnabledForTests() {
|
|
101
|
+
enabledIntegrations.clear();
|
|
102
|
+
}
|
|
103
|
+
function trimmed(value) {
|
|
104
|
+
const v = value?.trim();
|
|
105
|
+
return v ? v : undefined;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=actor-subject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-subject.js","sourceRoot":"","sources":["../../src/identity/actor-subject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
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 type { FleetVaultByoOauth, FleetVaultByoTokenResult } from "./fleet-connect.js";
|
|
10
|
+
import { type OauthTickets } from "./oauth-tickets.js";
|
|
11
|
+
import { resolveSlackOauthRedirectBase } from "./slack/oauth.js";
|
|
12
|
+
export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveSlackOauthRedirectBase, } from "./slack/oauth.js";
|
|
13
|
+
/** Shared BYO OAuth client configuration. */
|
|
14
|
+
export interface ByoOauthConfig {
|
|
15
|
+
clientId: string;
|
|
16
|
+
clientSecret: string;
|
|
17
|
+
publicAppUrl: string;
|
|
18
|
+
scopes: string;
|
|
19
|
+
authUrl: string;
|
|
20
|
+
tokenUrl: string;
|
|
21
|
+
userInfoUrl: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ByoOauthEndpoints {
|
|
24
|
+
authUrl: string;
|
|
25
|
+
tokenUrl: string;
|
|
26
|
+
userInfoUrl: string;
|
|
27
|
+
/** Space-separated default scopes when env override is absent. */
|
|
28
|
+
defaultScopes: string;
|
|
29
|
+
}
|
|
30
|
+
export interface ByoOauthUserInfo {
|
|
31
|
+
email?: string;
|
|
32
|
+
subject?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface CreateByoOauthClientOptions {
|
|
35
|
+
/** Connect / ticket provider id, e.g. `"google"`. */
|
|
36
|
+
providerId: string;
|
|
37
|
+
/** Human label for error messages ("Google", "Microsoft"). */
|
|
38
|
+
displayName: string;
|
|
39
|
+
/**
|
|
40
|
+
* Env prefix without trailing underscore, e.g. `"GOOGLE_OAUTH"`.
|
|
41
|
+
* Reads `${prefix}_CLIENT_ID`, `_CLIENT_SECRET`, `_SCOPES`, `_AUTH_URL`,
|
|
42
|
+
* `_TOKEN_URL`, `_USERINFO_URL`.
|
|
43
|
+
*/
|
|
44
|
+
envPrefix: string;
|
|
45
|
+
/** Default endpoints + scopes (may read extra env, e.g. tenant). */
|
|
46
|
+
defaultEndpoints: (env: NodeJS.ProcessEnv) => ByoOauthEndpoints;
|
|
47
|
+
/**
|
|
48
|
+
* Extra authorize query params merged after the shared OAuth code-grant
|
|
49
|
+
* fields. Defaults include `prompt=consent` when omitted here.
|
|
50
|
+
*/
|
|
51
|
+
authorizeParams?: Record<string, string>;
|
|
52
|
+
/** Map a userinfo /me JSON body to email + subject. */
|
|
53
|
+
parseUserInfo: (json: Record<string, unknown>) => ByoOauthUserInfo;
|
|
54
|
+
/** Vault metadata key for the IdP subject (e.g. `google_sub`). */
|
|
55
|
+
subjectMetadataKey: string;
|
|
56
|
+
}
|
|
57
|
+
export interface ByoOauthEnvKeys {
|
|
58
|
+
clientId: string;
|
|
59
|
+
clientSecret: string;
|
|
60
|
+
scopes: string;
|
|
61
|
+
authUrl: string;
|
|
62
|
+
tokenUrl: string;
|
|
63
|
+
userInfoUrl: string;
|
|
64
|
+
}
|
|
65
|
+
/** BYO OAuth client produced by {@link createByoOauthClient}. */
|
|
66
|
+
export interface ByoOauthClient {
|
|
67
|
+
providerId: string;
|
|
68
|
+
displayName: string;
|
|
69
|
+
env: ByoOauthEnvKeys;
|
|
70
|
+
tickets: OauthTickets;
|
|
71
|
+
resolveRedirectBase: typeof resolveSlackOauthRedirectBase;
|
|
72
|
+
readConfig(env?: NodeJS.ProcessEnv): ByoOauthConfig | null;
|
|
73
|
+
buildAuthorizeUrl(config: ByoOauthConfig, state: string, redirectUri: string, scopes?: string): string;
|
|
74
|
+
exchangeCode(config: ByoOauthConfig, code: string, redirectUri: string, fetchImpl?: typeof fetch): Promise<FleetVaultByoTokenResult>;
|
|
75
|
+
/** Ready for `createFleetVaultConnectProvider({ byo })`. */
|
|
76
|
+
byo: FleetVaultByoOauth;
|
|
77
|
+
resolvePublicAppUrl(env?: NodeJS.ProcessEnv): string | undefined;
|
|
78
|
+
}
|
|
79
|
+
/** Build a BYO OAuth client for one Fleet vault Connect integration. */
|
|
80
|
+
export declare function createByoOauthClient(options: CreateByoOauthClientOptions): ByoOauthClient;
|
|
81
|
+
//# sourceMappingURL=byo-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"byo-oauth.d.ts","sourceRoot":"","sources":["../../src/identity/byo-oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
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, resolveSlackOauthRedirectBase, } from "./slack/oauth.js";
|
|
12
|
+
export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveSlackOauthRedirectBase, } from "./slack/oauth.js";
|
|
13
|
+
function stripSlash(value) {
|
|
14
|
+
return value.replace(/\/$/, "");
|
|
15
|
+
}
|
|
16
|
+
function envKeys(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 = envKeys(options.envPrefix);
|
|
29
|
+
const tickets = oauthTicketsFor(options.providerId);
|
|
30
|
+
const authorizeExtras = {
|
|
31
|
+
prompt: "consent",
|
|
32
|
+
...options.authorizeParams,
|
|
33
|
+
};
|
|
34
|
+
function readConfig(env = process.env) {
|
|
35
|
+
const clientId = env[keys.clientId]?.trim();
|
|
36
|
+
const clientSecret = env[keys.clientSecret]?.trim();
|
|
37
|
+
const publicAppUrl = env[MDA_PUBLIC_APP_URL_ENV]?.trim() ||
|
|
38
|
+
env[MDA_PUBLIC_API_URL_ENV]?.trim();
|
|
39
|
+
if (!clientId || !clientSecret || !publicAppUrl) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const defaults = options.defaultEndpoints(env);
|
|
43
|
+
return {
|
|
44
|
+
clientId,
|
|
45
|
+
clientSecret,
|
|
46
|
+
publicAppUrl: stripSlash(publicAppUrl),
|
|
47
|
+
scopes: env[keys.scopes]?.trim() || defaults.defaultScopes,
|
|
48
|
+
authUrl: stripSlash(env[keys.authUrl]?.trim() || defaults.authUrl),
|
|
49
|
+
tokenUrl: stripSlash(env[keys.tokenUrl]?.trim() || defaults.tokenUrl),
|
|
50
|
+
userInfoUrl: stripSlash(env[keys.userInfoUrl]?.trim() || defaults.userInfoUrl),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function buildAuthorizeUrl(config, state, redirectUri, scopes) {
|
|
54
|
+
const url = new URL(config.authUrl);
|
|
55
|
+
url.searchParams.set("client_id", config.clientId);
|
|
56
|
+
url.searchParams.set("redirect_uri", redirectUri);
|
|
57
|
+
url.searchParams.set("response_type", "code");
|
|
58
|
+
url.searchParams.set("scope", scopes?.trim() || config.scopes);
|
|
59
|
+
url.searchParams.set("state", state);
|
|
60
|
+
for (const [key, value] of Object.entries(authorizeExtras)) {
|
|
61
|
+
url.searchParams.set(key, value);
|
|
62
|
+
}
|
|
63
|
+
return url.toString();
|
|
64
|
+
}
|
|
65
|
+
async function exchangeCode(config, code, redirectUri, fetchImpl = fetch) {
|
|
66
|
+
const body = new URLSearchParams({
|
|
67
|
+
code,
|
|
68
|
+
client_id: config.clientId,
|
|
69
|
+
client_secret: config.clientSecret,
|
|
70
|
+
redirect_uri: redirectUri,
|
|
71
|
+
grant_type: "authorization_code",
|
|
72
|
+
});
|
|
73
|
+
const tokenResponse = await fetchWithTimeout(config.tokenUrl, {
|
|
74
|
+
method: "POST",
|
|
75
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
76
|
+
body,
|
|
77
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
|
|
78
|
+
const tokenJson = (await tokenResponse.json());
|
|
79
|
+
if (!tokenResponse.ok || !tokenJson.access_token) {
|
|
80
|
+
throw new Error(tokenJson.error_description ??
|
|
81
|
+
tokenJson.error ??
|
|
82
|
+
`${options.displayName} OAuth token exchange failed`);
|
|
83
|
+
}
|
|
84
|
+
let accountLabel;
|
|
85
|
+
let subject;
|
|
86
|
+
try {
|
|
87
|
+
const userResponse = await fetchWithTimeout(config.userInfoUrl, {
|
|
88
|
+
headers: { Authorization: `Bearer ${tokenJson.access_token}` },
|
|
89
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
|
|
90
|
+
if (userResponse.ok) {
|
|
91
|
+
const userJson = (await userResponse.json());
|
|
92
|
+
const parsed = options.parseUserInfo(userJson);
|
|
93
|
+
if (parsed.email) {
|
|
94
|
+
accountLabel = parsed.email;
|
|
95
|
+
}
|
|
96
|
+
if (parsed.subject) {
|
|
97
|
+
subject = parsed.subject;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Account label is optional for vault import.
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
accessToken: tokenJson.access_token,
|
|
106
|
+
...(tokenJson.refresh_token
|
|
107
|
+
? { refreshToken: tokenJson.refresh_token }
|
|
108
|
+
: {}),
|
|
109
|
+
...(typeof tokenJson.expires_in === "number"
|
|
110
|
+
? { expiresInSeconds: tokenJson.expires_in }
|
|
111
|
+
: {}),
|
|
112
|
+
...(tokenJson.scope ? { scope: tokenJson.scope } : {}),
|
|
113
|
+
...(accountLabel ? { accountLabel } : {}),
|
|
114
|
+
...(subject
|
|
115
|
+
? { metadata: { [options.subjectMetadataKey]: subject } }
|
|
116
|
+
: {}),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const byo = {
|
|
120
|
+
readConfig,
|
|
121
|
+
buildAuthorizeUrl(config, state, redirectUri, scopes) {
|
|
122
|
+
return buildAuthorizeUrl(config, state, redirectUri, scopes);
|
|
123
|
+
},
|
|
124
|
+
exchangeCode(config, code, redirectUri) {
|
|
125
|
+
return exchangeCode(config, code, redirectUri);
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
function resolvePublicAppUrl(env = process.env) {
|
|
129
|
+
return (readConfig(env)?.publicAppUrl ??
|
|
130
|
+
env[MDA_PUBLIC_APP_URL_ENV]?.trim().replace(/\/$/, ""));
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
providerId: options.providerId,
|
|
134
|
+
displayName: options.displayName,
|
|
135
|
+
env: keys,
|
|
136
|
+
tickets,
|
|
137
|
+
resolveRedirectBase: resolveSlackOauthRedirectBase,
|
|
138
|
+
readConfig,
|
|
139
|
+
buildAuthorizeUrl,
|
|
140
|
+
exchangeCode,
|
|
141
|
+
byo,
|
|
142
|
+
resolvePublicAppUrl,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//# 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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"}
|