managed-deepagents 0.0.3-dev.29 → 0.0.3-dev.31

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 (37) hide show
  1. package/dist/connectors/langsmith.d.ts +133 -0
  2. package/dist/connectors/langsmith.d.ts.map +1 -0
  3. package/dist/connectors/langsmith.js +262 -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.d.ts +1 -1
  10. package/dist/identity.d.ts.map +1 -1
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/runtime/auth.d.ts +11 -1
  16. package/dist/runtime/auth.d.ts.map +1 -1
  17. package/dist/runtime/auth.js +24 -1
  18. package/dist/runtime/auth.js.map +1 -1
  19. package/dist/runtime/connector.d.ts +138 -0
  20. package/dist/runtime/connector.d.ts.map +1 -0
  21. package/dist/runtime/connector.js +82 -0
  22. package/dist/runtime/connector.js.map +1 -0
  23. package/dist/runtime/identity-http.d.ts +22 -3
  24. package/dist/runtime/identity-http.d.ts.map +1 -1
  25. package/dist/runtime/identity-http.js +133 -6
  26. package/dist/runtime/identity-http.js.map +1 -1
  27. package/dist/runtime/index.d.ts +3 -1
  28. package/dist/runtime/index.d.ts.map +1 -1
  29. package/dist/runtime/index.js +14 -12
  30. package/dist/runtime/index.js.map +1 -1
  31. package/dist/runtime/langsmith-connector.d.ts +113 -0
  32. package/dist/runtime/langsmith-connector.d.ts.map +1 -0
  33. package/dist/runtime/langsmith-connector.js +410 -0
  34. package/dist/runtime/langsmith-connector.js.map +1 -0
  35. package/dist/runtime/types.d.ts +5 -4
  36. package/dist/runtime/types.d.ts.map +1 -1
  37. package/package.json +9 -8
