managed-deepagents 0.6.2-dev.8 → 0.7.0

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.
Files changed (99) hide show
  1. package/README.md +34 -16
  2. package/dist/agent-auth.d.ts +167 -0
  3. package/dist/agent-auth.d.ts.map +1 -0
  4. package/dist/agent-auth.js +520 -0
  5. package/dist/agent-auth.js.map +1 -0
  6. package/dist/channels/manifest.d.ts +4 -0
  7. package/dist/channels/manifest.d.ts.map +1 -1
  8. package/dist/channels/response-format.d.ts +1 -1
  9. package/dist/channels/response-format.d.ts.map +1 -1
  10. package/dist/channels/response-format.js +1 -1
  11. package/dist/channels/response-format.js.map +1 -1
  12. package/dist/channels/trigger/http.d.ts +8 -0
  13. package/dist/channels/trigger/http.d.ts.map +1 -1
  14. package/dist/channels/trigger/http.js +56 -6
  15. package/dist/channels/trigger/http.js.map +1 -1
  16. package/dist/channels/trigger/identity-context.d.ts +47 -0
  17. package/dist/channels/trigger/identity-context.d.ts.map +1 -0
  18. package/dist/channels/trigger/identity-context.js +171 -0
  19. package/dist/channels/trigger/identity-context.js.map +1 -0
  20. package/dist/channels/trigger/types.d.ts +10 -0
  21. package/dist/channels/trigger/types.d.ts.map +1 -1
  22. package/dist/channels/trigger/types.js +5 -0
  23. package/dist/channels/trigger/types.js.map +1 -1
  24. package/dist/connection-authorization.d.ts +17 -0
  25. package/dist/connection-authorization.d.ts.map +1 -0
  26. package/dist/connection-authorization.js +46 -0
  27. package/dist/connection-authorization.js.map +1 -0
  28. package/dist/connections.d.ts +98 -0
  29. package/dist/connections.d.ts.map +1 -0
  30. package/dist/connections.js +339 -0
  31. package/dist/connections.js.map +1 -0
  32. package/dist/connectors/mcp/index.d.ts +36 -95
  33. package/dist/connectors/mcp/index.d.ts.map +1 -1
  34. package/dist/connectors/mcp/index.js +266 -57
  35. package/dist/connectors/mcp/index.js.map +1 -1
  36. package/dist/connectors/mcp/schema.d.ts +17 -0
  37. package/dist/connectors/mcp/schema.d.ts.map +1 -0
  38. package/dist/connectors/mcp/schema.js +122 -0
  39. package/dist/connectors/mcp/schema.js.map +1 -0
  40. package/dist/connectors/mcp/types.d.ts +81 -0
  41. package/dist/connectors/mcp/types.d.ts.map +1 -0
  42. package/dist/connectors/mcp/types.js +2 -0
  43. package/dist/connectors/mcp/types.js.map +1 -0
  44. package/dist/connectors/tool-selection.d.ts +10 -19
  45. package/dist/connectors/tool-selection.d.ts.map +1 -1
  46. package/dist/connectors/tool-selection.js +33 -59
  47. package/dist/connectors/tool-selection.js.map +1 -1
  48. package/dist/credential-gate.d.ts +28 -0
  49. package/dist/credential-gate.d.ts.map +1 -0
  50. package/dist/credential-gate.js +179 -0
  51. package/dist/credential-gate.js.map +1 -0
  52. package/dist/extension.d.ts +3 -3
  53. package/dist/extension.js +2 -2
  54. package/dist/identity/index.d.ts +1 -1
  55. package/dist/identity/index.d.ts.map +1 -1
  56. package/dist/identity/index.js.map +1 -1
  57. package/dist/identity/types.d.ts +102 -5
  58. package/dist/identity/types.d.ts.map +1 -1
  59. package/dist/index.d.ts +9 -34
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +3 -6
  62. package/dist/index.js.map +1 -1
  63. package/dist/ingress/index.d.ts +10 -2
  64. package/dist/ingress/index.d.ts.map +1 -1
  65. package/dist/ingress/index.js +18 -9
  66. package/dist/ingress/index.js.map +1 -1
  67. package/dist/namespaces.d.ts +12 -29
  68. package/dist/namespaces.d.ts.map +1 -1
  69. package/dist/namespaces.js +26 -9
  70. package/dist/namespaces.js.map +1 -1
  71. package/dist/runtime/auth.d.ts +76 -5
  72. package/dist/runtime/auth.d.ts.map +1 -1
  73. package/dist/runtime/auth.js +114 -6
  74. package/dist/runtime/auth.js.map +1 -1
  75. package/dist/runtime/http.d.ts +1 -1
  76. package/dist/runtime/http.d.ts.map +1 -1
  77. package/dist/runtime/http.js.map +1 -1
  78. package/dist/runtime/identity-runtime.d.ts +65 -5
  79. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  80. package/dist/runtime/identity-runtime.js +164 -0
  81. package/dist/runtime/identity-runtime.js.map +1 -1
  82. package/dist/runtime/index.d.ts.map +1 -1
  83. package/dist/runtime/index.js +13 -8
  84. package/dist/runtime/index.js.map +1 -1
  85. package/dist/runtime/managed-middleware.d.ts +2 -2
  86. package/dist/runtime/managed-middleware.js +6 -6
  87. package/dist/runtime/managed-tools.d.ts +19 -15
  88. package/dist/runtime/managed-tools.d.ts.map +1 -1
  89. package/dist/runtime/managed-tools.js +14 -13
  90. package/dist/runtime/managed-tools.js.map +1 -1
  91. package/dist/runtime/types.d.ts +2 -2
  92. package/dist/runtime/validated-token.d.ts.map +1 -1
  93. package/dist/runtime/validated-token.js +23 -0
  94. package/dist/runtime/validated-token.js.map +1 -1
  95. package/package.json +8 -8
  96. package/dist/connectors/mcp/load.d.ts +0 -12
  97. package/dist/connectors/mcp/load.d.ts.map +0 -1
  98. package/dist/connectors/mcp/load.js +0 -122
  99. package/dist/connectors/mcp/load.js.map +0 -1
