managed-deepagents 0.1.0 → 0.3.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 (75) hide show
  1. package/dist/connectors/langsmith.d.ts +385 -0
  2. package/dist/connectors/langsmith.d.ts.map +1 -0
  3. package/dist/connectors/langsmith.js +431 -0
  4. package/dist/connectors/langsmith.js.map +1 -0
  5. package/dist/connectors.d.ts +7 -2
  6. package/dist/connectors.d.ts.map +1 -1
  7. package/dist/connectors.js +18 -1
  8. package/dist/connectors.js.map +1 -1
  9. package/dist/identity/index.d.ts +88 -0
  10. package/dist/identity/index.d.ts.map +1 -0
  11. package/dist/identity/index.js +303 -0
  12. package/dist/identity/index.js.map +1 -0
  13. package/dist/identity/supabase.d.ts +48 -0
  14. package/dist/identity/supabase.d.ts.map +1 -0
  15. package/dist/identity/supabase.js +139 -0
  16. package/dist/identity/supabase.js.map +1 -0
  17. package/dist/identity/types.d.ts +185 -0
  18. package/dist/identity/types.d.ts.map +1 -0
  19. package/dist/identity/types.js +8 -0
  20. package/dist/identity/types.js.map +1 -0
  21. package/dist/index.d.ts +5 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/runtime/auth.d.ts +56 -0
  26. package/dist/runtime/auth.d.ts.map +1 -0
  27. package/dist/runtime/auth.js +204 -0
  28. package/dist/runtime/auth.js.map +1 -0
  29. package/dist/runtime/connector.d.ts +138 -0
  30. package/dist/runtime/connector.d.ts.map +1 -0
  31. package/dist/runtime/connector.js +82 -0
  32. package/dist/runtime/connector.js.map +1 -0
  33. package/dist/runtime/credentials.d.ts +68 -0
  34. package/dist/runtime/credentials.d.ts.map +1 -0
  35. package/dist/runtime/credentials.js +212 -0
  36. package/dist/runtime/credentials.js.map +1 -0
  37. package/dist/runtime/identity-http.d.ts +27 -0
  38. package/dist/runtime/identity-http.d.ts.map +1 -0
  39. package/dist/runtime/identity-http.js +159 -0
  40. package/dist/runtime/identity-http.js.map +1 -0
  41. package/dist/runtime/identity-runtime.d.ts +54 -0
  42. package/dist/runtime/identity-runtime.d.ts.map +1 -0
  43. package/dist/runtime/identity-runtime.js +151 -0
  44. package/dist/runtime/identity-runtime.js.map +1 -0
  45. package/dist/runtime/index.d.ts +14 -1
  46. package/dist/runtime/index.d.ts.map +1 -1
  47. package/dist/runtime/index.js +114 -68
  48. package/dist/runtime/index.js.map +1 -1
  49. package/dist/runtime/langsmith-connector.d.ts +247 -0
  50. package/dist/runtime/langsmith-connector.d.ts.map +1 -0
  51. package/dist/runtime/langsmith-connector.js +1175 -0
  52. package/dist/runtime/langsmith-connector.js.map +1 -0
  53. package/dist/runtime/managed-middleware.d.ts +25 -0
  54. package/dist/runtime/managed-middleware.d.ts.map +1 -0
  55. package/dist/runtime/managed-middleware.js +76 -0
  56. package/dist/runtime/managed-middleware.js.map +1 -0
  57. package/dist/runtime/managed-tools.d.ts +61 -0
  58. package/dist/runtime/managed-tools.d.ts.map +1 -0
  59. package/dist/runtime/managed-tools.js +102 -0
  60. package/dist/runtime/managed-tools.js.map +1 -0
  61. package/dist/runtime/sandbox-manager.d.ts +3 -2
  62. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  63. package/dist/runtime/sandbox-manager.js.map +1 -1
  64. package/dist/runtime/setup-script.d.ts +4 -7
  65. package/dist/runtime/setup-script.d.ts.map +1 -1
  66. package/dist/runtime/setup-script.js.map +1 -1
  67. package/dist/runtime/types.d.ts +23 -21
  68. package/dist/runtime/types.d.ts.map +1 -1
  69. package/dist/runtime/validated-token.d.ts +53 -0
  70. package/dist/runtime/validated-token.d.ts.map +1 -0
  71. package/dist/runtime/validated-token.js +411 -0
  72. package/dist/runtime/validated-token.js.map +1 -0
  73. package/dist/types.d.ts +15 -0
  74. package/dist/types.d.ts.map +1 -1
  75. package/package.json +12 -8
