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 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/identity/fleet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAiBD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,eAAe,EAAE,CAAC,CAsB5B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,EAClC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAwB1B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,0BAA0B,EAChC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CA2B3B;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangSmith Fleet client for agent-subject vault connections.
|
|
3
|
+
*
|
|
4
|
+
* Shared by Connect providers (Google today; other toolserver OAuth providers
|
|
5
|
+
* later). Source of truth for Connect status is Fleet agent connections — not
|
|
6
|
+
* a local Store cache.
|
|
7
|
+
*/
|
|
8
|
+
import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS } from "../runtime/http.js";
|
|
9
|
+
const DEFAULT_API_URL = "https://api.smith.langchain.com";
|
|
10
|
+
export function resolveFleetApiUrl(env = process.env) {
|
|
11
|
+
const base = trimmed(env.LANGSMITH_ENDPOINT) ??
|
|
12
|
+
trimmed(env.LANGCHAIN_ENDPOINT) ??
|
|
13
|
+
DEFAULT_API_URL;
|
|
14
|
+
return stripTrailingSlashes(withScheme(base));
|
|
15
|
+
}
|
|
16
|
+
export function resolveFleetHeaders(label, env = process.env) {
|
|
17
|
+
const apiKey = trimmed(env.LANGSMITH_API_KEY);
|
|
18
|
+
if (!apiKey) {
|
|
19
|
+
throw new Error(`${label} needs LANGSMITH_API_KEY to reach the LangSmith Fleet API.`);
|
|
20
|
+
}
|
|
21
|
+
const headers = {
|
|
22
|
+
"x-api-key": apiKey,
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
};
|
|
25
|
+
const workspaceId = trimmed(env.LANGCHAIN_WORKSPACE_ID);
|
|
26
|
+
if (workspaceId) {
|
|
27
|
+
headers["x-tenant-id"] = workspaceId;
|
|
28
|
+
}
|
|
29
|
+
return headers;
|
|
30
|
+
}
|
|
31
|
+
function fleetHeaders(label, options, env = process.env) {
|
|
32
|
+
if (options.apiKey || options.workspaceId) {
|
|
33
|
+
return {
|
|
34
|
+
"x-api-key": options.apiKey ?? trimmed(env.LANGSMITH_API_KEY) ?? "",
|
|
35
|
+
"Content-Type": "application/json",
|
|
36
|
+
...(options.workspaceId ? { "x-tenant-id": options.workspaceId } : {}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return resolveFleetHeaders(label, env);
|
|
40
|
+
}
|
|
41
|
+
export async function listAgentConnections(agentId, options = {}) {
|
|
42
|
+
const env = process.env;
|
|
43
|
+
const base = options.apiUrl ?? resolveFleetApiUrl(env);
|
|
44
|
+
const headers = fleetHeaders("fleet list connections", options, env);
|
|
45
|
+
const url = `${base}/v1/fleet/agents/${encodeURIComponent(agentId)}/connections`;
|
|
46
|
+
const response = await fetchWithTimeout(url, { method: "GET", headers }, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
const text = await response.text().catch(() => "");
|
|
49
|
+
throw new Error(`Fleet list connections failed (${response.status}): ${text || response.statusText}`);
|
|
50
|
+
}
|
|
51
|
+
const json = (await response.json());
|
|
52
|
+
return json.items ?? json.data ?? [];
|
|
53
|
+
}
|
|
54
|
+
export async function upsertAgentProviderToken(agentId, providerSlug, body, options = {}) {
|
|
55
|
+
const env = process.env;
|
|
56
|
+
const base = options.apiUrl ?? resolveFleetApiUrl(env);
|
|
57
|
+
const headers = fleetHeaders("fleet upsert provider token", options, env);
|
|
58
|
+
const url = `${base}/v1/fleet/agents/${encodeURIComponent(agentId)}` +
|
|
59
|
+
`/providers/${encodeURIComponent(providerSlug)}/tokens`;
|
|
60
|
+
const response = await fetchWithTimeout(url, {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers,
|
|
63
|
+
body: JSON.stringify(body),
|
|
64
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
const text = await response.text().catch(() => "");
|
|
67
|
+
throw new Error(`Fleet upsert agent provider token failed (${response.status}): ${text || response.statusText}`);
|
|
68
|
+
}
|
|
69
|
+
return (await response.json());
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Start a Fleet OAuth session for an agent subject (platform OAuth provider).
|
|
73
|
+
* Returns a verification_url the browser should open.
|
|
74
|
+
*/
|
|
75
|
+
export async function createFleetAuthSession(body, options = {}) {
|
|
76
|
+
const env = process.env;
|
|
77
|
+
const base = options.apiUrl ?? resolveFleetApiUrl(env);
|
|
78
|
+
const headers = fleetHeaders("fleet auth-session", options, env);
|
|
79
|
+
const url = `${base}/v1/fleet/auth-sessions`;
|
|
80
|
+
const response = await fetchWithTimeout(url, {
|
|
81
|
+
method: "POST",
|
|
82
|
+
headers,
|
|
83
|
+
body: JSON.stringify({
|
|
84
|
+
provider_slug: body.providerSlug,
|
|
85
|
+
scopes: body.scopes,
|
|
86
|
+
agent_id: body.agentId,
|
|
87
|
+
strategy: body.strategy ?? "create",
|
|
88
|
+
}),
|
|
89
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
const text = await response.text().catch(() => "");
|
|
92
|
+
throw new Error(`Fleet auth-session failed (${response.status}): ${text || response.statusText}`);
|
|
93
|
+
}
|
|
94
|
+
return (await response.json());
|
|
95
|
+
}
|
|
96
|
+
/** True when LANGSMITH_API_KEY is set so Fleet APIs can be called. */
|
|
97
|
+
export function hasFleetAuthCredentials(env = process.env) {
|
|
98
|
+
return Boolean(trimmed(env.LANGSMITH_API_KEY));
|
|
99
|
+
}
|
|
100
|
+
export async function deleteAgentConnection(agentId, connectionId, options = {}) {
|
|
101
|
+
const env = process.env;
|
|
102
|
+
const base = options.apiUrl ?? resolveFleetApiUrl(env);
|
|
103
|
+
const headers = fleetHeaders("fleet delete connection", options, env);
|
|
104
|
+
const url = `${base}/v1/fleet/agents/${encodeURIComponent(agentId)}` +
|
|
105
|
+
`/connections/${encodeURIComponent(connectionId)}`;
|
|
106
|
+
const response = await fetchWithTimeout(url, { method: "DELETE", headers }, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
|
|
107
|
+
if (!response.ok && response.status !== 404) {
|
|
108
|
+
const text = await response.text().catch(() => "");
|
|
109
|
+
throw new Error(`Fleet delete connection failed (${response.status}): ${text || response.statusText}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function withScheme(base) {
|
|
113
|
+
const separator = base.indexOf("://");
|
|
114
|
+
if (separator > 0) {
|
|
115
|
+
const scheme = base.slice(0, separator);
|
|
116
|
+
if (/^[a-z][a-z0-9+.-]*$/i.test(scheme)) {
|
|
117
|
+
return base;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return `https://${base}`;
|
|
121
|
+
}
|
|
122
|
+
function stripTrailingSlashes(value) {
|
|
123
|
+
let end = value.length;
|
|
124
|
+
while (end > 0 && value.charCodeAt(end - 1) === 47 /* / */) {
|
|
125
|
+
end -= 1;
|
|
126
|
+
}
|
|
127
|
+
return end === value.length ? value : value.slice(0, end);
|
|
128
|
+
}
|
|
129
|
+
function trimmed(value) {
|
|
130
|
+
const v = value?.trim();
|
|
131
|
+
return v ? v : undefined;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=fleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/identity/fleet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connect-with-GitHub — {@link IdentityConnectProvider} for actor OAuth tokens.
|
|
3
3
|
*
|
|
4
|
-
* Mounted under `/identity/github/*` when listed on `identity.connect
|
|
4
|
+
* Mounted under `/identity/github/*` when listed on `identity.connect`, or when
|
|
5
|
+
* a user-scoped deployment declares `connectors.github` / a credential chain
|
|
6
|
+
* that reads per-user GitHub tokens.
|
|
5
7
|
*/
|
|
6
8
|
import type { IdentityConnectProvider } from "../connect-provider-types.js";
|
|
7
9
|
import { type GitHubCredentialStore } from "./credentials-store.js";
|
|
@@ -20,12 +22,15 @@ export declare const githubIdentityConnectProvider: IdentityConnectProvider;
|
|
|
20
22
|
/**
|
|
21
23
|
* Opt into Connect-with-GitHub on `defineIdentity({ connect: […] })`.
|
|
22
24
|
*
|
|
25
|
+
* Usually unnecessary: `connectors.github` on a user-scoped deployment mounts
|
|
26
|
+
* these routes by inference.
|
|
27
|
+
*
|
|
23
28
|
* @example
|
|
24
29
|
* ```ts
|
|
25
|
-
* import {
|
|
30
|
+
* import { connect, defineIdentity } from "managed-deepagents";
|
|
26
31
|
*
|
|
27
|
-
* export const identity = defineIdentity
|
|
28
|
-
* connect: [github
|
|
32
|
+
* export const identity = defineIdentity({
|
|
33
|
+
* connect: [connect.github()],
|
|
29
34
|
* });
|
|
30
35
|
* ```
|
|
31
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAchC,eAAO,MAAM,0BAA0B,QAAe,CAAC;AACvD,eAAO,MAAM,yBAAyB,QAAgB,CAAC;AACvD,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAa,CAAC;AAEnD,+DAA+D;AAC/D,MAAM,WAAW,oCAAoC;IACnD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,oEAAoE;AACpE,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,oCAAyC,GACjD,uBAAuB,CAqGzB;AAED,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,EAAE,uBACL,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,oCAAoC,GAC7C,uBAAuB,CAIzB"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connect-with-GitHub — {@link IdentityConnectProvider} for actor OAuth tokens.
|
|
3
3
|
*
|
|
4
|
-
* Mounted under `/identity/github/*` when listed on `identity.connect
|
|
4
|
+
* Mounted under `/identity/github/*` when listed on `identity.connect`, or when
|
|
5
|
+
* a user-scoped deployment declares `connectors.github` / a credential chain
|
|
6
|
+
* that reads per-user GitHub tokens.
|
|
5
7
|
*/
|
|
6
8
|
import { identityConnectPaths } from "../connect-paths.js";
|
|
9
|
+
import { credentialConnectIds, hasGithubConnector, isUserScopedDeployment, } from "../connect-inference.js";
|
|
7
10
|
import { buildGitHubCredentialRecord, getGitHubCredentialStore, } from "./credentials-store.js";
|
|
8
|
-
import { buildGitHubAuthorizeUrl,
|
|
11
|
+
import { buildGitHubAuthorizeUrl, exchangeGitHubOauthCode, githubOauthTickets, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readGitHubOauthConfig, readOauthStateSigningKey, resolveGitHubOauthRedirectBase, } from "./oauth.js";
|
|
9
12
|
const PATHS = identityConnectPaths("github");
|
|
10
13
|
export const GITHUB_CONNECT_STATUS_PATH = PATHS.status;
|
|
11
14
|
export const GITHUB_CONNECT_START_PATH = PATHS.connect;
|
|
@@ -17,12 +20,25 @@ export function createGitHubIdentityConnectProvider(options = {}) {
|
|
|
17
20
|
return {
|
|
18
21
|
id: "github",
|
|
19
22
|
shouldMount(ctx) {
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
if (!ctx.hasIdentity) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
// Listed on `identity.connect` — the author already opted in.
|
|
27
|
+
if (ctx.declared) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
// Otherwise mirror Google/Microsoft: a GitHub connector (or a credential
|
|
31
|
+
// chain that reads user tokens) on a user-scoped deployment needs
|
|
32
|
+
// somewhere for the caller to grant an actor OAuth token.
|
|
33
|
+
if (!isUserScopedDeployment(ctx.scope)) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return (hasGithubConnector(ctx.connectorKinds) ||
|
|
37
|
+
credentialConnectIds(ctx.credentials).has("github"));
|
|
22
38
|
},
|
|
23
|
-
async status(
|
|
39
|
+
async status(userId) {
|
|
24
40
|
const configured = Boolean(readGitHubOauthConfig());
|
|
25
|
-
const record = await store().
|
|
41
|
+
const record = await store().getByUserId(userId);
|
|
26
42
|
return {
|
|
27
43
|
configured,
|
|
28
44
|
linked: Boolean(record),
|
|
@@ -36,7 +52,7 @@ export function createGitHubIdentityConnectProvider(options = {}) {
|
|
|
36
52
|
: {}),
|
|
37
53
|
};
|
|
38
54
|
},
|
|
39
|
-
async startAuthorize(
|
|
55
|
+
async startAuthorize(userId, redirectUri) {
|
|
40
56
|
const oauth = readGitHubOauthConfig();
|
|
41
57
|
const stateKey = readOauthStateSigningKey();
|
|
42
58
|
if (!oauth || !stateKey) {
|
|
@@ -45,7 +61,7 @@ export function createGitHubIdentityConnectProvider(options = {}) {
|
|
|
45
61
|
error: `GitHub connect is not configured (set GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, MDA_PUBLIC_APP_URL, ${OAUTH_STATE_SIGNING_KEY_ENV})`,
|
|
46
62
|
};
|
|
47
63
|
}
|
|
48
|
-
const state = await
|
|
64
|
+
const state = await githubOauthTickets.createState(userId, stateKey);
|
|
49
65
|
return {
|
|
50
66
|
authorizeUrl: buildGitHubAuthorizeUrl(oauth, state, redirectUri),
|
|
51
67
|
};
|
|
@@ -59,10 +75,10 @@ export function createGitHubIdentityConnectProvider(options = {}) {
|
|
|
59
75
|
if (!stateKey) {
|
|
60
76
|
throw new Error(`${OAUTH_STATE_SIGNING_KEY_ENV} is not configured`);
|
|
61
77
|
}
|
|
62
|
-
const {
|
|
78
|
+
const { userId } = await githubOauthTickets.verifyState(state, stateKey);
|
|
63
79
|
const token = await exchangeGitHubOauthCode(oauth, code, redirectUri);
|
|
64
80
|
const record = buildGitHubCredentialRecord({
|
|
65
|
-
|
|
81
|
+
userId,
|
|
66
82
|
githubUserId: token.userId,
|
|
67
83
|
githubLogin: token.login,
|
|
68
84
|
accessToken: token.accessToken,
|
|
@@ -76,8 +92,8 @@ export function createGitHubIdentityConnectProvider(options = {}) {
|
|
|
76
92
|
successRedirect: `${oauth.publicAppUrl}/settings?github=connected`,
|
|
77
93
|
};
|
|
78
94
|
},
|
|
79
|
-
async unlink(
|
|
80
|
-
await store().
|
|
95
|
+
async unlink(userId) {
|
|
96
|
+
await store().removeByUserId(userId);
|
|
81
97
|
},
|
|
82
98
|
resolveRedirectBase(options) {
|
|
83
99
|
return resolveGitHubOauthRedirectBase(options);
|
|
@@ -94,12 +110,15 @@ export const githubIdentityConnectProvider = createGitHubIdentityConnectProvider
|
|
|
94
110
|
/**
|
|
95
111
|
* Opt into Connect-with-GitHub on `defineIdentity({ connect: […] })`.
|
|
96
112
|
*
|
|
113
|
+
* Usually unnecessary: `connectors.github` on a user-scoped deployment mounts
|
|
114
|
+
* these routes by inference.
|
|
115
|
+
*
|
|
97
116
|
* @example
|
|
98
117
|
* ```ts
|
|
99
|
-
* import {
|
|
118
|
+
* import { connect, defineIdentity } from "managed-deepagents";
|
|
100
119
|
*
|
|
101
|
-
* export const identity = defineIdentity
|
|
102
|
-
* connect: [github
|
|
120
|
+
* export const identity = defineIdentity({
|
|
121
|
+
* connect: [connect.github()],
|
|
103
122
|
* });
|
|
104
123
|
* ```
|
|
105
124
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Per-actor GitHub OAuth credential vault.
|
|
3
3
|
*
|
|
4
4
|
* Stored in the LangGraph Store under `["mda_github_credentials"]`. Connect-
|
|
5
|
-
* with-GitHub upserts after OAuth; `github
|
|
5
|
+
* with-GitHub upserts after OAuth; `credentials.github` resolves `actor` tokens
|
|
6
6
|
* from here until managed Agent Auth lands.
|
|
7
7
|
*
|
|
8
8
|
* Tokens are deployment-scoped Store values — treat the Store namespace as
|
|
@@ -23,7 +23,7 @@ export declare const GITHUB_CREDENTIAL_CACHE_TTL_MS = 30000;
|
|
|
23
23
|
/** Soft cap on cached GitHub credential records per process. */
|
|
24
24
|
export declare const GITHUB_CREDENTIAL_CACHE_MAX_ENTRIES = 256;
|
|
25
25
|
export interface GitHubCredentialRecord {
|
|
26
|
-
|
|
26
|
+
userId: string;
|
|
27
27
|
githubUserId: string;
|
|
28
28
|
githubLogin: string;
|
|
29
29
|
accessToken: string;
|
|
@@ -35,24 +35,24 @@ export interface GitHubCredentialRecord {
|
|
|
35
35
|
source: "github_oauth";
|
|
36
36
|
}
|
|
37
37
|
export interface GitHubCredentialStore {
|
|
38
|
-
|
|
38
|
+
getByUserId(userId: string): Promise<GitHubCredentialRecord | null>;
|
|
39
39
|
upsert(record: GitHubCredentialRecord): Promise<void>;
|
|
40
|
-
|
|
40
|
+
removeByUserId(userId: string): Promise<void>;
|
|
41
41
|
}
|
|
42
42
|
/** In-memory store for tests. */
|
|
43
43
|
export declare class InMemoryGitHubCredentialStore implements GitHubCredentialStore {
|
|
44
|
-
private readonly
|
|
45
|
-
|
|
44
|
+
private readonly byUser;
|
|
45
|
+
getByUserId(userId: string): Promise<GitHubCredentialRecord | null>;
|
|
46
46
|
upsert(record: GitHubCredentialRecord): Promise<void>;
|
|
47
|
-
|
|
47
|
+
removeByUserId(userId: string): Promise<void>;
|
|
48
48
|
}
|
|
49
49
|
/** LangGraph Store–backed GitHub credential vault. */
|
|
50
50
|
export declare class LangGraphGitHubCredentialStore implements GitHubCredentialStore {
|
|
51
51
|
private readonly client;
|
|
52
52
|
constructor(client: Client);
|
|
53
|
-
|
|
53
|
+
getByUserId(userId: string): Promise<GitHubCredentialRecord | null>;
|
|
54
54
|
upsert(record: GitHubCredentialRecord): Promise<void>;
|
|
55
|
-
|
|
55
|
+
removeByUserId(userId: string): Promise<void>;
|
|
56
56
|
}
|
|
57
57
|
/** Override the process-default credential store (tests). */
|
|
58
58
|
export declare function setGitHubCredentialStore(store: GitHubCredentialStore | null): void;
|
|
@@ -64,7 +64,7 @@ export declare function createLangGraphGitHubCredentialStore(options?: {
|
|
|
64
64
|
ingressSecret?: string;
|
|
65
65
|
}): LangGraphGitHubCredentialStore | null;
|
|
66
66
|
export declare function buildGitHubCredentialRecord(input: {
|
|
67
|
-
|
|
67
|
+
userId: string;
|
|
68
68
|
githubUserId: string;
|
|
69
69
|
githubLogin: string;
|
|
70
70
|
accessToken: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials-store.d.ts","sourceRoot":"","sources":["../../../src/identity/github/credentials-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAEL,+BAA+B,EAIhC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,+BAA+B,EAAE,CAAC;AAC3C,eAAO,MAAM,4BAA4B,qCAE/B,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B,QAAS,CAAC;AACrD,gEAAgE;AAChE,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,
|
|
1
|
+
{"version":3,"file":"credentials-store.d.ts","sourceRoot":"","sources":["../../../src/identity/github/credentials-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAEL,+BAA+B,EAIhC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,+BAA+B,EAAE,CAAC;AAC3C,eAAO,MAAM,4BAA4B,qCAE/B,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B,QAAS,CAAC;AACrD,gEAAgE;AAChE,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAgBD,iCAAiC;AACjC,qBAAa,6BAA8B,YAAW,qBAAqB;IACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IAE9D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAExE;IAEK,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;IAEK,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElD;CACF;AAED,sDAAsD;AACtD,qBAAa,8BAA+B,YAAW,qBAAqB;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,MAAM,EAAI;IAEzC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA0CxE;IAEK,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1D;IAEK,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlD;CACF;AAID,6DAA6D;AAC7D,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAClC,IAAI,CAGN;AAED,oDAAoD;AACpD,wBAAgB,wBAAwB,IAAI,qBAAqB,CAQhE;AAED,wBAAgB,oCAAoC,CAClD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACzE,8BAA8B,GAAG,IAAI,CAiBvC;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,sBAAsB,CAazB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Per-actor GitHub OAuth credential vault.
|
|
3
3
|
*
|
|
4
4
|
* Stored in the LangGraph Store under `["mda_github_credentials"]`. Connect-
|
|
5
|
-
* with-GitHub upserts after OAuth; `github
|
|
5
|
+
* with-GitHub upserts after OAuth; `credentials.github` resolves `actor` tokens
|
|
6
6
|
* from here until managed Agent Auth lands.
|
|
7
7
|
*
|
|
8
8
|
* Tokens are deployment-scoped Store values — treat the Store namespace as
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { getStore } from "@langchain/langgraph";
|
|
18
18
|
import { Client } from "@langchain/langgraph-sdk";
|
|
19
|
-
import {
|
|
20
|
-
import { resolveLoopbackApiUrl } from "../loopback.js";
|
|
19
|
+
import { USER_HEADER, GITHUB_CREDENTIALS_STORE_PREFIX, IDENTITY_LINKS_SERVICE_USER, INGRESS_SECRET_ENV, INGRESS_SECRET_HEADER, } from "../../runtime/auth.js";
|
|
20
|
+
import { resolveLoopbackApiKey, resolveLoopbackApiUrl } from "../loopback.js";
|
|
21
21
|
export { GITHUB_CREDENTIALS_STORE_PREFIX };
|
|
22
22
|
export const GITHUB_CREDENTIALS_NAMESPACE = [
|
|
23
23
|
GITHUB_CREDENTIALS_STORE_PREFIX,
|
|
@@ -30,15 +30,15 @@ export const GITHUB_CREDENTIAL_CACHE_MAX_ENTRIES = 256;
|
|
|
30
30
|
const processCache = new Map();
|
|
31
31
|
/** In-memory store for tests. */
|
|
32
32
|
export class InMemoryGitHubCredentialStore {
|
|
33
|
-
|
|
34
|
-
async
|
|
35
|
-
return this.
|
|
33
|
+
byUser = new Map();
|
|
34
|
+
async getByUserId(userId) {
|
|
35
|
+
return this.byUser.get(userId) ?? null;
|
|
36
36
|
}
|
|
37
37
|
async upsert(record) {
|
|
38
|
-
this.
|
|
38
|
+
this.byUser.set(record.userId, record);
|
|
39
39
|
}
|
|
40
|
-
async
|
|
41
|
-
this.
|
|
40
|
+
async removeByUserId(userId) {
|
|
41
|
+
this.byUser.delete(userId);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
/** LangGraph Store–backed GitHub credential vault. */
|
|
@@ -47,20 +47,20 @@ export class LangGraphGitHubCredentialStore {
|
|
|
47
47
|
constructor(client) {
|
|
48
48
|
this.client = client;
|
|
49
49
|
}
|
|
50
|
-
async
|
|
51
|
-
const fromGraph = await readFromAmbientStore(
|
|
50
|
+
async getByUserId(userId) {
|
|
51
|
+
const fromGraph = await readFromAmbientStore(userId);
|
|
52
52
|
if (fromGraph) {
|
|
53
|
-
rememberCache(
|
|
53
|
+
rememberCache(userId, fromGraph, { localWrite: false });
|
|
54
54
|
return fromGraph;
|
|
55
55
|
}
|
|
56
56
|
let storeMiss = false;
|
|
57
57
|
let storeUnavailable = false;
|
|
58
58
|
try {
|
|
59
|
-
const item = await this.client.store.getItem([...GITHUB_CREDENTIALS_NAMESPACE],
|
|
59
|
+
const item = await this.client.store.getItem([...GITHUB_CREDENTIALS_NAMESPACE], userKey(userId));
|
|
60
60
|
if (item?.value && typeof item.value === "object") {
|
|
61
61
|
const record = valueToRecord(item.value);
|
|
62
62
|
if (record) {
|
|
63
|
-
rememberCache(
|
|
63
|
+
rememberCache(userId, record, { localWrite: false });
|
|
64
64
|
return record;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -69,7 +69,7 @@ export class LangGraphGitHubCredentialStore {
|
|
|
69
69
|
catch {
|
|
70
70
|
storeUnavailable = true;
|
|
71
71
|
}
|
|
72
|
-
const cached = liveCacheEntry(
|
|
72
|
+
const cached = liveCacheEntry(userId);
|
|
73
73
|
if (cached) {
|
|
74
74
|
if (storeUnavailable) {
|
|
75
75
|
return cached.record;
|
|
@@ -81,19 +81,19 @@ export class LangGraphGitHubCredentialStore {
|
|
|
81
81
|
}
|
|
82
82
|
if (storeMiss) {
|
|
83
83
|
// Authoritative miss — honor unlink/rotate from another worker.
|
|
84
|
-
processCache.delete(
|
|
84
|
+
processCache.delete(userId);
|
|
85
85
|
}
|
|
86
86
|
return null;
|
|
87
87
|
}
|
|
88
88
|
async upsert(record) {
|
|
89
|
-
await this.client.store.putItem([...GITHUB_CREDENTIALS_NAMESPACE],
|
|
90
|
-
rememberCache(record.
|
|
89
|
+
await this.client.store.putItem([...GITHUB_CREDENTIALS_NAMESPACE], userKey(record.userId), recordToValue(record));
|
|
90
|
+
rememberCache(record.userId, record, { localWrite: true });
|
|
91
91
|
await writeToAmbientStore(record);
|
|
92
92
|
}
|
|
93
|
-
async
|
|
94
|
-
processCache.delete(
|
|
95
|
-
await this.client.store.deleteItem([...GITHUB_CREDENTIALS_NAMESPACE],
|
|
96
|
-
await deleteFromAmbientStore(
|
|
93
|
+
async removeByUserId(userId) {
|
|
94
|
+
processCache.delete(userId);
|
|
95
|
+
await this.client.store.deleteItem([...GITHUB_CREDENTIALS_NAMESPACE], userKey(userId));
|
|
96
|
+
await deleteFromAmbientStore(userId);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
let defaultStore = null;
|
|
@@ -118,23 +118,20 @@ export function createLangGraphGitHubCredentialStore(options = {}) {
|
|
|
118
118
|
return null;
|
|
119
119
|
}
|
|
120
120
|
const apiUrl = resolveLoopbackApiUrl(options.apiUrl);
|
|
121
|
-
const apiKey = options.apiKey
|
|
122
|
-
process.env.LANGSMITH_API_KEY ??
|
|
123
|
-
process.env.LANGGRAPH_API_KEY ??
|
|
124
|
-
"local";
|
|
121
|
+
const apiKey = resolveLoopbackApiKey(options.apiKey);
|
|
125
122
|
const client = new Client({
|
|
126
123
|
apiUrl,
|
|
127
124
|
apiKey,
|
|
128
125
|
defaultHeaders: {
|
|
129
126
|
[INGRESS_SECRET_HEADER]: ingressSecret,
|
|
130
|
-
[
|
|
127
|
+
[USER_HEADER]: IDENTITY_LINKS_SERVICE_USER,
|
|
131
128
|
},
|
|
132
129
|
});
|
|
133
130
|
return new LangGraphGitHubCredentialStore(client);
|
|
134
131
|
}
|
|
135
132
|
export function buildGitHubCredentialRecord(input) {
|
|
136
133
|
return {
|
|
137
|
-
|
|
134
|
+
userId: input.userId,
|
|
138
135
|
githubUserId: input.githubUserId,
|
|
139
136
|
githubLogin: input.githubLogin,
|
|
140
137
|
accessToken: input.accessToken,
|
|
@@ -146,25 +143,25 @@ export function buildGitHubCredentialRecord(input) {
|
|
|
146
143
|
source: "github_oauth",
|
|
147
144
|
};
|
|
148
145
|
}
|
|
149
|
-
function
|
|
150
|
-
return `actor:${
|
|
146
|
+
function userKey(userId) {
|
|
147
|
+
return `actor:${userId}`;
|
|
151
148
|
}
|
|
152
149
|
function recordToValue(record) {
|
|
153
150
|
return { ...record };
|
|
154
151
|
}
|
|
155
152
|
function valueToRecord(value) {
|
|
156
|
-
const
|
|
153
|
+
const userId = value.userId;
|
|
157
154
|
const githubUserId = value.githubUserId;
|
|
158
155
|
const githubLogin = value.githubLogin;
|
|
159
156
|
const accessToken = value.accessToken;
|
|
160
|
-
if (typeof
|
|
157
|
+
if (typeof userId !== "string" ||
|
|
161
158
|
typeof githubUserId !== "string" ||
|
|
162
159
|
typeof githubLogin !== "string" ||
|
|
163
160
|
typeof accessToken !== "string") {
|
|
164
161
|
return null;
|
|
165
162
|
}
|
|
166
163
|
return {
|
|
167
|
-
|
|
164
|
+
userId,
|
|
168
165
|
githubUserId,
|
|
169
166
|
githubLogin,
|
|
170
167
|
accessToken,
|
|
@@ -182,21 +179,21 @@ function valueToRecord(value) {
|
|
|
182
179
|
source: "github_oauth",
|
|
183
180
|
};
|
|
184
181
|
}
|
|
185
|
-
function rememberCache(
|
|
186
|
-
processCache.set(
|
|
182
|
+
function rememberCache(userId, record, options) {
|
|
183
|
+
processCache.set(userId, {
|
|
187
184
|
record,
|
|
188
185
|
cachedAtMs: Date.now(),
|
|
189
186
|
localWrite: options.localWrite,
|
|
190
187
|
});
|
|
191
188
|
evictExpiredAndOverflow();
|
|
192
189
|
}
|
|
193
|
-
function liveCacheEntry(
|
|
194
|
-
const entry = processCache.get(
|
|
190
|
+
function liveCacheEntry(userId) {
|
|
191
|
+
const entry = processCache.get(userId);
|
|
195
192
|
if (!entry) {
|
|
196
193
|
return undefined;
|
|
197
194
|
}
|
|
198
195
|
if (Date.now() - entry.cachedAtMs > GITHUB_CREDENTIAL_CACHE_TTL_MS) {
|
|
199
|
-
processCache.delete(
|
|
196
|
+
processCache.delete(userId);
|
|
200
197
|
return undefined;
|
|
201
198
|
}
|
|
202
199
|
return entry;
|
|
@@ -216,12 +213,12 @@ function evictExpiredAndOverflow() {
|
|
|
216
213
|
processCache.delete(oldest);
|
|
217
214
|
}
|
|
218
215
|
}
|
|
219
|
-
async function readFromAmbientStore(
|
|
216
|
+
async function readFromAmbientStore(userId) {
|
|
220
217
|
try {
|
|
221
218
|
const store = getStore();
|
|
222
219
|
if (!store)
|
|
223
220
|
return null;
|
|
224
|
-
const item = await store.get([...GITHUB_CREDENTIALS_NAMESPACE],
|
|
221
|
+
const item = await store.get([...GITHUB_CREDENTIALS_NAMESPACE], userKey(userId));
|
|
225
222
|
if (!item?.value || typeof item.value !== "object") {
|
|
226
223
|
return null;
|
|
227
224
|
}
|
|
@@ -237,18 +234,18 @@ async function writeToAmbientStore(record) {
|
|
|
237
234
|
const store = getStore();
|
|
238
235
|
if (!store)
|
|
239
236
|
return;
|
|
240
|
-
await store.put([...GITHUB_CREDENTIALS_NAMESPACE],
|
|
237
|
+
await store.put([...GITHUB_CREDENTIALS_NAMESPACE], userKey(record.userId), recordToValue(record));
|
|
241
238
|
}
|
|
242
239
|
catch {
|
|
243
240
|
// Best-effort; HTTP put already persisted.
|
|
244
241
|
}
|
|
245
242
|
}
|
|
246
|
-
async function deleteFromAmbientStore(
|
|
243
|
+
async function deleteFromAmbientStore(userId) {
|
|
247
244
|
try {
|
|
248
245
|
const store = getStore();
|
|
249
246
|
if (!store)
|
|
250
247
|
return;
|
|
251
|
-
await store.delete([...GITHUB_CREDENTIALS_NAMESPACE],
|
|
248
|
+
await store.delete([...GITHUB_CREDENTIALS_NAMESPACE], userKey(userId));
|
|
252
249
|
}
|
|
253
250
|
catch {
|
|
254
251
|
// Best-effort.
|