managed-deepagents 0.10.1-dev.2 → 0.10.1-dev.20
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 +26 -13
- package/dist/agent-auth.d.ts +15 -12
- package/dist/agent-auth.d.ts.map +1 -1
- package/dist/agent-auth.js +47 -16
- package/dist/agent-auth.js.map +1 -1
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +2 -0
- package/dist/browser.js.map +1 -1
- package/dist/channels/delivery.d.ts.map +1 -1
- package/dist/channels/delivery.js +12 -2
- package/dist/channels/delivery.js.map +1 -1
- package/dist/channels/github/app-setup.d.ts.map +1 -1
- package/dist/channels/github/app-setup.js +2 -0
- package/dist/channels/github/app-setup.js.map +1 -1
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +2 -0
- package/dist/channels/github/index.js.map +1 -1
- package/dist/channels/github/schema.d.ts +329 -1
- package/dist/channels/github/schema.d.ts.map +1 -1
- package/dist/channels/github/schema.js +17 -0
- package/dist/channels/github/schema.js.map +1 -1
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +6 -1
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/linear/index.d.ts.map +1 -1
- package/dist/channels/linear/index.js +75 -12
- package/dist/channels/linear/index.js.map +1 -1
- package/dist/channels/linear/types.d.ts +3 -1
- package/dist/channels/linear/types.d.ts.map +1 -1
- package/dist/channels/resolve-user.d.ts +7 -0
- package/dist/channels/resolve-user.d.ts.map +1 -1
- package/dist/channels/resolve-user.js +7 -0
- package/dist/channels/resolve-user.js.map +1 -1
- package/dist/channels/slack/events.d.ts +2 -0
- package/dist/channels/slack/events.d.ts.map +1 -1
- package/dist/channels/slack/events.js +1 -1
- package/dist/channels/slack/events.js.map +1 -1
- package/dist/channels/slack/files.d.ts.map +1 -1
- package/dist/channels/slack/files.js +41 -26
- package/dist/channels/slack/files.js.map +1 -1
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +6 -6
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +5 -1
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/credential-gate.d.ts.map +1 -1
- package/dist/credential-gate.js +54 -5
- package/dist/credential-gate.js.map +1 -1
- package/dist/ingress/runs.d.ts +5 -0
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +35 -8
- package/dist/ingress/runs.js.map +1 -1
- package/dist/runtime/browser-langsmith.d.ts +7 -3
- package/dist/runtime/browser-langsmith.d.ts.map +1 -1
- package/dist/runtime/browser-langsmith.js +35 -14
- package/dist/runtime/browser-langsmith.js.map +1 -1
- package/dist/runtime/browser.d.ts +6 -4
- package/dist/runtime/browser.d.ts.map +1 -1
- package/dist/runtime/browser.js +135 -46
- package/dist/runtime/browser.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +16 -10
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +8 -0
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +22 -0
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/memory/user-memory.d.ts +1 -0
- package/dist/runtime/memory/user-memory.d.ts.map +1 -1
- package/dist/runtime/memory/user-memory.js +5 -10
- package/dist/runtime/memory/user-memory.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/run-listener.d.ts +2 -1
- package/dist/telemetry/run-listener.d.ts.map +1 -1
- package/dist/telemetry/run-listener.js +34 -8
- package/dist/telemetry/run-listener.js.map +1 -1
- package/dist/telemetry/run.d.ts +20 -4
- package/dist/telemetry/run.d.ts.map +1 -1
- package/dist/telemetry/run.js +7 -1
- package/dist/telemetry/run.js.map +1 -1
- package/package.json +11 -10
|
@@ -13,7 +13,7 @@ import { tmpdir } from "node:os";
|
|
|
13
13
|
import { join } from "node:path";
|
|
14
14
|
import { setTimeout as sleep } from "node:timers/promises";
|
|
15
15
|
import { getExtensionArchive, localBrowser, Stagehand, } from "@browserbasehq/stagehand";
|
|
16
|
-
import { SandboxClient } from "langsmith/sandbox";
|
|
16
|
+
import { LangSmithResourceNotFoundError, SandboxClient, } from "langsmith/sandbox";
|
|
17
17
|
import { z } from "zod";
|
|
18
18
|
import { StagehandFacadeTools } from "./browser-facade.js";
|
|
19
19
|
import { managedDeploymentName, managedSandboxName, } from "./sandbox-manager.js";
|
|
@@ -100,17 +100,18 @@ export function browserName(key, generation = 0) {
|
|
|
100
100
|
export async function usableBrowser(api, boxes, key, idleTtlSeconds) {
|
|
101
101
|
for (let generation = 0; generation < BROWSER_GENERATIONS; generation++) {
|
|
102
102
|
const name = browserName(key, generation);
|
|
103
|
+
await create(api, name, idleTtlSeconds);
|
|
104
|
+
let box;
|
|
103
105
|
try {
|
|
104
|
-
|
|
105
|
-
// the window sees it sharp; it can only be chosen at creation.
|
|
106
|
-
const create = { name, idle_ttl_seconds: idleTtlSeconds, hidpi: true };
|
|
107
|
-
await request(api, "POST", `${api.url}/browsers`, create);
|
|
106
|
+
box = await boxes.getSandbox(name);
|
|
108
107
|
}
|
|
109
108
|
catch (err) {
|
|
110
|
-
if (err
|
|
111
|
-
throw err;
|
|
109
|
+
if (!(err instanceof LangSmithResourceNotFoundError))
|
|
110
|
+
throw err;
|
|
111
|
+
// It finished deleting since: its name is free.
|
|
112
|
+
await create(api, name, idleTtlSeconds);
|
|
113
|
+
box = await boxes.getSandbox(name);
|
|
112
114
|
}
|
|
113
|
-
let box = await boxes.getSandbox(name);
|
|
114
115
|
if (UNUSABLE.has(box.status ?? ""))
|
|
115
116
|
continue;
|
|
116
117
|
if (box.status === "stopped") {
|
|
@@ -120,6 +121,19 @@ export async function usableBrowser(api, boxes, key, idleTtlSeconds) {
|
|
|
120
121
|
}
|
|
121
122
|
throw new Error("could not find or create a usable browser");
|
|
122
123
|
}
|
|
124
|
+
/** Create browser `name`, unless it exists. */
|
|
125
|
+
async function create(api, name, idleTtlSeconds) {
|
|
126
|
+
try {
|
|
127
|
+
// HiDPI renders at twice the resolution, so a person watching or driving
|
|
128
|
+
// the window sees it sharp; it can only be chosen at creation.
|
|
129
|
+
const body = { name, idle_ttl_seconds: idleTtlSeconds, hidpi: true };
|
|
130
|
+
await request(api, "POST", `${api.url}/browsers`, body);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
if (err.status !== 409)
|
|
134
|
+
throw err; // conflict: it exists
|
|
135
|
+
}
|
|
136
|
+
}
|
|
123
137
|
/** LangSmith's sandboxes API, and its headers: the key, and the workspace if set. */
|
|
124
138
|
export function browsersApi() {
|
|
125
139
|
const workspace = process.env.LANGSMITH_WORKSPACE_ID;
|
|
@@ -163,7 +177,9 @@ export async function openSession(key, windowName, idleTtlSeconds, onCloseReques
|
|
|
163
177
|
const cdpUrl = (await request(api, "GET", debugging)).webSocketDebuggerUrl;
|
|
164
178
|
const port = await windowPort(box, window.id);
|
|
165
179
|
const localUrl = `ws://127.0.0.1:${port}/devtools/browser/${window.id}`;
|
|
166
|
-
const attach = () => connect(windowName, name, cdpUrl, localUrl, headers, onCloseRequested
|
|
180
|
+
const attach = () => connect(windowName, name, cdpUrl, localUrl, headers, onCloseRequested, {
|
|
181
|
+
box: box.id,
|
|
182
|
+
});
|
|
167
183
|
try {
|
|
168
184
|
return await attach();
|
|
169
185
|
}
|
|
@@ -173,6 +189,9 @@ export async function openSession(key, windowName, idleTtlSeconds, onCloseReques
|
|
|
173
189
|
}
|
|
174
190
|
// A client that never closed (a crash, another replica) left its claim in the
|
|
175
191
|
// extension; reloading it clears the claim without restarting Chrome.
|
|
192
|
+
// Known limit: two live clients of one browser (two replicas, user scope)
|
|
193
|
+
// take it from each other; the loser fails a call (~13 s RPC timeout) and
|
|
194
|
+
// reopens, never on the wrong window.
|
|
176
195
|
await reloadExtension(cdpUrl, headers);
|
|
177
196
|
return attach();
|
|
178
197
|
}
|
|
@@ -188,15 +207,15 @@ async function findWindow(api, browser, name) {
|
|
|
188
207
|
/**
|
|
189
208
|
* Give the user `key`'s window, creating either as needed.
|
|
190
209
|
*
|
|
191
|
-
* Returns the browser's name, the window's id,
|
|
192
|
-
* drives it with.
|
|
210
|
+
* Returns the browser's name, the window's id, a short-lived link the user
|
|
211
|
+
* drives it with, and the browser sandbox's id.
|
|
193
212
|
*/
|
|
194
213
|
export async function handOver(key, windowName, idleTtlSeconds) {
|
|
195
214
|
const api = browsersApi();
|
|
196
215
|
const { headers } = api;
|
|
197
216
|
const browsers = `${api.url}/browsers`;
|
|
198
217
|
const boxes = new SandboxClient({ apiKey: headers["X-Api-Key"], headers });
|
|
199
|
-
const { name } = await usableBrowser(api, boxes, key, idleTtlSeconds);
|
|
218
|
+
const { name, box } = await usableBrowser(api, boxes, key, idleTtlSeconds);
|
|
200
219
|
const window = await findWindow(api, `${browsers}/${name}`, windowName);
|
|
201
220
|
const windowApi = `${browsers}/${name}/attachments/${window.id}`;
|
|
202
221
|
await request(api, "POST", `${windowApi}/controller`, { controller: "user" });
|
|
@@ -205,7 +224,7 @@ export async function handOver(key, windowName, idleTtlSeconds) {
|
|
|
205
224
|
embed_origins: await embedOrigins(api),
|
|
206
225
|
};
|
|
207
226
|
const link = await request(api, "POST", `${windowApi}/links`, body);
|
|
208
|
-
return { browser: name, windowId: window.id, url: link.act_url };
|
|
227
|
+
return { browser: name, windowId: window.id, url: link.act_url, box: box.id };
|
|
209
228
|
}
|
|
210
229
|
/** How the handoff ended, or `undefined` while the user still has the window. */
|
|
211
230
|
export async function handoffStatus(pending) {
|
|
@@ -297,7 +316,8 @@ async function request(api, method, url, body, timeoutMs = 90_000) {
|
|
|
297
316
|
}
|
|
298
317
|
return (text ? JSON.parse(text) : undefined);
|
|
299
318
|
}
|
|
300
|
-
export async function connect(window, browser, cdpUrl, localUrl, headers, onCloseRequested
|
|
319
|
+
export async function connect(window, browser, cdpUrl, localUrl, headers, onCloseRequested, { box } = {} // the browser sandbox's id
|
|
320
|
+
) {
|
|
301
321
|
const handle = await localBrowser.connect({
|
|
302
322
|
cdpUrl,
|
|
303
323
|
extensionCdpUrl: localUrl,
|
|
@@ -320,6 +340,7 @@ export async function connect(window, browser, cdpUrl, localUrl, headers, onClos
|
|
|
320
340
|
return {
|
|
321
341
|
window,
|
|
322
342
|
browser,
|
|
343
|
+
box,
|
|
323
344
|
stagehand,
|
|
324
345
|
tools,
|
|
325
346
|
artifacts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-langsmith.js","sourceRoot":"","sources":["../../src/runtime/browser-langsmith.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-langsmith.js","sourceRoot":"","sources":["../../src/runtime/browser-langsmith.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { type LangGraphRunnableConfig } from "@langchain/langgraph";
|
|
21
21
|
import { Client } from "@langchain/langgraph-sdk";
|
|
22
|
-
import { type BackendProtocolV2, type SandboxBackendProtocolV2 } from "deepagents";
|
|
22
|
+
import { type AnyBackendProtocol, type BackendProtocolV2, type SandboxBackendProtocolV2 } from "deepagents";
|
|
23
23
|
import { type AgentMiddleware } from "langchain";
|
|
24
24
|
import type { BrowserDefinition, BrowserScope } from "../browser.js";
|
|
25
25
|
import { type BrowserHandoffStatus, type PendingBrowserHandoff } from "./browser-langsmith.js";
|
|
@@ -48,8 +48,10 @@ export type BrowserMiddleware = AgentMiddleware & {
|
|
|
48
48
|
/**
|
|
49
49
|
* Give the agent Stagehand's tools, named `browser_run`, `browser_snapshot` and
|
|
50
50
|
* so on, plus `browser_record` for a video.
|
|
51
|
+
*
|
|
52
|
+
* Without a sandbox, files save to `backend`, the agent's own, where its file tools look.
|
|
51
53
|
*/
|
|
52
|
-
export declare function createBrowserMiddleware(options: Omit<BrowserDefinition, "kind"
|
|
54
|
+
export declare function createBrowserMiddleware(options: Omit<BrowserDefinition, "kind">, backend?: AnyBackendProtocol): BrowserMiddleware;
|
|
53
55
|
/**
|
|
54
56
|
* Start a run of the watcher graph on a thread of its own, as deepagents starts
|
|
55
57
|
* an async subagent's task: the thread's metadata names this agent, which the
|
|
@@ -121,8 +123,8 @@ export declare function wakeMessage(status: BrowserHandoffStatus): {
|
|
|
121
123
|
};
|
|
122
124
|
};
|
|
123
125
|
};
|
|
124
|
-
/** Write `data` to absolute `path` in
|
|
125
|
-
export declare function save(backend:
|
|
126
|
+
/** Write `data` to absolute `path` in `backend`, creating its folder. */
|
|
127
|
+
export declare function save(backend: AnyBackendProtocol, path: string, data: Uint8Array): Promise<string>;
|
|
126
128
|
/** Under user scope, a person's browser; service principals stand for many people. */
|
|
127
129
|
export declare function browserKey(serverInfo: ManagedServerInfo | undefined, thread: string, scope: BrowserScope): string;
|
|
128
130
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/runtime/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAYH,OAAO,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/runtime/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAYH,OAAO,EAQL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAKnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUrE,OAAO,EAeL,KAAK,oBAAoB,EAEzB,KAAK,qBAAqB,EAE3B,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAoE5D,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAsB3D,yFAAyF;AACzF,UAAU,cAAc;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqDD,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAChD;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,EACxC,OAAO,GAAE,kBAAuC,GAC/C,iBAAiB,CA6EnB;AAqGD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,QAAA,MAAM,YAAY;;;;;;EAEhB,CAAC;AAEH;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,EAChC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,OAAO,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CA0B7C;AAED,oFAAoF;AACpF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAIf,CAAC;AA6Fb;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB;;;;;;;;;EAQvD;AAkXD,yEAAyE;AACzE,wBAAsB,IAAI,CACxB,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAeD,sFAAsF;AACtF,wBAAgB,UAAU,CACxB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,MAAM,CASR;AA0BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,wBAAwB,GAAG,SAAS,CAKtC;AAmBD,gFAAgF;AAChF,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlE"}
|
package/dist/runtime/browser.js
CHANGED
|
@@ -22,30 +22,33 @@ import { readdir, readFile, unlink } from "node:fs/promises";
|
|
|
22
22
|
import { join, posix, relative, sep } from "node:path";
|
|
23
23
|
import { SystemMessage, ToolMessage, } from "@langchain/core/messages";
|
|
24
24
|
import { tool } from "@langchain/core/tools";
|
|
25
|
-
import { Annotation, Command, END, START, StateGraph, } from "@langchain/langgraph";
|
|
25
|
+
import { Annotation, Command, END, ReducedValue, START, StateGraph, StateSchema, } from "@langchain/langgraph";
|
|
26
26
|
import { Client } from "@langchain/langgraph-sdk";
|
|
27
|
-
import { isSandboxBackend, } from "deepagents";
|
|
27
|
+
import { CompositeBackend, isSandboxBackend, StateBackend, } from "deepagents";
|
|
28
28
|
import { createMiddleware } from "langchain";
|
|
29
|
+
import { LangSmithResourceNotFoundError } from "langsmith/sandbox";
|
|
29
30
|
import { z } from "zod";
|
|
31
|
+
import { BROWSER_TOOL_PREFIX } from "../browser.js";
|
|
30
32
|
import { CodeModeRunInputSchema, FACADE_AGENT_INSTRUCTIONS, FACADE_TOOLS, sanitizeErrorMessage, StagehandFacadeExecutionError, StagehandFacadeInputError, } from "./browser-facade.js";
|
|
31
33
|
import { browserBox, browserName, closeSession, handOver, HANDOFF_LINK_TTL_S, handoffStatus, newestTab, openSession, RecorderError, shareLocalhost, PendingBrowserHandoffSchema, shellQuote, startTake, stopTake, } from "./browser-langsmith.js";
|
|
32
34
|
import { LazyManagedSandboxBackend } from "./backend.js";
|
|
33
35
|
import { logger } from "./log.js";
|
|
34
36
|
import { verifiedLeadThread } from "./parent-run.js";
|
|
35
37
|
import { MDA_NOTIFICATION_KEY } from "../channels/assistant-text.js";
|
|
36
|
-
const WORKSPACE = "/workspace"; // where run code's screenshots land in the
|
|
38
|
+
const WORKSPACE = "/workspace"; // where run code's screenshots land in the agent's files
|
|
37
39
|
const INSTRUCTIONS =
|
|
38
40
|
// The facade's text and errors name its tools `run` and so on; ours gain `browser_`.
|
|
39
41
|
"These tools are named browser_run, browser_snapshot and browser_screenshot: " +
|
|
40
42
|
"call those wherever this text or an error names run, snapshot or screenshot.\n" +
|
|
41
|
-
"Screenshots that run code saves go to /workspace in your
|
|
43
|
+
"Screenshots that run code saves go to /workspace in your files: " +
|
|
42
44
|
"`await page.screenshot({ path: 'shots/a.png' })` saves /workspace/shots/a.png.";
|
|
43
|
-
const SCREENSHOT_PATH = "
|
|
44
|
-
"creating its folder, e.g. to publish it.";
|
|
45
|
+
const SCREENSHOT_PATH = "Also save the image to this absolute path in your files, creating its folder.";
|
|
45
46
|
const LOCALHOST_NOTE = // a thread's browser shares its sandbox's localhost
|
|
46
47
|
"Servers running in your sandbox are reachable at http://localhost:<port> " +
|
|
47
48
|
"(any port but 80 and 443).";
|
|
48
49
|
const RECORDINGS = `${WORKSPACE}/recordings`;
|
|
50
|
+
// Without a sandbox a saved file lives in thread state, which every later checkpoint carries.
|
|
51
|
+
const MAX_SAVED_BYTES = 5_000_000;
|
|
49
52
|
// The recorder's own limits, which Python's `_browser_recording.py` sets: it runs in
|
|
50
53
|
// the browser's sandbox, so this process never imports it.
|
|
51
54
|
const RECORD_VIEWPORT = [1280, 800];
|
|
@@ -62,7 +65,7 @@ recording, the viewport is ${RECORD_VIEWPORT[0]}x${RECORD_VIEWPORT[1]}, and each
|
|
|
62
65
|
pause between your calls plays for at most ${RECORD_MAX_HOLD_S}s.
|
|
63
66
|
A recording also ends, and is saved, when the run ends or you hand the browser to
|
|
64
67
|
the user: it never shows what they do. It stops at
|
|
65
|
-
${RECORD_MAX_S / 60} minutes.`;
|
|
68
|
+
${RECORD_MAX_S / 60} minutes. It needs a sandbox to save in.`;
|
|
66
69
|
const RECORD_SCHEMA = {
|
|
67
70
|
type: "object",
|
|
68
71
|
properties: {
|
|
@@ -97,8 +100,20 @@ export const HANDOFF_WATCHER_GRAPH = "mda-browser-handoff";
|
|
|
97
100
|
/** Where deepagents puts the reference to the agent that started a run, which isn't forwarded. */
|
|
98
101
|
const PARENT_REFERENCE_KEY = "deepagents_parent";
|
|
99
102
|
const RELEASE_AFTER_MS = 60_000; // a run that throws or interrupts never reaches afterAgent
|
|
100
|
-
|
|
103
|
+
// Before what the call returned, once the thread's browser was made again.
|
|
104
|
+
const REPLACED = "This is a new browser: the one you used before is gone. It started on a blank page, " +
|
|
105
|
+
"signed out of everything, and nothing you or the user did in the old one carried over.";
|
|
106
|
+
const LOST = "error: the browser was deleted, so the recording is lost.";
|
|
107
|
+
/**
|
|
108
|
+
* The browser sandbox the thread last used, by id: one made again under the
|
|
109
|
+
* same name has a new one. Calls side by side may each write it.
|
|
110
|
+
*/
|
|
111
|
+
const BOX_KEY = "_mda_browser";
|
|
112
|
+
const BrowserStateSchema = new StateSchema({
|
|
101
113
|
[HANDOFF_KEY]: PendingBrowserHandoffSchema.nullable().optional(),
|
|
114
|
+
[BOX_KEY]: new ReducedValue(z.string().optional(), {
|
|
115
|
+
reducer: (_previous, next) => next,
|
|
116
|
+
}),
|
|
102
117
|
});
|
|
103
118
|
// Process-wide: a user's concurrent threads share their browser's one client.
|
|
104
119
|
const sessions = new Map();
|
|
@@ -140,14 +155,14 @@ function releaseWhenIdle(key) {
|
|
|
140
155
|
/**
|
|
141
156
|
* Give the agent Stagehand's tools, named `browser_run`, `browser_snapshot` and
|
|
142
157
|
* so on, plus `browser_record` for a video.
|
|
158
|
+
*
|
|
159
|
+
* Without a sandbox, files save to `backend`, the agent's own, where its file tools look.
|
|
143
160
|
*/
|
|
144
|
-
export function createBrowserMiddleware(options) {
|
|
161
|
+
export function createBrowserMiddleware(options, backend = new StateBackend()) {
|
|
145
162
|
const { scope } = options;
|
|
146
|
-
const tools = browserTools(options);
|
|
163
|
+
const tools = browserTools(options, backend);
|
|
147
164
|
const accepted = new Map(tools.map((t) => [t.name, Object.keys(t.schema.properties)]));
|
|
148
|
-
|
|
149
|
-
if (scope === "thread")
|
|
150
|
-
instructions += ` ${LOCALHOST_NOTE}`;
|
|
165
|
+
const instructions = `${FACADE_AGENT_INSTRUCTIONS}\n\n${INSTRUCTIONS}`;
|
|
151
166
|
const middleware = createMiddleware({
|
|
152
167
|
name: "mda-browser",
|
|
153
168
|
stateSchema: BrowserStateSchema,
|
|
@@ -200,10 +215,15 @@ export function createBrowserMiddleware(options) {
|
|
|
200
215
|
? [{ type: "text", text: content }]
|
|
201
216
|
: []
|
|
202
217
|
: (content ?? []);
|
|
218
|
+
// A user's browser serves several threads, whose sandboxes cannot all be localhost.
|
|
219
|
+
const sandbox = request.runtime.backend;
|
|
220
|
+
const text = scope === "thread" && sandbox !== undefined
|
|
221
|
+
? `${instructions} ${LOCALHOST_NOTE}`
|
|
222
|
+
: instructions;
|
|
203
223
|
return handler({
|
|
204
224
|
...request,
|
|
205
225
|
systemMessage: new SystemMessage({
|
|
206
|
-
content: [...blocks, { type: "text", text
|
|
226
|
+
content: [...blocks, { type: "text", text }],
|
|
207
227
|
}),
|
|
208
228
|
});
|
|
209
229
|
},
|
|
@@ -213,7 +233,8 @@ export function createBrowserMiddleware(options) {
|
|
|
213
233
|
});
|
|
214
234
|
}
|
|
215
235
|
/**
|
|
216
|
-
* Run `fn` on the run's session
|
|
236
|
+
* Run `fn` on the run's session, and say which browser sandbox it ran on.
|
|
237
|
+
* Errors go to the model; nothing is retried.
|
|
217
238
|
*
|
|
218
239
|
* While the user has the window, the agent waits.
|
|
219
240
|
*/
|
|
@@ -221,26 +242,30 @@ async function call(options, runtime, fn) {
|
|
|
221
242
|
// The handoff is asked about here too: after a restart no watcher says it ended.
|
|
222
243
|
const handoff = pending(runtime.state);
|
|
223
244
|
if (handoff && (await handoffStatus(handoff)) === undefined) {
|
|
224
|
-
return `error: ${WITH_USER}
|
|
245
|
+
return [`error: ${WITH_USER}`];
|
|
225
246
|
}
|
|
226
247
|
const found = locate(runtime, options.scope);
|
|
227
248
|
if (typeof found === "string")
|
|
228
|
-
return found;
|
|
249
|
+
return [found];
|
|
229
250
|
const { key, window } = found;
|
|
230
251
|
return withLock(key, async () => {
|
|
252
|
+
let box;
|
|
231
253
|
try {
|
|
232
|
-
|
|
233
|
-
|
|
254
|
+
const held = sessions.get(key);
|
|
255
|
+
// Stagehand closes its client for good once Chrome goes, as when browserd restarts it.
|
|
256
|
+
if (held?.window !== window || held.stagehand.rpcClient?.closed) {
|
|
257
|
+
await release(key); // another of the user's threads, or Chrome restarted
|
|
234
258
|
const ttl = options.idleTtlSeconds;
|
|
235
259
|
const opened = openSession(key, window, ttl, () => closeAfterCall(key));
|
|
236
260
|
sessions.set(key, await opened);
|
|
237
261
|
}
|
|
238
262
|
const session = sessions.get(key);
|
|
239
263
|
await share(session, key, runtime);
|
|
240
|
-
|
|
264
|
+
box = session.box;
|
|
265
|
+
return [await fn(session), box];
|
|
241
266
|
}
|
|
242
267
|
catch (err) {
|
|
243
|
-
return await failed(key, err);
|
|
268
|
+
return [await failed(key, err), box];
|
|
244
269
|
}
|
|
245
270
|
finally {
|
|
246
271
|
if (sessions.get(key)?.closing)
|
|
@@ -292,13 +317,16 @@ async function handToUser(options, runtime, reason) {
|
|
|
292
317
|
}
|
|
293
318
|
// What clients such as Studio show the user: the ask, and a link that lets
|
|
294
319
|
// whoever holds it drive the window, for 15 minutes. The model never sees it.
|
|
320
|
+
const said = withRecording(HANDED_OVER, ended);
|
|
321
|
+
const [content, noted] = noteBox(runtime.state, handed.box, said);
|
|
295
322
|
const reply = new ToolMessage({
|
|
296
|
-
content
|
|
323
|
+
content,
|
|
297
324
|
artifact: { type: "browser_handoff", message: reason, url: handed.url },
|
|
298
325
|
name: "browser_handoff",
|
|
299
326
|
tool_call_id: runtime.toolCallId ?? "",
|
|
300
327
|
});
|
|
301
|
-
|
|
328
|
+
const update = { [HANDOFF_KEY]: handoff, ...noted, messages: [reply] };
|
|
329
|
+
return new Command({ update });
|
|
302
330
|
}
|
|
303
331
|
/**
|
|
304
332
|
* Start a run of the watcher graph on a thread of its own, as deepagents starts
|
|
@@ -397,6 +425,33 @@ function pending(state) {
|
|
|
397
425
|
: undefined;
|
|
398
426
|
return (value ?? undefined);
|
|
399
427
|
}
|
|
428
|
+
/**
|
|
429
|
+
* What a call on browser sandbox `box` returns, and the update that notes `box`.
|
|
430
|
+
*
|
|
431
|
+
* A box the thread hasn't used is noted; if it used another, it was deleted,
|
|
432
|
+
* and the model reads so first.
|
|
433
|
+
*/
|
|
434
|
+
function noteBox(state, box, content) {
|
|
435
|
+
const used = state?.[BOX_KEY];
|
|
436
|
+
if (box === undefined || box === used)
|
|
437
|
+
return [content, undefined];
|
|
438
|
+
const noted = { [BOX_KEY]: box };
|
|
439
|
+
if (used == null)
|
|
440
|
+
return [content, noted];
|
|
441
|
+
if (typeof content === "string")
|
|
442
|
+
return [`${REPLACED}\n${content}`, noted];
|
|
443
|
+
const replaced = { type: "text", text: REPLACED };
|
|
444
|
+
return [[replaced, ...content], noted];
|
|
445
|
+
}
|
|
446
|
+
/** Tool `name`'s reply to a call on browser sandbox `box`, noting `box` in state if new. */
|
|
447
|
+
function reply(runtime, name, content, box) {
|
|
448
|
+
const [said, noted] = noteBox(runtime.state, box, content);
|
|
449
|
+
if (noted === undefined)
|
|
450
|
+
return content;
|
|
451
|
+
const tool_call_id = runtime.toolCallId ?? "";
|
|
452
|
+
const message = new ToolMessage({ content: said, tool_call_id, name });
|
|
453
|
+
return new Command({ update: { ...noted, messages: [message] } });
|
|
454
|
+
}
|
|
400
455
|
function sameHandoff(a, b) {
|
|
401
456
|
return (a?.browser === b.browser &&
|
|
402
457
|
a.window_id === b.window_id &&
|
|
@@ -460,11 +515,11 @@ async function share(session, key, runtime) {
|
|
|
460
515
|
session.shared = sandbox;
|
|
461
516
|
}
|
|
462
517
|
/** The facade's tools as its hosts advertise them, names prefixed `browser_`. */
|
|
463
|
-
function browserTools(options) {
|
|
518
|
+
function browserTools(options, backend) {
|
|
464
519
|
const facade = (name) => {
|
|
465
520
|
const entry = FACADE_TOOLS.find((candidate) => candidate.name === name);
|
|
466
521
|
const { description, inputSchema: schema } = entry;
|
|
467
|
-
return { name:
|
|
522
|
+
return { name: `${BROWSER_TOOL_PREFIX}${name}`, description, schema };
|
|
468
523
|
};
|
|
469
524
|
const screenshot = facade("screenshot");
|
|
470
525
|
const path = { type: "string", description: SCREENSHOT_PATH };
|
|
@@ -472,7 +527,7 @@ function browserTools(options) {
|
|
|
472
527
|
const run = tool(async (input, config) => {
|
|
473
528
|
const { code, actions } = input;
|
|
474
529
|
const runtime = config;
|
|
475
|
-
|
|
530
|
+
const ran = await call(options, runtime, async (session) => {
|
|
476
531
|
let value;
|
|
477
532
|
let saved;
|
|
478
533
|
try {
|
|
@@ -483,34 +538,39 @@ function browserTools(options) {
|
|
|
483
538
|
}
|
|
484
539
|
finally {
|
|
485
540
|
// Code that threw may have saved some first.
|
|
486
|
-
saved = await saveArtifacts(runtime.backend, session.artifacts);
|
|
541
|
+
saved = await saveArtifacts(runtime.backend ?? backend, session.artifacts);
|
|
487
542
|
}
|
|
488
543
|
return [JSON.stringify(value ?? null), ...saved].join("\n");
|
|
489
544
|
});
|
|
545
|
+
return reply(runtime, `${BROWSER_TOOL_PREFIX}run`, ...ran);
|
|
490
546
|
}, facade("run"));
|
|
491
547
|
const snapshot = tool(async (input, config) => {
|
|
492
548
|
const includeIframes = input.includeIframes ?? true;
|
|
493
|
-
|
|
549
|
+
const runtime = config;
|
|
550
|
+
const ran = await call(options, runtime, (session) => session.tools.snapshot({ includeIframes }));
|
|
551
|
+
return reply(runtime, `${BROWSER_TOOL_PREFIX}snapshot`, ...ran);
|
|
494
552
|
}, facade("snapshot"));
|
|
495
553
|
const shoot = tool(async (input, config) => {
|
|
496
554
|
const { fullPage, type = "png", quality, path } = input;
|
|
497
555
|
const runtime = config;
|
|
498
|
-
const shot = await call(options, runtime, (session) => session.tools.screenshot({ fullPage, type, quality }));
|
|
499
|
-
if (typeof shot === "string")
|
|
500
|
-
return shot;
|
|
556
|
+
const [shot, box] = await call(options, runtime, (session) => session.tools.screenshot({ fullPage, type, quality }));
|
|
557
|
+
if (typeof shot === "string") {
|
|
558
|
+
return reply(runtime, `${BROWSER_TOOL_PREFIX}screenshot`, shot, box);
|
|
559
|
+
}
|
|
501
560
|
let text = "Screenshot of the current page.";
|
|
502
561
|
if (path) {
|
|
503
562
|
const data = Buffer.from(shot.data, "base64");
|
|
504
|
-
text += ` ${await save(runtime.backend, path, data)}`;
|
|
563
|
+
text += ` ${await save(runtime.backend ?? backend, path, data)}`;
|
|
505
564
|
}
|
|
506
565
|
const url = `data:${shot.mimeType};base64,${shot.data}`;
|
|
507
|
-
|
|
566
|
+
const blocks = [
|
|
508
567
|
{ type: "text", text },
|
|
509
568
|
{ type: "image", url },
|
|
510
569
|
];
|
|
570
|
+
return reply(runtime, `${BROWSER_TOOL_PREFIX}screenshot`, blocks, box);
|
|
511
571
|
}, { ...screenshot, schema: { ...screenshot.schema, properties } });
|
|
512
572
|
const handoff = tool(async (input, config) => handToUser(options, config, input.reason), {
|
|
513
|
-
name:
|
|
573
|
+
name: `${BROWSER_TOOL_PREFIX}handoff`,
|
|
514
574
|
description: HANDOFF_DESCRIPTION,
|
|
515
575
|
schema: {
|
|
516
576
|
type: "object",
|
|
@@ -540,10 +600,13 @@ function recordTool(options) {
|
|
|
540
600
|
}
|
|
541
601
|
return withLock(where, async () => {
|
|
542
602
|
if (input.action === "start") {
|
|
543
|
-
|
|
544
|
-
|
|
603
|
+
const { backend } = runtime;
|
|
604
|
+
if (backend === undefined) {
|
|
605
|
+
return ("error: browser_record needs a sandbox to save recordings in, " +
|
|
606
|
+
"and this run has none. Screenshots still save.");
|
|
545
607
|
}
|
|
546
|
-
|
|
608
|
+
const ran = await call(options, runtime, (session) => startRecording(session, where, backend, path));
|
|
609
|
+
return reply(runtime, `${BROWSER_TOOL_PREFIX}record`, ...ran);
|
|
547
610
|
}
|
|
548
611
|
const take = takes.get(where);
|
|
549
612
|
if (take === undefined) {
|
|
@@ -555,7 +618,7 @@ function recordTool(options) {
|
|
|
555
618
|
return finishTake(take, path || take.path);
|
|
556
619
|
});
|
|
557
620
|
}, {
|
|
558
|
-
name:
|
|
621
|
+
name: `${BROWSER_TOOL_PREFIX}record`,
|
|
559
622
|
description: RECORD_DESCRIPTION,
|
|
560
623
|
schema: RECORD_SCHEMA,
|
|
561
624
|
});
|
|
@@ -569,7 +632,8 @@ async function startRecording(session, where, backend, path) {
|
|
|
569
632
|
try {
|
|
570
633
|
const box = await browserBox(session.browser);
|
|
571
634
|
const folder = await startTake(box, session.localUrl, tab.pageId);
|
|
572
|
-
|
|
635
|
+
const { browser } = session;
|
|
636
|
+
takes.set(where, { browser, folder, backend, path, box: box.id });
|
|
573
637
|
}
|
|
574
638
|
catch (err) {
|
|
575
639
|
if (!(err instanceof RecorderError))
|
|
@@ -629,9 +693,14 @@ function withRecording(text, ended) {
|
|
|
629
693
|
async function finishTake(take, path) {
|
|
630
694
|
let finished;
|
|
631
695
|
try {
|
|
632
|
-
|
|
696
|
+
const box = await browserBox(take.browser);
|
|
697
|
+
if (box.id !== take.box)
|
|
698
|
+
return LOST; // deleted and made again, without the take
|
|
699
|
+
finished = await stopTake(box, take.folder);
|
|
633
700
|
}
|
|
634
701
|
catch (err) {
|
|
702
|
+
if (deleted(err))
|
|
703
|
+
return LOST;
|
|
635
704
|
return `error: ${sanitizeErrorMessage(errorText(err))}`;
|
|
636
705
|
}
|
|
637
706
|
const fallback = `${RECORDINGS}/${timestamp()}.mp4`;
|
|
@@ -674,6 +743,11 @@ function timestamp(now = new Date()) {
|
|
|
674
743
|
function takeKey(key, window) {
|
|
675
744
|
return JSON.stringify([key, window]);
|
|
676
745
|
}
|
|
746
|
+
/** Whether `err` says the browser's sandbox is gone. */
|
|
747
|
+
function deleted(err) {
|
|
748
|
+
return (err instanceof LangSmithResourceNotFoundError &&
|
|
749
|
+
err.resourceType === "sandbox");
|
|
750
|
+
}
|
|
677
751
|
function errorText(err) {
|
|
678
752
|
return err instanceof Error ? `${err.name}: ${err.message}` : String(err);
|
|
679
753
|
}
|
|
@@ -702,18 +776,25 @@ async function saveArtifacts(backend, root) {
|
|
|
702
776
|
}
|
|
703
777
|
return saved;
|
|
704
778
|
}
|
|
705
|
-
/** Write `data` to absolute `path` in
|
|
779
|
+
/** Write `data` to absolute `path` in `backend`, creating its folder. */
|
|
706
780
|
export async function save(backend, path, data) {
|
|
707
|
-
if (backend == null) {
|
|
708
|
-
return `error: ${path} not saved: this agent has no sandbox.`;
|
|
709
|
-
}
|
|
710
781
|
if (!posix.isAbsolute(path)) {
|
|
711
782
|
return `error: ${path} not saved: give an absolute path.`;
|
|
712
783
|
}
|
|
713
784
|
const target = normpath(path);
|
|
785
|
+
const mounted = mount(backend, target);
|
|
786
|
+
if (mounted !== undefined) {
|
|
787
|
+
return `error: ${target} not saved: ${mounted} is not for saved files. Save it under ${WORKSPACE}.`;
|
|
788
|
+
}
|
|
789
|
+
const sandboxed = isSandboxBackend(backend);
|
|
790
|
+
if (!sandboxed && data.byteLength > MAX_SAVED_BYTES) {
|
|
791
|
+
const mb = (Math.ceil(data.byteLength / 1e5) / 10).toFixed(1);
|
|
792
|
+
return (`error: ${target} not saved: ${mb} MB is over the 5 MB limit for files saved ` +
|
|
793
|
+
"without a sandbox. Take a viewport screenshot instead of a full page.");
|
|
794
|
+
}
|
|
714
795
|
let result;
|
|
715
796
|
try {
|
|
716
|
-
if (
|
|
797
|
+
if (sandboxed) {
|
|
717
798
|
await backend.execute(`mkdir -p -- ${shellQuote(posix.dirname(target))}`);
|
|
718
799
|
}
|
|
719
800
|
[result] = await backend.uploadFiles([[target, data]]);
|
|
@@ -725,7 +806,15 @@ export async function save(backend, path, data) {
|
|
|
725
806
|
? `error: ${target} not saved: ${result.error}`
|
|
726
807
|
: `Saved ${target}.`;
|
|
727
808
|
}
|
|
728
|
-
/** `path` as
|
|
809
|
+
/** The Context Hub mount `path` is in, such as `/skills`: read-only, or read by every later run. */
|
|
810
|
+
function mount(backend, path) {
|
|
811
|
+
if (!CompositeBackend.isInstance(backend))
|
|
812
|
+
return undefined;
|
|
813
|
+
return backend.routePrefixes
|
|
814
|
+
.map((prefix) => prefix.replace(/\/$/, ""))
|
|
815
|
+
.find((mounted) => `${path}/`.startsWith(`${mounted}/`));
|
|
816
|
+
}
|
|
817
|
+
/** `path` as Python's `_normpath` writes it: no trailing slash, one leading one. */
|
|
729
818
|
function normpath(path) {
|
|
730
819
|
return posix.normalize(path).replace(/(.)\/$/, "$1");
|
|
731
820
|
}
|