@@ -0,0 +1,411 @@
1
+ import { HTTPException } from "@langchain/langgraph-sdk/auth";
2
+ import { createRemoteJWKSet, decodeJwt, jwtVerify, SignJWT, } from "jose";
3
+ /** Issuer stamped on MDA-minted guest tokens, used to route them at selection. */
4
+ const GUEST_ISSUER = "mda:guest";
5
+ /** Deployment env var carrying the HS256 key MDA signs/verifies guest tokens with. */
6
+ const GUEST_KEY_ENV = "MDA_GUEST_SIGNING_KEY";
7
+ /** Remote JWKS key sets, cached per resolved JWKS URI for the process lifetime. */
8
+ const jwksCache = new Map();
9
+ /** OIDC `discover` results (issuer or discovery base → jwks_uri). */
10
+ const discoverCache = new Map();
11
+ /** OIDC discovery base → issuer. */
12
+ const oidcIssuerCache = new Map();
13
+ /**
14
+ * Resolve the caller identity for the `validated_token` ingress mode: pick
15
+ * the provider by token issuer, verify the token (JWKS / introspection / guest),
16
+ * then map its claims into the identity envelope. Fail-closed (401) throughout.
17
+ *
18
+ * OIDC discovery runs only for the selected provider, or for issuer matching
19
+ * when no provider is identifiable from already-known config. A discovery
20
+ * outage on an unrelated provider does not block authentication.
21
+ */
22
+ export async function resolveValidatedTokenUser(cfg, ingress, request) {
23
+ const token = bearerToken(request);
24
+ const provider = await resolveProvider(ingress.providers, token);
25
+ const claims = await verifyProviderClaims(provider, token, request.headers);
26
+ const user = claimsToUser(provider, claims);
27
+ if (cfg.tenancy === "multi" && !user.mda_tenant_id) {
28
+ throw new HTTPException(401, {
29
+ message: "missing tenant for multi-tenant deployment",
30
+ });
31
+ }
32
+ return user;
33
+ }
34
+ /**
35
+ * Select the provider for `token`, materializing OIDC discovery only when
36
+ * needed. Prefer providers whose issuer/guest type is already known so a
37
+ * custom-domain discovery outage cannot block unrelated auth (e.g. guest).
38
+ *
39
+ * @param providers - Declared validated-token providers.
40
+ * @param token - Bearer token from the request.
41
+ * @returns The selected provider, with discovery applied when required.
42
+ */
43
+ export async function resolveProvider(providers, token) {
44
+ const known = trySelectKnownProvider(providers, token);
45
+ if (known) {
46
+ return materializeProvider(known);
47
+ }
48
+ const prepared = await Promise.all(providers.map(async (provider) => {
49
+ try {
50
+ return await materializeProvider(provider);
51
+ }
52
+ catch {
53
+ // Keep the undeclared provider so other entries can still match.
54
+ return provider;
55
+ }
56
+ }));
57
+ return selectProvider(prepared, token);
58
+ }
59
+ /**
60
+ * Resolve `discoveryUrl` providers to concrete `issuer` + `jwks`.
61
+ * Fail-fast: any discovery error rejects the whole list (for explicit
62
+ * materialization). Prefer {@link resolveProvider} at request time.
63
+ */
64
+ export async function materializeProviders(providers) {
65
+ return Promise.all(providers.map((provider) => materializeProvider(provider)));
66
+ }
67
+ async function materializeProvider(provider) {
68
+ const discoveryUrl = provider.discoveryUrl;
69
+ if (!discoveryUrl) {
70
+ return provider;
71
+ }
72
+ if (provider.issuer && (provider.jwks || provider.introspect)) {
73
+ return provider;
74
+ }
75
+ const discovered = await discoverOidc(discoveryUrl);
76
+ return {
77
+ ...provider,
78
+ issuer: discovered.issuer,
79
+ ...(provider.jwks || provider.introspect ? {} : { jwks: discovered.jwks }),
80
+ };
81
+ }
82
+ async function discoverOidc(authBase) {
83
+ const base = authBase.replace(/\/$/, "");
84
+ const cachedIssuer = oidcIssuerCache.get(base);
85
+ const cachedJwks = discoverCache.get(base);
86
+ if (cachedIssuer && cachedJwks) {
87
+ return { issuer: cachedIssuer, jwks: cachedJwks };
88
+ }
89
+ const response = await fetch(`${base}/.well-known/openid-configuration`);
90
+ if (!response.ok) {
91
+ throw new HTTPException(401, {
92
+ message: "failed to resolve OIDC configuration",
93
+ });
94
+ }
95
+ const config = (await response.json());
96
+ if (!config.issuer) {
97
+ throw new HTTPException(401, {
98
+ message: "OIDC configuration has no issuer",
99
+ });
100
+ }
101
+ if (!config.jwks_uri) {
102
+ throw new HTTPException(401, {
103
+ message: "OIDC configuration has no jwks_uri",
104
+ });
105
+ }
106
+ oidcIssuerCache.set(base, config.issuer);
107
+ discoverCache.set(base, config.jwks_uri);
108
+ discoverCache.set(config.issuer, config.jwks_uri);
109
+ return { issuer: config.issuer, jwks: config.jwks_uri };
110
+ }
111
+ /** Extract the bearer token from the `Authorization` header, or 401. */
112
+ export function bearerToken(request) {
113
+ const header = request.headers.get("authorization") ?? "";
114
+ const match = /^Bearer\s+(.+)$/i.exec(header);
115
+ const token = match?.[1];
116
+ if (!token) {
117
+ throw new HTTPException(401, { message: "missing bearer token" });
118
+ }
119
+ return token.trim();
120
+ }
121
+ function providerAcceptsIssuer(provider, issuer) {
122
+ if (provider.issuer === issuer) {
123
+ return true;
124
+ }
125
+ return Boolean(provider.issuers?.includes(issuer));
126
+ }
127
+ function configuredIssuers(providers) {
128
+ const configured = [];
129
+ const seen = new Set();
130
+ for (const provider of providers) {
131
+ for (const value of [provider.issuer, ...(provider.issuers ?? [])]) {
132
+ if (value && !seen.has(value)) {
133
+ seen.add(value);
134
+ configured.push(value);
135
+ }
136
+ }
137
+ }
138
+ return configured;
139
+ }
140
+ /**
141
+ * Select a provider using only already-known issuer/guest/introspect config.
142
+ * Returns `undefined` when selection needs OIDC discovery (e.g. custom-domain
143
+ * Supabase whose JWT `iss` is not yet on the provider).
144
+ *
145
+ * @param providers - Declared validated-token providers.
146
+ * @param token - Bearer token from the request.
147
+ * @returns A matching provider, or `undefined` when discovery is required.
148
+ */
149
+ function trySelectKnownProvider(providers, token) {
150
+ const [only] = providers;
151
+ if (only && providers.length === 1) {
152
+ return only;
153
+ }
154
+ let issuer;
155
+ try {
156
+ issuer = decodeJwt(token).iss;
157
+ }
158
+ catch {
159
+ const introspectProviders = providers.filter((p) => p.introspect);
160
+ return introspectProviders.length === 1
161
+ ? introspectProviders[0]
162
+ : undefined;
163
+ }
164
+ const match = providers.find((p) => issuer !== undefined && providerAcceptsIssuer(p, issuer));
165
+ if (match) {
166
+ return match;
167
+ }
168
+ if (issuer === GUEST_ISSUER) {
169
+ return providers.find((p) => p.guest);
170
+ }
171
+ return undefined;
172
+ }
173
+ /**
174
+ * Select the provider that should verify `token`. A single-provider deployment
175
+ * always uses its one entry. Otherwise: JWT tokens route by `iss` (guest tokens
176
+ * carry MDA's own issuer); opaque tokens route to the sole `introspect`
177
+ * provider. Fail-closed when selection is ambiguous (401).
178
+ *
179
+ * Callers that may need OIDC discovery should use {@link resolveProvider}.
180
+ */
181
+ export function selectProvider(providers, token) {
182
+ const known = trySelectKnownProvider(providers, token);
183
+ if (known) {
184
+ return known;
185
+ }
186
+ let issuer;
187
+ try {
188
+ issuer = decodeJwt(token).iss;
189
+ }
190
+ catch {
191
+ const introspectProviders = providers.filter((p) => p.introspect);
192
+ throw new HTTPException(401, {
193
+ message: introspectProviders.length === 0
194
+ ? "malformed token"
195
+ : "opaque token requires exactly one introspection provider",
196
+ });
197
+ }
198
+ throw new HTTPException(401, {
199
+ message: `no provider matches token issuer ${JSON.stringify(issuer)}; configured=${JSON.stringify(configuredIssuers(providers))}`,
200
+ });
201
+ }
202
+ /** Map verified token claims into the managed user envelope, per `provider.claims`. */
203
+ export function claimsToUser(provider, claims) {
204
+ const actor = claims[provider.claims.actor];
205
+ if (actor == null || actor === "") {
206
+ throw new HTTPException(401, {
207
+ message: `token missing actor claim "${provider.claims.actor}"`,
208
+ });
209
+ }
210
+ const user = {
211
+ identity: String(actor),
212
+ permissions: [],
213
+ mda_actor_id: String(actor),
214
+ mda_claims: { ...claims },
215
+ };
216
+ const tenant = provider.claims.tenant
217
+ ? claims[provider.claims.tenant]
218
+ : undefined;
219
+ if (tenant != null && tenant !== "") {
220
+ user.mda_tenant_id = String(tenant);
221
+ }
222
+ const email = provider.claims.email
223
+ ? claims[provider.claims.email]
224
+ : undefined;
225
+ if (email) {
226
+ user.mda_actor_email = String(email);
227
+ }
228
+ return user;
229
+ }
230
+ async function verifyProviderClaims(provider, token, headers) {
231
+ if (provider.introspect) {
232
+ return introspectClaims(provider, token, headers);
233
+ }
234
+ if (provider.guest) {
235
+ return verifyGuestToken(token);
236
+ }
237
+ return jwksVerifyClaims(provider, token);
238
+ }
239
+ async function jwksVerifyClaims(provider, token) {
240
+ const keySet = await providerKeySet(provider);
241
+ try {
242
+ const { payload } = await jwtVerify(token, keySet, {
243
+ issuer: provider.issuer,
244
+ audience: provider.audience,
245
+ algorithms: provider.algorithms ?? ["RS256"],
246
+ });
247
+ return payload;
248
+ }
249
+ catch (error) {
250
+ const detail = error instanceof Error ? error.message : String(error);
251
+ if (/no applicable key|JWKS|key set|kid/i.test(detail)) {
252
+ throw new HTTPException(401, {
253
+ message: "token JWKS verification failed (empty key set or unknown kid); " +
254
+ "legacy HS256 Supabase projects need providers.supabase(..., introspect: true)",
255
+ });
256
+ }
257
+ throw new HTTPException(401, {
258
+ message: "token signature verification failed",
259
+ });
260
+ }
261
+ }
262
+ async function providerKeySet(provider) {
263
+ const uri = await resolveJwksUri(provider);
264
+ let keySet = jwksCache.get(uri);
265
+ if (!keySet) {
266
+ keySet = createRemoteJWKSet(new URL(uri));
267
+ jwksCache.set(uri, keySet);
268
+ }
269
+ return keySet;
270
+ }
271
+ async function resolveJwksUri(provider) {
272
+ if (provider.jwks) {
273
+ return provider.jwks;
274
+ }
275
+ if (provider.discover && provider.issuer) {
276
+ const cached = discoverCache.get(provider.issuer);
277
+ if (cached) {
278
+ return cached;
279
+ }
280
+ const base = provider.issuer.replace(/\/$/, "");
281
+ const response = await fetch(`${base}/.well-known/openid-configuration`);
282
+ if (!response.ok) {
283
+ throw new HTTPException(401, {
284
+ message: "failed to resolve OIDC configuration",
285
+ });
286
+ }
287
+ const config = (await response.json());
288
+ if (!config.jwks_uri) {
289
+ throw new HTTPException(401, {
290
+ message: "OIDC configuration has no jwks_uri",
291
+ });
292
+ }
293
+ discoverCache.set(provider.issuer, config.jwks_uri);
294
+ return config.jwks_uri;
295
+ }
296
+ throw new HTTPException(500, {
297
+ message: "validated_token provider declares neither jwks nor discover",
298
+ });
299
+ }
300
+ async function introspectClaims(provider, token, headers) {
301
+ const introspect = provider.introspect;
302
+ const target = resolveIntrospection(provider, headers);
303
+ const requestHeaders = {};
304
+ // Base headers first, then the selected region's headers so a region can
305
+ // override the shared default (e.g. a per-region Supabase `apikey`).
306
+ for (const [key, value] of Object.entries(introspect.headers ?? {})) {
307
+ requestHeaders[key] = expandEnv(value);
308
+ }
309
+ for (const [key, value] of Object.entries(target.headers ?? {})) {
310
+ requestHeaders[key] = expandEnv(value);
311
+ }
312
+ if ((introspect.tokenIn ?? "authorization") === "authorization") {
313
+ requestHeaders.authorization = `Bearer ${token}`;
314
+ }
315
+ else {
316
+ requestHeaders[introspect.header ?? "authorization"] = token;
317
+ }
318
+ // Expand `${ENV}` in the endpoint so region URLs can stay deployment-driven
319
+ // (e.g. `${SUPABASE_EU_URL}/auth/v1/user`) rather than baked in at authoring.
320
+ const response = await fetch(expandEnv(target.url), {
321
+ headers: requestHeaders,
322
+ });
323
+ if (!response.ok) {
324
+ throw new HTTPException(401, { message: "token introspection failed" });
325
+ }
326
+ return (await response.json());
327
+ }
328
+ /**
329
+ * Resolve the introspection endpoint (and any region-specific headers) for the
330
+ * request. A single-endpoint provider uses `introspect.url`; a multi-region
331
+ * provider selects by the `regionHeader` value, where each region maps either to
332
+ * a bare URL (shared headers) or a `{ url, headers }` object carrying its own
333
+ * credential (e.g. a per-region Supabase `apikey`). Fail-closed (401/500).
334
+ */
335
+ function resolveIntrospection(provider, headers) {
336
+ const introspect = provider.introspect;
337
+ if (introspect.url) {
338
+ return { url: introspect.url };
339
+ }
340
+ if (introspect.regionHeader && introspect.regions) {
341
+ const region = headers.get(introspect.regionHeader);
342
+ const entry = region ? introspect.regions[region] : undefined;
343
+ if (!entry) {
344
+ throw new HTTPException(401, {
345
+ message: "unknown or missing region for introspection",
346
+ });
347
+ }
348
+ return typeof entry === "string" ? { url: entry } : entry;
349
+ }
350
+ throw new HTTPException(500, {
351
+ message: "introspection provider declares neither url nor regions",
352
+ });
353
+ }
354
+ /** Verify an MDA-minted guest token (HS256, signed with the deployment key). */
355
+ async function verifyGuestToken(token) {
356
+ try {
357
+ const { payload } = await jwtVerify(token, guestSigningKey(), {
358
+ issuer: GUEST_ISSUER,
359
+ algorithms: ["HS256"],
360
+ });
361
+ return payload;
362
+ }
363
+ catch {
364
+ throw new HTTPException(401, { message: "invalid guest token" });
365
+ }
366
+ }
367
+ /**
368
+ * Mint a short-lived guest token for an anonymous caller. Exposed for the guest
369
+ * issue/reissue route; the same deployment key verifies it on later calls.
370
+ */
371
+ export async function issueGuestToken(provider, subject) {
372
+ const guest = provider.guest;
373
+ if (!guest?.issue) {
374
+ throw new HTTPException(400, {
375
+ message: "provider does not allow guest issuance",
376
+ });
377
+ }
378
+ const sub = `${guest.actorPrefix ?? ""}${subject ?? crypto.randomUUID()}`;
379
+ return new SignJWT({})
380
+ .setProtectedHeader({ alg: "HS256" })
381
+ .setIssuer(GUEST_ISSUER)
382
+ .setSubject(sub)
383
+ .setIssuedAt()
384
+ .setExpirationTime(guest.ttl ?? "24h")
385
+ .sign(guestSigningKey());
386
+ }
387
+ function guestSigningKey() {
388
+ const key = process.env[GUEST_KEY_ENV];
389
+ if (!key) {
390
+ throw new HTTPException(500, {
391
+ message: `guest tokens require ${GUEST_KEY_ENV}`,
392
+ });
393
+ }
394
+ return new TextEncoder().encode(key);
395
+ }
396
+ /**
397
+ * Expand `${ENV_VAR}` references. Missing variables fail closed (500) so auth
398
+ * misconfiguration is not mistaken for a bad caller token.
399
+ */
400
+ export function expandEnv(value) {
401
+ return value.replace(/\$\{([A-Z0-9_]+)\}/g, (_match, name) => {
402
+ const resolved = process.env[name];
403
+ if (resolved == null || resolved === "") {
404
+ throw new HTTPException(500, {
405
+ message: `missing required environment variable ${name}`,
406
+ });
407
+ }
408
+ return resolved;
409
+ });
410
+ }
411
+ //# sourceMappingURL=validated-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validated-token.js","sourceRoot":"","sources":["../../src/runtime/validated-token.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { CreateDeepAgentParams } from "deepagents";
2
+ import type { RuntimeIdentity } from "./identity/index.js";
2
3
  /**
3
4
  * Properties the managed runtime owns. Agent authors never set these — MDA
4
5
  * wires the backend, store, checkpointer, memory, skills, and system prompt at
@@ -33,6 +34,12 @@ export type DefineDeepAgentConfig = Omit<CreateDeepAgentParams, ManagedDeepAgent
33
34
  * instructions, and sandbox files still work.
34
35
  */
