managed-deepagents 0.4.2 → 0.4.3-dev.94
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 +51 -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 +64 -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 +127 -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 +43 -32
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +225 -125
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +1 -1
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +26 -5
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/channel.d.ts +91 -0
- package/dist/runtime/channel.d.ts.map +1 -0
- package/dist/runtime/channel.js +98 -0
- package/dist/runtime/channel.js.map +1 -0
- package/dist/runtime/connector.d.ts +66 -23
- package/dist/runtime/connector.d.ts.map +1 -1
- package/dist/runtime/connector.js +67 -27
- package/dist/runtime/connector.js.map +1 -1
- package/dist/runtime/cors.d.ts +12 -3
- package/dist/runtime/cors.d.ts.map +1 -1
- package/dist/runtime/cors.js +23 -5
- package/dist/runtime/cors.js.map +1 -1
- package/dist/runtime/credentials.d.ts +8 -8
- package/dist/runtime/credentials.d.ts.map +1 -1
- package/dist/runtime/credentials.js +46 -23
- package/dist/runtime/credentials.js.map +1 -1
- package/dist/runtime/http.d.ts +46 -0
- package/dist/runtime/http.d.ts.map +1 -0
- package/dist/runtime/http.js +53 -0
- package/dist/runtime/http.js.map +1 -0
- package/dist/runtime/identity-http.d.ts +13 -20
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +158 -75
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +12 -28
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +35 -72
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts +89 -225
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +92 -61
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +0 -2
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +0 -2
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +4 -12
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +9 -20
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/recursion-limit.d.ts +22 -0
- package/dist/runtime/recursion-limit.d.ts.map +1 -0
- package/dist/runtime/recursion-limit.js +46 -0
- package/dist/runtime/recursion-limit.js.map +1 -0
- package/dist/runtime/sandbox-manager.d.ts +60 -3
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +326 -26
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/sandbox-stream-retry.d.ts +18 -0
- package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -0
- package/dist/runtime/sandbox-stream-retry.js +90 -0
- package/dist/runtime/sandbox-stream-retry.js.map +1 -0
- package/dist/runtime/setup-script.d.ts.map +1 -1
- package/dist/runtime/setup-script.js +16 -2
- package/dist/runtime/setup-script.js.map +1 -1
- package/dist/runtime/types.d.ts +16 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/validated-token.d.ts +9 -14
- package/dist/runtime/validated-token.d.ts.map +1 -1
- package/dist/runtime/validated-token.js +79 -106
- package/dist/runtime/validated-token.js.map +1 -1
- package/dist/sandbox.d.ts +17 -42
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +11 -32
- package/dist/sandbox.js.map +1 -1
- package/dist/schedules.js +8 -9
- package/dist/schedules.js.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +22 -29
- package/dist/channels/collect.d.ts +0 -26
- package/dist/channels/collect.d.ts.map +0 -1
- package/dist/channels/collect.js +0 -42
- package/dist/channels/collect.js.map +0 -1
- package/dist/channels/github/adapter-core.d.ts +0 -6
- package/dist/channels/github/adapter-core.d.ts.map +0 -1
- package/dist/channels/github/adapter-core.js +0 -27
- package/dist/channels/github/adapter-core.js.map +0 -1
- package/dist/channels/github/adapter.d.ts +0 -16
- package/dist/channels/github/adapter.d.ts.map +0 -1
- package/dist/channels/github/adapter.js +0 -52
- package/dist/channels/github/adapter.js.map +0 -1
- package/dist/channels/github/define.d.ts +0 -198
- package/dist/channels/github/define.d.ts.map +0 -1
- package/dist/channels/github/define.js +0 -166
- package/dist/channels/github/define.js.map +0 -1
- package/dist/channels/github/http.d.ts +0 -25
- package/dist/channels/github/http.d.ts.map +0 -1
- package/dist/channels/github/http.js +0 -147
- package/dist/channels/github/http.js.map +0 -1
- package/dist/channels/github/index.d.ts +0 -12
- package/dist/channels/github/index.d.ts.map +0 -1
- package/dist/channels/github/index.js +0 -10
- package/dist/channels/github/index.js.map +0 -1
- package/dist/channels/github/normalize.d.ts +0 -32
- package/dist/channels/github/normalize.d.ts.map +0 -1
- package/dist/channels/github/normalize.js +0 -152
- package/dist/channels/github/normalize.js.map +0 -1
- package/dist/channels/github/source-thread.d.ts +0 -24
- package/dist/channels/github/source-thread.d.ts.map +0 -1
- package/dist/channels/github/source-thread.js +0 -54
- package/dist/channels/github/source-thread.js.map +0 -1
- package/dist/channels/github/transport.d.ts +0 -19
- package/dist/channels/github/transport.d.ts.map +0 -1
- package/dist/channels/github/transport.js +0 -92
- package/dist/channels/github/transport.js.map +0 -1
- package/dist/channels/plugin.d.ts +0 -61
- package/dist/channels/plugin.d.ts.map +0 -1
- package/dist/channels/plugin.js +0 -80
- package/dist/channels/plugin.js.map +0 -1
- package/dist/channels/slack/define.d.ts +0 -74
- package/dist/channels/slack/define.d.ts.map +0 -1
- package/dist/channels/slack/define.js +0 -160
- package/dist/channels/slack/define.js.map +0 -1
- package/dist/connectors/github/index.d.ts +0 -78
- package/dist/connectors/github/index.d.ts.map +0 -1
- package/dist/connectors/github/index.js +0 -106
- package/dist/connectors/github/index.js.map +0 -1
- package/dist/connectors/github/sandbox.d.ts +0 -54
- package/dist/connectors/github/sandbox.d.ts.map +0 -1
- package/dist/connectors/github/sandbox.js +0 -515
- package/dist/connectors/github/sandbox.js.map +0 -1
- package/dist/connectors/langsmith/index.d.ts +0 -385
- package/dist/connectors/langsmith/index.d.ts.map +0 -1
- package/dist/connectors/langsmith/index.js +0 -431
- package/dist/connectors/langsmith/index.js.map +0 -1
- package/dist/connectors/langsmith/routes.d.ts +0 -247
- package/dist/connectors/langsmith/routes.d.ts.map +0 -1
- package/dist/connectors/langsmith/routes.js +0 -1182
- package/dist/connectors/langsmith/routes.js.map +0 -1
- package/dist/runtime/memory/seed.d.ts +0 -21
- package/dist/runtime/memory/seed.d.ts.map +0 -1
- package/dist/runtime/memory/seed.js +0 -160
- package/dist/runtime/memory/seed.js.map +0 -1
- package/dist/runtime/memory/user-repo.d.ts +0 -19
- package/dist/runtime/memory/user-repo.d.ts.map +0 -1
- package/dist/runtime/memory/user-repo.js +0 -57
- package/dist/runtime/memory/user-repo.js.map +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace MCP connectors — third-party MCP servers managed in LangSmith.
|
|
3
|
+
*
|
|
4
|
+
* Unlike {@link ../toolserver}, tools run on the vendor's MCP endpoint and are
|
|
5
|
+
* invoked through `POST /v1/mcp/proxy` with a vault subject. Factories are
|
|
6
|
+
* derived from {@link MARKETPLACE_MCP_INTEGRATIONS} so a new bridge is one
|
|
7
|
+
* catalog row (npm + PyPI).
|
|
8
|
+
*/
|
|
9
|
+
import type { Connector } from "../../runtime/connector.js";
|
|
10
|
+
import { type ToolSelectionConnectorConfig } from "../tool-selection.js";
|
|
11
|
+
import { type MarketplaceMcpIntegrationId, type MarketplaceMcpToolsFor } from "./catalog.js";
|
|
12
|
+
export { MARKETPLACE_MCP_INTEGRATIONS, hasMarketplaceConnector, marketplaceIntegrationById, type MarketplaceMcpIntegration, type MarketplaceMcpIntegrationId, type MarketplaceMcpToolsFor, } from "./catalog.js";
|
|
13
|
+
export { normalizeMcpUrl, resolveMarketplaceMcpServer, type FleetMcpServer, } from "./fleet-mcp.js";
|
|
14
|
+
/** Configuration accepted by every `connectors.<marketplace>` factory. */
|
|
15
|
+
export type MarketplaceConnectorConfig<TTool extends string = string> = ToolSelectionConnectorConfig<TTool>;
|
|
16
|
+
export type MarketplaceConnectorFor<Id extends MarketplaceMcpIntegrationId> = Connector & MarketplaceConnectorConfig<MarketplaceMcpToolsFor<Id>> & {
|
|
17
|
+
kind: Id;
|
|
18
|
+
};
|
|
19
|
+
export type MarketplaceConnectorFactoryFor<Id extends MarketplaceMcpIntegrationId> = (config?: MarketplaceConnectorConfig<MarketplaceMcpToolsFor<Id>>) => MarketplaceConnectorFor<Id>;
|
|
20
|
+
/** `connectors.<id>` factories for every marketplace catalog entry. */
|
|
21
|
+
export type MarketplaceConnectors = {
|
|
22
|
+
[Id in MarketplaceMcpIntegrationId]: MarketplaceConnectorFactoryFor<Id>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* All marketplace connector factories keyed by integration id.
|
|
26
|
+
*
|
|
27
|
+
* Built from the catalog so a new bridge is one entry there rather than a
|
|
28
|
+
* namespace line that can be forgotten.
|
|
29
|
+
*/
|
|
30
|
+
export declare const marketplaceConnectors: MarketplaceConnectors;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/marketplace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AAExB,0EAA0E;AAC1E,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAClE,4BAA4B,CAAC,KAAK,CAAC,CAAC;AAEtC,MAAM,MAAM,uBAAuB,CAAC,EAAE,SAAS,2BAA2B,IACxE,SAAS,GACP,0BAA0B,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,GAAG;IACvD,IAAI,EAAE,EAAE,CAAC;CACV,CAAC;AAEN,MAAM,MAAM,8BAA8B,CACxC,EAAE,SAAS,2BAA2B,IACpC,CACF,MAAM,CAAC,EAAE,0BAA0B,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,KAC5D,uBAAuB,CAAC,EAAE,CAAC,CAAC;AAEjC,uEAAuE;AACvE,MAAM,MAAM,qBAAqB,GAAG;KACjC,EAAE,IAAI,2BAA2B,GAAG,8BAA8B,CAAC,EAAE,CAAC;CACxE,CAAC;AA2BF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,qBAKV,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace MCP connectors — third-party MCP servers managed in LangSmith.
|
|
3
|
+
*
|
|
4
|
+
* Unlike {@link ../toolserver}, tools run on the vendor's MCP endpoint and are
|
|
5
|
+
* invoked through `POST /v1/mcp/proxy` with a vault subject. Factories are
|
|
6
|
+
* derived from {@link MARKETPLACE_MCP_INTEGRATIONS} so a new bridge is one
|
|
7
|
+
* catalog row (npm + PyPI).
|
|
8
|
+
*/
|
|
9
|
+
import { defineExtension } from "../../extension.js";
|
|
10
|
+
import { toolSelectionConnectorSchema, } from "../tool-selection.js";
|
|
11
|
+
import { MARKETPLACE_MCP_INTEGRATIONS, } from "./catalog.js";
|
|
12
|
+
export { MARKETPLACE_MCP_INTEGRATIONS, hasMarketplaceConnector, marketplaceIntegrationById, } from "./catalog.js";
|
|
13
|
+
export { normalizeMcpUrl, resolveMarketplaceMcpServer, } from "./fleet-mcp.js";
|
|
14
|
+
function marketplaceTools(integration, label) {
|
|
15
|
+
return async (_ctx, self) => {
|
|
16
|
+
const { loadMarketplaceTools } = await import("./load.js");
|
|
17
|
+
return loadMarketplaceTools(integration, label, self);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function marketplaceConnectorFactory(integration) {
|
|
21
|
+
const label = `connectors.${integration.id}`;
|
|
22
|
+
return defineExtension("connector", {
|
|
23
|
+
kind: integration.id,
|
|
24
|
+
label,
|
|
25
|
+
args: toolSelectionConnectorSchema(),
|
|
26
|
+
tools: marketplaceTools(integration, label),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* All marketplace connector factories keyed by integration id.
|
|
31
|
+
*
|
|
32
|
+
* Built from the catalog so a new bridge is one entry there rather than a
|
|
33
|
+
* namespace line that can be forgotten.
|
|
34
|
+
*/
|
|
35
|
+
export const marketplaceConnectors = Object.fromEntries(MARKETPLACE_MCP_INTEGRATIONS.map((entry) => [
|
|
36
|
+
entry.id,
|
|
37
|
+
marketplaceConnectorFactory(entry),
|
|
38
|
+
]));
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connectors/marketplace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EACL,4BAA4B,GAE7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,4BAA4B,GAI7B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,GAI3B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,2BAA2B,GAE5B,MAAM,gBAAgB,CAAC;AAuBxB,SAAS,gBAAgB,CACvB,WAAsC,EACtC,KAAa;IAEb,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,WAAsC;IAEtC,MAAM,KAAK,GAAG,cAAc,WAAW,CAAC,EAAE,EAAE,CAAC;IAC7C,OAAO,eAAe,CAAC,WAAW,EAAE;QAClC,IAAI,EAAE,WAAW,CAAC,EAAE;QACpB,KAAK;QACL,IAAI,EAAE,4BAA4B,EAG/B;QACH,KAAK,EAAE,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC;KAC5C,CAAuD,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA0B,MAAM,CAAC,WAAW,CAC5E,4BAA4B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1C,KAAK,CAAC,EAAE;IACR,2BAA2B,CAAC,KAAK,CAAC;CACnC,CAAC,CACsB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load marketplace MCP tools through LangSmith's `POST /api/v1/mcp/proxy`.
|
|
3
|
+
*
|
|
4
|
+
* Unlike toolserver (bare Streamable HTTP to `/v1/toolserver/servers/{slug}/mcp`),
|
|
5
|
+
* marketplace invoke uses an HTTP-over-JSON envelope. Credentials never leave
|
|
6
|
+
* the vault — the proxy mints a bearer for `agent_id` / `ls_user_id`.
|
|
7
|
+
*/
|
|
8
|
+
import { type ToolSelectionConnectorConfig } from "../tool-selection.js";
|
|
9
|
+
import type { MarketplaceMcpIntegration } from "./catalog.js";
|
|
10
|
+
export type MarketplaceConnectorConfig = ToolSelectionConnectorConfig;
|
|
11
|
+
/** Load (and cache) tools for one marketplace connector declaration. */
|
|
12
|
+
export declare function loadMarketplaceTools(integration: MarketplaceMcpIntegration, label: string, connector: MarketplaceConnectorConfig & object): Promise<unknown[]>;
|
|
13
|
+
export declare function clearMarketplaceToolsCacheForTests(connector: object): void;
|
|
14
|
+
//# sourceMappingURL=load.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/connectors/marketplace/load.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAS9D,MAAM,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AAEtE,wEAAwE;AACxE,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,0BAA0B,GAAG,MAAM,GAC7C,OAAO,CAAC,OAAO,EAAE,CAAC,CAuBpB;AAED,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE1E"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load marketplace MCP tools through LangSmith's `POST /api/v1/mcp/proxy`.
|
|
3
|
+
*
|
|
4
|
+
* Unlike toolserver (bare Streamable HTTP to `/v1/toolserver/servers/{slug}/mcp`),
|
|
5
|
+
* marketplace invoke uses an HTTP-over-JSON envelope. Credentials never leave
|
|
6
|
+
* the vault — the proxy mints a bearer for `agent_id` / `ls_user_id`.
|
|
7
|
+
*/
|
|
8
|
+
import { DynamicStructuredTool } from "@langchain/core/tools";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { agentIdFromActor, isActorSubjectIntegrationEnabled, } from "../../identity/actor-subject.js";
|
|
11
|
+
import { rewriteFleetToolError } from "../../identity/fleet-connect-hint.js";
|
|
12
|
+
import { resolveFleetApiUrl, resolveFleetHeaders, } from "../../identity/fleet.js";
|
|
13
|
+
import { marketplaceAsFleetHint } from "../../identity/marketplace/index.js";
|
|
14
|
+
import { managedRuntimeOverrides } from "../../runtime/managed-tools.js";
|
|
15
|
+
import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS, } from "../../runtime/http.js";
|
|
16
|
+
import { selectTools, } from "../tool-selection.js";
|
|
17
|
+
import { parseMcpProxyResponseBody, resolveMarketplaceMcpServer, resolveSmithBackendV1Url, } from "./fleet-mcp.js";
|
|
18
|
+
const schemaCache = new WeakMap();
|
|
19
|
+
/** Load (and cache) tools for one marketplace connector declaration. */
|
|
20
|
+
export function loadMarketplaceTools(integration, label, connector) {
|
|
21
|
+
if (connector.includeTools?.length === 0) {
|
|
22
|
+
return Promise.resolve([]);
|
|
23
|
+
}
|
|
24
|
+
const cached = schemaCache.get(connector);
|
|
25
|
+
if (cached) {
|
|
26
|
+
return cached;
|
|
27
|
+
}
|
|
28
|
+
const loading = connectAndLoadTools(integration, label, connector)
|
|
29
|
+
.then((tools) => {
|
|
30
|
+
// Empty pre-connect fallbacks must not stick forever — a later load may
|
|
31
|
+
// discover tools once the workspace/actor connection exists.
|
|
32
|
+
if (tools.length === 0) {
|
|
33
|
+
schemaCache.delete(connector);
|
|
34
|
+
}
|
|
35
|
+
return tools;
|
|
36
|
+
})
|
|
37
|
+
.catch((error) => {
|
|
38
|
+
schemaCache.delete(connector);
|
|
39
|
+
throw error;
|
|
40
|
+
});
|
|
41
|
+
schemaCache.set(connector, loading);
|
|
42
|
+
return loading;
|
|
43
|
+
}
|
|
44
|
+
export function clearMarketplaceToolsCacheForTests(connector) {
|
|
45
|
+
schemaCache.delete(connector);
|
|
46
|
+
}
|
|
47
|
+
async function connectAndLoadTools(integration, label, config) {
|
|
48
|
+
// Actor-subject agent_id is resolved per invoke inside buildProxyTool —
|
|
49
|
+
// no outer wrap / re-list is needed (unlike toolserver MCP, where the
|
|
50
|
+
// session URL binds agent_id at connect time).
|
|
51
|
+
const listAgentId = trimmed(process.env.MDA_TOOLSERVER_AGENT_ID);
|
|
52
|
+
return loadToolsForAgentId(integration, label, config, listAgentId);
|
|
53
|
+
}
|
|
54
|
+
async function loadToolsForAgentId(integration, label, config, agentId) {
|
|
55
|
+
const server = await resolveMarketplaceMcpServer({
|
|
56
|
+
mcpUrl: integration.mcpUrl,
|
|
57
|
+
});
|
|
58
|
+
const providerId = server.oauth_provider_id.trim();
|
|
59
|
+
const listed = await listProxyTools({
|
|
60
|
+
integration,
|
|
61
|
+
oauthProviderId: providerId,
|
|
62
|
+
agentId,
|
|
63
|
+
label,
|
|
64
|
+
});
|
|
65
|
+
const tools = listed.map((entry) => buildProxyTool(entry, integration, providerId, config, agentId, label));
|
|
66
|
+
return selectTools(label, config, tools);
|
|
67
|
+
}
|
|
68
|
+
async function listProxyTools(options) {
|
|
69
|
+
const env = process.env;
|
|
70
|
+
const base = resolveFleetApiUrl(env);
|
|
71
|
+
const headers = resolveFleetHeaders(options.label, env);
|
|
72
|
+
const params = new URLSearchParams({
|
|
73
|
+
url: options.integration.mcpUrl,
|
|
74
|
+
oauth_provider_id: options.oauthProviderId,
|
|
75
|
+
});
|
|
76
|
+
if (options.agentId) {
|
|
77
|
+
params.set("agent_id", options.agentId);
|
|
78
|
+
}
|
|
79
|
+
const toolsUrl = new URL(resolveSmithBackendV1Url(base, "mcp/tools"));
|
|
80
|
+
toolsUrl.search = params.toString();
|
|
81
|
+
const response = await fetchWithTimeout(toolsUrl.toString(), { method: "GET", headers }, PROVIDER_HTTP_TIMEOUT_MS, fetch);
|
|
82
|
+
if (response.status === 428 || response.status === 401) {
|
|
83
|
+
// No subject / connection yet — expose catalog names so the agent can still
|
|
84
|
+
// be authored; invoke will fail with a connect hint once identity is present.
|
|
85
|
+
return options.integration.tools.map((name) => ({
|
|
86
|
+
name,
|
|
87
|
+
description: `${name} (connect required)`,
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: {},
|
|
91
|
+
additionalProperties: true,
|
|
92
|
+
},
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
const text = await response.text().catch(() => "");
|
|
97
|
+
throw new Error(`${options.label}: list marketplace tools failed (${response.status}): ${text || response.statusText}`);
|
|
98
|
+
}
|
|
99
|
+
const json = (await response.json());
|
|
100
|
+
return (json.tools ?? []).filter((tool) => typeof tool?.name === "string" && tool.name.length > 0);
|
|
101
|
+
}
|
|
102
|
+
function buildProxyTool(entry, integration, providerId, config, fixedAgentId, label) {
|
|
103
|
+
const schema = jsonSchemaToZod(entry.inputSchema);
|
|
104
|
+
return new DynamicStructuredTool({
|
|
105
|
+
name: entry.name,
|
|
106
|
+
description: entry.description ?? entry.name,
|
|
107
|
+
schema,
|
|
108
|
+
func: async (input, _runManager, runtime) => {
|
|
109
|
+
const runtimeConfig = runtime;
|
|
110
|
+
const agentId = resolveInvokeAgentId(runtimeConfig, integration.id) ?? fixedAgentId;
|
|
111
|
+
try {
|
|
112
|
+
return await callProxyTool({
|
|
113
|
+
url: integration.mcpUrl,
|
|
114
|
+
oauthProviderId: providerId,
|
|
115
|
+
agentId,
|
|
116
|
+
toolName: entry.name,
|
|
117
|
+
args: input,
|
|
118
|
+
label,
|
|
119
|
+
timeoutMs: config.defaultToolTimeout,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
throw rewriteFleetToolError(error, marketplaceAsFleetHint(integration, providerId));
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function resolveInvokeAgentId(runtime, integrationId) {
|
|
129
|
+
if (isActorSubjectIntegrationEnabled(integrationId)) {
|
|
130
|
+
const identity = managedRuntimeOverrides(runtime).identity;
|
|
131
|
+
const userId = identity?.user?.id;
|
|
132
|
+
if (userId) {
|
|
133
|
+
return agentIdFromActor(userId);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return trimmed(process.env.MDA_TOOLSERVER_AGENT_ID);
|
|
137
|
+
}
|
|
138
|
+
async function callProxyTool(options) {
|
|
139
|
+
if (!options.agentId) {
|
|
140
|
+
throw new Error(`${options.label}: marketplace tool "${options.toolName}" needs an agent subject ` +
|
|
141
|
+
`(Connect-with-${options.label.replace(/^connectors\./, "")} or MDA_TOOLSERVER_AGENT_ID)`);
|
|
142
|
+
}
|
|
143
|
+
const env = process.env;
|
|
144
|
+
const base = resolveFleetApiUrl(env);
|
|
145
|
+
const headers = resolveFleetHeaders(options.label, env);
|
|
146
|
+
// Envelope timeout is seconds (smith-backend). Keep the local fetch budget
|
|
147
|
+
// at least as long, plus a small transport allowance — otherwise
|
|
148
|
+
// `defaultToolTimeout` above PROVIDER_HTTP_TIMEOUT_MS is silently truncated.
|
|
149
|
+
const timeoutMs = Math.min(Math.max(options.timeoutMs ?? 120_000, 1_000), 120_000);
|
|
150
|
+
const timeoutSeconds = timeoutMs / 1000;
|
|
151
|
+
const httpTimeoutMs = timeoutMs + 5_000;
|
|
152
|
+
// Forwarded to the vendor MCP by smith-backend's proxy. Notion (and other
|
|
153
|
+
// Streamable HTTP servers) reject requests that omit text/event-stream.
|
|
154
|
+
const mcpHeaders = {
|
|
155
|
+
"Content-Type": "application/json",
|
|
156
|
+
Accept: "application/json, text/event-stream",
|
|
157
|
+
"MCP-Protocol-Version": "2025-11-25",
|
|
158
|
+
};
|
|
159
|
+
const body = {
|
|
160
|
+
url: options.url,
|
|
161
|
+
method: "POST",
|
|
162
|
+
oauth_provider_id: options.oauthProviderId,
|
|
163
|
+
agent_id: options.agentId,
|
|
164
|
+
timeout: timeoutSeconds,
|
|
165
|
+
headers: mcpHeaders,
|
|
166
|
+
body: {
|
|
167
|
+
jsonrpc: "2.0",
|
|
168
|
+
id: 1,
|
|
169
|
+
method: "tools/call",
|
|
170
|
+
params: {
|
|
171
|
+
name: options.toolName,
|
|
172
|
+
arguments: options.args && typeof options.args === "object" ? options.args : {},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
const response = await fetchWithTimeout(resolveSmithBackendV1Url(base, "mcp/proxy"), {
|
|
177
|
+
method: "POST",
|
|
178
|
+
headers,
|
|
179
|
+
body: JSON.stringify(body),
|
|
180
|
+
}, httpTimeoutMs, fetch);
|
|
181
|
+
const text = await response.text().catch(() => "");
|
|
182
|
+
if (!response.ok) {
|
|
183
|
+
throw new Error(`${options.label}: marketplace tool "${options.toolName}" failed (${response.status}): ${text || response.statusText}`);
|
|
184
|
+
}
|
|
185
|
+
return parseMcpProxyResponseBody(text);
|
|
186
|
+
}
|
|
187
|
+
/** Best-effort JSON Schema → Zod object (additionalProperties open). */
|
|
188
|
+
function jsonSchemaToZod(inputSchema) {
|
|
189
|
+
if (!inputSchema || typeof inputSchema !== "object") {
|
|
190
|
+
return z.record(z.string(), z.unknown());
|
|
191
|
+
}
|
|
192
|
+
const properties = inputSchema.properties;
|
|
193
|
+
if (!properties || typeof properties !== "object") {
|
|
194
|
+
return z.record(z.string(), z.unknown());
|
|
195
|
+
}
|
|
196
|
+
const shape = {};
|
|
197
|
+
for (const key of Object.keys(properties)) {
|
|
198
|
+
shape[key] = z.unknown().optional();
|
|
199
|
+
}
|
|
200
|
+
return z.looseObject(shape);
|
|
201
|
+
}
|
|
202
|
+
function trimmed(value) {
|
|
203
|
+
const v = value?.trim();
|
|
204
|
+
return v ? v : undefined;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/connectors/marketplace/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The managed `connectors/` declaration primitive.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Agent at runtime — the author never imports the MCP client or calls
|
|
10
|
-
* `getTools()`.
|
|
4
|
+
* A Managed Deep Agent declares the remote MCP servers whose tools it wants in
|
|
5
|
+
* `connectors/mcp.ts` with `connectors.mcp(...)`. MDA discovers that
|
|
6
|
+
* declaration, creates the `@langchain/mcp-adapters` client, loads the tools,
|
|
7
|
+
* and adds them to the Deep Agent at runtime — the author never imports the MCP
|
|
8
|
+
* client or calls `getTools()`.
|
|
11
9
|
*
|
|
12
10
|
* Only remote MCP servers over HTTP/SSE are supported. Stdio MCP servers are
|
|
13
11
|
* intentionally out of scope: they introduce process management, packaging, and
|
|
@@ -20,12 +18,9 @@
|
|
|
20
18
|
* @example
|
|
21
19
|
* ```ts
|
|
22
20
|
* // connectors/mcp.ts
|
|
23
|
-
* import {
|
|
21
|
+
* import { connectors } from "managed-deepagents";
|
|
24
22
|
*
|
|
25
|
-
* export const
|
|
26
|
-
* useStandardContentBlocks: true,
|
|
27
|
-
* prefixToolNameWithServerName: true,
|
|
28
|
-
* throwOnLoadError: true,
|
|
23
|
+
* export const connector = connectors.mcp({
|
|
29
24
|
* mcpServers: {
|
|
30
25
|
* docs: {
|
|
31
26
|
* transport: "http",
|
|
@@ -35,7 +30,7 @@
|
|
|
35
30
|
* });
|
|
36
31
|
* ```
|
|
37
32
|
*/
|
|
38
|
-
import {
|
|
33
|
+
import type { Connector } from "../../runtime/connector.js";
|
|
39
34
|
/** Per-server MCP tool selection. Names are raw, unprefixed MCP tool names. */
|
|
40
35
|
export interface McpToolSelectionConfig {
|
|
41
36
|
/**
|
|
@@ -81,7 +76,7 @@ export interface SseMcpServerConfig extends RemoteMcpServerBaseConfig {
|
|
|
81
76
|
}
|
|
82
77
|
/** A remote MCP server connection. Stdio servers are intentionally excluded. */
|
|
83
78
|
export type RemoteMcpServerConfig = HttpMcpServerConfig | SseMcpServerConfig;
|
|
84
|
-
/** Configuration accepted by
|
|
79
|
+
/** Configuration accepted by `connectors.mcp`. */
|
|
85
80
|
export interface McpServersConfig {
|
|
86
81
|
/**
|
|
87
82
|
* MCP servers to connect to. Each key is the logical server name MDA uses
|
|
@@ -124,11 +119,9 @@ export interface McpServersDefinition extends McpServersConfig, Connector {
|
|
|
124
119
|
* Declare the MCP servers whose tools should be loaded and added to the managed
|
|
125
120
|
* Deep Agent at runtime.
|
|
126
121
|
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* `"sse"`). Stdio servers and invalid tool selectors are rejected with a clear
|
|
131
|
-
* error.
|
|
122
|
+
* The tools hook runs at agent-graph construction time (inside the managed
|
|
123
|
+
* runtime), so the MCP client loader is imported lazily — authoring-only
|
|
124
|
+
* installs never pull in `@langchain/mcp-adapters`.
|
|
132
125
|
*/
|
|
133
|
-
export declare
|
|
126
|
+
export declare const mcpConnector: (config: McpServersConfig) => McpServersDefinition;
|
|
134
127
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/mcp/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,+EAA+E;AAC/E,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,4DAA4D;AAC5D,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAoB,SAAQ,yBAAyB;IACpE,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB;IACnE,oDAAoD;IACpD,SAAS,EAAE,KAAK,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAE7E,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB,EAAE,SAAS;IACvE,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAC9B;AAyFD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,oBASrD,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The managed `connectors/` declaration primitive.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Agent at runtime — the author never imports the MCP client or calls
|
|
10
|
-
* `getTools()`.
|
|
4
|
+
* A Managed Deep Agent declares the remote MCP servers whose tools it wants in
|
|
5
|
+
* `connectors/mcp.ts` with `connectors.mcp(...)`. MDA discovers that
|
|
6
|
+
* declaration, creates the `@langchain/mcp-adapters` client, loads the tools,
|
|
7
|
+
* and adds them to the Deep Agent at runtime — the author never imports the MCP
|
|
8
|
+
* client or calls `getTools()`.
|
|
11
9
|
*
|
|
12
10
|
* Only remote MCP servers over HTTP/SSE are supported. Stdio MCP servers are
|
|
13
11
|
* intentionally out of scope: they introduce process management, packaging, and
|
|
@@ -20,12 +18,9 @@
|
|
|
20
18
|
* @example
|
|
21
19
|
* ```ts
|
|
22
20
|
* // connectors/mcp.ts
|
|
23
|
-
* import {
|
|
21
|
+
* import { connectors } from "managed-deepagents";
|
|
24
22
|
*
|
|
25
|
-
* export const
|
|
26
|
-
* useStandardContentBlocks: true,
|
|
27
|
-
* prefixToolNameWithServerName: true,
|
|
28
|
-
* throwOnLoadError: true,
|
|
23
|
+
* export const connector = connectors.mcp({
|
|
29
24
|
* mcpServers: {
|
|
30
25
|
* docs: {
|
|
31
26
|
* transport: "http",
|
|
@@ -35,109 +30,94 @@
|
|
|
35
30
|
* });
|
|
36
31
|
* ```
|
|
37
32
|
*/
|
|
38
|
-
import {
|
|
33
|
+
import { z } from "zod";
|
|
34
|
+
import { defineExtension } from "../../extension.js";
|
|
35
|
+
/** Stdio servers are out of scope; the message points at the alternatives. */
|
|
36
|
+
const STDIO_REJECTION = "uses a stdio transport, which is not supported. Managed Deep Agents " +
|
|
37
|
+
"support remote MCP servers over HTTP/SSE only; expose the server over HTTP " +
|
|
38
|
+
"or write a normal authored tool instead.";
|
|
39
|
+
/** Raw MCP tool names, before the managed `{server}__` prefix is applied. */
|
|
40
|
+
const toolNames = z
|
|
41
|
+
.array(z
|
|
42
|
+
.string("must be a non-empty tool name")
|
|
43
|
+
.refine((name) => name.trim().length > 0, "must be a non-empty tool name"))
|
|
44
|
+
.check((ctx) => {
|
|
45
|
+
const seen = new Set();
|
|
46
|
+
for (const name of ctx.value) {
|
|
47
|
+
if (seen.has(name)) {
|
|
48
|
+
ctx.issues.push({
|
|
49
|
+
code: "custom",
|
|
50
|
+
input: ctx.value,
|
|
51
|
+
message: `contains duplicate tool name "${name}"`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
seen.add(name);
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
.optional();
|
|
58
|
+
const remoteMcpServer = z
|
|
59
|
+
.looseObject({
|
|
60
|
+
// Present only to reject it: a `command` is how a stdio server is spelled.
|
|
61
|
+
command: z.never({ error: STDIO_REJECTION }).optional(),
|
|
62
|
+
transport: z.enum(["http", "sse"], {
|
|
63
|
+
error: (issue) => issue.input === "stdio"
|
|
64
|
+
? STDIO_REJECTION
|
|
65
|
+
: 'must declare a remote transport ("http" or "sse")',
|
|
66
|
+
}),
|
|
67
|
+
url: z
|
|
68
|
+
.string("must be a non-empty URL")
|
|
69
|
+
.refine((url) => url.trim().length > 0, "must be a non-empty URL"),
|
|
70
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
71
|
+
defaultToolTimeout: z.number().optional(),
|
|
72
|
+
includeTools: toolNames,
|
|
73
|
+
excludeTools: toolNames,
|
|
74
|
+
})
|
|
75
|
+
.check((ctx) => {
|
|
76
|
+
const { includeTools, excludeTools } = ctx.value;
|
|
77
|
+
const overlap = (includeTools ?? []).filter((name) => (excludeTools ?? []).includes(name));
|
|
78
|
+
if (overlap.length > 0) {
|
|
79
|
+
ctx.issues.push({
|
|
80
|
+
code: "custom",
|
|
81
|
+
input: ctx.value,
|
|
82
|
+
message: "selects tool(s) in both `includeTools` and `excludeTools`: " +
|
|
83
|
+
`${[...overlap].sort().join(", ")}`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
39
87
|
/**
|
|
40
|
-
*
|
|
41
|
-
* Deep Agent at runtime.
|
|
88
|
+
* The MCP connector's arguments.
|
|
42
89
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* `
|
|
47
|
-
* error.
|
|
90
|
+
* Shape, types, and tool-name lists are the schema's job; the rules that need
|
|
91
|
+
* more than one field — a stdio server, a tool selected and deselected at once
|
|
92
|
+
* — are checks with hand-written messages. Server configs stay loose because
|
|
93
|
+
* `@langchain/mcp-adapters` accepts more per-transport options than MDA models.
|
|
48
94
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
throw new Error("defineMcpServers(...) requires at least one entry in `mcpServers`.");
|
|
61
|
-
}
|
|
62
|
-
for (const [name, server] of entries) {
|
|
63
|
-
validateRemoteServer(name, server);
|
|
64
|
-
}
|
|
65
|
-
const definition = { kind: "mcp_servers", ...config };
|
|
66
|
-
// Brand it as a connector without exposing the symbol as an enumerable field.
|
|
67
|
-
Object.defineProperty(definition, CONNECTOR_BRAND, {
|
|
68
|
-
value: true,
|
|
69
|
-
enumerable: false,
|
|
70
|
-
});
|
|
71
|
-
// The tools hook runs at agent-graph construction time (inside the managed
|
|
72
|
-
// runtime), so the MCP client loader is imported lazily — authoring-only
|
|
73
|
-
// installs never pull in `@langchain/mcp-adapters`.
|
|
74
|
-
Object.defineProperty(definition, "tools", {
|
|
75
|
-
value: async () => {
|
|
76
|
-
const { loadManagedMcpTools } = await import("./load.js");
|
|
77
|
-
return loadManagedMcpTools(definition);
|
|
78
|
-
},
|
|
79
|
-
enumerable: false,
|
|
80
|
-
});
|
|
81
|
-
return definition;
|
|
82
|
-
}
|
|
83
|
-
/** Allowed remote transports. Stdio is intentionally unsupported in v0. */
|
|
84
|
-
const REMOTE_TRANSPORTS = new Set(["http", "sse"]);
|
|
95
|
+
const mcpServersConfig = z.object({
|
|
96
|
+
mcpServers: z
|
|
97
|
+
.record(z.string(), remoteMcpServer, {
|
|
98
|
+
error: "must be an object mapping server names to remote MCP server configs",
|
|
99
|
+
})
|
|
100
|
+
.refine((servers) => Object.keys(servers).length > 0, "requires at least one entry"),
|
|
101
|
+
prefixToolNameWithServerName: z.boolean().optional(),
|
|
102
|
+
throwOnLoadError: z.boolean().optional(),
|
|
103
|
+
useStandardContentBlocks: z.boolean().optional(),
|
|
104
|
+
onConnectionError: z.literal("throw").optional(),
|
|
105
|
+
});
|
|
85
106
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
107
|
+
* Declare the MCP servers whose tools should be loaded and added to the managed
|
|
108
|
+
* Deep Agent at runtime.
|
|
109
|
+
*
|
|
110
|
+
* The tools hook runs at agent-graph construction time (inside the managed
|
|
111
|
+
* runtime), so the MCP client loader is imported lazily — authoring-only
|
|
112
|
+
* installs never pull in `@langchain/mcp-adapters`.
|
|
88
113
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
"Managed Deep Agents support remote MCP servers over HTTP/SSE only; " +
|
|
99
|
-
"expose the server over HTTP or write a normal authored tool instead.");
|
|
100
|
-
}
|
|
101
|
-
const transport = config.transport;
|
|
102
|
-
if (typeof transport !== "string" || !REMOTE_TRANSPORTS.has(transport)) {
|
|
103
|
-
throw new Error(`MCP server "${name}" must declare a remote transport ` +
|
|
104
|
-
`("http" or "sse"); got ${JSON.stringify(transport)}.`);
|
|
105
|
-
}
|
|
106
|
-
if (typeof config.url !== "string" || config.url.trim().length === 0) {
|
|
107
|
-
throw new Error(`MCP server "${name}" must declare a non-empty \`url\`.`);
|
|
108
|
-
}
|
|
109
|
-
validateToolSelection(name, config);
|
|
110
|
-
}
|
|
111
|
-
function validateToolSelection(name, config) {
|
|
112
|
-
const includeTools = validateToolNameList(name, "includeTools", config.includeTools);
|
|
113
|
-
const excludeTools = validateToolNameList(name, "excludeTools", config.excludeTools);
|
|
114
|
-
if (!includeTools || !excludeTools) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const included = new Set(includeTools);
|
|
118
|
-
const conflicts = excludeTools.filter((toolName) => included.has(toolName));
|
|
119
|
-
if (conflicts.length > 0) {
|
|
120
|
-
throw new Error(`MCP server "${name}" selects tool(s) in both \`includeTools\` and ` +
|
|
121
|
-
`\`excludeTools\`: ${conflicts.sort().join(", ")}.`);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function validateToolNameList(serverName, field, value) {
|
|
125
|
-
if (value === undefined) {
|
|
126
|
-
return undefined;
|
|
127
|
-
}
|
|
128
|
-
if (!Array.isArray(value)) {
|
|
129
|
-
throw new Error(`MCP server "${serverName}" \`${field}\` must be an array of strings.`);
|
|
130
|
-
}
|
|
131
|
-
const seen = new Set();
|
|
132
|
-
for (const [index, item] of value.entries()) {
|
|
133
|
-
if (typeof item !== "string" || item.trim().length === 0) {
|
|
134
|
-
throw new Error(`MCP server "${serverName}" \`${field}\` entry ${index} must be a non-empty string.`);
|
|
135
|
-
}
|
|
136
|
-
if (seen.has(item)) {
|
|
137
|
-
throw new Error(`MCP server "${serverName}" \`${field}\` contains duplicate tool name "${item}".`);
|
|
138
|
-
}
|
|
139
|
-
seen.add(item);
|
|
140
|
-
}
|
|
141
|
-
return value;
|
|
142
|
-
}
|
|
114
|
+
export const mcpConnector = defineExtension("connector", {
|
|
115
|
+
kind: "mcp_servers",
|
|
116
|
+
label: "connectors.mcp",
|
|
117
|
+
args: mcpServersConfig,
|
|
118
|
+
async tools(_ctx, self) {
|
|
119
|
+
const { loadManagedMcpTools } = await import("./load.js");
|
|
120
|
+
return loadManagedMcpTools(self);
|
|
121
|
+
},
|
|
122
|
+
});
|
|
143
123
|
//# sourceMappingURL=index.js.map
|