managed-deepagents 0.10.1-dev.9 → 0.10.2-dev.1

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 (73) hide show
  1. package/README.md +2 -0
  2. package/dist/agent-auth.d.ts +15 -12
  3. package/dist/agent-auth.d.ts.map +1 -1
  4. package/dist/agent-auth.js +47 -16
  5. package/dist/agent-auth.js.map +1 -1
  6. package/dist/browser.d.ts +2 -0
  7. package/dist/browser.d.ts.map +1 -1
  8. package/dist/browser.js +2 -0
  9. package/dist/browser.js.map +1 -1
  10. package/dist/channels/github/app-setup.d.ts.map +1 -1
  11. package/dist/channels/github/app-setup.js +2 -0
  12. package/dist/channels/github/app-setup.js.map +1 -1
  13. package/dist/channels/github/index.d.ts.map +1 -1
  14. package/dist/channels/github/index.js +2 -0
  15. package/dist/channels/github/index.js.map +1 -1
  16. package/dist/channels/github/schema.d.ts +329 -1
  17. package/dist/channels/github/schema.d.ts.map +1 -1
  18. package/dist/channels/github/schema.js +17 -0
  19. package/dist/channels/github/schema.js.map +1 -1
  20. package/dist/channels/http/http.d.ts.map +1 -1
  21. package/dist/channels/http/http.js +6 -1
  22. package/dist/channels/http/http.js.map +1 -1
  23. package/dist/channels/linear/index.d.ts.map +1 -1
  24. package/dist/channels/linear/index.js +75 -12
  25. package/dist/channels/linear/index.js.map +1 -1
  26. package/dist/channels/linear/types.d.ts +3 -1
  27. package/dist/channels/linear/types.d.ts.map +1 -1
  28. package/dist/channels/resolve-user.d.ts +7 -0
  29. package/dist/channels/resolve-user.d.ts.map +1 -1
  30. package/dist/channels/resolve-user.js +7 -0
  31. package/dist/channels/resolve-user.js.map +1 -1
  32. package/dist/channels/slack/events.d.ts +2 -0
  33. package/dist/channels/slack/events.d.ts.map +1 -1
  34. package/dist/channels/slack/events.js +1 -1
  35. package/dist/channels/slack/events.js.map +1 -1
  36. package/dist/channels/slack/files.d.ts.map +1 -1
  37. package/dist/channels/slack/files.js +41 -26
  38. package/dist/channels/slack/files.js.map +1 -1
  39. package/dist/channels/slack/index.d.ts.map +1 -1
  40. package/dist/channels/slack/index.js +6 -6
  41. package/dist/channels/slack/index.js.map +1 -1
  42. package/dist/channels/trigger/http.d.ts.map +1 -1
  43. package/dist/channels/trigger/http.js +5 -1
  44. package/dist/channels/trigger/http.js.map +1 -1
  45. package/dist/credential-gate.d.ts.map +1 -1
  46. package/dist/credential-gate.js +54 -5
  47. package/dist/credential-gate.js.map +1 -1
  48. package/dist/ingress/runs.d.ts +5 -0
  49. package/dist/ingress/runs.d.ts.map +1 -1
  50. package/dist/ingress/runs.js +35 -8
  51. package/dist/ingress/runs.js.map +1 -1
  52. package/dist/runtime/browser-langsmith.d.ts +7 -3
  53. package/dist/runtime/browser-langsmith.d.ts.map +1 -1
  54. package/dist/runtime/browser-langsmith.js +35 -14
  55. package/dist/runtime/browser-langsmith.js.map +1 -1
  56. package/dist/runtime/browser.d.ts +6 -4
  57. package/dist/runtime/browser.d.ts.map +1 -1
  58. package/dist/runtime/browser.js +135 -46
  59. package/dist/runtime/browser.js.map +1 -1
  60. package/dist/runtime/index.d.ts.map +1 -1
  61. package/dist/runtime/index.js +16 -10
  62. package/dist/runtime/index.js.map +1 -1
  63. package/dist/telemetry/index.d.ts +1 -1
  64. package/dist/telemetry/index.d.ts.map +1 -1
  65. package/dist/telemetry/run-listener.d.ts +2 -1
  66. package/dist/telemetry/run-listener.d.ts.map +1 -1
  67. package/dist/telemetry/run-listener.js +34 -8
  68. package/dist/telemetry/run-listener.js.map +1 -1
  69. package/dist/telemetry/run.d.ts +20 -4
  70. package/dist/telemetry/run.d.ts.map +1 -1
  71. package/dist/telemetry/run.js +7 -1
  72. package/dist/telemetry/run.js.map +1 -1
  73. 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