@@ -0,0 +1,113 @@
1
+ /**
2
+ * LangSmith connector — runtime enforcement engine.
3
+ *
4
+ * Mounted by the connector's `http(ctx)` hook on its namespaced sub-router.
5
+ * Exposes one uniform endpoint per capability:
6
+ *
7
+ * POST /connectors/langsmith/capabilities/{capability_id}
8
+ *
9
+ * with a JSON body naming the `action` and its parameters. Per request the
10
+ * engine resolves identity (resolve-or-401), checks the caller surface, checks
11
+ * the action, validates typed constraints, performs the LangSmith operation
12
+ * server-side with the workspace key, and returns an allowlisted response.
13
+ *
14
+ * v0 does NOT prove object ownership (`runId` is treated as an unguessable
15
+ * capability, matching the app being replaced), and has no rate limiting, audit,
16
+ * or multi-workspace fan-out.
17
+ */
18
+ import type { Example, Feedback, KVMap, Prompt, Run, ScoreType, ValueType } from "langsmith/schemas";
19
+ import type { IdentityConfig, RuntimeIdentity } from "../identity.js";
20
+ import type { LangSmithCapability, LangSmithCallerSurface } from "../connectors/langsmith.js";
21
+ import type { HttpContext } from "./connector.js";
22
+ /**
23
+ * The thin LangSmith operations the engine needs, typed against the `langsmith`
24
+ * SDK's own schemas. {@link defaultClient} wraps a real {@link Client}; tests
25
+ * inject a fake so the enforcement logic is verified without network or SDK
26
+ * specifics.
27
+ *
28
+ * A connector "score" is a categorical value (e.g. `"positive"`), so it maps to
29
+ * a LangSmith `score` when numeric/boolean and to a feedback `value` otherwise —
30
+ * hence the `ScoreType | ValueType` inputs.
31
+ */
32
+ export interface LangSmithClient {
33
+ createFeedback(input: {
34
+ runId: string;
35
+ key: string;
36
+ score?: ScoreType | ValueType;
37
+ comment?: string;
38
+ feedbackId?: string;
39
+ }): Promise<Feedback>;
40
+ updateFeedback(input: {
41
+ feedbackId: string;
42
+ score?: ScoreType | ValueType;
43
+ comment?: string;
44
+ }): Promise<void>;
45
+ deleteFeedback(input: {
46
+ feedbackId: string;
47
+ }): Promise<void>;
48
+ readRun(input: {
49
+ runId: string;
50
+ }): Promise<Run>;
51
+ shareRun(input: {
52
+ runId: string;
53
+ }): Promise<{
54
+ url: string;
55
+ }>;
56
+ createExample(input: {
57
+ dataset: string;
58
+ inputs: KVMap;
59
+ outputs?: KVMap;
60
+ }): Promise<Example>;
61
+ enqueueRun(input: {
62
+ queue: string;
63
+ runId: string;
64
+ priority?: string;
65
+ note?: string;
66
+ }): Promise<void>;
67
+ readPrompt(input: {
68
+ name: string;
69
+ }): Promise<Prompt | null>;
70
+ readThread(input: {
71
+ threadId: string;
72
+ }): Promise<Run>;
73
+ updateThreadMetadata(input: {
74
+ threadId: string;
75
+ metadata: KVMap;
76
+ }): Promise<void>;
77
+ }
78
+ /** An error carrying an HTTP status the engine surfaces to the caller. */
79
+ export declare class EnforcementError extends Error {
80
+ readonly status: number;
81
+ constructor(status: number, message: string);
82
+ }
83
+ /** Options the engine handler closes over. */
84
+ export interface HandlerDeps {
85
+ capabilitiesById: Map<string, LangSmithCapability>;
86
+ client: LangSmithClient;
87
+ identityConfig?: IdentityConfig;
88
+ requireIdentity: (request: Request) => Promise<RuntimeIdentity>;
89
+ }
90
+ /**
91
+ * Mount the capability route on the connector's namespaced sub-router. Runs the
92
+ * identity-dependent authoring checks at mount time (fails startup on an illegal
93
+ * scope/ingress combination), then registers the uniform POST endpoint.
94
+ */
95
+ export declare function mountLangSmithRoutes(ctx: HttpContext, capabilities: LangSmithCapability[], client?: LangSmithClient): void;
96
+ /** Identity-aware authoring validation, run when the app is constructed. */
97
+ export declare function validateAgainstIdentity(capabilities: LangSmithCapability[], identity: IdentityConfig | undefined): void;
98
+ /** The per-request enforcement pipeline. Returns a JSON `Response`. */
99
+ export declare function handleCapabilityRequest(request: Request, deps: HandlerDeps): Promise<Response>;
100
+ /** Map the resolved identity + ingress mode to a caller surface. */
101
+ export declare function callerSurface(identity: RuntimeIdentity, identityConfig: IdentityConfig | undefined): LangSmithCallerSurface;
102
+ /** Apply the capability's `include` allowlist, then drop any `redact` roots. */
103
+ export declare function shapeResponse(raw: Record<string, unknown>, capability: LangSmithCapability): Record<string, unknown>;
104
+ /**
105
+ * Default client backed by the `langsmith` SDK {@link Client}. The underlying
106
+ * client is created on first use so building the engine (e.g. for an app with no
107
+ * requests yet) never requires `LANGSMITH_API_KEY`.
108
+ *
109
+ * A connector "score" is numeric/boolean → LangSmith `score`, or categorical
110
+ * (string/object) → LangSmith feedback `value`.
111
+ */
112
+ export declare function defaultClient(): LangSmithClient;
113
+ //# sourceMappingURL=langsmith-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langsmith-connector.d.ts","sourceRoot":"","sources":["../../src/runtime/langsmith-connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,410 @@
1
+ /**
2
+ * LangSmith connector — runtime enforcement engine.
3
+ *
4
+ * Mounted by the connector's `http(ctx)` hook on its namespaced sub-router.
5
+ * Exposes one uniform endpoint per capability:
6
+ *
7
+ * POST /connectors/langsmith/capabilities/{capability_id}
8
+ *
9
+ * with a JSON body naming the `action` and its parameters. Per request the
10
+ * engine resolves identity (resolve-or-401), checks the caller surface, checks
11
+ * the action, validates typed constraints, performs the LangSmith operation
12
+ * server-side with the workspace key, and returns an allowlisted response.
13
+ *
14
+ * v0 does NOT prove object ownership (`runId` is treated as an unguessable
15
+ * capability, matching the app being replaced), and has no rate limiting, audit,
16
+ * or multi-workspace fan-out.
17
+ */
18
+ import { Client } from "langsmith";
19
+ /** An error carrying an HTTP status the engine surfaces to the caller. */
20
+ export class EnforcementError extends Error {
21
+ status;
22
+ constructor(status, message) {
23
+ super(message);
24
+ this.status = status;
25
+ this.name = "EnforcementError";
26
+ }
27
+ }
28
+ /**
29
+ * Mount the capability route on the connector's namespaced sub-router. Runs the
30
+ * identity-dependent authoring checks at mount time (fails startup on an illegal
31
+ * scope/ingress combination), then registers the uniform POST endpoint.
32
+ */
33
+ export function mountLangSmithRoutes(ctx, capabilities, client = defaultClient()) {
34
+ validateAgainstIdentity(capabilities, ctx.identity);
35
+ const deps = {
36
+ capabilitiesById: new Map(capabilities.map((c) => [c.id, c])),
37
+ client,
38
+ identityConfig: ctx.identity,
39
+ requireIdentity: ctx.requireIdentity,
40
+ };
41
+ ctx.router.post("/capabilities/:id", (request) => handleCapabilityRequest(request, deps));
42
+ }
43
+ /** Identity-aware authoring validation, run when the app is constructed. */
44
+ export function validateAgainstIdentity(capabilities, identity) {
45
+ const httpMode = identity?.ingress.http;
46
+ const hasValidatedToken = httpMode !== undefined && httpMode !== "trusted_backend";
47
+ const tenancy = identity?.tenancy ?? "single";
48
+ for (const capability of capabilities) {
49
+ const externallyExposed = capability.exposeTo.length > 0;
50
+ const identityScoped = capability.scope === "actor" ||
51
+ capability.scope === "tenant" ||
52
+ capability.scope === "thread" ||
53
+ capability.scope === "run";
54
+ if (!identity) {
55
+ const readOnly = capability.actions.every((a) => a.startsWith("read"));
56
+ if (externallyExposed && !(capability.scope === "agent" && readOnly)) {
57
+ throw new Error(`LangSmith capability "${capability.id}" is exposed externally but the ` +
58
+ `deployment has no identity configured. Only agent-scoped, read-only ` +
59
+ `capabilities may be exposed without identity.`);
60
+ }
61
+ continue;
62
+ }
63
+ if (capability.scope === "tenant" && tenancy === "single") {
64
+ throw new Error(`LangSmith capability "${capability.id}" is tenant-scoped but the ` +
65
+ `deployment is tenancy: "single".`);
66
+ }
67
+ if (capability.exposeTo.includes("browser") &&
68
+ identityScoped &&
69
+ !hasValidatedToken) {
70
+ throw new Error(`LangSmith capability "${capability.id}" is ${capability.scope}-scoped and ` +
71
+ `exposed to browser, but the deployment has no validated_token ingress ` +
72
+ `to resolve an end-user identity.`);
73
+ }
74
+ }
75
+ }
76
+ /** The per-request enforcement pipeline. Returns a JSON `Response`. */
77
+ export async function handleCapabilityRequest(request, deps) {
78
+ try {
79
+ const capabilityId = capabilityIdFromUrl(request.url);
80
+ const capability = deps.capabilitiesById.get(capabilityId);
81
+ if (!capability) {
82
+ throw new EnforcementError(404, `unknown capability "${capabilityId}"`);
83
+ }
84
+ const identity = await deps.requireIdentity(request);
85
+ const surface = callerSurface(identity, deps.identityConfig);
86
+ if (!capability.exposeTo.includes(surface)) {
87
+ throw new EnforcementError(403, `capability "${capability.id}" is not exposed to ${surface}`);
88
+ }
89
+ const body = await parseJsonBody(request);
90
+ const action = String(body.action ?? "");
91
+ if (!capability.actions.includes(action)) {
92
+ throw new EnforcementError(403, `action "${action}" is not allowed for capability "${capability.id}"`);
93
+ }
94
+ const raw = toRecord(await performLangSmithCall(capability, action, body, deps));
95
+ const shaped = shapeResponse(raw, capability);
96
+ return jsonResponse(200, { data: shaped });
97
+ }
98
+ catch (error) {
99
+ if (error instanceof EnforcementError) {
100
+ return jsonResponse(error.status, { error: error.message });
101
+ }
102
+ const status = statusFromUnknownError(error);
103
+ return jsonResponse(status, { error: errorMessage(error) });
104
+ }
105
+ }
106
+ /** Map the resolved identity + ingress mode to a caller surface. */
107
+ export function callerSurface(identity, identityConfig) {
108
+ const provider = identity.source.provider;
109
+ if (provider === "slack") {
110
+ return "channel";
111
+ }
112
+ if (provider === "schedule") {
113
+ return "schedule";
114
+ }
115
+ // http / cli: browser vs trusted_backend depends on the ingress mode.
116
+ return identityConfig?.ingress.http === "trusted_backend"
117
+ ? "trusted_backend"
118
+ : "browser";
119
+ }
120
+ // --- Call mapping ----------------------------------------------------------
121
+ async function performLangSmithCall(capability, action, body, deps) {
122
+ switch (capability.resource) {
123
+ case "feedback":
124
+ return feedbackCall(capability, action, body, deps.client);
125
+ case "runs":
126
+ return runsCall(action, body, deps.client);
127
+ case "examples":
128
+ return examplesCall(capability, body, deps.client);
129
+ case "annotation_queues":
130
+ return annotationQueueCall(capability, body, deps.client);
131
+ case "prompts":
132
+ return deps.client.readPrompt({ name: requireString(body, "name") });
133
+ case "threads":
134
+ return threadsCall(capability, action, body, deps.client);
135
+ default:
136
+ throw new EnforcementError(400, `resource "${capability.resource}" is not supported in v0`);
137
+ }
138
+ }
139
+ async function feedbackCall(capability, action, body, client) {
140
+ const c = capability.constraints ?? {};
141
+ if (action === "create") {
142
+ const key = requireString(body, "key");
143
+ assertAllowed(c.keys, key, "key");
144
+ // Validated against the `scores` allowlist, then handed to the SDK as a
145
+ // categorical score/value (see LangSmithClient docs).
146
+ const score = body.score;
147
+ if (score !== undefined) {
148
+ assertAllowed(c.scores, String(score), "score");
149
+ }
150
+ const comment = optionalComment(body, c.maxCommentChars);
151
+ return client.createFeedback({
152
+ runId: requireString(body, "runId"),
153
+ key,
154
+ ...(score !== undefined ? { score } : {}),
155
+ ...(comment !== undefined ? { comment } : {}),
156
+ ...(typeof body.feedbackId === "string"
157
+ ? { feedbackId: body.feedbackId }
158
+ : {}),
159
+ });
160
+ }
161
+ if (action === "update") {
162
+ const comment = optionalComment(body, c.maxCommentChars);
163
+ const score = body.score;
164
+ return client.updateFeedback({
165
+ feedbackId: requireString(body, "feedbackId"),
166
+ ...(score !== undefined ? { score } : {}),
167
+ ...(comment !== undefined ? { comment } : {}),
168
+ });
169
+ }
170
+ if (action === "delete") {
171
+ return client.deleteFeedback({
172
+ feedbackId: requireString(body, "feedbackId"),
173
+ });
174
+ }
175
+ throw new EnforcementError(400, `unknown feedback action "${action}"`);
176
+ }
177
+ async function runsCall(action, body, client) {
178
+ const runId = requireString(body, "runId");
179
+ if (action === "read") {
180
+ return client.readRun({ runId });
181
+ }
182
+ if (action === "share") {
183
+ return client.shareRun({ runId });
184
+ }
185
+ throw new EnforcementError(400, `unknown runs action "${action}"`);
186
+ }
187
+ async function examplesCall(capability, body, client) {
188
+ const c = capability.constraints ?? {};
189
+ const dataset = c.dataset;
190
+ if (!dataset) {
191
+ throw new EnforcementError(400, "examples capability has no dataset");
192
+ }
193
+ const inputs = requireObject(body, "inputs");
194
+ const allowedFields = c.allowedFields;
195
+ if (allowedFields) {
196
+ for (const field of Object.keys(inputs)) {
197
+ if (!allowedFields.includes(field)) {
198
+ throw new EnforcementError(400, `field "${field}" is not allowed`);
199
+ }
200
+ }
201
+ }
202
+ const outputs = body.outputs && typeof body.outputs === "object"
203
+ ? body.outputs
204
+ : undefined;
205
+ return client.createExample({
206
+ dataset,
207
+ inputs,
208
+ ...(outputs ? { outputs } : {}),
209
+ });
210
+ }
211
+ async function annotationQueueCall(capability, body, client) {
212
+ const c = capability.constraints ?? {};
213
+ const queue = c.queue;
214
+ if (!queue) {
215
+ throw new EnforcementError(400, "annotation queue capability has no queue");
216
+ }
217
+ const priority = body.priority;
218
+ if (priority !== undefined) {
219
+ assertAllowed(c.allowedPriorities, String(priority), "priority");
220
+ }
221
+ const note = optionalComment(body, c.maxNoteChars, "note");
222
+ return client.enqueueRun({
223
+ queue,
224
+ runId: requireString(body, "runId"),
225
+ ...(typeof priority === "string" ? { priority } : {}),
226
+ ...(note !== undefined ? { note } : {}),
227
+ });
228
+ }
229
+ async function threadsCall(capability, action, body, client) {
230
+ const threadId = requireString(body, "threadId");
231
+ if (action === "read") {
232
+ return client.readThread({ threadId });
233
+ }
234
+ if (action === "update_metadata") {
235
+ const c = capability.constraints ?? {};
236
+ const metadata = requireObject(body, "metadata");
237
+ const metadataKeys = c.metadataKeys;
238
+ if (metadataKeys) {
239
+ for (const key of Object.keys(metadata)) {
240
+ if (!metadataKeys.includes(key)) {
241
+ throw new EnforcementError(400, `metadata key "${key}" is not allowed`);
242
+ }
243
+ }
244
+ }
245
+ const maxTitle = c.maxTitleChars;
246
+ if (maxTitle !== undefined && typeof metadata.title === "string") {
247
+ if (metadata.title.length > maxTitle) {
248
+ throw new EnforcementError(400, `title exceeds ${maxTitle} characters`);
249
+ }
250
+ }
251
+ return client.updateThreadMetadata({ threadId, metadata });
252
+ }
253
+ throw new EnforcementError(400, `unknown threads action "${action}"`);
254
+ }
255
+ // --- Response shaping ------------------------------------------------------
256
+ /** Apply the capability's `include` allowlist, then drop any `redact` roots. */
257
+ export function shapeResponse(raw, capability) {
258
+ const include = capability.response?.include ?? [];
259
+ const redact = new Set(capability.response?.redact ?? []);
260
+ const picked = {};
261
+ for (const path of include) {
262
+ const [root, ...rest] = path.split(".");
263
+ if (root === undefined || redact.has(root)) {
264
+ continue;
265
+ }
266
+ if (rest.length === 0) {
267
+ if (root in raw) {
268
+ picked[root] = raw[root];
269
+ }
270
+ continue;
271
+ }
272
+ const nested = pickNested(raw[root], rest);
273
+ if (nested !== undefined) {
274
+ const existing = picked[root] ?? {};
275
+ picked[root] = { ...existing, [rest.join(".")]: nested };
276
+ }
277
+ }
278
+ return picked;
279
+ }
280
+ function pickNested(value, path) {
281
+ let current = value;
282
+ for (const segment of path) {
283
+ if (current && typeof current === "object" && segment in current) {
284
+ current = current[segment];
285
+ }
286
+ else {
287
+ return undefined;
288
+ }
289
+ }
290
+ return current;
291
+ }
292
+ // --- Helpers ---------------------------------------------------------------
293
+ function capabilityIdFromUrl(url) {
294
+ const { pathname } = new URL(url);
295
+ const marker = "/capabilities/";
296
+ const index = pathname.lastIndexOf(marker);
297
+ if (index === -1) {
298
+ throw new EnforcementError(404, "capability id missing from path");
299
+ }
300
+ return decodeURIComponent(pathname.slice(index + marker.length));
301
+ }
302
+ async function parseJsonBody(request) {
303
+ try {
304
+ const parsed = await request.json();
305
+ if (parsed && typeof parsed === "object") {
306
+ return parsed;
307
+ }
308
+ }
309
+ catch {
310
+ // fall through to the uniform error below
311
+ }
312
+ throw new EnforcementError(400, "request body must be a JSON object");
313
+ }
314
+ function requireString(body, key) {
315
+ const value = body[key];
316
+ if (typeof value !== "string" || value.length === 0) {
317
+ throw new EnforcementError(400, `missing or invalid "${key}"`);
318
+ }
319
+ return value;
320
+ }
321
+ function requireObject(body, key) {
322
+ const value = body[key];
323
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
324
+ throw new EnforcementError(400, `missing or invalid "${key}"`);
325
+ }
326
+ return value;
327
+ }
328
+ function assertAllowed(allowed, value, label) {
329
+ if (allowed && !allowed.includes(value)) {
330
+ throw new EnforcementError(400, `${label} "${value}" is not allowed`);
331
+ }
332
+ }
333
+ function optionalComment(body, maxChars, field = "comment") {
334
+ const value = body[field];
335
+ if (value === undefined || value === null) {
336
+ return undefined;
337
+ }
338
+ if (typeof value !== "string") {
339
+ throw new EnforcementError(400, `"${field}" must be a string`);
340
+ }
341
+ if (maxChars !== undefined && value.length > maxChars) {
342
+ throw new EnforcementError(400, `"${field}" exceeds ${maxChars} characters`);
343
+ }
344
+ return value;
345
+ }
346
+ function jsonResponse(status, body) {
347
+ return new Response(JSON.stringify(body), {
348
+ status,
349
+ headers: { "content-type": "application/json" },
350
+ });
351
+ }
352
+ function statusFromUnknownError(error) {
353
+ const status = error?.status;
354
+ if (typeof status === "number" && status >= 400 && status <= 599) {
355
+ return status;
356
+ }
357
+ return 502;
358
+ }
359
+ function errorMessage(error) {
360
+ if (error instanceof Error) {
361
+ return error.message;
362
+ }
363
+ return "internal error";
364
+ }
365
+ /** Coerce an SDK result (object | void | null) into a plain record for shaping. */
366
+ function toRecord(value) {
367
+ if (value && typeof value === "object") {
368
+ return { ...value };
369
+ }
370
+ return {};
371
+ }
372
+ /**
373
+ * Default client backed by the `langsmith` SDK {@link Client}. The underlying
374
+ * client is created on first use so building the engine (e.g. for an app with no
375
+ * requests yet) never requires `LANGSMITH_API_KEY`.
376
+ *
377
+ * A connector "score" is numeric/boolean → LangSmith `score`, or categorical
378
+ * (string/object) → LangSmith feedback `value`.
379
+ */
380
+ export function defaultClient() {
381
+ let client;
382
+ const sdk = () => {
383
+ client ??= new Client({ apiKey: process.env.LANGSMITH_API_KEY });
384
+ return client;
385
+ };
386
+ const isScore = (value) => typeof value === "number" || typeof value === "boolean" || value === null;
387
+ const scoreOrValue = (value) => {
388
+ if (isScore(value)) {
389
+ return { score: value };
390
+ }
391
+ return value === undefined ? {} : { value };
392
+ };
393
+ return {
394
+ createFeedback: ({ runId, key, score, comment, feedbackId }) => sdk().createFeedback(runId, key, {
395
+ ...scoreOrValue(score),
396
+ comment,
397
+ feedbackId,
398
+ }),
399
+ updateFeedback: ({ feedbackId, score, comment }) => sdk().updateFeedback(feedbackId, { ...scoreOrValue(score), comment }),
400
+ deleteFeedback: ({ feedbackId }) => sdk().deleteFeedback(feedbackId),
401
+ readRun: ({ runId }) => sdk().readRun(runId),
402
+ shareRun: async ({ runId }) => ({ url: await sdk().shareRun(runId) }),
403
+ createExample: ({ dataset, inputs, outputs }) => sdk().createExample({ inputs, outputs, dataset_name: dataset }),
404
+ enqueueRun: ({ queue, runId }) => sdk().addRunsToAnnotationQueue(queue, [runId]),
405
+ readPrompt: ({ name }) => sdk().getPrompt(name),
406
+ readThread: ({ threadId }) => sdk().readRun(threadId),
407
+ updateThreadMetadata: ({ threadId, metadata }) => sdk().updateRun(threadId, { extra: metadata }),
408
+ };
409
+ }
410
+ //# sourceMappingURL=langsmith-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langsmith-connector.js","sourceRoot":"","sources":["../../src/runtime/langsmith-connector.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { McpServersDefinition } from "../connectors.js";
2
1
  import type { IdentityDefinition } from "../identity.js";