package/README.md CHANGED
@@ -75,12 +75,6 @@ the model, `--memory agent` opts into deployment-shared durable memory,
75
75
  `--channels`) writes `channels/slack.ts`. Every new project includes an
76
76
  `identity.ts` that explicitly selects `auth.langsmithApiKey()` authentication.
77
77
 
78
- `mda init my-agent --gateway` runs the agent on
79
- [LangSmith Gateway](https://docs.langchain.com/langsmith/gateway) — a model
80
- LangSmith hosts, billed to your workspace's Gateway Credits, authenticated with
81
- a LangSmith API key instead of a model provider key of your own. It is mutually
82
- exclusive with `--model`, which names a provider you hold the key for.
83
-
84
78
  ## Evaluate
85
79
 
86
80
  Managed Deep Agent evals run in Harbor. Install `uv` and Docker before running
@@ -163,11 +157,11 @@ my-agent/
163
157
  package.json
164
158
  .env # local deploy secrets, never committed
165
159
  schedules/ # optional managed cron schedules
166
- tools/ # optional custom tools
160
+ tools/ # optional custom tools and MCP declaration
161
+ mcp.ts # optional MCP server declaration
167
162
  middleware/ # optional middleware
168
163
  skills/ # optional skills synced to Context Hub
169
164
  sandbox/ # LangSmith sandbox (`mda init` includes this; delete to opt out)
170
- connectors/mcp.ts # optional MCP server declaration
171
165
  ```
172
166
 
173
167
  The CLI copies your project files into the managed build and generates the entry
@@ -241,27 +235,51 @@ export const sandbox = defineSandbox({
241
235
  Put `GHCR_TOKEN` in the project `.env` or process environment. Its value is
242
236
  used only to reconcile the registry and never enters the build or snapshot.
243
237
 
244
- ## MCP Connectors
238
+ ## MCP Servers
239
+
240
+ Add `tools/mcp.ts` to attach MCP servers. The file must export a named `mcp`.
241
+ By default, MDA exposes every tool loaded from each declared
242
+ server. In `mda dev`, an agent-owned connection reads from
243
+ `MDA_DEV_<SLUG>` with the slug uppercased and hyphens changed to underscores.
244
+ Hosted deployments resolve workspace connections from Agent Auth:
245
245
 
246
- Add `connectors/mcp.ts` to attach MCP servers. The file must export a named
247
- `connector`. By default, MDA exposes every tool loaded from each declared
248
- server. Supply your own auth via static `headers` when the server requires
249
- credentials:
246
+ The old `connectors/mcp.ts` file API remains available with a warning during
247
+ `0.7.x`. It will be removed in `0.8.0`.
250
248
 
251
249
  ```ts
252
- import { connectors } from "managed-deepagents";
250
+ import { defineMcp, connections } from "managed-deepagents";
253
251
 
254
- export const connector = connectors.mcp({
255
- mcpServers: {
252
+ export const mcp = defineMcp({
253
+ servers: {
256
254
  langchainDocs: {
257
255
  transport: "http",
258
256
  url: "https://docs.langchain.com/mcp",
259
257
  includeTools: ["search", "fetch"],
258
+ connection: connections.get("docs-token", { type: "agent" }),
260
259
  },
261
260
  },
262
261
  });
263
262
  ```
264
263
 
264
+ For this example, set `MDA_DEV_DOCS_TOKEN`.
265
+
266
+ A user-owned connection — `connections.get(slug, { type: "user" })` — resolves
267
+ per caller via OAuth. Any runtime access interrupts the run when a grant is
268
+ missing, including access from a custom tool or middleware. Connector
269
+ declarations use the same behavior in a pre-run gate, so all known grants can be
270
+ requested before the first model call. This path works in `mda deploy` and
271
+ `mda dev` when `LANGSMITH_API_KEY` and `LANGSMITH_WORKSPACE_ID` are set and
272
+ the workspace connection rows exist. Use a person principal (for example, a
273
+ Supabase JWT), not Studio’s synthetic service user. OAuth completes on
274
+ LangSmith’s platform callback URL. The local UI must show
275
+ `credential_authorization_required` and resume after the user connects.
276
+
277
+ Deploy the project first, then provision its connections with
278
+ `mda connections create`. Agent-owned opaque secrets are scoped to that
279
+ deployment, so the command refuses to create one before `mda deploy`.
280
+ `mda deploy` fails when a slug a project declares is missing from the
281
+ workspace.
282
+
265
283
  Use `includeTools` or `excludeTools` inside a server config to select a subset.
266
284
  Tool names are raw MCP tool names before the managed `{server}__` prefix is
267
285
  applied, so `includeTools: ["search"]` on server `langchainDocs` exposes
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Agent Auth client used by `credentials.get` and the pre-run credential gate.
3
+ *
4
+ * Talks to the shipped Agent Auth APIs (credentials + oauth-authorization-sessions),
5
+ * not the aspirational `credentials/mint` endpoint.
6
+ */
7
+ export declare const AGENT_AUTH_TIMEOUT_MS = 10000;
8
+ export declare const AGENT_AUTH_PROVIDER_PAGE_SIZE = 100;
9
+ export declare const AGENT_AUTH_MAX_PROVIDER_PAGES = 20;
10
+ export interface AgentAuthHttpConfig {
11
+ apiKey?: string;
12
+ workspaceId?: string;
13
+ }
14
+ /** Query string for listing credentials filtered by owner and kind. */
15
+ export declare function agentAuthCredentialQuery(options: {
16
+ ownerType: string;
17
+ ownerId: string;
18
+ kind: string;
19
+ pageSize?: number;
20
+ cursor?: string;
21
+ }): string;
22
+ export declare function agentAuthHeaders(config: AgentAuthHttpConfig): Record<string, string>;
23
+ /** One Agent Auth HTTP call: no redirects, bounded timeout, JSON body. */
24
+ export declare function requestAgentAuthJson(options: {
25
+ url: string;
26
+ init?: Omit<RequestInit, "headers" | "signal">;
27
+ config: AgentAuthHttpConfig;
28
+ timeoutMs: number;
29
+ fetchImpl: typeof fetch;
30
+ }): Promise<{
31
+ ok: boolean;
32
+ status: number;
33
+ body: Record<string, unknown>;
34
+ }>;
35
+ export interface AgentAuthContext {
36
+ baseUrl: string;
37
+ /**
38
+ * Deployment id when present. Required for agent-owned credential lookups;
39
+ * optional for user-owned OAuth (grants are principal-scoped).
40
+ */
41
+ agentId?: string;
42
+ /** Authenticated caller, used as `owner_id` for user credentials. */
43
+ principalId: string;
44
+ apiKey?: string;
45
+ workspaceId?: string;
46
+ }
47
+ export interface ResolvePrincipalIdentity {
48
+ provider: string;
49
+ issuer: string;
50
+ subject: string;
51
+ }
52
+ /** Drop cached principal resolutions. Test-only. */
53
+ export declare function clearPrincipalResolveCacheForTests(): void;
54
+ /** One credential slug the caller has not granted, with its connect URL. */
55
+ export interface PendingAuthorization {
56
+ slug: string;
57
+ connectUrl: string;
58
+ authId: string;
59
+ }
60
+ export declare class CredentialAuthorizationRequiredError extends Error {
61
+ readonly slugs: readonly string[];
62
+ readonly name = "CredentialAuthorizationRequiredError";
63
+ constructor(slugs: readonly string[]);
64
+ }
65
+ export declare class AgentAuthUnknownProviderError extends Error {
66
+ readonly slug: string;
67
+ readonly name = "AgentAuthUnknownProviderError";
68
+ constructor(slug: string);
69
+ }
70
+ export declare const AGENT_AUTH_PROBLEM_HINT_MAX_CHARS = 200;
71
+ /**
72
+ * The problem+json fields Agent Auth reserves for the caller: `detail` names
73
+ * the failure and `remedy` names the fix. Nothing else from a response body is
74
+ * read, because the rest can quote secret material.
75
+ *
76
+ * Both are collapsed to one line and truncated so a long or multi-line body
77
+ * cannot reshape an error message.
78
+ */
79
+ export declare function agentAuthProblemHint(body: Record<string, unknown> | undefined): string | undefined;
80
+ /**
81
+ * Agent Auth could not answer. Callers pass a fixed message; the only part of
82
+ * a response body that reaches it is the allow-listed problem+json hint, since
83
+ * an arbitrary body can quote secret material.
84
+ */
85
+ export declare class CredentialStoreError extends Error {
86
+ readonly status?: number | undefined;
87
+ readonly name: string;
88
+ constructor(message: string, status?: number | undefined, problem?: Record<string, unknown>);
89
+ }
90
+ /** The error for a declared slug that has no workspace connection row. */
91
+ export declare function missingWorkspaceConnectionError(slug: string): CredentialStoreError;
92
+ /**
93
+ * Read the slug back out of a missing-connection message.
94
+ *
95
+ * A run that fails in the gate reaches a channel as a plain string, so this is
96
+ * the only way back to the slug. It must move with the message it parses.
97
+ */
98
+ export declare function missingWorkspaceConnectionSlug(text: string): string | undefined;
99
+ export interface WorkspaceConnection {
100
+ connectionId: string;
101
+ kind: string;
102
+ ownerPolicy: string;
103
+ }
104
+ /**
105
+ * Bound Agent Auth HTTP client. One instance per caller/run; headers, origin,
106
+ * and the request timeout stay on the instance rather than each call site.
107
+ */
108
+ export declare class AgentAuth {
109
+ #private;
110
+ readonly context: AgentAuthContext;
111
+ constructor(context: AgentAuthContext, fetchImpl?: typeof fetch, timeoutMs?: number);
112
+ /**
113
+ * Resolve a verified external identity to an Agent Auth principal UUID.
114
+ *
115
+ * `POST /v1/agent-auth/principals` with `{ provider, issuer, subject }`.
116
+ * Results are cached per process for the same origin, workspace, and triple.
117
+ */
118
+ resolvePrincipal(identity: ResolvePrincipalIdentity): Promise<string>;
119
+ /** List workspace connections and return the row for `slug`, if any. */
120
+ findWorkspaceConnection(slug: string): Promise<WorkspaceConnection | undefined>;
121
+ /** Workspace credential id for an agent-owned opaque secret grant. */
122
+ findWorkspaceCredentialId(slug: string): Promise<string | undefined>;
123
+ /**
124
+ * Resolve the credential id for a secret connection row.
125
+ *
126
+ * Agent-owned connection declarations scope the credential to this
127
+ * deployment. Workspace-owned credentials are deliberately not visible to
128
+ * deployments.
129
+ */
130
+ findSecretCredentialId(connection: WorkspaceConnection, slug: string): Promise<string | undefined>;
131
+ /** Read a caller-owned opaque secret grant for a workspace connection slug. */
132
+ readUserSecret(slug: string): Promise<string | undefined>;
133
+ /** Read a caller-owned opaque secret when the connection row is already loaded. */
134
+ readUserSecretForConnection(connection: WorkspaceConnection): Promise<string | undefined>;
135
+ /** Read this deployment's OAuth grant for a workspace connection. */
136
+ readAgentAccessTokenForConnection(connection: WorkspaceConnection): Promise<string | undefined>;
137
+ /**
138
+ * Read the caller's OAuth access token for a slug without starting a session.
139
+ *
140
+ * Reads never mint, so a caller can be probed repeatedly — on every replay of
141
+ * an interrupted node, for instance — without leaving authorization sessions
142
+ * behind.
143
+ *
144
+ * @returns The access token, or `undefined` when the caller must connect.
145
+ */
146
+ readUserAccessToken(slug: string): Promise<string | undefined>;
147
+ /** Read a caller OAuth token when the connection row is already loaded. */
148
+ readUserAccessTokenForConnection(connection: WorkspaceConnection): Promise<string | undefined>;
149
+ /**
150
+ * Start an OAuth authorization session for a slug the caller has not granted.
151
+ *
152
+ * @returns The pending session, including the user-facing connect URL.
153
+ */
154
+ startAuthorizationSession(slug: string): Promise<PendingAuthorization>;
155
+ /** oauth-providers has no slug filter, so the match is made across pages. */
156
+ resolveOAuthProviderId(slug: string): Promise<string>;
157
+ /** The credential key is `credential_id`, never `id`. */
158
+ findCredentialId(options: {
159
+ ownerType: string;
160
+ ownerId: string;
161
+ kind: string;
162
+ slug: string;
163
+ }): Promise<string | undefined>;
164
+ /** @returns The secret, or `undefined` when Agent Auth has no value (404). */
165
+ readSecret(credentialId: string): Promise<string | undefined>;
166
+ }
167
+ //# sourceMappingURL=agent-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-auth.d.ts","sourceRoot":"","sources":["../src/agent-auth.ts"],"names":[],"mappings":"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"}