managed-deepagents 0.5.4-dev.4 → 0.5.4-dev.6
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 +9 -25
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/runtime/backend.d.ts +1 -0
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +8 -38
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +45 -40
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +132 -113
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/sandbox-stream-retry.d.ts +18 -0
- package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -0
- package/dist/runtime/sandbox-stream-retry.js +90 -0
- package/dist/runtime/sandbox-stream-retry.js.map +1 -0
- package/dist/runtime/setup-script.d.ts +18 -0
- package/dist/runtime/setup-script.d.ts.map +1 -0
- package/dist/runtime/setup-script.js +49 -0
- package/dist/runtime/setup-script.js.map +1 -0
- package/dist/runtime/types.d.ts +5 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandbox.d.ts +15 -61
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +7 -25
- package/dist/sandbox.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,36 +1,17 @@
|
|
|
1
1
|
import { createHash, randomBytes } from "node:crypto";
|
|
2
|
-
import { LangSmithSandbox } from "deepagents";
|
|
3
|
-
import { Sandbox, SandboxClient } from "langsmith/sandbox";
|
|
4
2
|
import { hasSandboxConnectors, runConnectorSandboxHooks, } from "./connector.js";
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import { runSetupScript } from "./setup-script.js";
|
|
4
|
+
import { isSandboxStreamError } from "./sandbox-stream-retry.js";
|
|
7
5
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `
|
|
11
|
-
* `.env`. Sandboxes and snapshots are workspace-scoped, so the runtime must
|
|
12
|
-
* send it too — an API key whose default workspace differs from this one
|
|
13
|
-
* resolves `snapshotName` in the wrong workspace and 404s on the recipe.
|
|
14
|
-
*/
|
|
15
|
-
export const WORKSPACE_ID_ENV = "LANGSMITH_WORKSPACE_ID";
|
|
16
|
-
/** Header the LangSmith APIs use to scope a request to one workspace. */
|
|
17
|
-
const TENANT_HEADER = "X-Tenant-Id";
|
|
18
|
-
/**
|
|
19
|
-
* Created sandboxes, keyed by thread, reused for the lifetime of this runtime
|
|
20
|
-
* process. Storing the in-flight promise dedupes concurrent runs. Provisioning
|
|
21
|
-
* (`setup.sh`) happens at deploy bake, not on thread create.
|
|
6
|
+
* Created sandboxes, keyed by scope, reused for the lifetime of this runtime
|
|
7
|
+
* process. Storing the in-flight promise dedupes concurrent runs and guarantees
|
|
8
|
+
* `setup.sh` is executed only once per newly created sandbox.
|
|
22
9
|
*/
|
|
23
10
|
const managedSandboxes = new Map();
|
|
24
11
|
/** Host box names that must not be re-adopted after invalidate until recreate. */
|
|
25
12
|
const invalidatedSandboxNames = new Set();
|
|
26
13
|
/** Host box name for a resolved backend instance (survives cache replacement). */
|
|
27
14
|
const backendHostNames = new WeakMap();
|
|
28
|
-
/** Cold-box race: command stream died before the sandbox accepted the command. */
|
|
29
|
-
const STREAM_NEVER_STARTED_RE = /Command stream ended before ['"]started['"] message/i;
|
|
30
|
-
const STREAM_NEVER_STARTED_NAMES = new Set([
|
|
31
|
-
"_StreamEndedBeforeStarted",
|
|
32
|
-
"StreamEndedBeforeStarted",
|
|
33
|
-
]);
|
|
34
15
|
/**
|
|
35
16
|
* Separator between the deployment name and the identity digest in a managed
|
|
36
17
|
* sandbox name.
|
|
@@ -47,17 +28,28 @@ const SANDBOX_DIGEST_LENGTH = 12;
|
|
|
47
28
|
const ADOPTABLE_STATUS = new Set(["ready", "running"]);
|
|
48
29
|
/** Sandbox status for one that is stopped but restartable. */
|
|
49
30
|
const STOPPED_STATUS = "stopped";
|
|
31
|
+
const defaultLangSmithSandboxClientLoader = async () => {
|
|
32
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
33
|
+
return (await dynamicImport("langsmith/sandbox"));
|
|
34
|
+
};
|
|
35
|
+
let langSmithSandboxClientLoader = defaultLangSmithSandboxClientLoader;
|
|
36
|
+
const defaultLangSmithSandboxBackendLoader = async () => {
|
|
37
|
+
const { LangSmithSandbox } = await import("deepagents");
|
|
38
|
+
return LangSmithSandbox;
|
|
39
|
+
};
|
|
40
|
+
let langSmithSandboxBackendLoader = defaultLangSmithSandboxBackendLoader;
|
|
50
41
|
/**
|
|
51
|
-
* Resolve (and cache) the
|
|
52
|
-
*
|
|
42
|
+
* Resolve (and cache) the scoped LangSmith sandbox backend for this run,
|
|
43
|
+
* provisioning it with `setup.sh` the first time it is created.
|
|
53
44
|
*
|
|
54
45
|
* Connectors that implement {@link Connector.sandbox} run on create, when a
|
|
55
46
|
* new thread starts against a reused sandbox (mode `"reuse"`), and on later
|
|
56
47
|
* messages in an already-synced thread (mode `"credentials"`).
|
|
57
48
|
*/
|
|
58
|
-
export function resolveManagedSandbox(sandbox, config, options) {
|
|
59
|
-
const key = sandboxScopeKey(config);
|
|
49
|
+
export function resolveManagedSandbox(sandbox, setupScript, config, options) {
|
|
50
|
+
const key = sandboxScopeKey(sandbox, config);
|
|
60
51
|
const hasSandbox = hasSandboxConnectors(options?.connectors);
|
|
52
|
+
const threadKey = threadSyncKey(sandbox, config);
|
|
61
53
|
let entry = managedSandboxes.get(key);
|
|
62
54
|
if (!entry) {
|
|
63
55
|
const created = {
|
|
@@ -65,7 +57,7 @@ export function resolveManagedSandbox(sandbox, config, options) {
|
|
|
65
57
|
syncChain: Promise.resolve(),
|
|
66
58
|
freshlyCreated: true,
|
|
67
59
|
ready: Promise.resolve().then(async () => {
|
|
68
|
-
const { backend, hostName } = await createLangSmithSandbox(sandbox, config, options, "create", key);
|
|
60
|
+
const { backend, hostName } = await createLangSmithSandbox(sandbox, setupScript, config, options, "create", key);
|
|
69
61
|
created.hostName = hostName;
|
|
70
62
|
const id = backend.id;
|
|
71
63
|
created.backendId =
|
|
@@ -73,7 +65,7 @@ export function resolveManagedSandbox(sandbox, config, options) {
|
|
|
73
65
|
if (hostName) {
|
|
74
66
|
backendHostNames.set(backend, hostName);
|
|
75
67
|
}
|
|
76
|
-
created.syncedThreads.add(
|
|
68
|
+
created.syncedThreads.add(threadKey);
|
|
77
69
|
return backend;
|
|
78
70
|
}),
|
|
79
71
|
};
|
|
@@ -97,7 +89,7 @@ export function resolveManagedSandbox(sandbox, config, options) {
|
|
|
97
89
|
cached.freshlyCreated = false;
|
|
98
90
|
return;
|
|
99
91
|
}
|
|
100
|
-
if (cached.syncedThreads.has(
|
|
92
|
+
if (cached.syncedThreads.has(threadKey)) {
|
|
101
93
|
// Same thread: refresh credentials / CLI wiring without re-cloning.
|
|
102
94
|
// Otherwise redeploys that fix auth (e.g. gh wrapper) never apply mid-thread.
|
|
103
95
|
await runConnectorSandboxHooks(options?.connectors, {
|
|
@@ -115,14 +107,18 @@ export function resolveManagedSandbox(sandbox, config, options) {
|
|
|
115
107
|
config,
|
|
116
108
|
identity: options?.identity,
|
|
117
109
|
});
|
|
118
|
-
cached.syncedThreads.add(
|
|
110
|
+
cached.syncedThreads.add(threadKey);
|
|
119
111
|
});
|
|
120
112
|
await cached.syncChain;
|
|
121
113
|
return backend;
|
|
122
114
|
});
|
|
123
115
|
}
|
|
124
|
-
/** Derive the process-level reuse key
|
|
125
|
-
export function sandboxScopeKey(config) {
|
|
116
|
+
/** Derive the process-level reuse key from the configured sandbox scope. */
|
|
117
|
+
export function sandboxScopeKey(sandbox, config) {
|
|
118
|
+
const scope = sandbox.options?.scope ?? "thread";
|
|
119
|
+
if (scope === "agent") {
|
|
120
|
+
return `agent:${assistantIdFromConfig(config)}`;
|
|
121
|
+
}
|
|
126
122
|
return `thread:${threadIdFromConfig(config)}`;
|
|
127
123
|
}
|
|
128
124
|
/** Clear the process-level sandbox cache. Test-only. */
|
|
@@ -134,7 +130,7 @@ export function clearManagedSandboxCacheForTests() {
|
|
|
134
130
|
* Drop a cached sandbox and delete its Host box so recreate cannot adopt it.
|
|
135
131
|
*
|
|
136
132
|
* Process-cache clear alone is not enough under deploy: names are deterministic
|
|
137
|
-
* per
|
|
133
|
+
* per scope, so the next resolve would re-adopt the same broken box. Mark the
|
|
138
134
|
* name blocked (delete can lag) and best-effort `deleteSandbox`.
|
|
139
135
|
*
|
|
140
136
|
* When `expectedBackendId` / `expectedHostName` are set, only pop the cache
|
|
@@ -142,9 +138,13 @@ export function clearManagedSandboxCacheForTests() {
|
|
|
142
138
|
* already have replaced it — deleting the replacement would strand the healthy
|
|
143
139
|
* recreate.
|
|
144
140
|
*/
|
|
145
|
-
export async function invalidateManagedSandbox(sandbox, config,
|
|
146
|
-
const
|
|
147
|
-
|
|
141
|
+
export async function invalidateManagedSandbox(sandbox, config, setupScriptOrOptions) {
|
|
142
|
+
const options = typeof setupScriptOrOptions === "string" ||
|
|
143
|
+
setupScriptOrOptions === undefined
|
|
144
|
+
? { setupScript: setupScriptOrOptions }
|
|
145
|
+
: setupScriptOrOptions;
|
|
146
|
+
const { setupScript, expectedBackendId, expectedHostName } = options;
|
|
147
|
+
const key = sandboxScopeKey(sandbox, config);
|
|
148
148
|
const names = new Set();
|
|
149
149
|
let popCache = true;
|
|
150
150
|
let entry = managedSandboxes.get(key);
|
|
@@ -180,7 +180,7 @@ export async function invalidateManagedSandbox(sandbox, config, options = {}) {
|
|
|
180
180
|
expectedBackendId === undefined &&
|
|
181
181
|
expectedHostName === undefined) {
|
|
182
182
|
try {
|
|
183
|
-
const computed = hostSandboxNameFor(config);
|
|
183
|
+
const computed = hostSandboxNameFor(sandbox, config, setupScript);
|
|
184
184
|
if (computed) {
|
|
185
185
|
names.add(computed);
|
|
186
186
|
}
|
|
@@ -201,33 +201,11 @@ export async function invalidateManagedSandbox(sandbox, config, options = {}) {
|
|
|
201
201
|
export function managedSandboxHostName(backend) {
|
|
202
202
|
return backendHostNames.get(backend);
|
|
203
203
|
}
|
|
204
|
-
/**
|
|
205
|
-
* True when execute failed before the sandbox accepted the command.
|
|
206
|
-
*
|
|
207
|
-
* Matches only the cold-box readiness race (named error or message). Ambiguous
|
|
208
|
-
* stream/transport errors may have already started a command — those belong on
|
|
209
|
-
* other recreate matchers, not this classifier.
|
|
210
|
-
*/
|
|
211
|
-
function isSandboxStreamError(error) {
|
|
212
|
-
if (error instanceof Error && STREAM_NEVER_STARTED_NAMES.has(error.name)) {
|
|
213
|
-
return true;
|
|
214
|
-
}
|
|
215
|
-
if (error !== null &&
|
|
216
|
-
typeof error === "object" &&
|
|
217
|
-
STREAM_NEVER_STARTED_NAMES.has(error.constructor?.name ?? "")) {
|
|
218
|
-
return true;
|
|
219
|
-
}
|
|
220
|
-
const message = error instanceof Error
|
|
221
|
-
? `${error.name}: ${error.message}`
|
|
222
|
-
: typeof error === "string"
|
|
223
|
-
? error
|
|
224
|
-
: String(error);
|
|
225
|
-
return STREAM_NEVER_STARTED_RE.test(message);
|
|
226
|
-
}
|
|
227
204
|
/** True when a sandbox API error is worth invalidating + recreating once. */
|
|
228
205
|
export function isTransientSandboxError(error) {
|
|
229
|
-
// Never-started stream race is recreate-safe
|
|
230
|
-
//
|
|
206
|
+
// Never-started stream race is also recreate-safe (and retried in place first
|
|
207
|
+
// by executeWithStreamRetry during provision). Truncated HTTP bodies and
|
|
208
|
+
// peer-closed errors are recreate-only — do not replay in place.
|
|
231
209
|
if (isSandboxStreamError(error)) {
|
|
232
210
|
return true;
|
|
233
211
|
}
|
|
@@ -238,6 +216,16 @@ export function isTransientSandboxError(error) {
|
|
|
238
216
|
: String(error);
|
|
239
217
|
return /LangSmithSandboxError|HTTP 502|Bad Gateway|HTTP 503|HTTP 504|ECONNRESET|ETIMEDOUT|peer closed connection without sending complete message body|incomplete chunked read|sandbox.*(not found|gone|unavailable|terminated)/i.test(message);
|
|
240
218
|
}
|
|
219
|
+
/** Override the LangSmith SDK loader. Test-only. */
|
|
220
|
+
export function setLangSmithSandboxClientLoaderForTests(loader) {
|
|
221
|
+
langSmithSandboxClientLoader = loader ?? defaultLangSmithSandboxClientLoader;
|
|
222
|
+
}
|
|
223
|
+
/** Override the DeepAgents LangSmith backend wrapper. Test-only. */
|
|
224
|
+
export function setLangSmithSandboxBackendForTests(backend) {
|
|
225
|
+
langSmithSandboxBackendLoader = backend
|
|
226
|
+
? async () => backend
|
|
227
|
+
: defaultLangSmithSandboxBackendLoader;
|
|
228
|
+
}
|
|
241
229
|
/**
|
|
242
230
|
* Deployment this runtime belongs to, used to name the sandboxes it creates so
|
|
243
231
|
* `mda delete` can find them again.
|
|
@@ -251,22 +239,35 @@ export function managedDeploymentName() {
|
|
|
251
239
|
stringOption(process.env.MDA_DEPLOYMENT_NAME));
|
|
252
240
|
}
|
|
253
241
|
/**
|
|
254
|
-
* Deterministic sandbox name for a deployment and
|
|
242
|
+
* Deterministic sandbox name for a deployment, sandbox scope, and provisioning
|
|
243
|
+
* recipe.
|
|
244
|
+
*
|
|
245
|
+
* The inputs are digested rather than embedded because the scope key carries
|
|
246
|
+
* thread and assistant UUIDs; a short digest keeps the name clear of any length
|
|
247
|
+
* limit while staying stable across container restarts, which is what lets a
|
|
248
|
+
* restarted deployment re-adopt its sandbox instead of leaking it.
|
|
255
249
|
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
259
|
-
*
|
|
250
|
+
* Provisioning is part of the identity so that editing `setup.sh` or switching
|
|
251
|
+
* snapshots produces a different name. An adopted sandbox skips provisioning, so
|
|
252
|
+
* without this a redeploy would silently leave existing threads on the old
|
|
253
|
+
* environment.
|
|
260
254
|
*/
|
|
261
|
-
export function managedSandboxName(deployment, scopeKey) {
|
|
255
|
+
export function managedSandboxName(deployment, scopeKey, provisioning = {}) {
|
|
262
256
|
const digest = createHash("sha256")
|
|
263
257
|
.update(scopeKey)
|
|
258
|
+
.update("\0")
|
|
259
|
+
.update(provisioningFingerprint(provisioning))
|
|
264
260
|
.digest("hex")
|
|
265
261
|
.slice(0, SANDBOX_DIGEST_LENGTH);
|
|
266
262
|
return `${deployment}${SANDBOX_NAME_SEPARATOR}${digest}`;
|
|
267
263
|
}
|
|
268
|
-
|
|
269
|
-
|
|
264
|
+
/** Stable string for a provisioning recipe, insensitive to option ordering. */
|
|
265
|
+
function provisioningFingerprint(provisioning) {
|
|
266
|
+
const createOptions = Object.entries(provisioning.createOptions ?? {}).sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));
|
|
267
|
+
return JSON.stringify([createOptions, provisioning.setupScript ?? ""]);
|
|
268
|
+
}
|
|
269
|
+
async function createLangSmithSandbox(sandbox, setupScript, config, options, mode, scopeKey) {
|
|
270
|
+
const { backend, adopted, hostName } = await createLangSmithSandboxBackend(sandbox, scopeKey, setupScript);
|
|
270
271
|
await runConnectorSandboxHooks(options?.connectors, {
|
|
271
272
|
backend,
|
|
272
273
|
// An adopted sandbox already ran create-time provisioning in an earlier
|
|
@@ -275,54 +276,46 @@ async function createLangSmithSandbox(sandbox, config, options, mode, scopeKey)
|
|
|
275
276
|
config,
|
|
276
277
|
identity: options?.identity,
|
|
277
278
|
});
|
|
279
|
+
// Only a new sandbox needs `setup.sh`: an adopted one ran this exact script
|
|
280
|
+
// already, since a changed script yields a different sandbox name.
|
|
281
|
+
if (!adopted && setupScript && setupScript.trim().length > 0) {
|
|
282
|
+
await runSetupScript(backend, setupScript);
|
|
283
|
+
}
|
|
278
284
|
return { backend, hostName };
|
|
279
285
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
if (!recipe) {
|
|
292
|
-
throw new Error(`${RECIPE_SNAPSHOT_ENV} is not set. Redeploy with \`mda deploy\` so the ` +
|
|
293
|
-
"runtime can clone the baked sandbox recipe snapshot.");
|
|
286
|
+
function sandboxCreateOptions(sandbox) {
|
|
287
|
+
const { scope: _scope, apiKey: _apiKey, defaultTimeout: _defaultTimeout, templateName, snapshotId, ...resolvedCreateOptions } = sandbox.options ?? {};
|
|
288
|
+
const createSandboxOptions = resolvedCreateOptions;
|
|
289
|
+
if (snapshotId && templateName) {
|
|
290
|
+
throw new Error("snapshotId and templateName are mutually exclusive. Pass only one creation source.");
|
|
291
|
+
}
|
|
292
|
+
if (templateName) {
|
|
293
|
+
createSandboxOptions.snapshotName = templateName;
|
|
294
|
+
}
|
|
295
|
+
if (snapshotId) {
|
|
296
|
+
createSandboxOptions.snapshotId = snapshotId;
|
|
294
297
|
}
|
|
295
|
-
createSandboxOptions.snapshotName = recipe;
|
|
296
298
|
return createSandboxOptions;
|
|
297
299
|
}
|
|
298
|
-
function hostSandboxNameFor(config) {
|
|
300
|
+
function hostSandboxNameFor(sandbox, config, setupScript) {
|
|
299
301
|
const deployment = managedDeploymentName();
|
|
300
302
|
if (!deployment) {
|
|
301
303
|
return undefined;
|
|
302
304
|
}
|
|
303
|
-
return managedSandboxName(deployment, sandboxScopeKey(config)
|
|
305
|
+
return managedSandboxName(deployment, sandboxScopeKey(sandbox, config), {
|
|
306
|
+
createOptions: sandboxCreateOptions(sandbox),
|
|
307
|
+
setupScript,
|
|
308
|
+
});
|
|
304
309
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
*
|
|
308
|
-
* Both the API key and the workspace scope come from the environment `mda`
|
|
309
|
-
* wrote, so every sandbox call lands in the workspace holding the baked recipe.
|
|
310
|
-
*/
|
|
311
|
-
export function sandboxClientOptions(sandbox) {
|
|
310
|
+
async function sandboxClientFor(sandbox) {
|
|
311
|
+
const { SandboxClient } = await langSmithSandboxClientLoader();
|
|
312
312
|
const apiKey = stringOption(sandbox.options?.apiKey) ??
|
|
313
313
|
stringOption(process.env.LANGSMITH_API_KEY);
|
|
314
|
-
|
|
315
|
-
if (!apiKey && !workspaceId) {
|
|
316
|
-
return undefined;
|
|
317
|
-
}
|
|
318
|
-
return {
|
|
319
|
-
...(apiKey ? { apiKey } : {}),
|
|
320
|
-
...(workspaceId ? { headers: { [TENANT_HEADER]: workspaceId } } : {}),
|
|
321
|
-
};
|
|
314
|
+
return new SandboxClient(apiKey ? { apiKey } : undefined);
|
|
322
315
|
}
|
|
323
316
|
async function deleteHostSandbox(sandbox, name) {
|
|
324
317
|
try {
|
|
325
|
-
const client =
|
|
318
|
+
const client = await sandboxClientFor(sandbox);
|
|
326
319
|
if (typeof client.deleteSandbox !== "function") {
|
|
327
320
|
return;
|
|
328
321
|
}
|
|
@@ -336,22 +329,29 @@ async function deleteHostSandbox(sandbox, name) {
|
|
|
336
329
|
console.warn(`[mda] sandbox invalidate: delete failed name=${JSON.stringify(name)} err=${label}`);
|
|
337
330
|
}
|
|
338
331
|
}
|
|
339
|
-
async function createLangSmithSandboxBackend(sandbox, scopeKey) {
|
|
340
|
-
const { defaultTimeout } = sandbox.options ?? {};
|
|
332
|
+
async function createLangSmithSandboxBackend(sandbox, scopeKey, setupScript) {
|
|
333
|
+
const { apiKey = process.env.LANGSMITH_API_KEY, defaultTimeout } = sandbox.options ?? {};
|
|
341
334
|
const createSandboxOptions = sandboxCreateOptions(sandbox);
|
|
342
|
-
const
|
|
335
|
+
const { SandboxClient } = await langSmithSandboxClientLoader();
|
|
336
|
+
const sdkOptions = stringOption(apiKey);
|
|
337
|
+
const client = new SandboxClient(sdkOptions ? { apiKey: sdkOptions } : undefined);
|
|
343
338
|
const deployment = managedDeploymentName();
|
|
344
339
|
const sandboxName = deployment
|
|
345
|
-
? managedSandboxName(deployment, scopeKey
|
|
340
|
+
? managedSandboxName(deployment, scopeKey, {
|
|
341
|
+
createOptions: createSandboxOptions,
|
|
342
|
+
setupScript,
|
|
343
|
+
})
|
|
346
344
|
: undefined;
|
|
347
345
|
const { sandbox: langSmithSandbox, adopted } = await resolveSandboxInstance(client, createSandboxOptions, sandboxName);
|
|
348
|
-
const
|
|
346
|
+
const resolved = langSmithSandbox;
|
|
347
|
+
const hostName = stringOption(resolved.name) ?? sandboxName;
|
|
349
348
|
console.info(`[mda] sandbox resolve: ${adopted ? "adopted" : "created"} ` +
|
|
350
349
|
`name=${JSON.stringify(hostName ?? null)} ` +
|
|
351
|
-
`id=${JSON.stringify(
|
|
350
|
+
`id=${JSON.stringify(resolved.id ?? null)} ` +
|
|
352
351
|
`scope=${JSON.stringify(scopeKey)}`);
|
|
352
|
+
const Backend = await langSmithSandboxBackendLoader();
|
|
353
353
|
return {
|
|
354
|
-
backend: new
|
|
354
|
+
backend: new Backend({
|
|
355
355
|
sandbox: langSmithSandbox,
|
|
356
356
|
defaultTimeout,
|
|
357
357
|
}),
|
|
@@ -426,6 +426,9 @@ async function adoptSandbox(client, name) {
|
|
|
426
426
|
catch {
|
|
427
427
|
return undefined;
|
|
428
428
|
}
|
|
429
|
+
if (existing === undefined || existing === null) {
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
429
432
|
const status = stringOption(existing.status)?.toLowerCase();
|
|
430
433
|
// No status reported: assume the SDK handed back a usable sandbox.
|
|
431
434
|
if (status === undefined || ADOPTABLE_STATUS.has(status)) {
|
|
@@ -449,13 +452,29 @@ function isSandboxNameConflict(error) {
|
|
|
449
452
|
function sandboxNameSuffix() {
|
|
450
453
|
return randomBytes(4).toString("hex");
|
|
451
454
|
}
|
|
455
|
+
function threadSyncKey(sandbox, config) {
|
|
456
|
+
const scope = sandbox.options?.scope ?? "thread";
|
|
457
|
+
if (scope === "agent") {
|
|
458
|
+
// Agent-scoped sandboxes are shared; sync once per thread that uses them.
|
|
459
|
+
try {
|
|
460
|
+
return `thread:${threadIdFromConfig(config)}`;
|
|
461
|
+
}
|
|
462
|
+
catch {
|
|
463
|
+
return "thread:__missing__";
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
return sandboxScopeKey(sandbox, config);
|
|
467
|
+
}
|
|
452
468
|
function threadIdFromConfig(config) {
|
|
453
469
|
const threadId = configValue(config, "thread_id");
|
|
454
470
|
if (threadId === undefined) {
|
|
455
|
-
throw new Error("
|
|
471
|
+
throw new Error('sandbox scope "thread" requires configurable.thread_id');
|
|
456
472
|
}
|
|
457
473
|
return threadId;
|
|
458
474
|
}
|
|
475
|
+
function assistantIdFromConfig(config) {
|
|
476
|
+
return configValue(config, "assistant_id") ?? "agent";
|
|
477
|
+
}
|
|
459
478
|
function stringOption(value) {
|
|
460
479
|
if (typeof value !== "string")
|
|
461
480
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-manager.js","sourceRoot":"","sources":["../../src/runtime/sandbox-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandbox-manager.js","sourceRoot":"","sources":["../../src/runtime/sandbox-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMtD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GAEzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;AAChE,kFAAkF;AAClF,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAU,CAAC;AAClD,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAkB,CAAC;AAoBvD;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,oEAAoE;AACpE,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,kDAAkD;AAClD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAEvD,8DAA8D;AAC9D,MAAM,cAAc,GAAG,SAAS,CAAC;AAgBjC,MAAM,mCAAmC,GACvC,KAAK,IAAI,EAAE;IACT,MAAM,aAAa,GAAG,IAAI,QAAQ,CAChC,WAAW,EACX,0BAA0B,CACgB,CAAC;IAC7C,OAAO,CAAC,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAE/C,CAAC;AACJ,CAAC,CAAC;AAEJ,IAAI,4BAA4B,GAAG,mCAAmC,CAAC;AAUvE,MAAM,oCAAoC,GACxC,KAAK,IAAI,EAAE;IACT,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACxD,OAAO,gBAAiE,CAAC;AAC3E,CAAC,CAAC;AAEJ,IAAI,6BAA6B,GAAG,oCAAoC,CAAC;AAQzE;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA0B,EAC1B,WAA+B,EAC/B,MAAoC,EACpC,OAAsC;IAEtC,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,GAAwB;YACnC,aAAa,EAAE,IAAI,GAAG,EAAU;YAChC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE;YAC5B,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,sBAAsB,CACxD,OAAO,EACP,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EACR,GAAG,CACJ,CAAC;gBACF,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC5B,MAAM,EAAE,GAAI,OAA4B,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,SAAS;oBACf,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,IAAI,QAAQ,EAAE,CAAC;oBACb,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC1C,CAAC;gBACD,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACrC,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC;SACH,CAAC;QACF,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5C,qEAAqE;YACrE,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,GAAG,OAAO,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC;IAErB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAClD,yEAAyE;YACzE,iEAAiE;YACjE,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC9B,OAAO;YACT,CAAC;YACD,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxC,oEAAoE;gBACpE,8EAA8E;gBAC9E,MAAM,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE;oBAClD,OAAO;oBACP,IAAI,EAAE,aAAa;oBACnB,MAAM;oBACN,QAAQ,EAAE,OAAO,EAAE,QAAQ;iBAC5B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,2DAA2D;YAC3D,MAAM,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE;gBAClD,OAAO;gBACP,IAAI,EAAE,OAAO;gBACb,MAAM;gBACN,QAAQ,EAAE,OAAO,EAAE,QAAQ;aAC5B,CAAC,CAAC;YACH,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC;QACvB,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAC7B,OAA0B,EAC1B,MAAoC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC;IACjD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,SAAS,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,gCAAgC;IAC9C,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,uBAAuB,CAAC,KAAK,EAAE,CAAC;AAClC,CAAC;AAWD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA0B,EAC1B,MAAoC,EACpC,oBAA+D;IAE/D,MAAM,OAAO,GACX,OAAO,oBAAoB,KAAK,QAAQ;QACxC,oBAAoB,KAAK,SAAS;QAChC,CAAC,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE;QACvC,CAAC,CAAC,oBAAoB,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAErE,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEtC,IACE,KAAK,KAAK,SAAS;QACnB,CAAC,iBAAiB,KAAK,SAAS,IAAI,gBAAgB,KAAK,SAAS,CAAC,EACnE,CAAC;QACD,MAAM,OAAO,GACX,CAAC,iBAAiB,KAAK,SAAS;YAC9B,KAAK,CAAC,SAAS,KAAK,iBAAiB,CAAC;YACxC,CAAC,iBAAiB,KAAK,SAAS;gBAC9B,gBAAgB,KAAK,SAAS;gBAC9B,KAAK,CAAC,QAAQ,KAAK,gBAAgB,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,QAAQ,GAAG,KAAK,CAAC;YACjB,kEAAkE;YAClE,4CAA4C;YAC5C,IACE,gBAAgB;gBAChB,KAAK,CAAC,QAAQ;gBACd,gBAAgB,KAAK,KAAK,CAAC,QAAQ,EACnC,CAAC;gBACD,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,CAAC;YACD,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,gBAAgB,IAAI,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IACD,IACE,QAAQ;QACR,iBAAiB,KAAK,SAAS;QAC/B,gBAAgB,KAAK,SAAS,EAC9B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAClE,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;QACzE,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,8EAA8E;IAC9E,yEAAyE;IACzE,iEAAiE;IACjE,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE;QACnC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,0NAA0N,CAAC,IAAI,CACpO,OAAO,CACR,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,uCAAuC,CACrD,MAAqC;IAErC,4BAA4B,GAAG,MAAM,IAAI,mCAAmC,CAAC;AAC/E,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,kCAAkC,CAChD,OAGY;IAEZ,6BAA6B,GAAG,OAAO;QACrC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,OAAwD;QACtE,CAAC,CAAC,oCAAoC,CAAC;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,CACL,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACnD,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAC9C,CAAC;AACJ,CAAC;AAUD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,QAAgB,EAChB,YAAY,GAAwB,EAAE;IAEtC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;SAChC,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;SAC7C,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACnC,OAAO,GAAG,UAAU,GAAG,sBAAsB,GAAG,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED,+EAA+E;AAC/E,SAAS,uBAAuB,CAAC,YAAiC;IAChE,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CACzE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChE,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAA0B,EAC1B,WAA+B,EAC/B,MAAoC,EACpC,OAAiD,EACjD,IAAwB,EACxB,QAAgB;IAKhB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,6BAA6B,CACxE,OAAO,EACP,QAAQ,EACR,WAAW,CACZ,CAAC;IACF,MAAM,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE;QAClD,OAAO;QACP,wEAAwE;QACxE,0DAA0D;QAC1D,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAC9B,MAAM;QACN,QAAQ,EAAE,OAAO,EAAE,QAAQ;KAC5B,CAAC,CAAC;IACH,4EAA4E;IAC5E,mEAAmE;IACnE,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAA0B;IAE1B,MAAM,EACJ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,cAAc,EAAE,eAAe,EAC/B,YAAY,EACZ,UAAU,EACV,GAAG,qBAAqB,EACzB,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1B,MAAM,oBAAoB,GAA4B,qBAAqB,CAAC;IAE5E,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;IACnD,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,oBAAoB,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/C,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA0B,EAC1B,MAAoC,EACpC,WAA+B;IAE/B,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,kBAAkB,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;QACtE,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;QAC5C,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAA0B;IAE1B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,4BAA4B,EAAE,CAAC;IAC/D,MAAM,MAAM,GACV,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;QACrC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAA0B,EAC1B,IAAY;IAEZ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CACV,0CAA0C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACjE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,GACT,KAAK,YAAY,KAAK;YACpB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE;YACnC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CACV,gDAAgD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,EAAE,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,OAA0B,EAC1B,QAAgB,EAChB,WAA+B;IAM/B,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAC9D,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACxB,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE3D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,4BAA4B,EAAE,CAAC;IAC/D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,aAAa,CAC9B,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC;IACF,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,UAAU;QAC5B,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE;YACvC,aAAa,EAAE,oBAAoB;YACnC,WAAW;SACZ,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,sBAAsB,CACzE,MAAM,EACN,oBAAoB,EACpB,WAAW,CACZ,CAAC;IACF,MAAM,QAAQ,GAAG,gBAAoD,CAAC;IACtE,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC;IAC5D,OAAO,CAAC,IAAI,CACV,0BAA0B,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG;QAC1D,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG;QAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG;QAC5C,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CACtC,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,6BAA6B,EAAE,CAAC;IACtD,OAAO;QACL,OAAO,EAAE,IAAI,OAAO,CAAC;YACnB,OAAO,EAAE,gBAAgB;YACzB,cAAc;SACf,CAAC;QACF,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC;AAQD;;;;;;GAMG;AACH,KAAK,UAAU,sBAAsB,CACnC,MAA6B,EAC7B,oBAA6C,EAC7C,IAAwB;IAExB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,MAAM,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC;YACzD,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACzC,GAAG,oBAAoB;YACvB,IAAI;SACL,CAAC,CAAC;QACH,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,4EAA4E;QAC5E,wEAAwE;QACxE,yDAAyD;QACzD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,mEAAmE;QACnE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACzC,GAAG,oBAAoB;YACvB,IAAI,EAAE,GAAG,IAAI,IAAI,iBAAiB,EAAE,EAAE;SACvC,CAAC,CAAC;QACH,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CACzB,MAA6B,EAC7B,IAAY;IAEZ,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CACxB,QAAmC,CAAC,MAAM,CAC5C,EAAE,WAAW,EAAE,CAAC;IACjB,mEAAmE;IACnE,IAAI,MAAM,KAAK,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,MAAM,KAAK,cAAc,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;QAC3E,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2EAA2E;AAC3E,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7E,OAAO,uDAAuD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CACpB,OAA0B,EAC1B,MAAoC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC;IACjD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,0EAA0E;QAC1E,IAAI,CAAC;YACH,OAAO,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,oBAAoB,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAoC;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAoC;IACjE,OAAO,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,OAAO,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAClB,MAAoC,EACpC,GAAW;IAEX,OAAO,CACL,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QACrC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry sandbox `execute` when the command stream dies before start.
|
|
3
|
+
*
|
|
4
|
+
* LangSmith sandboxes can return HTTP 201 / accept uploads while the websocket
|
|
5
|
+
* command channel is not ready yet. The first `execute` then fails with
|
|
6
|
+
* `Command stream ended before 'started' message`. Cold GitHub provision and
|
|
7
|
+
* `setup.sh` hit this path immediately after create; retrying the same execute
|
|
8
|
+
* with backoff is cheaper (and more reliable) than throwing away the box.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isSandboxStreamError(error: unknown): boolean;
|
|
11
|
+
export declare function executeWithStreamRetry<T>(execute: (command: string) => Promise<T> | T, command: string, options?: {
|
|
12
|
+
/** Fixed operation name for Host logs. Never pass command contents. */
|
|
13
|
+
label?: string;
|
|
14
|
+
attempts?: number;
|
|
15
|
+
baseDelayMs?: number;
|
|
16
|
+
sleep?: (ms: number) => Promise<void>;
|
|
17
|
+
}): Promise<T>;
|
|
18
|
+
//# sourceMappingURL=sandbox-stream-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-stream-retry.d.ts","sourceRoot":"","sources":["../../src/runtime/sandbox-stream-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwBH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAoB5D;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAC5C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,GACL,OAAO,CAAC,CAAC,CAAC,CAsDZ"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry sandbox `execute` when the command stream dies before start.
|
|
3
|
+
*
|
|
4
|
+
* LangSmith sandboxes can return HTTP 201 / accept uploads while the websocket
|
|
5
|
+
* command channel is not ready yet. The first `execute` then fails with
|
|
6
|
+
* `Command stream ended before 'started' message`. Cold GitHub provision and
|
|
7
|
+
* `setup.sh` hit this path immediately after create; retrying the same execute
|
|
8
|
+
* with backoff is cheaper (and more reliable) than throwing away the box.
|
|
9
|
+
*/
|
|
10
|
+
const STREAM_EXECUTE_ATTEMPTS = 6;
|
|
11
|
+
// Cold boxes often need several seconds after HTTP 201 before the websocket
|
|
12
|
+
// command channel is ready — a 1s base burned through attempts too quickly.
|
|
13
|
+
const STREAM_EXECUTE_BASE_DELAY_MS = 2_000;
|
|
14
|
+
// Only the "never started" race is safe to retry in place. Broader transport
|
|
15
|
+
// errors (bare SandboxOperationError, truncated HTTP bodies) can arrive after
|
|
16
|
+
// the command began or finished — those belong on the invalidate/recreate path.
|
|
17
|
+
const STREAM_NEVER_STARTED_RE = /Command stream ended before ['"]started['"] message/i;
|
|
18
|
+
const STREAM_NEVER_STARTED_NAMES = new Set([
|
|
19
|
+
"_StreamEndedBeforeStarted",
|
|
20
|
+
"StreamEndedBeforeStarted",
|
|
21
|
+
]);
|
|
22
|
+
function errorLabel(error) {
|
|
23
|
+
if (error instanceof Error) {
|
|
24
|
+
return `${error.name}: ${error.message}`;
|
|
25
|
+
}
|
|
26
|
+
return String(error);
|
|
27
|
+
}
|
|
28
|
+
export function isSandboxStreamError(error) {
|
|
29
|
+
if (error instanceof Error && STREAM_NEVER_STARTED_NAMES.has(error.name)) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
if (error !== null &&
|
|
33
|
+
typeof error === "object" &&
|
|
34
|
+
STREAM_NEVER_STARTED_NAMES.has(error.constructor?.name ?? "")) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
const message = error instanceof Error
|
|
38
|
+
? `${error.name}: ${error.message}`
|
|
39
|
+
: typeof error === "string"
|
|
40
|
+
? error
|
|
41
|
+
: String(error);
|
|
42
|
+
return STREAM_NEVER_STARTED_RE.test(message);
|
|
43
|
+
}
|
|
44
|
+
export async function executeWithStreamRetry(execute, command, options = {}) {
|
|
45
|
+
const attempts = options.attempts ?? STREAM_EXECUTE_ATTEMPTS;
|
|
46
|
+
const baseDelayMs = options.baseDelayMs ?? STREAM_EXECUTE_BASE_DELAY_MS;
|
|
47
|
+
const sleep = options.sleep ??
|
|
48
|
+
((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
49
|
+
if (attempts < 1) {
|
|
50
|
+
throw new Error("attempts must be >= 1");
|
|
51
|
+
}
|
|
52
|
+
let lastError;
|
|
53
|
+
const op = options.label?.trim() || "execute";
|
|
54
|
+
const started = Date.now();
|
|
55
|
+
for (let attempt = 0; attempt < attempts; attempt++) {
|
|
56
|
+
const attemptStarted = Date.now();
|
|
57
|
+
try {
|
|
58
|
+
const result = await execute(command);
|
|
59
|
+
if (attempt > 0) {
|
|
60
|
+
console.warn(`[mda] sandbox stream execute recovered after ${attempt + 1} attempt(s) ` +
|
|
61
|
+
`(${((Date.now() - started) / 1000).toFixed(1)}s total) op=${JSON.stringify(op)}`);
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
lastError = error;
|
|
67
|
+
const elapsedAttempt = (Date.now() - attemptStarted) / 1000;
|
|
68
|
+
if (!isSandboxStreamError(error)) {
|
|
69
|
+
console.warn(`[mda] sandbox execute failed (not stream-retryable) ` +
|
|
70
|
+
`attempt=${attempt + 1}/${attempts} elapsed=${elapsedAttempt.toFixed(1)}s ` +
|
|
71
|
+
`op=${JSON.stringify(op)} err=${errorLabel(error)}`);
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
if (attempt >= attempts - 1) {
|
|
75
|
+
console.warn(`[mda] sandbox stream execute exhausted retries ` +
|
|
76
|
+
`attempts=${attempts} elapsed=${((Date.now() - started) / 1000).toFixed(1)}s ` +
|
|
77
|
+
`op=${JSON.stringify(op)} err=${errorLabel(error)}`);
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
const delayMs = baseDelayMs * 2 ** attempt;
|
|
81
|
+
console.warn(`[mda] sandbox stream not ready; retrying execute ` +
|
|
82
|
+
`attempt=${attempt + 1}/${attempts} elapsed=${elapsedAttempt.toFixed(1)}s ` +
|
|
83
|
+
`sleep=${(delayMs / 1000).toFixed(1)}s op=${JSON.stringify(op)} ` +
|
|
84
|
+
`err=${errorLabel(error)}`);
|
|
85
|
+
await sleep(delayMs);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
throw lastError;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=sandbox-stream-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-stream-retry.js","sourceRoot":"","sources":["../../src/runtime/sandbox-stream-retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ExecuteResponse, SandboxBackendProtocolV2 } from "deepagents";
|
|
2
|
+
/**
|
|
3
|
+
* Provision a freshly created sandbox by running `setup.sh` inside it. Reused
|
|
4
|
+
* sandboxes never reach this path, so the script runs once per new sandbox.
|
|
5
|
+
*
|
|
6
|
+
* When the backend supports file transfer, the script is uploaded and executed
|
|
7
|
+
* by path; otherwise it is run inline (see {@link runSetupScriptInline}).
|
|
8
|
+
*/
|
|
9
|
+
export declare function runSetupScript(backend: SandboxBackendProtocolV2, script: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Run `setup.sh` by piping its contents straight to the backend's shell.
|
|
12
|
+
*
|
|
13
|
+
* Kept as a compatibility fallback for sandbox backend implementations that
|
|
14
|
+
* conform to the execute surface but do not expose upload support.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runSetupScriptInline(backend: SandboxBackendProtocolV2, script: string): Promise<void>;
|
|
17
|
+
export declare function assertSetupSucceeded(result: Pick<ExecuteResponse, "exitCode" | "output">): void;
|
|
18
|
+
//# sourceMappingURL=setup-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-script.d.ts","sourceRoot":"","sources":["../../src/runtime/setup-script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAO5E;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,QAAQ,CAAC,GACnD,IAAI,CAON"}
|