@anvailabs/agentbrowser-mcp 1.8.13 → 1.8.15

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/dist/bin.js CHANGED
@@ -4506,6 +4506,10 @@ var DELIVERED_WAIT_TYPES = [
4506
4506
 
4507
4507
  // ../protocol/dist/schemas.js
4508
4508
  var ErrorCodeEnum = Type.Union([
4509
+ Type.Literal("SESSION_BUSY"),
4510
+ Type.Literal("CONTROL_REVOKED"),
4511
+ Type.Literal("CONTROL_REQUIRED"),
4512
+ Type.Literal("OPERATION_CONFLICT"),
4509
4513
  Type.Literal("INVALID_REQUEST"),
4510
4514
  Type.Literal("INVALID_TENANT_ID"),
4511
4515
  Type.Literal("UNAUTHORIZED"),
@@ -4523,6 +4527,7 @@ var ErrorCodeEnum = Type.Union([
4523
4527
  Type.Literal("TARGET_DISABLED"),
4524
4528
  Type.Literal("NAVIGATION_TIMEOUT"),
4525
4529
  Type.Literal("ACTION_TIMEOUT"),
4530
+ Type.Literal("VALUE_MISMATCH"),
4526
4531
  Type.Literal("PLAN_WAIT_TIMEOUT"),
4527
4532
  Type.Literal("ENGINE_UNSUPPORTED"),
4528
4533
  Type.Literal("ENGINE_CRASHED"),
@@ -4580,6 +4585,7 @@ var SessionCookieSchema = Type.Object({
4580
4585
  sameSite: Type.Optional(Type.Union([Type.Literal("Strict"), Type.Literal("Lax"), Type.Literal("None")]))
4581
4586
  });
4582
4587
  var SessionRequestSchema = Type.Object({
4588
+ controlMode: Type.Optional(Type.Literal("delegated")),
4583
4589
  tenantId: Type.Optional(Type.String({ minLength: 1 })),
4584
4590
  // Known engine names plus any registered engine name (TD-BROWSER-7
4585
4591
  // registry routes arbitrary names; unknown names fail at the service).
@@ -4713,7 +4719,7 @@ var PageStateSchema = Type.Object({
4713
4719
  untrustedContent: Type.Boolean(),
4714
4720
  continuation: Type.Optional(ContinuationCursorSchema),
4715
4721
  degraded: Type.Optional(Type.Boolean()),
4716
- degradedReason: Type.Optional(Type.Literal("aria-snapshot-timeout"))
4722
+ degradedReason: Type.Optional(Type.Union([Type.Literal("aria-snapshot-timeout"), Type.Literal("dom-semantic-subset")]))
4717
4723
  });
4718
4724
  var ElementTargetSchema = Type.Object({
4719
4725
  ref: Type.String({ pattern: REF_PATTERN.source })
@@ -4743,7 +4749,8 @@ var FillActionSchema = Type.Object({
4743
4749
  type: Type.Literal("fill"),
4744
4750
  target: ElementTargetSchema,
4745
4751
  value: Type.String(),
4746
- sensitive: Type.Optional(Type.Boolean())
4752
+ sensitive: Type.Optional(Type.Boolean()),
4753
+ expectValue: Type.Optional(Type.String())
4747
4754
  });
4748
4755
  var SelectActionSchema = Type.Object({
4749
4756
  type: Type.Literal("select"),
@@ -4773,7 +4780,8 @@ var ScrollActionSchema = Type.Object({
4773
4780
  var PressActionSchema = Type.Object({
4774
4781
  type: Type.Literal("press"),
4775
4782
  target: Type.Optional(ElementTargetSchema),
4776
- key: Type.String()
4783
+ key: Type.String(),
4784
+ count: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 }))
4777
4785
  });
4778
4786
  var WaitTypeSchema = Type.Union([
4779
4787
  Type.Literal("domcontentloaded"),
@@ -4811,6 +4819,7 @@ var PlanStepSchema = Type.Object({
4811
4819
  deltaX: Type.Optional(Type.Number()),
4812
4820
  deltaY: Type.Optional(Type.Number()),
4813
4821
  key: Type.Optional(Type.String()),
4822
+ count: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })),
4814
4823
  direction: Type.Optional(Type.Union([
4815
4824
  Type.Literal("up"),
4816
4825
  Type.Literal("down"),
@@ -4824,6 +4833,8 @@ var PlanStepSchema = Type.Object({
4824
4833
  promptText: Type.Optional(Type.String()),
4825
4834
  wait: Type.Optional(DeliveredWaitConditionSchema),
4826
4835
  condition: Type.Optional(DeliveredWaitConditionSchema),
4836
+ /** Verify a native field after one fill; never retry or echo the value. */
4837
+ expectValue: Type.Optional(Type.String()),
4827
4838
  /** TD-BROWSER-8 Phase 2: pre-step label wait. */
4828
4839
  waitForLabel: Type.Optional(Type.String({ minLength: 1, maxLength: 200 })),
4829
4840
  /** Bounded hard (100-60000): garbage here wedged the poll loop pre-v1.8.2. */
@@ -5561,6 +5572,10 @@ function validatePlanStep(body) {
5561
5572
  // ../protocol/dist/errors.js
5562
5573
  var ErrorCode;
5563
5574
  (function(ErrorCode2) {
5575
+ ErrorCode2["SESSION_BUSY"] = "SESSION_BUSY";
5576
+ ErrorCode2["CONTROL_REVOKED"] = "CONTROL_REVOKED";
5577
+ ErrorCode2["CONTROL_REQUIRED"] = "CONTROL_REQUIRED";
5578
+ ErrorCode2["OPERATION_CONFLICT"] = "OPERATION_CONFLICT";
5564
5579
  ErrorCode2["INVALID_REQUEST"] = "INVALID_REQUEST";
5565
5580
  ErrorCode2["INVALID_TENANT_ID"] = "INVALID_TENANT_ID";
5566
5581
  ErrorCode2["UNAUTHORIZED"] = "UNAUTHORIZED";
@@ -5578,6 +5593,7 @@ var ErrorCode;
5578
5593
  ErrorCode2["TARGET_DISABLED"] = "TARGET_DISABLED";
5579
5594
  ErrorCode2["NAVIGATION_TIMEOUT"] = "NAVIGATION_TIMEOUT";
5580
5595
  ErrorCode2["ACTION_TIMEOUT"] = "ACTION_TIMEOUT";
5596
+ ErrorCode2["VALUE_MISMATCH"] = "VALUE_MISMATCH";
5581
5597
  ErrorCode2["PLAN_WAIT_TIMEOUT"] = "PLAN_WAIT_TIMEOUT";
5582
5598
  ErrorCode2["ENGINE_UNSUPPORTED"] = "ENGINE_UNSUPPORTED";
5583
5599
  ErrorCode2["ENGINE_CRASHED"] = "ENGINE_CRASHED";
@@ -5658,6 +5674,48 @@ function validateWireAction(body) {
5658
5674
  };
5659
5675
  }
5660
5676
 
5677
+ // ../protocol/dist/control.js
5678
+ var ControlStateSchema = Type.Union([
5679
+ Type.Literal("HUMAN_ACTIVE"),
5680
+ Type.Literal("RESUME_REVIEW"),
5681
+ Type.Literal("AGENT_ACTIVE"),
5682
+ Type.Literal("PAUSE_REQUESTED"),
5683
+ Type.Literal("STOPPED")
5684
+ ]);
5685
+ var OperationRecordSchema = Type.Object({
5686
+ operationId: Type.String(),
5687
+ epoch: Type.Integer(),
5688
+ status: Type.Union([
5689
+ Type.Literal("in_flight"),
5690
+ Type.Literal("completed"),
5691
+ Type.Literal("failed"),
5692
+ Type.Literal("outcome_unknown")
5693
+ ]),
5694
+ dispatched: Type.Boolean()
5695
+ });
5696
+ var ControlViewSchema = Type.Object({
5697
+ state: ControlStateSchema,
5698
+ epoch: Type.Integer(),
5699
+ busy: Type.Boolean(),
5700
+ operation: Type.Optional(OperationRecordSchema)
5701
+ });
5702
+ var ControlReviewSchema = Type.Intersect([
5703
+ ControlViewSchema,
5704
+ Type.Object({
5705
+ pages: Type.Array(Type.Object({
5706
+ pageId: Type.String(),
5707
+ url: Type.String(),
5708
+ title: Type.String(),
5709
+ revision: Type.Integer(),
5710
+ summary: Type.String()
5711
+ }))
5712
+ })
5713
+ ]);
5714
+ var ControlGrantSchema = Type.Intersect([
5715
+ ControlViewSchema,
5716
+ Type.Object({ token: Type.String() })
5717
+ ]);
5718
+
5661
5719
  // ../sdk-typescript/dist/client.js
5662
5720
  var AgentBrowserError = class extends Error {
5663
5721
  code;
@@ -5685,6 +5743,7 @@ var HttpClient = class {
5685
5743
  this.headers = headers;
5686
5744
  }
5687
5745
  async requestJson(path, init = {}) {
5746
+ const operationId = path.startsWith("/v1/sessions/") && !path.includes("/control") && init.method && init.method !== "GET" ? init.operationId ?? this.headers["x-agentbrowser-operation-id"] ?? crypto.randomUUID() : void 0;
5688
5747
  const controller = new AbortController();
5689
5748
  const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
5690
5749
  try {
@@ -5692,6 +5751,7 @@ var HttpClient = class {
5692
5751
  method: init.method ?? "GET",
5693
5752
  headers: {
5694
5753
  ...this.headers,
5754
+ ...operationId ? { "x-agentbrowser-operation-id": operationId } : {},
5695
5755
  ...init.body !== void 0 ? { "Content-Type": "application/json" } : {}
5696
5756
  },
5697
5757
  ...init.body !== void 0 ? { body: JSON.stringify(init.body) } : {},
@@ -5715,13 +5775,18 @@ var HttpClient = class {
5715
5775
  retryable: false
5716
5776
  };
5717
5777
  }
5718
- throw new AgentBrowserError(error2.code, error2.message, error2.retryable, error2.details, error2.action, error2.traceId);
5778
+ throw new AgentBrowserError(error2.code, error2.message, error2.retryable, { ...error2.details, ...operationId ? { operationId } : {} }, error2.action, error2.traceId);
5719
5779
  }
5720
- return await response.json();
5780
+ const result = await response.json();
5781
+ if (result?.replay === true)
5782
+ throw new AgentBrowserError("OPERATION_RECORDED", "Operation already recorded; reconcile its status before taking further action", false, { operationId, operation: result.operation });
5783
+ return result;
5721
5784
  } catch (error2) {
5722
5785
  if (controller.signal.aborted) {
5723
- throw new AgentBrowserError("TIMEOUT", "Request timeout", false);
5786
+ throw new AgentBrowserError("TIMEOUT", "Request timeout; outcome may be unknown", false, operationId ? { operationId } : void 0);
5724
5787
  }
5788
+ if (!(error2 instanceof AgentBrowserError) && operationId)
5789
+ throw new AgentBrowserError("TRANSPORT_ERROR", "Response unavailable; reconcile the operation before retrying", false, { operationId });
5725
5790
  throw error2;
5726
5791
  } finally {
5727
5792
  clearTimeout(timeoutId);
@@ -5733,6 +5798,30 @@ var SessionsClient = class {
5733
5798
  constructor(http) {
5734
5799
  this.http = http;
5735
5800
  }
5801
+ async control(sessionId) {
5802
+ return this.http.requestJson(`/v1/sessions/${sessionId}/control`);
5803
+ }
5804
+ async takeover(sessionId) {
5805
+ return this.http.requestJson(`/v1/sessions/${sessionId}/control/takeover`, { method: "POST" });
5806
+ }
5807
+ async prepareResume(sessionId) {
5808
+ return this.http.requestJson(`/v1/sessions/${sessionId}/control/prepare-resume`, {
5809
+ method: "POST"
5810
+ });
5811
+ }
5812
+ async delegate(sessionId, epoch) {
5813
+ return this.http.requestJson(`/v1/sessions/${sessionId}/control/delegate`, {
5814
+ method: "POST",
5815
+ body: { epoch }
5816
+ });
5817
+ }
5818
+ async operation(sessionId, operationId) {
5819
+ return this.http.requestJson(`/v1/sessions/${sessionId}/operations/${encodeURIComponent(operationId)}`);
5820
+ }
5821
+ async listPages(sessionId) {
5822
+ const result = await this.http.requestJson(`/v1/sessions/${sessionId}/pages`);
5823
+ return result.pages;
5824
+ }
5736
5825
  async create(request) {
5737
5826
  return this.http.requestJson("/v1/sessions", { method: "POST", body: request });
5738
5827
  }
@@ -5746,9 +5835,10 @@ var SessionsClient = class {
5746
5835
  async close(sessionId) {
5747
5836
  await this.http.requestJson(`/v1/sessions/${sessionId}`, { method: "DELETE" });
5748
5837
  }
5749
- async createPage(sessionId, request) {
5838
+ async createPage(sessionId, request, options = {}) {
5750
5839
  return this.http.requestJson(`/v1/sessions/${sessionId}/pages`, {
5751
5840
  method: "POST",
5841
+ ...options,
5752
5842
  ...request !== void 0 ? { body: request } : {}
5753
5843
  });
5754
5844
  }
@@ -5798,10 +5888,11 @@ var SessionsClient = class {
5798
5888
  return body.events;
5799
5889
  }
5800
5890
  /** TD-BROWSER-8: execute a batched action plan; returns per-step results. */
5801
- async plan(sessionId, pageId, actions) {
5891
+ async plan(sessionId, pageId, actions, options = {}) {
5802
5892
  return this.http.requestJson(`/v1/sessions/${sessionId}/pages/${pageId}/plan`, {
5803
5893
  method: "POST",
5804
- body: { actions }
5894
+ body: { actions },
5895
+ ...options
5805
5896
  });
5806
5897
  }
5807
5898
  /** TD-BROWSER-8: self-contained snapshot payload for one-shot LLM reasoning. */
@@ -5814,8 +5905,9 @@ var SessionsClient = class {
5814
5905
  const qs = query.toString();
5815
5906
  return this.http.requestJson(`/v1/sessions/${sessionId}/pages/${pageId}/snapshot${qs ? `?${qs}` : ""}`);
5816
5907
  }
5817
- async navigate(sessionId, pageId, request) {
5908
+ async navigate(sessionId, pageId, request, options = {}) {
5818
5909
  return this.http.requestJson(`/v1/sessions/${sessionId}/pages/${pageId}/navigate`, {
5910
+ ...options,
5819
5911
  method: "POST",
5820
5912
  body: request
5821
5913
  });
@@ -5826,8 +5918,9 @@ var SessionsClient = class {
5826
5918
  body: request
5827
5919
  });
5828
5920
  }
5829
- async executeAction(sessionId, pageId, request) {
5921
+ async executeAction(sessionId, pageId, request, options = {}) {
5830
5922
  return this.http.requestJson(`/v1/sessions/${sessionId}/pages/${pageId}/act`, {
5923
+ ...options,
5831
5924
  method: "POST",
5832
5925
  body: request
5833
5926
  });
@@ -5884,6 +5977,13 @@ function sessionAndPage(args) {
5884
5977
  }
5885
5978
  return [args.sessionId, args.pageId];
5886
5979
  }
5980
+ function operationOptions(args) {
5981
+ if (args.operationId === void 0)
5982
+ return [];
5983
+ if (typeof args.operationId !== "string" || !/^[a-zA-Z0-9_-]{1,128}$/.test(args.operationId))
5984
+ throw new UsageError("A valid operationId is required");
5985
+ return [{ operationId: args.operationId }];
5986
+ }
5887
5987
  function buildTools(client) {
5888
5988
  return [
5889
5989
  {
@@ -6014,7 +6114,7 @@ function buildTools(client) {
6014
6114
  if (!Array.isArray(args.actions)) {
6015
6115
  throw new UsageError("actions is required and must be an array of plan steps.");
6016
6116
  }
6017
- return await client.sessions.plan(sessionId, pageId, args.actions);
6117
+ return await client.sessions.plan(sessionId, pageId, args.actions, ...operationOptions(args));
6018
6118
  }
6019
6119
  },
6020
6120
  {
@@ -6056,7 +6156,7 @@ function buildTools(client) {
6056
6156
  if (typeof args.waitUntil === "string") {
6057
6157
  request.waitUntil = args.waitUntil;
6058
6158
  }
6059
- return await client.sessions.navigate(sessionId, pageId, request);
6159
+ return await client.sessions.navigate(sessionId, pageId, request, ...operationOptions(args));
6060
6160
  }
6061
6161
  },
6062
6162
  {
@@ -6083,7 +6183,7 @@ function buildTools(client) {
6083
6183
  },
6084
6184
  include: {
6085
6185
  type: "array",
6086
- items: { type: "string", enum: ["overlays", "fileInputs"] },
6186
+ items: { type: "string", enum: ["overlays", "fileInputs", "formControls"] },
6087
6187
  description: 'Optional enrichments. "overlays" adds an aggregated list of elements that cover observed targets (useful when clicks would be intercepted). "fileInputs" adds role:"fileinput" elements for every input[type=file] (hidden ones included) so upload can target one by ref.'
6088
6188
  }
6089
6189
  },
@@ -6114,7 +6214,7 @@ function buildTools(client) {
6114
6214
  },
6115
6215
  {
6116
6216
  name: "browser_act",
6117
- description: 'Perform an action on an element by ref: click, dblclick, hover, fill, clear, check, uncheck, select, upload, scroll, press, wait, goBack, goForward, reload, or handle a dialog. upload attaches local file(s) (paths array, absolute paths only) to a file input; its target ref is optional, but when a page has several input[type=file] elements (hidden Dropzone inputs are common), call browser_observe with include:["fileInputs"] first and pass target.ref; with no ref the page must have exactly one input[type=file]. Elements are addressed by the ref from browser_observe, never by CSS selector or XPath. If the page changed since the observation, the action fails with STALE_TARGET: call browser_observe again and use the new refs; do not retry the old one. Pass remap: true to opt into healing a replaced control: the stack re-observes, matches the original element by role and name, and retries when exactly one candidate survives; the response reports the ref span as remap {from, to}. When a targeted action times out (ACTION_TIMEOUT), the failure details name the ref, what element covers it (blockedBy) and a screenshot artifact id captured at the deadline, so one retry after observing is usually enough. After opening a custom dropdown or combobox, its options often render 0.5-2s later: follow with a wait action ({action: "wait", condition: {until: "selectorVisible", selector: ...}} or "minElements") or re-observe before reading the options; filling a custom combobox input alone may not open the menu and the typed text can be dropped on blur - select from the rendered option refs instead.',
6217
+ description: 'Perform an action on an element by ref: click, dblclick, hover, fill, clear, check, uncheck, select, upload, scroll, press, wait, goBack, goForward, reload, or handle a dialog. upload attaches local file(s) (paths array, absolute paths only) to a file input; its target ref is optional, but when a page has several input[type=file] elements (hidden Dropzone inputs are common), call browser_observe with include:["fileInputs"] first and pass target.ref; with no ref the page must have exactly one input[type=file]. Elements are addressed by the ref from browser_observe, never by CSS selector or XPath. If the page changed since the observation, the action fails with STALE_TARGET: call browser_observe again and use the new refs; do not retry the old one. Pass remap: true to opt into healing a replaced control: the stack re-observes, matches the original element by role and name, and retries when exactly one candidate survives; the response reports the ref span as remap {from, to}. When a targeted action times out (ACTION_TIMEOUT), the failure details name the ref, what element covers it (blockedBy) and a screenshot artifact id captured at the deadline, so one retry after observing is usually enough. press accepts count (1-20): the keypress repeats inside one action with a single revision bump - use it for spinbutton-style controls, where the revision bump from each individual press would invalidate the ref before the next press. After opening a custom dropdown or combobox, its options often render 0.5-2s later: follow with a wait action ({action: "wait", condition: {until: "selectorVisible", selector: ...}} or "minElements") or re-observe before reading the options; filling a custom combobox input alone may not open the menu and the typed text can be dropped on blur - select from the rendered option refs instead.',
6118
6218
  inputSchema: {
6119
6219
  type: "object",
6120
6220
  properties: {
@@ -6135,11 +6235,11 @@ function buildTools(client) {
6135
6235
  if (args.target !== void 0 && (typeof ref !== "string" || !REF_PATTERN.test(ref))) {
6136
6236
  throw new UsageError(`Invalid element reference '${String(ref)}'. Expected a ref of the form e<revision>_<ordinal>, such as e1_0. Call browser_observe to list current refs.`);
6137
6237
  }
6138
- const { sessionId: _session, pageId: _page, ...request } = args;
6238
+ const { sessionId: _session, pageId: _page, operationId: _operation, ...request } = args;
6139
6239
  const validated = validateWireAction(request);
6140
6240
  if (!validated.ok)
6141
6241
  throw new UsageError(`Invalid action: ${validated.issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ")}. Element-targeted actions require a ref from browser_observe.`);
6142
- return await client.sessions.executeAction(sessionId, pageId, validated.value);
6242
+ return await client.sessions.executeAction(sessionId, pageId, validated.value, ...operationOptions(args));
6143
6243
  }
6144
6244
  },
6145
6245
  {
@@ -6283,7 +6383,54 @@ function buildTools(client) {
6283
6383
  function buildMcpServer(deps) {
6284
6384
  const client = deps.createClient({ baseUrl: deps.baseUrl ?? "http://localhost:5709" });
6285
6385
  const serverInfo = deps.serverInfo ?? { name: "agentbrowser", version: "1.0.0" };
6286
- const tools = buildTools(client);
6386
+ const tools = buildTools(client).filter((tool) => !deps.sessionId || !["browser_create", "browser_close", "browser_cookies"].includes(tool.name));
6387
+ for (const tool of tools) {
6388
+ if (deps.sessionId && Array.isArray(tool.inputSchema.required))
6389
+ tool.inputSchema.required = tool.inputSchema.required.filter((name) => name !== "sessionId");
6390
+ if (["browser_act", "browser_plan", "browser_navigate"].includes(tool.name)) {
6391
+ tool.inputSchema.properties.operationId = {
6392
+ type: "string",
6393
+ pattern: "^[a-zA-Z0-9_-]{1,128}$",
6394
+ description: "Choose a unique ID before the call. If its response is lost, query browser_operation with this ID before another write."
6395
+ };
6396
+ if (deps.sessionId)
6397
+ tool.inputSchema.required = [
6398
+ ...tool.inputSchema.required ?? [],
6399
+ "operationId"
6400
+ ];
6401
+ }
6402
+ }
6403
+ if (deps.sessionId) {
6404
+ const sessionId = deps.sessionId;
6405
+ tools.push({
6406
+ name: "browser_session",
6407
+ description: "Inspect the delegated session control status and available pages. Human takeover revokes this connection; ask the operator for a new grant.",
6408
+ inputSchema: { type: "object", properties: {} },
6409
+ handler: async () => {
6410
+ if (!client.sessions.control || !client.sessions.listPages)
6411
+ throw new UsageError("Client does not support delegated sessions");
6412
+ return {
6413
+ sessionId,
6414
+ control: await client.sessions.control(sessionId),
6415
+ pages: await client.sessions.listPages(sessionId)
6416
+ };
6417
+ }
6418
+ });
6419
+ tools.push({
6420
+ name: "browser_operation",
6421
+ description: "Reconcile a lost response using its operationId. outcome_unknown requires independent inspection; never blindly repeat the action.",
6422
+ inputSchema: {
6423
+ type: "object",
6424
+ properties: { operationId: { type: "string" } },
6425
+ required: ["operationId"]
6426
+ },
6427
+ handler: async (args) => {
6428
+ if (!client.sessions.operation || typeof args.operationId !== "string")
6429
+ throw new UsageError("operationId is required");
6430
+ return client.sessions.operation(sessionId, args.operationId);
6431
+ }
6432
+ });
6433
+ }
6287
6434
  const toolByName = new Map(tools.map((tool) => [tool.name, tool]));
6288
6435
  return {
6289
6436
  async handle(line) {
@@ -6322,7 +6469,11 @@ function buildMcpServer(deps) {
6322
6469
  }
6323
6470
  const args = message.params?.arguments ?? {};
6324
6471
  try {
6325
- const result = await tool.handler(args);
6472
+ if (deps.sessionId && args.sessionId !== void 0 && args.sessionId !== deps.sessionId)
6473
+ throw new UsageError("This MCP connection is bound to another session");
6474
+ if (deps.sessionId && ["browser_act", "browser_plan", "browser_navigate"].includes(name) && args.operationId === void 0)
6475
+ throw new UsageError("operationId is required for a delegated mutation; choose it before dispatch so a lost response can be reconciled");
6476
+ const result = await tool.handler(deps.sessionId ? { ...args, sessionId: deps.sessionId } : args);
6326
6477
  return ok(message.id, textResult(result));
6327
6478
  } catch (err) {
6328
6479
  return ok(message.id, errorResult(formatToolError(err)));
@@ -6356,7 +6507,10 @@ function errorResult(message) {
6356
6507
  };
6357
6508
  }
6358
6509
  function formatToolError(error2) {
6359
- return formatErrorForUser(error2, "The element ref is stale. Call browser_observe to get fresh refs at the current revision, then act on the new ref. Do not retry the old one.");
6510
+ const operationId = error2?.details?.operationId;
6511
+ const suffix = typeof operationId === "string" ? `
6512
+ Reconcile with browser_operation: ${JSON.stringify({ operationId })}` : "";
6513
+ return formatErrorForUser(error2, "The element ref is stale. Call browser_observe to get fresh refs at the current revision, then act on the new ref. Do not retry the old one.") + suffix;
6360
6514
  }
6361
6515
  function ok(id, result) {
6362
6516
  return JSON.stringify({ jsonrpc: "2.0", id, result });
@@ -6397,6 +6551,7 @@ var server = buildMcpServer({
6397
6551
  ...process.env.AGENTBROWSER_API_KEY !== void 0 ? { apiKey: process.env.AGENTBROWSER_API_KEY } : {}
6398
6552
  }),
6399
6553
  baseUrl: process.env.AGENTBROWSER_BASE_URL,
6554
+ sessionId: process.env.AGENTBROWSER_SESSION_ID,
6400
6555
  serverInfo: { name: "agentbrowser", version: resolveVersion() }
6401
6556
  });
6402
6557
  var rl = createInterface({ input: process.stdin });
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,GAAG,cAAc,CAAC;IAC5B,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CACxB,IAAI,kBAAkB,CAAC;QACrB,GAAG,OAAO;QACV,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,SAAS;YAChD,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;CAChE,CAAC,CAAC;AAEH,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAErD,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM;SACH,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,uEAAuE;QACvE,iDAAiD;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,GAAG,cAAc,CAAC;IAC5B,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CACxB,IAAI,kBAAkB,CAAC;QACrB,GAAG,OAAO;QACV,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,SAAS;YAChD,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IAC1C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;CAChE,CAAC,CAAC;AAEH,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAErD,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM;SACH,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,uEAAuE;QACvE,iDAAiD;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -4502,6 +4502,10 @@ var DELIVERED_WAIT_TYPES = [
4502
4502
 
4503
4503
  // ../protocol/dist/schemas.js
4504
4504
  var ErrorCodeEnum = Type.Union([
4505
+ Type.Literal("SESSION_BUSY"),
4506
+ Type.Literal("CONTROL_REVOKED"),
4507
+ Type.Literal("CONTROL_REQUIRED"),
4508
+ Type.Literal("OPERATION_CONFLICT"),
4505
4509
  Type.Literal("INVALID_REQUEST"),
4506
4510
  Type.Literal("INVALID_TENANT_ID"),
4507
4511
  Type.Literal("UNAUTHORIZED"),
@@ -4519,6 +4523,7 @@ var ErrorCodeEnum = Type.Union([
4519
4523
  Type.Literal("TARGET_DISABLED"),
4520
4524
  Type.Literal("NAVIGATION_TIMEOUT"),
4521
4525
  Type.Literal("ACTION_TIMEOUT"),
4526
+ Type.Literal("VALUE_MISMATCH"),
4522
4527
  Type.Literal("PLAN_WAIT_TIMEOUT"),
4523
4528
  Type.Literal("ENGINE_UNSUPPORTED"),
4524
4529
  Type.Literal("ENGINE_CRASHED"),
@@ -4576,6 +4581,7 @@ var SessionCookieSchema = Type.Object({
4576
4581
  sameSite: Type.Optional(Type.Union([Type.Literal("Strict"), Type.Literal("Lax"), Type.Literal("None")]))
4577
4582
  });
4578
4583
  var SessionRequestSchema = Type.Object({
4584
+ controlMode: Type.Optional(Type.Literal("delegated")),
4579
4585
  tenantId: Type.Optional(Type.String({ minLength: 1 })),
4580
4586
  // Known engine names plus any registered engine name (TD-BROWSER-7
4581
4587
  // registry routes arbitrary names; unknown names fail at the service).
@@ -4709,7 +4715,7 @@ var PageStateSchema = Type.Object({
4709
4715
  untrustedContent: Type.Boolean(),
4710
4716
  continuation: Type.Optional(ContinuationCursorSchema),
4711
4717
  degraded: Type.Optional(Type.Boolean()),
4712
- degradedReason: Type.Optional(Type.Literal("aria-snapshot-timeout"))
4718
+ degradedReason: Type.Optional(Type.Union([Type.Literal("aria-snapshot-timeout"), Type.Literal("dom-semantic-subset")]))
4713
4719
  });
4714
4720
  var ElementTargetSchema = Type.Object({
4715
4721
  ref: Type.String({ pattern: REF_PATTERN.source })
@@ -4739,7 +4745,8 @@ var FillActionSchema = Type.Object({
4739
4745
  type: Type.Literal("fill"),
4740
4746
  target: ElementTargetSchema,
4741
4747
  value: Type.String(),
4742
- sensitive: Type.Optional(Type.Boolean())
4748
+ sensitive: Type.Optional(Type.Boolean()),
4749
+ expectValue: Type.Optional(Type.String())
4743
4750
  });
4744
4751
  var SelectActionSchema = Type.Object({
4745
4752
  type: Type.Literal("select"),
@@ -4769,7 +4776,8 @@ var ScrollActionSchema = Type.Object({
4769
4776
  var PressActionSchema = Type.Object({
4770
4777
  type: Type.Literal("press"),
4771
4778
  target: Type.Optional(ElementTargetSchema),
4772
- key: Type.String()
4779
+ key: Type.String(),
4780
+ count: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 }))
4773
4781
  });
4774
4782
  var WaitTypeSchema = Type.Union([
4775
4783
  Type.Literal("domcontentloaded"),
@@ -4807,6 +4815,7 @@ var PlanStepSchema = Type.Object({
4807
4815
  deltaX: Type.Optional(Type.Number()),
4808
4816
  deltaY: Type.Optional(Type.Number()),
4809
4817
  key: Type.Optional(Type.String()),
4818
+ count: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })),
4810
4819
  direction: Type.Optional(Type.Union([
4811
4820
  Type.Literal("up"),
4812
4821
  Type.Literal("down"),
@@ -4820,6 +4829,8 @@ var PlanStepSchema = Type.Object({
4820
4829
  promptText: Type.Optional(Type.String()),
4821
4830
  wait: Type.Optional(DeliveredWaitConditionSchema),
4822
4831
  condition: Type.Optional(DeliveredWaitConditionSchema),
4832
+ /** Verify a native field after one fill; never retry or echo the value. */
4833
+ expectValue: Type.Optional(Type.String()),
4823
4834
  /** TD-BROWSER-8 Phase 2: pre-step label wait. */
4824
4835
  waitForLabel: Type.Optional(Type.String({ minLength: 1, maxLength: 200 })),
4825
4836
  /** Bounded hard (100-60000): garbage here wedged the poll loop pre-v1.8.2. */
@@ -5557,6 +5568,10 @@ function validatePlanStep(body) {
5557
5568
  // ../protocol/dist/errors.js
5558
5569
  var ErrorCode;
5559
5570
  (function(ErrorCode2) {
5571
+ ErrorCode2["SESSION_BUSY"] = "SESSION_BUSY";
5572
+ ErrorCode2["CONTROL_REVOKED"] = "CONTROL_REVOKED";
5573
+ ErrorCode2["CONTROL_REQUIRED"] = "CONTROL_REQUIRED";
5574
+ ErrorCode2["OPERATION_CONFLICT"] = "OPERATION_CONFLICT";
5560
5575
  ErrorCode2["INVALID_REQUEST"] = "INVALID_REQUEST";
5561
5576
  ErrorCode2["INVALID_TENANT_ID"] = "INVALID_TENANT_ID";
5562
5577
  ErrorCode2["UNAUTHORIZED"] = "UNAUTHORIZED";
@@ -5574,6 +5589,7 @@ var ErrorCode;
5574
5589
  ErrorCode2["TARGET_DISABLED"] = "TARGET_DISABLED";
5575
5590
  ErrorCode2["NAVIGATION_TIMEOUT"] = "NAVIGATION_TIMEOUT";
5576
5591
  ErrorCode2["ACTION_TIMEOUT"] = "ACTION_TIMEOUT";
5592
+ ErrorCode2["VALUE_MISMATCH"] = "VALUE_MISMATCH";
5577
5593
  ErrorCode2["PLAN_WAIT_TIMEOUT"] = "PLAN_WAIT_TIMEOUT";
5578
5594
  ErrorCode2["ENGINE_UNSUPPORTED"] = "ENGINE_UNSUPPORTED";
5579
5595
  ErrorCode2["ENGINE_CRASHED"] = "ENGINE_CRASHED";
@@ -5654,6 +5670,48 @@ function validateWireAction(body) {
5654
5670
  };
5655
5671
  }
5656
5672
 
5673
+ // ../protocol/dist/control.js
5674
+ var ControlStateSchema = Type.Union([
5675
+ Type.Literal("HUMAN_ACTIVE"),
5676
+ Type.Literal("RESUME_REVIEW"),
5677
+ Type.Literal("AGENT_ACTIVE"),
5678
+ Type.Literal("PAUSE_REQUESTED"),
5679
+ Type.Literal("STOPPED")
5680
+ ]);
5681
+ var OperationRecordSchema = Type.Object({
5682
+ operationId: Type.String(),
5683
+ epoch: Type.Integer(),
5684
+ status: Type.Union([
5685
+ Type.Literal("in_flight"),
5686
+ Type.Literal("completed"),
5687
+ Type.Literal("failed"),
5688
+ Type.Literal("outcome_unknown")
5689
+ ]),
5690
+ dispatched: Type.Boolean()
5691
+ });
5692
+ var ControlViewSchema = Type.Object({
5693
+ state: ControlStateSchema,
5694
+ epoch: Type.Integer(),
5695
+ busy: Type.Boolean(),
5696
+ operation: Type.Optional(OperationRecordSchema)
5697
+ });
5698
+ var ControlReviewSchema = Type.Intersect([
5699
+ ControlViewSchema,
5700
+ Type.Object({
5701
+ pages: Type.Array(Type.Object({
5702
+ pageId: Type.String(),
5703
+ url: Type.String(),
5704
+ title: Type.String(),
5705
+ revision: Type.Integer(),
5706
+ summary: Type.String()
5707
+ }))
5708
+ })
5709
+ ]);
5710
+ var ControlGrantSchema = Type.Intersect([
5711
+ ControlViewSchema,
5712
+ Type.Object({ token: Type.String() })
5713
+ ]);
5714
+
5657
5715
  // dist/mcp-server.js
5658
5716
  var PROTOCOL_VERSION = "2024-11-05";
5659
5717
  function sessionAndPage(args) {
@@ -5665,6 +5723,13 @@ function sessionAndPage(args) {
5665
5723
  }
5666
5724
  return [args.sessionId, args.pageId];
5667
5725
  }
5726
+ function operationOptions(args) {
5727
+ if (args.operationId === void 0)
5728
+ return [];
5729
+ if (typeof args.operationId !== "string" || !/^[a-zA-Z0-9_-]{1,128}$/.test(args.operationId))
5730
+ throw new UsageError("A valid operationId is required");
5731
+ return [{ operationId: args.operationId }];
5732
+ }
5668
5733
  function buildTools(client) {
5669
5734
  return [
5670
5735
  {
@@ -5795,7 +5860,7 @@ function buildTools(client) {
5795
5860
  if (!Array.isArray(args.actions)) {
5796
5861
  throw new UsageError("actions is required and must be an array of plan steps.");
5797
5862
  }
5798
- return await client.sessions.plan(sessionId, pageId, args.actions);
5863
+ return await client.sessions.plan(sessionId, pageId, args.actions, ...operationOptions(args));
5799
5864
  }
5800
5865
  },
5801
5866
  {
@@ -5837,7 +5902,7 @@ function buildTools(client) {
5837
5902
  if (typeof args.waitUntil === "string") {
5838
5903
  request.waitUntil = args.waitUntil;
5839
5904
  }
5840
- return await client.sessions.navigate(sessionId, pageId, request);
5905
+ return await client.sessions.navigate(sessionId, pageId, request, ...operationOptions(args));
5841
5906
  }
5842
5907
  },
5843
5908
  {
@@ -5864,7 +5929,7 @@ function buildTools(client) {
5864
5929
  },
5865
5930
  include: {
5866
5931
  type: "array",
5867
- items: { type: "string", enum: ["overlays", "fileInputs"] },
5932
+ items: { type: "string", enum: ["overlays", "fileInputs", "formControls"] },
5868
5933
  description: 'Optional enrichments. "overlays" adds an aggregated list of elements that cover observed targets (useful when clicks would be intercepted). "fileInputs" adds role:"fileinput" elements for every input[type=file] (hidden ones included) so upload can target one by ref.'
5869
5934
  }
5870
5935
  },
@@ -5895,7 +5960,7 @@ function buildTools(client) {
5895
5960
  },
5896
5961
  {
5897
5962
  name: "browser_act",
5898
- description: 'Perform an action on an element by ref: click, dblclick, hover, fill, clear, check, uncheck, select, upload, scroll, press, wait, goBack, goForward, reload, or handle a dialog. upload attaches local file(s) (paths array, absolute paths only) to a file input; its target ref is optional, but when a page has several input[type=file] elements (hidden Dropzone inputs are common), call browser_observe with include:["fileInputs"] first and pass target.ref; with no ref the page must have exactly one input[type=file]. Elements are addressed by the ref from browser_observe, never by CSS selector or XPath. If the page changed since the observation, the action fails with STALE_TARGET: call browser_observe again and use the new refs; do not retry the old one. Pass remap: true to opt into healing a replaced control: the stack re-observes, matches the original element by role and name, and retries when exactly one candidate survives; the response reports the ref span as remap {from, to}. When a targeted action times out (ACTION_TIMEOUT), the failure details name the ref, what element covers it (blockedBy) and a screenshot artifact id captured at the deadline, so one retry after observing is usually enough. After opening a custom dropdown or combobox, its options often render 0.5-2s later: follow with a wait action ({action: "wait", condition: {until: "selectorVisible", selector: ...}} or "minElements") or re-observe before reading the options; filling a custom combobox input alone may not open the menu and the typed text can be dropped on blur - select from the rendered option refs instead.',
5963
+ description: 'Perform an action on an element by ref: click, dblclick, hover, fill, clear, check, uncheck, select, upload, scroll, press, wait, goBack, goForward, reload, or handle a dialog. upload attaches local file(s) (paths array, absolute paths only) to a file input; its target ref is optional, but when a page has several input[type=file] elements (hidden Dropzone inputs are common), call browser_observe with include:["fileInputs"] first and pass target.ref; with no ref the page must have exactly one input[type=file]. Elements are addressed by the ref from browser_observe, never by CSS selector or XPath. If the page changed since the observation, the action fails with STALE_TARGET: call browser_observe again and use the new refs; do not retry the old one. Pass remap: true to opt into healing a replaced control: the stack re-observes, matches the original element by role and name, and retries when exactly one candidate survives; the response reports the ref span as remap {from, to}. When a targeted action times out (ACTION_TIMEOUT), the failure details name the ref, what element covers it (blockedBy) and a screenshot artifact id captured at the deadline, so one retry after observing is usually enough. press accepts count (1-20): the keypress repeats inside one action with a single revision bump - use it for spinbutton-style controls, where the revision bump from each individual press would invalidate the ref before the next press. After opening a custom dropdown or combobox, its options often render 0.5-2s later: follow with a wait action ({action: "wait", condition: {until: "selectorVisible", selector: ...}} or "minElements") or re-observe before reading the options; filling a custom combobox input alone may not open the menu and the typed text can be dropped on blur - select from the rendered option refs instead.',
5899
5964
  inputSchema: {
5900
5965
  type: "object",
5901
5966
  properties: {
@@ -5916,11 +5981,11 @@ function buildTools(client) {
5916
5981
  if (args.target !== void 0 && (typeof ref !== "string" || !REF_PATTERN.test(ref))) {
5917
5982
  throw new UsageError(`Invalid element reference '${String(ref)}'. Expected a ref of the form e<revision>_<ordinal>, such as e1_0. Call browser_observe to list current refs.`);
5918
5983
  }
5919
- const { sessionId: _session, pageId: _page, ...request } = args;
5984
+ const { sessionId: _session, pageId: _page, operationId: _operation, ...request } = args;
5920
5985
  const validated = validateWireAction(request);
5921
5986
  if (!validated.ok)
5922
5987
  throw new UsageError(`Invalid action: ${validated.issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ")}. Element-targeted actions require a ref from browser_observe.`);
5923
- return await client.sessions.executeAction(sessionId, pageId, validated.value);
5988
+ return await client.sessions.executeAction(sessionId, pageId, validated.value, ...operationOptions(args));
5924
5989
  }
5925
5990
  },
5926
5991
  {
@@ -6064,7 +6129,54 @@ function buildTools(client) {
6064
6129
  function buildMcpServer(deps) {
6065
6130
  const client = deps.createClient({ baseUrl: deps.baseUrl ?? "http://localhost:5709" });
6066
6131
  const serverInfo = deps.serverInfo ?? { name: "agentbrowser", version: "1.0.0" };
6067
- const tools = buildTools(client);
6132
+ const tools = buildTools(client).filter((tool) => !deps.sessionId || !["browser_create", "browser_close", "browser_cookies"].includes(tool.name));
6133
+ for (const tool of tools) {
6134
+ if (deps.sessionId && Array.isArray(tool.inputSchema.required))
6135
+ tool.inputSchema.required = tool.inputSchema.required.filter((name) => name !== "sessionId");
6136
+ if (["browser_act", "browser_plan", "browser_navigate"].includes(tool.name)) {
6137
+ tool.inputSchema.properties.operationId = {
6138
+ type: "string",
6139
+ pattern: "^[a-zA-Z0-9_-]{1,128}$",
6140
+ description: "Choose a unique ID before the call. If its response is lost, query browser_operation with this ID before another write."
6141
+ };
6142
+ if (deps.sessionId)
6143
+ tool.inputSchema.required = [
6144
+ ...tool.inputSchema.required ?? [],
6145
+ "operationId"
6146
+ ];
6147
+ }
6148
+ }
6149
+ if (deps.sessionId) {
6150
+ const sessionId = deps.sessionId;
6151
+ tools.push({
6152
+ name: "browser_session",
6153
+ description: "Inspect the delegated session control status and available pages. Human takeover revokes this connection; ask the operator for a new grant.",
6154
+ inputSchema: { type: "object", properties: {} },
6155
+ handler: async () => {
6156
+ if (!client.sessions.control || !client.sessions.listPages)
6157
+ throw new UsageError("Client does not support delegated sessions");
6158
+ return {
6159
+ sessionId,
6160
+ control: await client.sessions.control(sessionId),
6161
+ pages: await client.sessions.listPages(sessionId)
6162
+ };
6163
+ }
6164
+ });
6165
+ tools.push({
6166
+ name: "browser_operation",
6167
+ description: "Reconcile a lost response using its operationId. outcome_unknown requires independent inspection; never blindly repeat the action.",
6168
+ inputSchema: {
6169
+ type: "object",
6170
+ properties: { operationId: { type: "string" } },
6171
+ required: ["operationId"]
6172
+ },
6173
+ handler: async (args) => {
6174
+ if (!client.sessions.operation || typeof args.operationId !== "string")
6175
+ throw new UsageError("operationId is required");
6176
+ return client.sessions.operation(sessionId, args.operationId);
6177
+ }
6178
+ });
6179
+ }
6068
6180
  const toolByName = new Map(tools.map((tool) => [tool.name, tool]));
6069
6181
  return {
6070
6182
  async handle(line) {
@@ -6103,7 +6215,11 @@ function buildMcpServer(deps) {
6103
6215
  }
6104
6216
  const args = message.params?.arguments ?? {};
6105
6217
  try {
6106
- const result = await tool.handler(args);
6218
+ if (deps.sessionId && args.sessionId !== void 0 && args.sessionId !== deps.sessionId)
6219
+ throw new UsageError("This MCP connection is bound to another session");
6220
+ if (deps.sessionId && ["browser_act", "browser_plan", "browser_navigate"].includes(name) && args.operationId === void 0)
6221
+ throw new UsageError("operationId is required for a delegated mutation; choose it before dispatch so a lost response can be reconciled");
6222
+ const result = await tool.handler(deps.sessionId ? { ...args, sessionId: deps.sessionId } : args);
6107
6223
  return ok(message.id, textResult(result));
6108
6224
  } catch (err) {
6109
6225
  return ok(message.id, errorResult(formatToolError(err)));
@@ -6137,7 +6253,10 @@ function errorResult(message) {
6137
6253
  };
6138
6254
  }
6139
6255
  function formatToolError(error2) {
6140
- return formatErrorForUser(error2, "The element ref is stale. Call browser_observe to get fresh refs at the current revision, then act on the new ref. Do not retry the old one.");
6256
+ const operationId = error2?.details?.operationId;
6257
+ const suffix = typeof operationId === "string" ? `
6258
+ Reconcile with browser_operation: ${JSON.stringify({ operationId })}` : "";
6259
+ return formatErrorForUser(error2, "The element ref is stale. Call browser_observe to get fresh refs at the current revision, then act on the new ref. Do not retry the old one.") + suffix;
6141
6260
  }
6142
6261
  function ok(id, result) {
6143
6262
  return JSON.stringify({ jsonrpc: "2.0", id, result });
@@ -8,16 +8,19 @@
8
8
  * The message handler is pure: it takes a JSON-RPC line and returns a
9
9
  * JSON-RPC line (or null for notifications), so any transport can drive it.
10
10
  */
11
- import type { ActionRequest, ActionResult, ArtifactRef, ClientOptions, ExportedCookie, ExtractRequest, ExtractResult, NavigationRequest, NavigationResponse, ObservationRequest, ObservationResponse, PageResponse, PageSnapshot, PdfRequest, ScreenshotRequest, SessionRequest, SessionResponse } from '@agentbrowser/sdk-typescript';
11
+ import type { ActionRequest, ActionResult, ArtifactRef, ClientOptions, ExportedCookie, ExtractRequest, ExtractResult, MutationOptions, NavigationRequest, NavigationResponse, ObservationRequest, ObservationResponse, PageResponse, PageSnapshot, PdfRequest, ScreenshotRequest, SessionRequest, SessionResponse } from '@agentbrowser/sdk-typescript';
12
12
  export type { ClientOptions, ExportedCookie };
13
13
  /** The slice of the SDK the MCP server depends on. */
14
14
  export interface McpClient {
15
15
  sessions: {
16
+ control?(sessionId: string): Promise<import('@agentbrowser/protocol').ControlView>;
17
+ listPages?(sessionId: string): Promise<PageResponse[]>;
18
+ operation?(sessionId: string, operationId: string): Promise<import('@agentbrowser/protocol').OperationRecord>;
16
19
  create(request: SessionRequest): Promise<SessionResponse>;
17
20
  close(sessionId: string): Promise<void>;
18
21
  /** TD-BROWSER-6: scoped cookie export for the credential handoff loop. */
19
22
  cookies(sessionId: string): Promise<ExportedCookie[]>;
20
- plan(sessionId: string, pageId: string, actions: Array<Record<string, unknown>>): Promise<{
23
+ plan(sessionId: string, pageId: string, actions: Array<Record<string, unknown>>, options?: MutationOptions): Promise<{
21
24
  ok: boolean;
22
25
  completed: number;
23
26
  results: Array<{
@@ -30,9 +33,9 @@ export interface McpClient {
30
33
  /** TD-BROWSER-8: self-contained snapshot payload for one-shot LLM reasoning. */
31
34
  snapshot(sessionId: string, pageId: string): Promise<PageSnapshot>;
32
35
  createPage(sessionId: string): Promise<PageResponse>;
33
- navigate(sessionId: string, pageId: string, request: NavigationRequest): Promise<NavigationResponse>;
36
+ navigate(sessionId: string, pageId: string, request: NavigationRequest, options?: MutationOptions): Promise<NavigationResponse>;
34
37
  observe(sessionId: string, pageId: string, request: ObservationRequest): Promise<ObservationResponse>;
35
- executeAction(sessionId: string, pageId: string, request: ActionRequest): Promise<ActionResult>;
38
+ executeAction(sessionId: string, pageId: string, request: ActionRequest, options?: MutationOptions): Promise<ActionResult>;
36
39
  screenshot(sessionId: string, pageId: string, request: ScreenshotRequest): Promise<ArtifactRef>;
37
40
  extract(sessionId: string, pageId: string, request: ExtractRequest): Promise<ExtractResult>;
38
41
  pdf(sessionId: string, pageId: string, request: PdfRequest): Promise<ArtifactRef>;
@@ -51,6 +54,8 @@ export interface McpClient {
51
54
  };
52
55
  }
53
56
  export interface McpDependencies {
57
+ /** Operator-configured binding. Never supplied by model tool arguments. */
58
+ sessionId?: string | undefined;
54
59
  createClient(options: ClientOptions): McpClient;
55
60
  serverInfo?: {
56
61
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,13 @@ function sessionAndPage(args) {
28
28
  * not a control-flow edit. Every tool object below is byte-identical to
29
29
  * before; only its container moved.
30
30
  */
31
+ function operationOptions(args) {
32
+ if (args.operationId === undefined)
33
+ return [];
34
+ if (typeof args.operationId !== 'string' || !/^[a-zA-Z0-9_-]{1,128}$/.test(args.operationId))
35
+ throw new UsageError('A valid operationId is required');
36
+ return [{ operationId: args.operationId }];
37
+ }
31
38
  function buildTools(client) {
32
39
  return [
33
40
  {
@@ -202,7 +209,7 @@ function buildTools(client) {
202
209
  if (!Array.isArray(args.actions)) {
203
210
  throw new UsageError('actions is required and must be an array of plan steps.');
204
211
  }
205
- return await client.sessions.plan(sessionId, pageId, args.actions);
212
+ return await client.sessions.plan(sessionId, pageId, args.actions, ...operationOptions(args));
206
213
  },
207
214
  },
208
215
  {
@@ -244,7 +251,7 @@ function buildTools(client) {
244
251
  if (typeof args.waitUntil === 'string') {
245
252
  request.waitUntil = args.waitUntil;
246
253
  }
247
- return await client.sessions.navigate(sessionId, pageId, request);
254
+ return await client.sessions.navigate(sessionId, pageId, request, ...operationOptions(args));
248
255
  },
249
256
  },
250
257
  {
@@ -289,7 +296,7 @@ function buildTools(client) {
289
296
  },
290
297
  include: {
291
298
  type: 'array',
292
- items: { type: 'string', enum: ['overlays', 'fileInputs'] },
299
+ items: { type: 'string', enum: ['overlays', 'fileInputs', 'formControls'] },
293
300
  description: 'Optional enrichments. "overlays" adds an aggregated list of elements that ' +
294
301
  'cover observed targets (useful when clicks would be intercepted). ' +
295
302
  '"fileInputs" adds role:"fileinput" elements for every input[type=file] ' +
@@ -341,6 +348,9 @@ function buildTools(client) {
341
348
  'When a targeted action times out (ACTION_TIMEOUT), the failure details name the ref, ' +
342
349
  'what element covers it (blockedBy) and a screenshot artifact id captured at the ' +
343
350
  'deadline, so one retry after observing is usually enough. ' +
351
+ 'press accepts count (1-20): the keypress repeats inside one action with a single ' +
352
+ 'revision bump - use it for spinbutton-style controls, where the revision bump from ' +
353
+ 'each individual press would invalidate the ref before the next press. ' +
344
354
  'After opening a custom dropdown or combobox, its options often render 0.5-2s ' +
345
355
  'later: follow with a wait action ({action: "wait", condition: {until: ' +
346
356
  '"selectorVisible", selector: ...}} or "minElements") or re-observe before reading ' +
@@ -366,11 +376,11 @@ function buildTools(client) {
366
376
  if (args.target !== undefined && (typeof ref !== 'string' || !REF_PATTERN.test(ref))) {
367
377
  throw new UsageError(`Invalid element reference '${String(ref)}'. Expected a ref of the form e<revision>_<ordinal>, such as e1_0. Call browser_observe to list current refs.`);
368
378
  }
369
- const { sessionId: _session, pageId: _page, ...request } = args;
379
+ const { sessionId: _session, pageId: _page, operationId: _operation, ...request } = args;
370
380
  const validated = validateWireAction(request);
371
381
  if (!validated.ok)
372
382
  throw new UsageError(`Invalid action: ${validated.issues.map((issue) => `${issue.path}: ${issue.message}`).join('; ')}. Element-targeted actions require a ref from browser_observe.`);
373
- return await client.sessions.executeAction(sessionId, pageId, validated.value);
383
+ return await client.sessions.executeAction(sessionId, pageId, validated.value, ...operationOptions(args));
374
384
  },
375
385
  },
376
386
  {
@@ -544,7 +554,54 @@ function buildTools(client) {
544
554
  export function buildMcpServer(deps) {
545
555
  const client = deps.createClient({ baseUrl: deps.baseUrl ?? 'http://localhost:5709' });
546
556
  const serverInfo = deps.serverInfo ?? { name: 'agentbrowser', version: '1.0.0' };
547
- const tools = buildTools(client);
557
+ const tools = buildTools(client).filter((tool) => !deps.sessionId || !['browser_create', 'browser_close', 'browser_cookies'].includes(tool.name));
558
+ for (const tool of tools) {
559
+ if (deps.sessionId && Array.isArray(tool.inputSchema.required))
560
+ tool.inputSchema.required = tool.inputSchema.required.filter((name) => name !== 'sessionId');
561
+ if (['browser_act', 'browser_plan', 'browser_navigate'].includes(tool.name)) {
562
+ tool.inputSchema.properties.operationId = {
563
+ type: 'string',
564
+ pattern: '^[a-zA-Z0-9_-]{1,128}$',
565
+ description: 'Choose a unique ID before the call. If its response is lost, query browser_operation with this ID before another write.',
566
+ };
567
+ if (deps.sessionId)
568
+ tool.inputSchema.required = [
569
+ ...(tool.inputSchema.required ?? []),
570
+ 'operationId',
571
+ ];
572
+ }
573
+ }
574
+ if (deps.sessionId) {
575
+ const sessionId = deps.sessionId;
576
+ tools.push({
577
+ name: 'browser_session',
578
+ description: 'Inspect the delegated session control status and available pages. Human takeover revokes this connection; ask the operator for a new grant.',
579
+ inputSchema: { type: 'object', properties: {} },
580
+ handler: async () => {
581
+ if (!client.sessions.control || !client.sessions.listPages)
582
+ throw new UsageError('Client does not support delegated sessions');
583
+ return {
584
+ sessionId,
585
+ control: await client.sessions.control(sessionId),
586
+ pages: await client.sessions.listPages(sessionId),
587
+ };
588
+ },
589
+ });
590
+ tools.push({
591
+ name: 'browser_operation',
592
+ description: 'Reconcile a lost response using its operationId. outcome_unknown requires independent inspection; never blindly repeat the action.',
593
+ inputSchema: {
594
+ type: 'object',
595
+ properties: { operationId: { type: 'string' } },
596
+ required: ['operationId'],
597
+ },
598
+ handler: async (args) => {
599
+ if (!client.sessions.operation || typeof args.operationId !== 'string')
600
+ throw new UsageError('operationId is required');
601
+ return client.sessions.operation(sessionId, args.operationId);
602
+ },
603
+ });
604
+ }
548
605
  const toolByName = new Map(tools.map((tool) => [tool.name, tool]));
549
606
  return {
550
607
  async handle(line) {
@@ -585,7 +642,15 @@ export function buildMcpServer(deps) {
585
642
  }
586
643
  const args = (message.params?.arguments ?? {});
587
644
  try {
588
- const result = await tool.handler(args);
645
+ if (deps.sessionId &&
646
+ args.sessionId !== undefined &&
647
+ args.sessionId !== deps.sessionId)
648
+ throw new UsageError('This MCP connection is bound to another session');
649
+ if (deps.sessionId &&
650
+ ['browser_act', 'browser_plan', 'browser_navigate'].includes(name) &&
651
+ args.operationId === undefined)
652
+ throw new UsageError('operationId is required for a delegated mutation; choose it before dispatch so a lost response can be reconciled');
653
+ const result = await tool.handler(deps.sessionId ? { ...args, sessionId: deps.sessionId } : args);
589
654
  return ok(message.id, textResult(result));
590
655
  }
591
656
  catch (err) {
@@ -621,7 +686,12 @@ function errorResult(message) {
621
686
  };
622
687
  }
623
688
  function formatToolError(error) {
624
- return formatErrorForUser(error, 'The element ref is stale. Call browser_observe to get fresh refs at the current revision, then act on the new ref. Do not retry the old one.');
689
+ const operationId = error?.details
690
+ ?.operationId;
691
+ const suffix = typeof operationId === 'string'
692
+ ? `\nReconcile with browser_operation: ${JSON.stringify({ operationId })}`
693
+ : '';
694
+ return (formatErrorForUser(error, 'The element ref is stale. Call browser_observe to get fresh refs at the current revision, then act on the new ref. Do not retry the old one.') + suffix);
625
695
  }
626
696
  function ok(id, result) {
627
697
  return JSON.stringify({ jsonrpc: '2.0', id, result });
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvailabs/agentbrowser-mcp",
3
- "version": "1.8.13",
3
+ "version": "1.8.15",
4
4
  "type": "module",
5
5
  "description": "MCP server exposing AgentBrowser as high-level, safe, composable tools (talks to an AgentBrowser service via AGENTBROWSER_BASE_URL)",
6
6
  "main": "dist/index.js",