35
36
  disableMemory?: boolean;
37
+ /**
38
+ * Optional LangSmith/LangGraph run metadata applied after `createDeepAgent`
39
+ * via `.withConfig({ metadata })`. Use this for root-trace fields such as
40
+ * prompt provenance — nested middleware cannot reliably reach the root run.
41
+ */
42
+ metadata?: Record<string, unknown>;
36
43
  };
37
44
  /**
38
45
  * The pre-runtime spec returned by {@link defineDeepAgent}.
@@ -107,5 +114,13 @@ export interface RuntimeChannel {
107
114
  */
108
115
  export interface Runtime {
109
116
  channel: RuntimeChannel;
117
+ /**
118
+ * The frozen identity envelope for the current run, resolved at ingress.
119
+ *
120
+ * Optional because identity is opt-in: a project without an `identity.ts`
121
+ * runs as a service principal with no end-user scoping. Present once
122
+ * the deployment declares identity and the runtime seam populates it.
123
+ */
124
+ identity?: RuntimeIdentity;
110
125
  }
111
126
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,OAAO,GACP,cAAc,GACd,cAAc,GACd,QAAQ,GACR,QAAQ,CAAC;AAEb;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,qBAAqB,EACrB,mBAAmB,CACpB,GAAG;IACF,4EAA4E;IAC5E,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,mDAAmD;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kDAAkD;IAClD,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,6DAA6D;IAC7D,MAAM,CAAC,EAAE,KAAK,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1E,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CACF,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,cAAc,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "managed-deepagents",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Managed Deep Agents — the `defineDeepAgent` authoring interface plus the CLI that compiles and deploys a code-first Deep Agent repository to a managed LangGraph runtime.",
5
5
  "keywords": [
6
6
  "langchain",
@@ -50,16 +50,20 @@
50
50
  "node": ">=22"
51
51
  },