3
2
  import type { SandboxDefinition } from "../sandbox.js";
3
+ import type { Connector } from "./connector.js";
4
4
  /**
5
5
  * Any object that carries a per-run LangGraph `configurable` map. The shared base
6
6
  * for the run config and the runtime the seam augments, so the `configurable`
@@ -42,10 +42,11 @@ export interface ManagedAgentOptions {
42
42
  */
43
43
  setupScript?: string;
44
44
  /**
45
- * The `connectors/mcp.ts` declaration, if the project declares MCP servers.
46
- * The runtime loads their tools and appends them to the agent's tools.
45
+ * The connectors discovered under `connectors/`, already validated by
46
+ * `collectConnectors`. Each connector's `tools` hook (if any) contributes
47
+ * tools appended to the agent's authored tools.
47
48
  */
48
- connectors?: McpServersDefinition;
49
+ connectors?: Connector[];
49
50
  /**
50
51
  * The root `identity.ts` declaration, if the project opts into managed
51
52
  * identity. Resolution + thread scoping run in the generated custom-auth
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CACL,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,OAAO,CAAC;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CACL,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,OAAO,CAAC;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "managed-deepagents",
3
- "version": "0.0.3-dev.29",
3
+ "version": "0.0.3-dev.31",
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",
@@ -54,15 +54,16 @@
54
54
  "@langchain/mcp-adapters": "^1.1.3",
55
55
  "deepagents": "^1.10.4",
56
56
  "hono": "^4.12.28",
57
- "jose": "^6.2.3"
57
+ "jose": "^6.2.3",
58
+ "langsmith": "^0.7.16"
58
59
  },
59
60
  "optionalDependencies": {
60
- "@langchain/managed-deepagents-darwin-arm64": "0.0.3-dev.29",
61
- "@langchain/managed-deepagents-darwin-x64": "0.0.3-dev.29",
62
- "@langchain/managed-deepagents-linux-arm64": "0.0.3-dev.29",
63
- "@langchain/managed-deepagents-linux-x64": "0.0.3-dev.29",
64
- "@langchain/managed-deepagents-win32-arm64": "0.0.3-dev.29",
65
- "@langchain/managed-deepagents-win32-x64": "0.0.3-dev.29"
61
+ "@langchain/managed-deepagents-darwin-arm64": "0.0.3-dev.31",
62
+ "@langchain/managed-deepagents-darwin-x64": "0.0.3-dev.31",
63
+ "@langchain/managed-deepagents-linux-arm64": "0.0.3-dev.31",
64
+ "@langchain/managed-deepagents-linux-x64": "0.0.3-dev.31",
65
+ "@langchain/managed-deepagents-win32-arm64": "0.0.3-dev.31",
66
+ "@langchain/managed-deepagents-win32-x64": "0.0.3-dev.31"
66
67
  },
67
68
  "devDependencies": {
68
69
  "@types/node": "^26.0.1",