@e2edev/agent-device 0.2.0 → 0.3.0

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/surface.js CHANGED
@@ -9,12 +9,13 @@
9
9
  import { mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
10
10
  import { tmpdir } from 'node:os';
11
11
  import path from 'node:path';
12
- import { BackendError, } from '@e2edev/e2e/backend';
12
+ import { EngineError, raceAbort, withinCleanupBudget, } from '@e2edev/e2e/engine';
13
13
  import { staleOr, translateError } from './errors.js';
14
14
  import { resolveExpression } from './locate.js';
15
15
  import { isWithin, projectSnapshot, screenTitle } from './nodes.js';
16
16
  import { maskPng } from './png.js';
17
- import { invalidState, notActionable, raceAbort, readPngSize, sanitizeFilename, screenUrl, swipeWithin, unsupported, withinCleanupBudget, } from './support.js';
17
+ import { invalidState, notActionable, readPngSize, sanitizeFilename, screenUrl, swipeWithin, unsupported, } from './support.js';
18
+ const MAX_LOCATED_REFS = 2048;
18
19
  /**
19
20
  * The Apple runner defers a full snapshot after slow accessibility work and
20
21
  * returns a sparse one-node tree. Retrying device-side costs under a second;
@@ -49,6 +50,7 @@ export class AgentDeviceSurface {
49
50
  testIdAttribute = 'data-testid';
50
51
  attempt;
51
52
  generation = new Map();
53
+ located = new Map();
52
54
  idCounter = 0;
53
55
  appIdentity;
54
56
  /** The app `appPath` installed at init, when no `app` option names one. */
@@ -81,7 +83,7 @@ export class AgentDeviceSurface {
81
83
  /** The live client; INVALID_STATE before init or after dispose. */
82
84
  requireClient() {
83
85
  if (this.client === undefined)
84
- throw invalidState('the agent-device backend is not initialized');
86
+ throw invalidState('the agent-device engine is not initialized');
85
87
  return this.client;
86
88
  }
87
89
  /**
@@ -92,8 +94,7 @@ export class AgentDeviceSurface {
92
94
  async command(label, run, signal) {
93
95
  const client = this.requireClient();
94
96
  try {
95
- const pending = this.track(run(client));
96
- return await (signal === undefined ? pending : raceAbort(pending, signal, label));
97
+ return await raceAbort(() => this.track(run(client)), signal ?? new AbortController().signal, label);
97
98
  }
98
99
  catch (cause) {
99
100
  throw translateError(cause, label);
@@ -131,11 +132,12 @@ export class AgentDeviceSurface {
131
132
  }
132
133
  async startAttempt(context) {
133
134
  if (this.attempt !== undefined) {
134
- throw invalidState('an attempt is already running on this agent-device backend');
135
+ throw invalidState('an attempt is already running on this agent-device engine');
135
136
  }
136
137
  await this.settleInflight(context.signal);
137
138
  this.attempt = { artifactsDir: context.artifactsDir, screenshots: 0 };
138
139
  this.generation = new Map();
140
+ this.located.clear();
139
141
  const app = this.pinnedApp;
140
142
  if (app === undefined)
141
143
  return;
@@ -144,12 +146,14 @@ export class AgentDeviceSurface {
144
146
  async endAttempt(_context) {
145
147
  this.attempt = undefined;
146
148
  this.generation = new Map();
149
+ this.located.clear();
147
150
  }
148
151
  async dispose(context) {
149
152
  const client = this.client;
150
153
  this.client = undefined;
151
154
  this.attempt = undefined;
152
155
  this.generation = new Map();
156
+ this.located.clear();
153
157
  this.appIdentity = undefined;
154
158
  this.installedApp = undefined;
155
159
  if (client === undefined)
@@ -166,6 +170,7 @@ export class AgentDeviceSurface {
166
170
  }), signal);
167
171
  this.appIdentity = result.appBundleId ?? result.appName ?? app;
168
172
  this.generation = new Map();
173
+ this.located.clear();
169
174
  }
170
175
  /**
171
176
  * Installs a build on the session's device. `reinstall` removes the app
@@ -180,7 +185,7 @@ export class AgentDeviceSurface {
180
185
  };
181
186
  const app = options.app ?? (options.reinstall === true ? this.pinnedApp : undefined);
182
187
  if (options.reinstall === true && app === undefined) {
183
- throw invalidState('reinstall needs an app: pass `app`, or pin one with the backend option `app` or `appPath`');
188
+ throw invalidState('reinstall needs an app: pass `app`, or pin one with the engine option `app` or `appPath`');
184
189
  }
185
190
  const result = (await this.command(`install ${resolved}`, (client) => options.reinstall === true && app !== undefined
186
191
  ? client.apps.reinstall({ ...selection, app, appPath: resolved })
@@ -194,7 +199,7 @@ export class AgentDeviceSurface {
194
199
  if (backoffMs > 0)
195
200
  await sleep(backoffMs, operation.signal);
196
201
  if (operation.signal.aborted)
197
- throw new BackendError('CANCELLED', 'snapshot cancelled', { retryable: false });
202
+ throw new EngineError('CANCELLED', 'snapshot cancelled', { retryable: false });
198
203
  last = (await this.command('snapshot', (client) => client.capture.snapshot({ interactiveOnly }), operation.signal));
199
204
  if (last.appBundleId !== undefined || last.appName !== undefined) {
200
205
  this.appIdentity = last.appBundleId ?? last.appName;
@@ -214,7 +219,7 @@ export class AgentDeviceSurface {
214
219
  return await this.snapshot(operation, interactiveOnly);
215
220
  }
216
221
  catch (cause) {
217
- if (!this.managesApp && cause instanceof BackendError && cause.code === 'INVALID_STATE')
222
+ if (!this.managesApp && cause instanceof EngineError && cause.code === 'INVALID_STATE')
218
223
  return { nodes: [] };
219
224
  throw cause;
220
225
  }
@@ -231,39 +236,42 @@ export class AgentDeviceSurface {
231
236
  async observe(operation, options) {
232
237
  const raw = await this.snapshotOrEmpty(operation, this.options.snapshot === 'interactive');
233
238
  const projected = this.project(raw);
234
- this.generation = new Map(projected.index.map((entry) => [entry.id, entry]));
239
+ this.generation = new Map(projected.index.map((entry) => [entry.id, this.bind(entry, projected.index)]));
240
+ const identity = raw.appBundleId ?? raw.appName ?? this.appIdentity;
235
241
  const capture = options?.pixels === true ? await this.capturePixels(operation, projected) : undefined;
236
242
  return {
237
243
  nodes: projected.roots,
244
+ ...(identity === undefined ? {} : { url: screenUrl(identity, screenTitle(projected)) }),
238
245
  ...(projected.viewport === undefined ? {} : { viewport: projected.viewport }),
239
246
  ...(capture === undefined ? {} : { pixels: capture.pixels, maskedRegionCount: capture.masked }),
240
247
  };
241
248
  }
242
- /**
243
- * The located snapshot joins the current generation instead of replacing
244
- * it, so an observation's ids stay valid across a `screen` query in the
245
- * same step. The whole snapshot joins, not only the matches: a later action
246
- * on a match may need its descendants (`controlOf`).
247
- */
249
+ /** Retains only action bindings for matches, independently of the observation generation. */
248
250
  async locate(expression, operation) {
249
251
  const raw = await this.snapshotOrEmpty(operation, false);
250
252
  const projected = this.project(raw);
251
253
  const matches = resolveExpression(expression, projected.index, { testIdAttribute: this.testIdAttribute });
252
- for (const entry of projected.index)
253
- this.generation.set(entry.id, entry);
254
+ for (const entry of matches)
255
+ this.located.set(entry.id, this.bind(entry, projected.index));
256
+ for (const oldest of this.located.keys()) {
257
+ if (this.located.size <= MAX_LOCATED_REFS)
258
+ break;
259
+ this.located.delete(oldest);
260
+ }
254
261
  return matches.map((entry) => entry.node);
255
262
  }
256
263
  resolveRef(ref) {
257
- const entry = this.generation.get(ref.id);
264
+ const entry = this.located.get(ref.id) ?? this.generation.get(ref.id);
258
265
  if (entry === undefined) {
259
- throw new BackendError('NODE_STALE', `node ${ref.id} is not part of the newest observation`, { retryable: true });
266
+ throw new EngineError('NODE_STALE', `node ${ref.id} is not part of the newest observation`, { retryable: true });
260
267
  }
261
268
  return entry;
262
269
  }
263
- actionTarget(entry) {
264
- if (entry.ref === '')
270
+ actionTarget(entry, control = false) {
271
+ const ref = control ? entry.controlRef : entry.ref;
272
+ if (ref === '')
265
273
  throw notActionable(`node ${entry.id} has no agent-device ref to act on`);
266
- return { ref: `@${entry.ref}` };
274
+ return { ref: `@${ref}` };
267
275
  }
268
276
  /**
269
277
  * The node a toggle press must land on. UIKit reports a settings row as a
@@ -272,13 +280,13 @@ export class AgentDeviceSurface {
272
280
  * centre hits the label and changes nothing. The innermost same-role
273
281
  * descendant with a ref is the control; a node without one is its own.
274
282
  */
275
- controlOf(entry) {
283
+ controlOf(entry, snapshot) {
276
284
  const role = entry.node.role;
277
285
  if (role !== 'switch' && role !== 'checkbox')
278
286
  return entry;
279
287
  let control = entry;
280
288
  let depth = 0;
281
- for (const candidate of this.generation.values()) {
289
+ for (const candidate of snapshot) {
282
290
  if (candidate.ref === '' || candidate.node.role !== role || !isWithin(candidate, entry))
283
291
  continue;
284
292
  const candidateDepth = depthBelow(candidate, entry);
@@ -289,6 +297,11 @@ export class AgentDeviceSurface {
289
297
  }
290
298
  return control;
291
299
  }
300
+ /** Copies the fields actions use and pre-resolves a toggle's inner control. */
301
+ bind(entry, snapshot) {
302
+ const { children: _children, ...node } = entry.node;
303
+ return { id: entry.id, ref: entry.ref, node, controlRef: this.controlOf(entry, snapshot).ref };
304
+ }
292
305
  async perform(ref, action, operation) {
293
306
  const entry = this.resolveRef(ref);
294
307
  const label = `perform ${action.kind}`;
@@ -299,7 +312,7 @@ export class AgentDeviceSurface {
299
312
  // observation that follows describes the screen the action produced,
300
313
  // not a frame of its transition. Best-effort on agent-device's side.
301
314
  case 'tap':
302
- return client.interactions.press({ ...this.actionTarget(this.controlOf(entry)), settle: true });
315
+ return client.interactions.press({ ...this.actionTarget(entry, true), settle: true });
303
316
  case 'focus':
304
317
  // A touch surface focuses by tapping, and a tap on anything but an
305
318
  // editable field activates it; focus is offered for fields only.
@@ -334,7 +347,7 @@ export class AgentDeviceSurface {
334
347
  }
335
348
  if (checked === wanted)
336
349
  return undefined;
337
- return client.interactions.press({ ...this.actionTarget(this.controlOf(entry)), settle: true });
350
+ return client.interactions.press({ ...this.actionTarget(entry, true), settle: true });
338
351
  }
339
352
  case 'press':
340
353
  return this.pressKey(client, entry, action.key);
@@ -358,7 +371,7 @@ export class AgentDeviceSurface {
358
371
  }
359
372
  };
360
373
  try {
361
- await raceAbort(this.track(run()), operation.signal, label);
374
+ await raceAbort(() => this.track(run()), operation.signal, label);
362
375
  }
363
376
  catch (cause) {
364
377
  throw staleOr(cause, label);
@@ -390,13 +403,13 @@ export class AgentDeviceSurface {
390
403
  async restart(operation) {
391
404
  const app = this.pinnedApp;
392
405
  if (app === undefined)
393
- throw unsupported('app.restart needs the backend option `app` or `appPath`');
406
+ throw unsupported('app.restart needs the engine option `app` or `appPath`');
394
407
  await this.openApp(app, true, operation.signal);
395
408
  }
396
409
  async clearState(operation) {
397
410
  const app = this.pinnedApp;
398
411
  if (app === undefined)
399
- throw unsupported('app.clearState needs the backend option `app` or `appPath`');
412
+ throw unsupported('app.clearState needs the engine option `app` or `appPath`');
400
413
  await this.command('clear app state', (client) => client.settings.update({ setting: 'clear-app-state', state: 'clear', app }), operation.signal);
401
414
  await this.openApp(app, true, operation.signal);
402
415
  }
@@ -425,10 +438,6 @@ export class AgentDeviceSurface {
425
438
  writeFileSync(path.join(attempt.artifactsDir, relative), masked.data);
426
439
  return relative;
427
440
  }
428
- /** Redacted screen pixels as a PNG, for the agent's screenshot tool. */
429
- async screenshotBytes(signal) {
430
- return (await this.maskedScreenshot(signal)).data;
431
- }
432
441
  /** Raw device pixels; the caller owns redaction. */
433
442
  async rawScreenshot(signal) {
434
443
  const file = path.join(tmpdir(), `e2e-agent-device-${process.pid}-${Date.now()}.png`);
@@ -444,7 +453,7 @@ export class AgentDeviceSurface {
444
453
  * Screenshot with every secure node on the current screen painted over.
445
454
  * Observes first so the regions describe the screen the pixels show;
446
455
  * throws when a secure field cannot be covered, because an image that may
447
- * hold a credential must not leave the backend.
456
+ * hold a credential must not leave the engine.
448
457
  */
449
458
  async maskedScreenshot(signal) {
450
459
  const operation = {
@@ -457,7 +466,7 @@ export class AgentDeviceSurface {
457
466
  const data = await this.rawScreenshot(signal);
458
467
  const masked = redactSecure(data, projected);
459
468
  if (masked === undefined) {
460
- throw new BackendError('BACKEND_FAILURE', 'a secure field on screen could not be masked; screenshot withheld', {
469
+ throw new EngineError('ENGINE_FAILURE', 'a secure field on screen could not be masked; screenshot withheld', {
461
470
  retryable: false,
462
471
  });
463
472
  }
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -1,24 +1,24 @@
1
1
  /**
2
2
  * Agent-side tools for device targets. Everything a model plans through
3
- * beyond the grammar verbs the backend already unlocks (tap, type, scroll)
3
+ * beyond the grammar verbs the engine already unlocks (tap, type, scroll)
4
4
  * lives here: opening another app, a free-form swipe, typing into the focused
5
5
  * field, system alerts, and a look at the pixels when the accessibility tree
6
- * is not enough. Each tool is scoped to the platforms of the backends it was
6
+ * is not enough. Each tool is scoped to the platforms of the engines it was
7
7
  * built from, so a mixed suite never offers it on a browser.
8
8
  */
9
9
  import { type DefinedTool } from '@e2edev/e2e/agent';
10
- import { type BackendHandle } from '@e2edev/e2e/backend';
10
+ import { type EngineHandle } from '@e2edev/e2e/engine';
11
11
  /**
12
- * Builds the tool pack for one or more agent-device backends, keyed the way
13
- * `createAgent({ tools })` expects. Pass every device backend a config
12
+ * Builds the tool pack for one or more agent-device engines, keyed the way
13
+ * `createAgent({ tools })` expects. Pass every device engine a config
14
14
  * declares: tool names are fixed, so two packs cannot be merged, and each
15
- * tool is offered only on the platforms those backends drive. A worker runs
15
+ * tool is offered only on the platforms those engines drive. A worker runs
16
16
  * one attempt at a time, so at execution the pack dispatches to the surface
17
17
  * whose attempt is running.
18
18
  *
19
19
  * Mutating tools are recorded as replay gaps by the trace cache; a step that
20
- * stays within the grammar verbs replays zero-turn, so prefer the backend's
20
+ * stays within the grammar verbs replays zero-turn, so prefer the engine's
21
21
  * `app` option over `open_app` when a test always starts in the same app.
22
22
  */
23
- export declare function agentDeviceTools(...backends: readonly [BackendHandle, ...BackendHandle[]]): Readonly<Record<string, DefinedTool>>;
23
+ export declare function agentDeviceTools(...engines: readonly [EngineHandle, ...EngineHandle[]]): Readonly<Record<string, DefinedTool>>;
24
24
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAc,KAAK,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkBvE;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,QAAQ,EAAE,SAAS,CAAC,aAAa,EAAE,GAAG,aAAa,EAAE,CAAC,GACxD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAkGvC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAA8B,KAAK,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmBpE;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC,GACrD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAiGvC"}
package/dist/tools.js CHANGED
@@ -1,54 +1,52 @@
1
1
  /**
2
2
  * Agent-side tools for device targets. Everything a model plans through
3
- * beyond the grammar verbs the backend already unlocks (tap, type, scroll)
3
+ * beyond the grammar verbs the engine already unlocks (tap, type, scroll)
4
4
  * lives here: opening another app, a free-form swipe, typing into the focused
5
5
  * field, system alerts, and a look at the pixels when the accessibility tree
6
- * is not enough. Each tool is scoped to the platforms of the backends it was
6
+ * is not enough. Each tool is scoped to the platforms of the engines it was
7
7
  * built from, so a mixed suite never offers it on a browser.
8
8
  */
9
9
  import { tool } from 'ai';
10
10
  import { z } from 'zod';
11
- import { defineTool } from '@e2edev/e2e/agent';
12
- import { BackendError } from '@e2edev/e2e/backend';
13
- import { surfaceOf } from './backend.js';
14
- function requireSurface(backend) {
15
- const surface = surfaceOf(backend);
11
+ import { defineTool, getToolContext } from '@e2edev/e2e/agent';
12
+ import { EngineError } from '@e2edev/e2e/engine';
13
+ import { surfaceOf } from './engine.js';
14
+ function requireSurface(engine) {
15
+ const surface = surfaceOf(engine);
16
16
  if (surface === undefined) {
17
- throw new BackendError('INVALID_STATE', 'agentDeviceTools needs handles returned by agentDevice()', {
17
+ throw new EngineError('INVALID_STATE', 'agentDeviceTools needs handles returned by agentDevice()', {
18
18
  retryable: false,
19
19
  });
20
20
  }
21
21
  return surface;
22
22
  }
23
23
  /**
24
- * Builds the tool pack for one or more agent-device backends, keyed the way
25
- * `createAgent({ tools })` expects. Pass every device backend a config
24
+ * Builds the tool pack for one or more agent-device engines, keyed the way
25
+ * `createAgent({ tools })` expects. Pass every device engine a config
26
26
  * declares: tool names are fixed, so two packs cannot be merged, and each
27
- * tool is offered only on the platforms those backends drive. A worker runs
27
+ * tool is offered only on the platforms those engines drive. A worker runs
28
28
  * one attempt at a time, so at execution the pack dispatches to the surface
29
29
  * whose attempt is running.
30
30
  *
31
31
  * Mutating tools are recorded as replay gaps by the trace cache; a step that
32
- * stays within the grammar verbs replays zero-turn, so prefer the backend's
32
+ * stays within the grammar verbs replays zero-turn, so prefer the engine's
33
33
  * `app` option over `open_app` when a test always starts in the same app.
34
34
  */
35
- export function agentDeviceTools(...backends) {
36
- const surfaces = backends.map(requireSurface);
35
+ export function agentDeviceTools(...engines) {
36
+ const surfaces = engines.map(requireSurface);
37
37
  const platforms = [...new Set(surfaces.map((surface) => surface.options.platform))];
38
38
  const active = () => {
39
39
  const running = surfaces.filter((surface) => surface.attemptRunning);
40
40
  const [surface] = running;
41
41
  if (surface === undefined || running.length > 1) {
42
- throw new BackendError('INVALID_STATE', running.length === 0
42
+ throw new EngineError('INVALID_STATE', running.length === 0
43
43
  ? 'no agent-device attempt is running; device tools act inside a test attempt only'
44
44
  : 'several agent-device attempts are running in one worker; tools cannot pick a device', { retryable: false });
45
45
  }
46
46
  return surface;
47
47
  };
48
- const annotate = (replay, mutates) => ({
49
- replay,
48
+ const annotate = (mutates) => ({
50
49
  mutates,
51
- secrets: false,
52
50
  platforms,
53
51
  });
54
52
  const abort = (options) => options.abortSignal;
@@ -60,7 +58,7 @@ export function agentDeviceTools(...backends) {
60
58
  await active().openApp(app, relaunch === true, abort(options) ?? new AbortController().signal);
61
59
  return `Opened ${app}.`;
62
60
  },
63
- }), annotate('deterministic', true)),
61
+ }), annotate(true)),
64
62
  swipe: defineTool(tool({
65
63
  description: 'Swipe from one screen point to another in logical pixels, e.g. to reveal a row action (swipe the row far left) or to dismiss a sheet.',
66
64
  inputSchema: z.object({
@@ -71,7 +69,7 @@ export function agentDeviceTools(...backends) {
71
69
  await active().command('swipe', (client) => client.interactions.swipe({ from, to }), abort(options));
72
70
  return `Swiped from (${from.x}, ${from.y}) to (${to.x}, ${to.y}).`;
73
71
  },
74
- }), annotate('none', true)),
72
+ }), annotate(true)),
75
73
  type_text: defineTool(tool({
76
74
  description: 'Type text into whatever field currently has keyboard focus, then optionally press Return. Use only when the focused field is missing from the observation (some editors hide it); otherwise use the type verb on a node.',
77
75
  inputSchema: z.object({ text: z.string().min(1), submit: z.boolean().optional() }),
@@ -83,7 +81,7 @@ export function agentDeviceTools(...backends) {
83
81
  }
84
82
  return submit === true ? `Typed ${JSON.stringify(text)} and pressed Return.` : `Typed ${JSON.stringify(text)}.`;
85
83
  },
86
- }), annotate('none', true)),
84
+ }), annotate(true)),
87
85
  alert: defineTool(tool({
88
86
  description: 'Accept or dismiss a visible system alert or permission prompt.',
89
87
  inputSchema: z.object({ action: z.enum(['accept', 'dismiss']) }),
@@ -91,20 +89,21 @@ export function agentDeviceTools(...backends) {
91
89
  await active().command('alert', (client) => client.command.alert({ action }), abort(options));
92
90
  return `Alert ${action}ed.`;
93
91
  },
94
- }), annotate('deterministic', true)),
92
+ }), annotate(true)),
95
93
  screenshot: defineTool(tool({
96
94
  description: 'Look at the actual screen pixels. Use when the observation tree is sparse or contradicts what you expect.',
97
95
  inputSchema: z.object({}),
98
96
  execute: async (_input, options) => {
99
- const bytes = await active().screenshotBytes(abort(options));
100
- return { png: Buffer.from(bytes).toString('base64') };
97
+ const observation = await getToolContext(options).observe({ pixels: true });
98
+ return observation.pixels === undefined
99
+ ? { withheld: observation.pixelsWithheld ?? 'UNSUPPORTED_CAPABILITY' }
100
+ : { png: Buffer.from(observation.pixels.data).toString('base64') };
101
101
  },
102
102
  // The model gets the image itself, not a file path it cannot open.
103
- toModelOutput: ({ output }) => ({
104
- type: 'content',
105
- value: [{ type: 'file', data: { type: 'data', data: output.png }, mediaType: 'image/png' }],
106
- }),
107
- }), annotate('none', false)),
103
+ toModelOutput: ({ output }) => output.png === undefined
104
+ ? { type: 'text', value: `Screenshot withheld: ${output.withheld}` }
105
+ : { type: 'content', value: [{ type: 'file', data: { type: 'data', data: output.png }, mediaType: 'image/png' }] },
106
+ }), annotate(false)),
108
107
  };
109
108
  }
110
109
  //# sourceMappingURL=tools.js.map
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@e2edev/agent-device",
3
- "version": "0.2.0",
4
- "description": "agent-device mobile backend (iOS and Android) for the e2e agentic end-to-end testing standard",
3
+ "version": "0.3.0",
4
+ "description": "agent-device mobile engine (iOS and Android) for the e2e agentic end-to-end testing standard",
5
5
  "keywords": [
6
6
  "e2e",
7
7
  "testing",
@@ -10,7 +10,7 @@
10
10
  "agent-device",
11
11
  "ios",
12
12
  "android",
13
- "backend"
13
+ "engine"
14
14
  ],
15
15
  "license": "MIT",
16
16
  "contributors": [
@@ -48,11 +48,12 @@
48
48
  ],
49
49
  "dependencies": {
50
50
  "agent-device": "0.20.10",
51
+ "pngjs": "7.0.0",
51
52
  "zod": "4.4.3"
52
53
  },
53
54
  "peerDependencies": {
54
55
  "ai": "^7.0.0",
55
- "@e2edev/e2e": ">=0.1.0 <1"
56
+ "@e2edev/e2e": ">=0.4.0 <1"
56
57
  },
57
58
  "peerDependenciesMeta": {
58
59
  "ai": {
@@ -61,10 +62,11 @@
61
62
  },
62
63
  "devDependencies": {
63
64
  "@types/node": "26.1.1",
65
+ "@types/pngjs": "6.0.5",
64
66
  "ai": "7.0.37",
65
67
  "typescript": "7.0.2",
66
68
  "vitest": "4.1.10",
67
- "@e2edev/e2e": "0.3.0"
69
+ "@e2edev/e2e": "0.5.0"
68
70
  },
69
71
  "engines": {
70
72
  "node": ">=22.12.0"
package/dist/backend.d.ts DELETED
@@ -1,16 +0,0 @@
1
- /**
2
- * The agent-device backend for e2e (RFC0002): a mobile body built with the
3
- * public `defineBackend`, validated by the same rules and graded by the same
4
- * capabilities as any other backend. Core imports nothing from here; this
5
- * package imports the contract from `@e2edev/e2e/backend` and contributes the
6
- * `device` fixture the way the browser backend contributes `web`.
7
- */
8
- import { type BackendHandle } from '@e2edev/e2e/backend';
9
- import { AgentDeviceSurface, type AgentDeviceOptions } from './surface.ts';
10
- /** Assembles the manifest for one surface. Exported for tests that script the client. */
11
- export declare function buildBackend(surface: AgentDeviceSurface): BackendHandle;
12
- /** Creates one agent-device backend: one device session per worker, one fresh app launch per attempt. */
13
- export declare function agentDevice(options: AgentDeviceOptions): BackendHandle;
14
- /** The surface behind a handle this package created; undefined for any other backend. */
15
- export declare function surfaceOf(backend: BackendHandle): AgentDeviceSurface | undefined;
16
- //# sourceMappingURL=backend.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAsB,MAAM,cAAc,CAAC;AAI/F,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa,CAgCvE;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa,CAGtE;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAEhF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}