- // HiDPI renders at twice the resolution, so a person watching or driving
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.status !== 409)
111
- throw err; // conflict: it exists
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, and a short-lived link the user
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,SAAS,GAGV,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAgB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,8BAA8B;AACpG,MAAM,aAAa,GAAG,0CAA0C,iBAAiB,EAAE,CAAC;AACpF,MAAM,aAAa,GAAG,wBAAwB,CAAC,CAAC,yBAAyB;AACzE,MAAM,YAAY,GAAG,oCAAoC,CAAC,CAAC,qCAAqC;AAChG,MAAM,gBAAgB,GAAG,eAAe,CAAC,CAAC,iDAAiD;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAC,oDAAoD;AAC3F,sFAAsF;AACtF,kDAAkD;AAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,yFAAyF;AACzF,MAAM,iBAAiB,GAAG;IACxB,YAAY;IACZ,gBAAgB;IAChB,oBAAoB;CACrB,CAAC;AACF,MAAM,aAAa,GAAG,uBAAuB,CAAC,CAAC,uCAAuC;AACtF,MAAM,qBAAqB,GAAG,GAAG,aAAa,aAAa,UAAU,CAAC,QAAQ,CAAC;KAC5E,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACnC,MAAM,CAAC,KAAK,CAAC;KACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAClB,qFAAqF;AACrF,mFAAmF;AACnF,gCAAgC;AAChC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAC5C,MAAM,uBAAuB,GAAG,GAAG,CAAC,CAAC,+CAA+C;AAgBpF,2FAA2F;AAC3F,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5D,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,sEAAsE;IACzF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,8CAA8C;CACpE,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAUnD,gFAAgF;AAChF,MAAM,OAAO,aAAc,SAAQ,KAAK;CAAG;AAoB3C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,oCAAoC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,+BAA+B;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,uDAAuD;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAKH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB;IACjD,+EAA+E;IAC/E,oEAAoE;IACpE,MAAM,OAAO,CAAC,IAAI,CAAC;QACjB,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;QACzB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;KACxC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,+DAA+D;IAC/D,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CACjE,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,UAAU,GAAG,CAAC;IACrD,MAAM,KAAK,GACT,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;IACvE,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,IAAI,UAAU;QAAE,OAAO,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7D,OAAO,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAgB,EAChB,KAAyD,EACzD,GAAW,EACX,cAAsB;IAEtB,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,mBAAmB,EAAE,UAAU,EAAE,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,yEAAyE;YACzE,+DAA+D;YAC/D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACvE,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA4B,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,GAAG,CAAC,CAAC,sBAAsB;QACrF,CAAC;QACD,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;YAAE,SAAS;QAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC/D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,WAAW;IACzB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACrD,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACvE,OAAO;QACL,GAAG,EAAE,GAAG,QAAQ,EAAE,eAAe;QACjC,OAAO,EAAE;YACP,WAAW,EAAE,GAAG;YAChB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD;KACF,CAAC;AACJ,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,QAAQ;IACtB,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,iCAAiC,CAAC;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,UAAkB,EAClB,cAAsB,EACtB,gBAAqC;IAErC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IACxB,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE3E,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;IAC3E,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAC,sBAAsB;IACzF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,GAAG,QAAQ,IAAI,IAAI,gBAAgB,MAAM,CAAC,EAAE,aAAa,CAAC;QAC7E,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,WAAW,eAAe,CAAC;IACvD,MAAM,MAAM,GAAG,CACb,MAAM,OAAO,CAAmC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CACvE,CAAC,oBAAoB,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,kBAAkB,IAAI,qBAAqB,MAAM,CAAC,EAAE,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAAE,MAAM,GAAG,CAAC;IAC9D,CAAC;IACD,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,MAAM,EAAE,CAAC;AAClB,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,UAAU,CACvB,GAAgB,EAChB,OAAe,EACf,IAAY;IAEZ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAc,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC9D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,OAAO,CAAgB,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,cAAc,EAAE,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,UAAkB,EAClB,cAAsB;IAEtB,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IACxB,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,IAAI,gBAAgB,MAAM,CAAC,EAAE,EAAE,CAAC;IACjE,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG;QACX,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,MAAM,YAAY,CAAC,GAAG,CAAC;KACvC,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,GAAG,EACH,MAAM,EACN,GAAG,SAAS,QAAQ,EACpB,IAAI,CACL,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACnE,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA8B;IAE9B,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,aAAa,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,GAAG,EACH,KAAK,EACL,OAAO,EACP,SAAS,EACT,MAAM,CACP,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QACzC,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO;YAAE,OAAO,aAAa,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA4B,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,OAAO,CAAC;QACjE,qBAAqB;IACvB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAgB;IACjD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAgB;IAC/C,MAAM,SAAS,GAAG,GAAG,QAAQ,EAAE,sCAAsC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,OAAO,CAA4B,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7E,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAAe;IAEf,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,aAAa,IAAI,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAc,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;IAC1E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,UAAU,OAAO,EAAE,CAAC;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAiB,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,EAAE,CAAC;YAAE,OAAO;QAC1D,MAAM,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,gBAAgB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB;IAC1F,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACxE,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,cAAc,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,eAAe;IAC1E,CAAC;IACD,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,kCAAkC,CAAC;IACpD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,KAAK,YAAY,CAAC;AACjC,CAAC;AAED,oGAAoG;AACpG,KAAK,UAAU,OAAO,CACpB,GAAgB,EAChB,MAAc,EACd,GAAW,EACX,IAAa,EACb,SAAS,GAAG,MAAM;IAElB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM;QACN,OAAO,EAAE,IAAI;YACX,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE;YACxD,CAAC,CAAC,GAAG,CAAC,OAAO;QACf,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAClC,QAAQ,EAAE,QAAQ,EAAE,kEAAkE;QACtF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,gDAAgD;IACpF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,gCAAgC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACpF,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAM,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAc,EACd,OAAe,EACf,MAAc,EACd,QAAgB,EAChB,OAA+B,EAC/B,gBAAqC;IAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;QACxC,MAAM;QACN,eAAe,EAAE,QAAQ;QACzB,OAAO;KACR,CAAC,CAAC;IACH,2EAA2E;IAC3E,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAChE,0EAA0E;IAC1E,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,SAAS,EAAE;QAChD,YAAY,EAAE,SAAS;QACvB,gBAAgB;QAChB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,kFAAkF;IAClF,kFAAkF;IAClF,oFAAoF;IACpF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO;QACL,MAAM;QACN,OAAO;QACP,SAAS;QACT,KAAK;QACL,SAAS;QACT,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,yCAAyC;QAC9E,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,SAAS;QACjB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAuB;IACrD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACpC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAQ,EACR,QAAgB,EAChB,GAAW;IAEX,MAAM,MAAM,GAAG,GAAG,cAAc,IAAI,UAAU,EAAE,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,EAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa;YAAE,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ,EAAE,MAAc;IACrD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC;YACjB,IAAI,CAAC,UAAU,CAAC;SACjB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,qCAAqC;IACtE,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,MAAc;IAChD,MAAM,MAAM,GAAG,aAAa,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAChE,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,QAAQ,CACrB,GAAQ,EACR,OAAe,EACf,OAAe,EACf,KAAmB;IAEnB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC,CAAC,2BAA2B;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GACP,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK;QACzC,MAAM;QACN,QAAQ,GAAG,CAAC,SAAS,EAAE,CAAC;IAC1B,MAAM,IAAI,aAAa,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe;IACtB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,GAAG,GACP,4EAA4E;QAC5E,iEAAiE,IAAI,EAAE,CAAC;IAC1E,OAAO,CACL,aAAa,MAAM,6BAA6B,IAAI,MAAM;QAC1D,mBAAmB,IAAI,sBAAsB;QAC7C,KAAK,GAAG,qEAAqE;QAC7E,iDAAiD;QACjD,kBAAkB,MAAM,wCAAwC,CACjE,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAS,eAAe,CACtB,MAAc,EACd,MAAc,EACd,GAAG,IAAc;IAEjB,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAClE,UAAU,CACX,CAAC;IACF,OAAO,cAAc,UAAU,CAAC,qBAAqB,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC9C,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY;IACjD,MAAM,KAAK,GAAG,WAAW,aAAa,gBAAgB,CAAC;IACvD,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC;QAAE,OAAO;IACpE,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,GAAG,aAAa,MAAM,CAAC,CAAC,2DAA2D;IAC/F,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAC5B,UAAU,GAAG,6BAA6B,aAAa,IAAI,GAAG,MAAM;QAClE,UAAU,aAAa,UAAU,GAAG,IAAI,aAAa,EAAE,EACzD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACF,IAAI,QAAQ,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,+CAA+C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,MAAc,EACd,OAA+B;IAE/B,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,IAAI,IAAI,GAA8B,GAAG,EAAE,CAAC,SAAS,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC9C,IAAI,GAAG,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,wDAAwD;IACvF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC1D,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,iDAAiD;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,GAAG,CAAC,EAAU,EAAE,MAAc,EAAE,MAAM,GAAW,EAAE;QAChE,MAAM,KAAK,GAAG,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,GAAG,CAAC,CAAC,EAAE,yBAAyB,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACnE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,KAAK,UAAU,UAAU,CAAC,GAAY,EAAE,QAAgB;IACtD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAE9C,CAAC;YACF,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,CAAC;YAC9D,IAAI,IAAI;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC,CAAC,gBAAgB;QAC3B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC9D,CAAC"}
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">): BrowserMiddleware;
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 the agent's sandbox, creating its folder. */
125
- export declare function save(backend: BackendProtocolV2 | undefined, path: string, data: Uint8Array): Promise<string>;
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,EAML,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAGnE,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;AAmE5D,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAS3D,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;AAoDD,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAChD;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC;CAC9C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACvC,iBAAiB,CAwEnB;AA6FD;;;;;;;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;AA2Db;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB;;;;;;;;;EAQvD;AAqVD,mFAAmF;AACnF,wBAAsB,IAAI,CACxB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAOD,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"}
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"}
@@ -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 sandbox
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 sandbox: " +
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 = "Only if you have a sandbox: also save the image to this absolute path in it, " +
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
- const BrowserStateSchema = z.object({
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
- let instructions = `${FACADE_AGENT_INSTRUCTIONS}\n\n${INSTRUCTIONS}`;
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: instructions }],
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. Errors go to the model; nothing is retried.
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
- if (sessions.get(key)?.window !== window) {
233
- await release(key); // another of the user's threads: move windows
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
- return await fn(session);
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: withRecording(HANDED_OVER, ended),
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
- return new Command({ update: { [HANDOFF_KEY]: handoff, messages: [reply] } });
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: `browser_${name}`, description, schema };
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
- return call(options, runtime, async (session) => {
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
- return call(options, config, (session) => session.tools.snapshot({ includeIframes }));
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
- return [
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: "browser_handoff",
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
- if (runtime.backend == null) {
544
- return "error: this agent has no sandbox to save a recording in. Recording not started.";
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
- return call(options, runtime, (session) => startRecording(session, where, runtime.backend, path));
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: "browser_record",
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
- takes.set(where, { browser: session.browser, folder, backend, path });
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
- finished = await stopTake(await browserBox(take.browser), take.folder);
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 the agent's sandbox, creating its folder. */
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 (isSandboxBackend(backend)) {
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 Python's `posixpath.normpath` writes it. */
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
  }