52
52
  "dependencies": {
53
+ "@langchain/langgraph-sdk": "^1.9.25",
53
54
  "@langchain/mcp-adapters": "^1.1.3",
54
- "deepagents": "^1.10.4"
55
+ "deepagents": "^1.10.4",
56
+ "hono": "^4.12.28",
57
+ "jose": "^6.2.3",
58
+ "langsmith": "^0.7.16"
55
59
  },
56
60
  "optionalDependencies": {
57
- "@langchain/managed-deepagents-darwin-arm64": "0.1.0",
58
- "@langchain/managed-deepagents-darwin-x64": "0.1.0",
59
- "@langchain/managed-deepagents-linux-arm64": "0.1.0",
60
- "@langchain/managed-deepagents-linux-x64": "0.1.0",
61
- "@langchain/managed-deepagents-win32-arm64": "0.1.0",
62
- "@langchain/managed-deepagents-win32-x64": "0.1.0"
61
+ "@langchain/managed-deepagents-darwin-arm64": "0.3.0",
62
+ "@langchain/managed-deepagents-darwin-x64": "0.3.0",
63
+ "@langchain/managed-deepagents-linux-arm64": "0.3.0",
64
+ "@langchain/managed-deepagents-linux-x64": "0.3.0",
65
+ "@langchain/managed-deepagents-win32-arm64": "0.3.0",
66
+ "@langchain/managed-deepagents-win32-x64": "0.3.0"
63
67
  },
64
68
  "devDependencies": {
65
69
  "@types/node": "^26.0.1",