@tapflowio/ios-agent 0.16.0 → 0.18.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/IOSAgent.d.ts +18 -0
- package/dist/IOSAgent.d.ts.map +1 -1
- package/dist/IOSAgent.js +395 -48
- package/dist/IOSAgent.js.map +1 -1
- package/dist/MjpegStreamer.d.ts +2 -1
- package/dist/MjpegStreamer.d.ts.map +1 -1
- package/dist/MjpegStreamer.js +4 -2
- package/dist/MjpegStreamer.js.map +1 -1
- package/dist/ScreenCaptureStreamer.d.ts +2 -2
- package/dist/ScreenCaptureStreamer.d.ts.map +1 -1
- package/dist/ScreenCaptureStreamer.js +6 -3
- package/dist/ScreenCaptureStreamer.js.map +1 -1
- package/dist/SimctlWrapper.d.ts +11 -5
- package/dist/SimctlWrapper.d.ts.map +1 -1
- package/dist/SimctlWrapper.js +70 -33
- package/dist/SimctlWrapper.js.map +1 -1
- package/dist/simctl.d.ts +18 -0
- package/dist/simctl.d.ts.map +1 -1
- package/dist/simctl.js +110 -5
- package/dist/simctl.js.map +1 -1
- package/package.json +5 -4
package/dist/simctl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simctl.d.ts","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"simctl.d.ts","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"AAwBA,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;kDAC8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;2EAE2E;AAC3E,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AAEjD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,UAAU,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C;uFACmF;IACnF,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACvE;AA+ED,eAAO,MAAM,aAAa,EAAE,YA6D3B,CAAA"}
|
package/dist/simctl.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { execFile } from 'child_process';
|
|
1
|
+
import { execFile, spawn } from 'child_process';
|
|
2
2
|
import { promisify } from 'util';
|
|
3
3
|
import { createLogger } from '@tapflowio/agent-core';
|
|
4
4
|
const logger = createLogger('ios-agent:simctl');
|
|
5
5
|
const execFileAsync = promisify(execFile);
|
|
6
|
+
// stderr is only ever read to build an error message, so a runaway one is pure waste.
|
|
7
|
+
const MAX_STDERR_BYTES = 64 * 1024;
|
|
6
8
|
function isCoreSimulatorVersionMismatch(err) {
|
|
7
9
|
const msg = err.stderr
|
|
8
10
|
?? err.message ?? '';
|
|
@@ -14,6 +16,11 @@ async function restartCoreSimulatorService() {
|
|
|
14
16
|
await execFileAsync('killall', ['-9', 'com.apple.CoreSimulator.CoreSimulatorService']).catch(() => { });
|
|
15
17
|
await new Promise((r) => setTimeout(r, 3000));
|
|
16
18
|
}
|
|
19
|
+
/** Thrown when a call blows its `maxBuffer`. Distinguishable on purpose: for the clipboard, an
|
|
20
|
+
* over-sized read means the app DID copy and the text simply cannot be carried, whereas a
|
|
21
|
+
* timeout means nothing is known — and the two need opposite recovery. */
|
|
22
|
+
export class OutputTooLargeError extends Error {
|
|
23
|
+
}
|
|
17
24
|
const CORE_SIM_DOCS_URL = 'https://tapflow.dev/guide/troubleshooting#ios-simulator-service-version-mismatch';
|
|
18
25
|
function coreSimServiceError() {
|
|
19
26
|
return new Error('CoreSimulatorService version mismatch — the service could not be recovered automatically.\n' +
|
|
@@ -21,6 +28,73 @@ function coreSimServiceError() {
|
|
|
21
28
|
' killall -9 com.apple.CoreSimulator.CoreSimulatorService\n\n' +
|
|
22
29
|
`See ${CORE_SIM_DOCS_URL}`);
|
|
23
30
|
}
|
|
31
|
+
// `input` rules out execFile (it has no stdin channel), so this spawns and pumps stdin itself.
|
|
32
|
+
// Everything else — timeout, stdout ceiling, exit-code handling — is reproduced here rather
|
|
33
|
+
// than inherited, which is the price of `pbcopy` not being expressible as arguments.
|
|
34
|
+
function runWithOpts(opts, args) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const proc = spawn('xcrun', ['simctl', ...args]);
|
|
37
|
+
// Accumulate BYTES and decode once at the end. Decoding each chunk as it arrives splits
|
|
38
|
+
// multi-byte characters at pipe boundaries and turns them into U+FFFD — execFile avoided
|
|
39
|
+
// that by running stdout through a StringDecoder, and this path has to reproduce it.
|
|
40
|
+
// Keeping bytes also makes the maxBuffer accounting exact instead of measuring a string
|
|
41
|
+
// that may already contain replacement characters.
|
|
42
|
+
const chunks = [];
|
|
43
|
+
let bytes = 0;
|
|
44
|
+
const stderrChunks = [];
|
|
45
|
+
let stderrBytes = 0;
|
|
46
|
+
let over = false;
|
|
47
|
+
let settled = false;
|
|
48
|
+
let timer;
|
|
49
|
+
const finish = (err, out) => {
|
|
50
|
+
if (settled)
|
|
51
|
+
return;
|
|
52
|
+
settled = true;
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
if (err)
|
|
55
|
+
reject(err);
|
|
56
|
+
else
|
|
57
|
+
resolve(out ?? '');
|
|
58
|
+
};
|
|
59
|
+
proc.stdout?.on('data', (d) => {
|
|
60
|
+
chunks.push(d);
|
|
61
|
+
bytes += d.length;
|
|
62
|
+
if (opts.maxBuffer && bytes > opts.maxBuffer) {
|
|
63
|
+
over = true;
|
|
64
|
+
proc.kill('SIGKILL');
|
|
65
|
+
finish(new OutputTooLargeError('stdout maxBuffer length exceeded'));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// Same treatment as stdout: keep bytes, decode once. Bounded like execFile bounded it.
|
|
69
|
+
proc.stderr?.on('data', (d) => {
|
|
70
|
+
if (stderrBytes >= MAX_STDERR_BYTES)
|
|
71
|
+
return;
|
|
72
|
+
// Slice to the remaining budget: testing before pushing the WHOLE chunk let a single
|
|
73
|
+
// `data` event carry the total past the ceiling the constant names.
|
|
74
|
+
const room = MAX_STDERR_BYTES - stderrBytes;
|
|
75
|
+
const slice = d.length > room ? d.subarray(0, room) : d;
|
|
76
|
+
stderrChunks.push(slice);
|
|
77
|
+
stderrBytes += slice.length;
|
|
78
|
+
});
|
|
79
|
+
proc.on('error', (e) => finish(e));
|
|
80
|
+
proc.on('close', (code) => {
|
|
81
|
+
if (over)
|
|
82
|
+
return;
|
|
83
|
+
const stdout = Buffer.concat(chunks).toString('utf8');
|
|
84
|
+
const stderr = Buffer.concat(stderrChunks).toString('utf8');
|
|
85
|
+
finish(code === 0 ? undefined : new Error(stderr.trim() || `simctl ${args[0]} exited ${code}`), stdout);
|
|
86
|
+
});
|
|
87
|
+
if (opts.timeoutMs) {
|
|
88
|
+
timer = setTimeout(() => { proc.kill('SIGKILL'); finish(new Error(`simctl ${args[0]} timed out`)); }, opts.timeoutMs);
|
|
89
|
+
}
|
|
90
|
+
if (opts.input !== undefined) {
|
|
91
|
+
// An unhandled stream 'error' would take the process down, so route it to the promise.
|
|
92
|
+
proc.stdin.on('error', (e) => finish(e));
|
|
93
|
+
proc.stdin.write(opts.input);
|
|
94
|
+
proc.stdin.end();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
24
98
|
export const defaultRunner = {
|
|
25
99
|
async exec(...args) {
|
|
26
100
|
try {
|
|
@@ -36,8 +110,35 @@ export const defaultRunner = {
|
|
|
36
110
|
const { stdout } = await execFileAsync('xcrun', ['simctl', ...args]);
|
|
37
111
|
return stdout;
|
|
38
112
|
}
|
|
39
|
-
catch {
|
|
40
|
-
|
|
113
|
+
catch (retryErr) {
|
|
114
|
+
// Only claim the version mismatch if that is still what failed. Reporting it for an
|
|
115
|
+
// unrelated failure hides the real cause — and erases `OutputTooLargeError`, which
|
|
116
|
+
// `getPasteboard` needs to distinguish "the app copied something too big to carry"
|
|
117
|
+
// from "the read failed", the two having opposite recovery.
|
|
118
|
+
throw isCoreSimulatorVersionMismatch(retryErr) ? coreSimServiceError() : retryErr;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
async execWithOpts(opts, ...args) {
|
|
123
|
+
try {
|
|
124
|
+
return await runWithOpts(opts, args);
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
// Same self-healing every other simctl call gets. Before this existed the clipboard was
|
|
128
|
+
// the one path that could not recover from a service version mismatch.
|
|
129
|
+
if (!isCoreSimulatorVersionMismatch(err))
|
|
130
|
+
throw err;
|
|
131
|
+
logger.warn('CoreSimulatorService version mismatch — restarting service and retrying');
|
|
132
|
+
await restartCoreSimulatorService();
|
|
133
|
+
try {
|
|
134
|
+
return await runWithOpts(opts, args);
|
|
135
|
+
}
|
|
136
|
+
catch (retryErr) {
|
|
137
|
+
// Only claim the version mismatch if that is still what failed. Reporting it for an
|
|
138
|
+
// unrelated failure hides the real cause — and erases `OutputTooLargeError`, which
|
|
139
|
+
// `getPasteboard` needs to distinguish "the app copied something too big to carry"
|
|
140
|
+
// from "the read failed", the two having opposite recovery.
|
|
141
|
+
throw isCoreSimulatorVersionMismatch(retryErr) ? coreSimServiceError() : retryErr;
|
|
41
142
|
}
|
|
42
143
|
}
|
|
43
144
|
},
|
|
@@ -55,8 +156,12 @@ export const defaultRunner = {
|
|
|
55
156
|
const { stdout } = await execFileAsync('xcrun', ['simctl', ...args], { encoding: 'buffer' });
|
|
56
157
|
return stdout;
|
|
57
158
|
}
|
|
58
|
-
catch {
|
|
59
|
-
|
|
159
|
+
catch (retryErr) {
|
|
160
|
+
// Only claim the version mismatch if that is still what failed. Reporting it for an
|
|
161
|
+
// unrelated failure hides the real cause — and erases `OutputTooLargeError`, which
|
|
162
|
+
// `getPasteboard` needs to distinguish "the app copied something too big to carry"
|
|
163
|
+
// from "the read failed", the two having opposite recovery.
|
|
164
|
+
throw isCoreSimulatorVersionMismatch(retryErr) ? coreSimServiceError() : retryErr;
|
|
60
165
|
}
|
|
61
166
|
}
|
|
62
167
|
},
|
package/dist/simctl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simctl.js","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"simctl.js","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tapflowio/ios-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "iOS simulator agent for tapflow — xcrun simctl control and screen streaming",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tapflow",
|
|
@@ -53,15 +53,16 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"ws": "^8.21.1",
|
|
56
|
-
"@tapflowio/agent-core": "0.
|
|
57
|
-
"@tapflowio/audiotap-helper": "0.2.
|
|
56
|
+
"@tapflowio/agent-core": "0.18.0",
|
|
57
|
+
"@tapflowio/audiotap-helper": "0.2.8"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@types/node": "^20.19.43",
|
|
61
61
|
"@types/ws": "^8.0.0",
|
|
62
62
|
"typescript": "^5.0.0",
|
|
63
63
|
"vitest": "^4.1.10",
|
|
64
|
-
"@tapflowio/relay": "0.
|
|
64
|
+
"@tapflowio/relay": "0.18.0",
|
|
65
|
+
"@tapflowio/test-utils": "0.0.0"
|
|
65
66
|
},
|
|
66
67
|
"scripts": {
|
|
67
68
|
"postinstall": "node -e \"if (process.platform === 'darwin') { require('fs').readdirSync('bin').forEach(f => require('fs').chmodSync('bin/' + f, 0o755)) }\"",
|