@tapflowio/ios-agent 0.17.0 → 0.19.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.
@@ -35,7 +35,7 @@ const CLIPBOARD_CMD_TIMEOUT_MS = 5_000;
35
35
  // which says nothing and echoes the device UDID, so prefer any other line. When there is none
36
36
  // (e.g. the timeout path, where stderr is empty) fall back to a plain description rather than
37
37
  // the argv line this exists to drop.
38
- function firstLine(e) {
38
+ export function firstLine(e) {
39
39
  const msg = e instanceof Error ? e.message : String(e);
40
40
  const lines = msg.split('\n').map((l) => l.trim()).filter(Boolean);
41
41
  return lines.find((l) => !l.startsWith('Command failed:')) ?? 'the simulator did not respond';
@@ -76,8 +76,15 @@ export class SimctlWrapper {
76
76
  constructor(runner = defaultRunner) {
77
77
  this.runner = runner;
78
78
  }
79
- async listDevices() {
80
- const output = await this.runner.exec('list', 'devices', '--json');
79
+ /**
80
+ * `timeoutMs` bounds the underlying `xcrun simctl list`. Left off everywhere except the boot poll:
81
+ * a blanket timeout would fail a legitimately slow call, which is the reason `SimctlExecOpts.timeoutMs`
82
+ * is per-call in the first place.
83
+ */
84
+ async listDevices(timeoutMs) {
85
+ const output = timeoutMs === undefined
86
+ ? await this.runner.exec('list', 'devices', '--json')
87
+ : await this.runner.execWithOpts({ timeoutMs }, 'list', 'devices', '--json');
81
88
  const parsed = JSON.parse(output);
82
89
  const devices = [];
83
90
  for (const [runtimeKey, runtimeDevices] of Object.entries(parsed.devices)) {
@@ -108,25 +115,113 @@ export class SimctlWrapper {
108
115
  return;
109
116
  throw err;
110
117
  }
111
- // Xcode 14+ auto-opens Simulator.app on `simctl boot`.
112
- // Quitting kills the simulator runtime, so just hide the app window instead.
113
- execFile('osascript', ['-e', 'tell application "Simulator" to set visible to false'], () => { });
118
+ }
119
+ // `boot` returns when CoreSimulator has *accepted* the boot, and the device reaches `Booted`
120
+ // seconds later — measured at 7.6s on an iPhone 17 Pro / iOS 26.5 (#486). A caller that announces
121
+ // readiness on `boot` resolving is announcing something that is not yet true, which is what
122
+ // `app install intermittently fails with "No devices are booted"` (#440) was left standing on.
123
+ // Android has waited since the beginning (`EmulatorLauncher.waitForBoot`); this is the counterpart.
124
+ // Exported, and read by `scripts/__tests__/bootDeadlineOutlivesAgent.test.mjs`: a client that gives up
125
+ // before this does turns the agent's own reason into a bare timeout (#549).
126
+ static BOOT_READY_TIMEOUT_MS = 90_000;
127
+ static BOOT_POLL_INTERVAL_MS = 500;
128
+ // Bounds one reading, not the wait. `listDevices` is otherwise untimed, so a wedged
129
+ // CoreSimulatorService makes the deadline below unreachable — the loop would sit inside a single
130
+ // `xcrun` forever and never look at the clock again. A fixed ceiling rather than "whatever is left of
131
+ // the deadline": the latter lets the last reading swallow the remaining 89 seconds with no retry, and
132
+ // a healthy `simctl list` answers in well under a second, so 5s is already several times slack.
133
+ static BOOT_POLL_READ_TIMEOUT_MS = 5_000;
134
+ /**
135
+ * Polls the device list until `deviceId` reports `booted`, and returns it — so the caller sends
136
+ * on the value it read rather than asserting one.
137
+ *
138
+ * **Every status other than `booted` counts as still coming up, `shutdown` included.**
139
+ * `toDeviceStatus` collapses `Booting` into `unknown`, and this only ever runs after a `boot` was
140
+ * accepted — `handleDeviceBoot` issues one on every path, deliberately including the one where
141
+ * the list already said `booted`, precisely so this sentence stays true. So a `shutdown` reading
142
+ * here is the transition not yet observed, and failing on it would race a boot that was about to
143
+ * succeed. A draft gave `shutdown` a 3s grace instead; it was removed, because the reading it
144
+ * would end early is indistinguishable from a slow machine's, the 3s answered no measurement, and
145
+ * the case it was for is better removed than timed.
146
+ *
147
+ * **A failed reading is not a reading.** `listDevices` spawns `xcrun simctl list`, and this does
148
+ * it up to `timeoutMs / pollIntervalMs` times where the old code did it once — every one an
149
+ * independent chance to kill a healthy boot, during the interval when CoreSimulator is busiest.
150
+ * Failures are swallowed and retried, and the last one is reported with the deadline so the cause
151
+ * is not lost. Android's poll has always done this (`EmulatorLauncher.waitForBoot`); the first
152
+ * draft of this method did not, which made the "counterpart" claim false in the one way that
153
+ * matters.
154
+ *
155
+ * **And a reading has to end.** Each one is bounded by `BOOT_POLL_READ_TIMEOUT_MS`, because
156
+ * `listDevices` is otherwise untimed: a wedged CoreSimulatorService would park the loop inside one
157
+ * `xcrun` and the deadline below would never be consulted again. Bounding the reading is what makes
158
+ * the deadline a deadline; swallowing the failure is what stops it ending the boot.
159
+ *
160
+ * `isStale` is checked every iteration. This loop outlives the boot that started it — the handler
161
+ * is fire-and-forget, and its `bootSeq` check runs only once the wait *returns* — so a shutdown
162
+ * arriving mid-wait would otherwise leave a poll spawning a process twice a second for the rest
163
+ * of the deadline, against a device that is now deliberately off and therefore never converges.
164
+ */
165
+ async waitUntilBooted(deviceId, opts = {}) {
166
+ const { timeoutMs = SimctlWrapper.BOOT_READY_TIMEOUT_MS, pollIntervalMs = SimctlWrapper.BOOT_POLL_INTERVAL_MS, isStale, } = opts;
167
+ const deadline = Date.now() + timeoutMs;
168
+ let lastError = null;
169
+ for (;;) {
170
+ if (isStale?.())
171
+ throw new PlatformError(`Boot of ${deviceId} was superseded while waiting for it to come up`);
172
+ let device;
173
+ try {
174
+ device = (await this.listDevices(SimctlWrapper.BOOT_POLL_READ_TIMEOUT_MS)).find((d) => d.id === deviceId);
175
+ // Cleared on every success, so the deadline blames a failed poll only when the *last* one
176
+ // failed. Leaving it set would report a recovered-from error as the reason for the timeout.
177
+ lastError = null;
178
+ }
179
+ catch (err) {
180
+ lastError = err;
181
+ }
182
+ if (device?.status === 'booted')
183
+ return device;
184
+ // Checked after the read, not before it, so a zero timeout still gets one look — a device that
185
+ // is already up must not need a poll interval to be reported as up.
186
+ if (Date.now() >= deadline) {
187
+ const seen = lastError !== null
188
+ ? `last poll failed: ${firstLine(lastError)}`
189
+ : `last seen: ${device?.status ?? 'no longer listed'}`;
190
+ throw new PlatformError(`Device ${deviceId} did not finish booting within ${timeoutMs}ms (${seen})`);
191
+ }
192
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
193
+ }
114
194
  }
115
195
  async shutdown(deviceId) {
116
- await this.runner.exec('shutdown', deviceId);
196
+ try {
197
+ await this.runner.exec('shutdown', deviceId);
198
+ }
199
+ catch (err) {
200
+ const stderr = err.stderr ?? '';
201
+ // already shut down is not an error — the mirror of the guard in boot(). Without it a normal
202
+ // teardown of an already-stopped device logs `shutdown failed`, which is indistinguishable
203
+ // from a device that genuinely refused to stop.
204
+ if (stderr.includes('Unable to shutdown device in current state: Shutdown'))
205
+ return;
206
+ throw err;
207
+ }
117
208
  }
118
209
  async erase(deviceId) {
119
210
  await this.runner.exec('erase', deviceId);
120
211
  }
121
- async uninstallApp(bundleId) {
122
- await this.runner.exec('uninstall', 'booted', bundleId);
212
+ // Every app command takes the device explicitly. `booted` — simctl's "whichever device is up"
213
+ // alias — silently picks a different simulator whenever more than one is running, which on a
214
+ // shared Mac is the normal case, not an edge one (#440). No default: a default is how the alias
215
+ // would survive a refactor with every test still green.
216
+ async uninstallApp(udid, bundleId) {
217
+ await this.runner.exec('uninstall', udid, bundleId);
123
218
  }
124
219
  // pm-clear analog for the simulator: wipe the app's data-container contents
125
220
  // (Documents / Library / tmp) instead of uninstalling, so the installed
126
221
  // binary survives and flow-runner clearState → launchApp keeps working.
127
- async clearAppData(bundleId) {
128
- await this.runner.exec('terminate', 'booted', bundleId).catch(() => { });
129
- const out = await this.runner.exec('get_app_container', 'booted', bundleId, 'data');
222
+ async clearAppData(udid, bundleId) {
223
+ await this.runner.exec('terminate', udid, bundleId).catch(() => { });
224
+ const out = await this.runner.exec('get_app_container', udid, bundleId, 'data');
130
225
  const container = out.trim();
131
226
  if (!container.startsWith('/')) {
132
227
  throw new PlatformError(`cannot resolve data container for ${bundleId}: ${container || 'empty simctl output'}`);
@@ -137,13 +232,13 @@ export class SimctlWrapper {
137
232
  await Promise.all(entries.map((e) => fs.rm(join(dir, e), { recursive: true, force: true })));
138
233
  }
139
234
  }
140
- async installApp(appPath) {
141
- await this.runner.exec('install', 'booted', appPath);
235
+ async installApp(udid, appPath) {
236
+ await this.runner.exec('install', udid, appPath);
142
237
  }
143
238
  // Returns the launched app's host PID (`simctl launch` prints "<bundleId>: <pid>"), or null if it
144
239
  // can't be parsed. The audiotap-helper taps this PID; non-audio callers ignore it.
145
- async launchApp(bundleId) {
146
- const out = await this.runner.exec('launch', 'booted', bundleId);
240
+ async launchApp(udid, bundleId) {
241
+ const out = await this.runner.exec('launch', udid, bundleId);
147
242
  const m = out.match(/:\s*(\d+)\s*$/);
148
243
  return m ? Number(m[1]) : null;
149
244
  }
@@ -175,11 +270,11 @@ export class SimctlWrapper {
175
270
  throw e instanceof OutputTooLargeError ? new ClipboardTooLargeError(message) : new PlatformError(message);
176
271
  }
177
272
  }
178
- async screenshot(format = 'png') {
273
+ async screenshot(udid, format = 'png') {
179
274
  const ext = format === 'jpeg' ? 'jpg' : 'png';
180
275
  const tmpPath = `${tmpdir()}/tapflow-${randomUUID()}.${ext}`;
181
276
  try {
182
- await this.runner.exec('io', 'booted', 'screenshot', '--type', format, tmpPath);
277
+ await this.runner.exec('io', udid, 'screenshot', '--type', format, tmpPath);
183
278
  return await fs.readFile(tmpPath);
184
279
  }
185
280
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"SimctlWrapper.js","sourceRoot":"","sources":["../src/SimctlWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SimctlWrapper.js","sourceRoot":"","sources":["../src/SimctlWrapper.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,63 @@
1
1
  export declare class TouchHelper {
2
2
  private readonly udid;
3
3
  private proc;
4
+ private gestureProc;
4
5
  private lastX;
5
6
  private lastY;
7
+ private stopped;
8
+ private ready;
9
+ private readyTimer;
10
+ private spawns;
6
11
  constructor(udid: string);
7
12
  start(): void;
8
13
  stop(): void;
9
- touchStart(x: number, y: number): void;
10
- touchMove(x: number, y: number): void;
11
- touchEnd(): void;
12
- pressButton(usagePage: number, usage: number): void;
13
- private writeButtonOp;
14
- pressButtonDown(usagePage: number, usage: number): void;
15
- pressButtonUp(usagePage: number, usage: number): void;
16
- pressLegacyButton(code: number): void;
17
- pinchStart(x1: number, y1: number, x2: number, y2: number): void;
18
- pinchMove(x1: number, y1: number, x2: number, y2: number): void;
19
- pinchEnd(): void;
20
- sendKey(usage: number, modifiers?: number): void;
21
- private writeTwoFinger;
22
- private write;
14
+ isReady(): boolean;
15
+ private isRunning;
16
+ /**
17
+ * Why a write would be refused right now, for the ack to report.
18
+ *
19
+ * `starting` is the state that had no name: measured 186–247ms after spawn, the pipe is open and
20
+ * frames written to it land nowhere, and a caller that retries a moment later succeeds. Answering
21
+ * "no channel" for it — which is what a bare boolean forced — told the caller to reconnect when it
22
+ * should simply have waited.
23
+ *
24
+ * Safe to read at the ack site rather than inside the write: writes here are synchronous, so
25
+ * nothing can have changed between the two.
26
+ */
27
+ inputState(): 'ready' | 'starting' | 'unavailable';
28
+ /**
29
+ * Whether a gesture is currently owned by the live process — i.e. whether a continuation frame
30
+ * could land at all.
31
+ *
32
+ * Separate from `inputState()` because the two answer questions decided at different times.
33
+ * Readiness is about now; ownership was decided when the opening frame was written. A gesture whose
34
+ * open was refused (during the start-up window, say) leaves nothing owned, and no amount of waiting
35
+ * makes its terminal frame deliverable — the caller has to open a new gesture. Reading readiness
36
+ * alone at the ack site turned that into "the message is malformed, never retry".
37
+ */
38
+ ownsGesture(): boolean;
39
+ touchStart(x: number, y: number): boolean;
40
+ touchMove(x: number, y: number): boolean;
41
+ touchEnd(): boolean;
42
+ pressButton(usagePage: number, usage: number): boolean;
43
+ pressButtonDown(usagePage: number, usage: number): boolean;
44
+ pressButtonUp(usagePage: number, usage: number): boolean;
45
+ pressLegacyButton(code: number): boolean;
46
+ pinchStart(x1: number, y1: number, x2: number, y2: number): boolean;
47
+ pinchMove(x1: number, y1: number, x2: number, y2: number): boolean;
48
+ pinchEnd(): boolean;
49
+ sendKey(usage: number, modifiers?: number): boolean;
50
+ private coordFrame;
51
+ private buttonFrame;
52
+ private twoFingerFrame;
53
+ private sendSelfContained;
54
+ private openGesture;
55
+ private continueGesture;
56
+ private send;
57
+ private armReadyDeadline;
58
+ private clearReadyDeadline;
59
+ private respawn;
60
+ private spawnHelper;
61
+ private handleDeath;
23
62
  }
24
63
  //# sourceMappingURL=TouchHelper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TouchHelper.d.ts","sourceRoot":"","sources":["../src/TouchHelper.ts"],"names":[],"mappings":"AAQA,qBAAa,WAAW;IAKV,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,KAAK,CAAI;gBAEY,IAAI,EAAE,MAAM;IAEzC,KAAK,IAAI,IAAI;IAgBb,IAAI,IAAI,IAAI;IAKZ,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAMtC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAMrC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYnD,OAAO,CAAC,aAAa;IASrB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASrC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAIhE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAI/D,QAAQ,IAAI,IAAI;IAOhB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,IAAI;IAY3C,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,KAAK;CAQd"}
1
+ {"version":3,"file":"TouchHelper.d.ts","sourceRoot":"","sources":["../src/TouchHelper.ts"],"names":[],"mappings":"AAiCA,qBAAa,WAAW;IAYV,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXjC,OAAO,CAAC,IAAI,CAA4B;IAGxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,MAAM,CAAe;gBAEA,IAAI,EAAE,MAAM;IAEzC,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAWZ,OAAO,IAAI,OAAO;IAOlB,OAAO,CAAC,SAAS;IAIjB;;;;;;;;;;OAUG;IACH,UAAU,IAAI,OAAO,GAAG,UAAU,GAAG,aAAa;IAKlD;;;;;;;;;OASG;IACH,WAAW,IAAI,OAAO;IAItB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAMzC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAMxC,QAAQ,IAAI,OAAO;IAInB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAOtD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ1D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAKxD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAInE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAIlE,QAAQ,IAAI,OAAO;IAOnB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,OAAO;IAW9C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,WAAW;CAMpB"}