homebridge-agent-atv 0.1.2 → 0.2.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/api/routes.js +54 -15
- package/dist/api/routes.js.map +1 -1
- package/dist/screen/service.js +33 -57
- package/dist/screen/service.js.map +1 -1
- package/package.json +1 -1
- package/python/agent_atv_screen/backend_fake.py +8 -1
- package/python/agent_atv_screen/backend_pmd3.py +179 -34
- package/python/agent_atv_screen/server.py +6 -1
package/dist/api/routes.js
CHANGED
|
@@ -40,9 +40,38 @@ function wantsFocus(body) {
|
|
|
40
40
|
return false;
|
|
41
41
|
return (0, validate_1.requiredBoolean)(body, 'focus');
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
/** Arrow keys move the focus within the screen: tvOS reports the move about 0.1 s after the key. */
|
|
44
|
+
const MOVE_WINDOW_MS = 350;
|
|
45
|
+
/** Other keys and launches may bring a new screen, focused later. */
|
|
46
|
+
const SCREEN_WINDOW_MS = 1000;
|
|
47
|
+
const ARROWS = new Set(['up', 'down', 'left', 'right']);
|
|
48
|
+
/** After the action: the move it caused, past the baseline; a plain read without one. */
|
|
49
|
+
async function withFocus(deps, device, wanted, settle) {
|
|
50
|
+
return wanted ? { focus: await deps.screen.report(device, settle) } : {};
|
|
51
|
+
}
|
|
52
|
+
const settleAfter = (moves, windowMs = SCREEN_WINDOW_MS) => moves === undefined ? undefined : { moves, windowMs };
|
|
53
|
+
/** A link may open in the app already in front, which then never changes: take that app after this long. */
|
|
54
|
+
const LINK_SAME_APP_MS = 3000;
|
|
55
|
+
/**
|
|
56
|
+
* Launches a link and waits for the app that opens it: one that was not in front before. When an app
|
|
57
|
+
* was already in front, after LINK_SAME_APP_MS the app in front is taken for the one that opened it.
|
|
58
|
+
*/
|
|
59
|
+
async function openLink(deps, device, target, waitMs, signal, focusWanted, moves) {
|
|
60
|
+
const { devices, screen } = deps;
|
|
61
|
+
const before = waitMs > 0 ? await screen.appReport(device) : undefined;
|
|
62
|
+
const front = before?.available && before.kind === 'app' ? before.bundleId : undefined;
|
|
63
|
+
await devices.call(device, 'app.launch', { target });
|
|
64
|
+
let result = { foreground: false };
|
|
65
|
+
if (waitMs > 0) {
|
|
66
|
+
const another = (seen) => seen.kind === 'app' && seen.bundleId !== front;
|
|
67
|
+
result = await waitForeground(screen, device, another, 'agent-atv state app', front ? Math.min(waitMs, LINK_SAME_APP_MS) : waitMs, signal);
|
|
68
|
+
if (!result.foreground && front && result.seen?.kind === 'app')
|
|
69
|
+
result = { foreground: true, seen: result.seen };
|
|
70
|
+
}
|
|
71
|
+
const { foreground, seen, unknown } = result;
|
|
72
|
+
const focus = await withFocus(deps, device, focusWanted, settleAfter(moves));
|
|
73
|
+
const app = foreground && seen?.kind === 'app' ? { bundleId: seen.bundleId, name: seen.name } : null;
|
|
74
|
+
return { ok: true, app, foreground, ...(unknown ? { foregroundUnknown: unknown } : {}), ...focus, state: devices.pluginState(device) };
|
|
46
75
|
}
|
|
47
76
|
const MAX_WIDTH = { min: 160, max: 3840 };
|
|
48
77
|
function screenshotOptions(body) {
|
|
@@ -106,7 +135,8 @@ const isPassing = (screen, device, report) => report.code === 'SCREEN_FAILED' ||
|
|
|
106
135
|
* Reads the foreground app until `bundleId` is in front or `waitMs` passed. `true`/`false` once a
|
|
107
136
|
* read answered; `null` with why when none did (screen reading off, not paired, not connected).
|
|
108
137
|
*/
|
|
109
|
-
|
|
138
|
+
/** `wanted`: what in front ends the wait; `recheck`: how to check later without opening again. */
|
|
139
|
+
async function waitForeground(screen, device, wanted, recheck, waitMs, signal) {
|
|
110
140
|
const deadline = Date.now() + waitMs;
|
|
111
141
|
let seen;
|
|
112
142
|
for (;;) {
|
|
@@ -115,12 +145,12 @@ async function waitForeground(screen, device, bundleId, waitMs, signal) {
|
|
|
115
145
|
if (report.available) {
|
|
116
146
|
const { available: _available, ...foreground } = report;
|
|
117
147
|
seen = foreground;
|
|
118
|
-
if (seen
|
|
148
|
+
if (wanted(seen))
|
|
119
149
|
return { foreground: true, seen };
|
|
120
150
|
}
|
|
121
151
|
else if (seen === undefined && !isPassing(screen, device, report)) {
|
|
122
152
|
// Opening again would relaunch the app: check it instead once the tunnel is up.
|
|
123
|
-
const hint = report.code === 'SCREEN_UNAVAILABLE' ? `check in a few seconds with
|
|
153
|
+
const hint = report.code === 'SCREEN_UNAVAILABLE' ? `check in a few seconds with ${recheck}` : report.hint;
|
|
124
154
|
return { foreground: null, unknown: { code: report.code, reason: report.reason, hint } };
|
|
125
155
|
}
|
|
126
156
|
const now = Date.now();
|
|
@@ -229,7 +259,7 @@ function buildRoutes(deps) {
|
|
|
229
259
|
path: '/v1/devices/:device/state',
|
|
230
260
|
handler: async ({ params, query }) => {
|
|
231
261
|
const device = devices.resolve(params.device);
|
|
232
|
-
const focus = flag(query, 'focus') ? deps.screen.report(device
|
|
262
|
+
const focus = flag(query, 'focus') ? deps.screen.report(device) : undefined;
|
|
233
263
|
const app = flag(query, 'app') ? deps.screen.appReport(device) : undefined;
|
|
234
264
|
if (flag(query, 'refresh') && device.connection === 'connected' && bridge.status === 'ready') {
|
|
235
265
|
await devices.refreshState(device);
|
|
@@ -256,10 +286,14 @@ function buildRoutes(deps) {
|
|
|
256
286
|
const { presses, intervalMs } = parseKeys(body);
|
|
257
287
|
const focusWanted = wantsFocus(body);
|
|
258
288
|
devices.requireConnected(device);
|
|
259
|
-
|
|
289
|
+
// The worker reports focus moves only while it follows the focus: from before the keys.
|
|
290
|
+
let moves = focusWanted ? await deps.screen.follow(device) : undefined;
|
|
260
291
|
for (const [index, press] of presses.entries()) {
|
|
261
292
|
if (index > 0 && intervalMs > 0)
|
|
262
293
|
await sleep(intervalMs);
|
|
294
|
+
// The report is about the last key: earlier moves must not stand for the screen it brings.
|
|
295
|
+
if (moves !== undefined && index > 0 && index === presses.length - 1)
|
|
296
|
+
moves = (await deps.screen.follow(device)) ?? moves;
|
|
263
297
|
try {
|
|
264
298
|
await devices.call(device, 'key', { key: press.key, action: press.action });
|
|
265
299
|
}
|
|
@@ -271,7 +305,8 @@ function buildRoutes(deps) {
|
|
|
271
305
|
});
|
|
272
306
|
}
|
|
273
307
|
}
|
|
274
|
-
const
|
|
308
|
+
const windowMs = ARROWS.has(presses.at(-1).key) ? MOVE_WINDOW_MS : SCREEN_WINDOW_MS;
|
|
309
|
+
const focus = await withFocus(deps, device, focusWanted, settleAfter(moves, windowMs));
|
|
275
310
|
return { json: { ok: true, pressed: presses.length, ...focus, state: devices.pluginState(device) } };
|
|
276
311
|
},
|
|
277
312
|
},
|
|
@@ -292,11 +327,9 @@ function buildRoutes(deps) {
|
|
|
292
327
|
const waitMs = (0, validate_1.optionalInteger)(body, 'waitMs', 0, 60_000) ?? 15_000;
|
|
293
328
|
const focusWanted = wantsFocus(body);
|
|
294
329
|
devices.requireConnected(device);
|
|
295
|
-
const
|
|
330
|
+
const moves = focusWanted ? await deps.screen.follow(device) : undefined;
|
|
296
331
|
if (target.includes('://')) {
|
|
297
|
-
await
|
|
298
|
-
const focus = await withFocus(deps, device, focusWanted, startedAt);
|
|
299
|
-
return { json: { ok: true, app: null, foreground: false, ...focus, state: devices.pluginState(device) } };
|
|
332
|
+
return { json: await openLink(deps, device, target, waitMs, signal, focusWanted, moves) };
|
|
300
333
|
}
|
|
301
334
|
let app;
|
|
302
335
|
if (BUNDLE_ID.test(target)) {
|
|
@@ -307,8 +340,9 @@ function buildRoutes(deps) {
|
|
|
307
340
|
app = resolveAppName(await devices.listApps(device, false), target);
|
|
308
341
|
}
|
|
309
342
|
await devices.call(device, 'app.launch', { target: app.bundleId });
|
|
310
|
-
const
|
|
311
|
-
const
|
|
343
|
+
const isApp = (seen) => seen.kind === 'app' && seen.bundleId === app.bundleId;
|
|
344
|
+
const { foreground, seen, unknown } = waitMs > 0 ? await waitForeground(deps.screen, device, isApp, `agent-atv wait --app ${app.bundleId}`, waitMs, signal) : { foreground: false };
|
|
345
|
+
const focus = await withFocus(deps, device, focusWanted, settleAfter(moves));
|
|
312
346
|
const shown = foreground && seen?.kind === 'app' ? { bundleId: seen.bundleId, name: seen.name } : app;
|
|
313
347
|
return {
|
|
314
348
|
json: {
|
|
@@ -343,8 +377,11 @@ function buildRoutes(deps) {
|
|
|
343
377
|
throw (0, errors_1.badRequest)('text', `text is required for op ${op}`);
|
|
344
378
|
const focusWanted = wantsFocus(body);
|
|
345
379
|
devices.requireConnected(device);
|
|
380
|
+
if (focusWanted)
|
|
381
|
+
await deps.screen.follow(device);
|
|
346
382
|
const keyboard = await devices.call(device, `keyboard.${op}`, op === 'clear' ? {} : { text });
|
|
347
383
|
devices.patchState(device, { keyboard: { focus: keyboard.focus, text: keyboard.text } });
|
|
384
|
+
// Typing does not move the focus: a plain read, of the element focused before.
|
|
348
385
|
const focus = await withFocus(deps, device, focusWanted);
|
|
349
386
|
return {
|
|
350
387
|
json: { ok: true, keyboard: { focus: keyboard.focus, text: keyboard.text }, ...focus, state: devices.pluginState(device) },
|
|
@@ -413,6 +450,8 @@ function buildRoutes(deps) {
|
|
|
413
450
|
let app;
|
|
414
451
|
try {
|
|
415
452
|
if (conditions.focus !== undefined) {
|
|
453
|
+
// Its polls keep the worker following.
|
|
454
|
+
await deps.screen.follow(device);
|
|
416
455
|
read = await readFocus();
|
|
417
456
|
stops.push(poll(FOCUS_POLL_MS, signal, async () => void (read = await readFocus().catch(() => read))));
|
|
418
457
|
}
|
package/dist/api/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":";;AAkMA,kCA0VC;AAxhBD,+CAAiK;AACjK,0CAA0C;AAC1C,iDAAoF;AACpF,qCAAgD;AAChD,yCAAsH;AACtH,2CAA8C;AAC9C,mDAAiG;AAcjG,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAE,IAAY,EAAW,EAAE;IAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAChF,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,2FAA2F;AAC3F,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,wGAAwG;AACxG,SAAS,IAAI,CAAC,OAAe,EAAE,MAAmB,EAAE,IAAyB;IAC3E,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO;gBAAE,MAAM;YACpB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,GAAG,EAAE;QACV,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,SAAS,UAAU,CAAC,IAAU;IAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAA,0BAAe,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,iGAAiG;AACjG,KAAK,UAAU,SAAS,CAAC,IAAe,EAAE,MAAc,EAAE,MAAe,EAAE,UAAmB;IAC5F,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjG,CAAC;AAED,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE1C,SAAS,iBAAiB,CAAC,IAAU;IACnC,MAAM,IAAI,GAAG,qBAAqB,SAAS,CAAC,GAAG,OAAO,SAAS,CAAC,GAAG,qDAAqD,CAAC;IACzH,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACH,QAAQ,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,iBAAQ,CAAC,aAAa,EAAG,KAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,gBAAK,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAU,EAAE,QAAQ,CAAC,CAAC;IACtI,OAAO,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC1G,CAAC;AAOD,SAAS,SAAS,CAAC,IAAU;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAA,mBAAU,EAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;IACzG,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,KAAc,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAA,mBAAU,EAAC,IAAI,EAAE,GAAG,IAAI,uCAAuC,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,IAAI,GAAG,KAAa,CAAC;QAC3B,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,eAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAA,mBAAU,EAAC,GAAG,IAAI,MAAM,EAAE,GAAG,IAAI,wBAAwB,eAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,gBAAK,EAAC,IAAI,CAAC,MAAM,EAAE,sBAAW,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;QACrG,IAAI,MAAM,KAAK,KAAK,IAAI,CAAE,sBAAiC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAA,mBAAU,EAAC,GAAG,IAAI,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,+CAA+C,sBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzH,CAAC;QACD,MAAM,KAAK,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAA,mBAAU,EAAC,MAAM,EAAE,wCAAwC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9G,MAAM,UAAU,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;IACvE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,SAAS,GAAG,mCAAmC,CAAC;AAEtD,iGAAiG;AACjG,SAAS,cAAc,CAAC,IAAW,EAAE,IAAY;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3G,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAQ,CAAC,eAAe,EAAE,8BAA8B,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvH,MAAM,IAAI,iBAAQ,CAAC,eAAe,EAAE,IAAI,IAAI,aAAa,OAAO,CAAC,MAAM,OAAO,EAAE;QAC9E,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;KACrF,CAAC,CAAC;AACL,CAAC;AAID,wFAAwF;AACxF,MAAM,SAAS,GAAG,CAAC,MAAqB,EAAE,MAAc,EAAE,MAAmB,EAAW,EAAE,CACxF,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAoB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC;AAEvH;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,MAAqB,EACrB,MAAc,EACd,QAAgB,EAChB,MAAc,EACd,MAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACrC,IAAI,IAA4B,CAAC;IACjC,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;YACxD,IAAI,GAAG,UAAU,CAAC;YAClB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3F,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACpE,gFAAgF;YAChF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,oDAAoD,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YACjI,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3F,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM;QAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;IAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnG,MAAM,IAAA,mBAAU,EAAC,YAAY,EAAE,yCAAyC,4BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAW,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,cAAc,IAAI,EAAE,CAAC;QAClC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK,CAAC;YACX,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO;gBACV,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,yBAAc,EAAC,GAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3D,MAAM;YACR,KAAK,UAAU;gBACb,UAAU,CAAC,QAAQ,GAAG,IAAA,gBAAK,EAAC,KAAK,EAAE,4BAAe,EAAE,IAAI,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,OAAO;gBACV,UAAU,CAAC,KAAK,GAAG,IAAA,gBAAK,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAU,EAAE,IAAI,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,UAAU;gBACb,UAAU,CAAC,QAAQ,GAAG,IAAA,gBAAK,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAU,EAAE,IAAI,CAAC,CAAC;gBAC5E,MAAM;YACR,KAAK,QAAQ;gBACX,UAAU,CAAC,MAAM,GAAG,IAAA,0BAAe,EAAC,GAAW,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACzE,MAAM;YACR;gBACE,MAAM,IAAA,mBAAU,EAAC,IAAI,EAAE,qBAAqB,IAAI,UAAU,4BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC;IAC3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,WAAW,CAAC,IAAe;IACzC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,OAAO;QACL;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;SAClF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACpB,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE;wBACN,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI;wBACrC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI;wBACnC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI;wBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB;oBACD,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;oBAChC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM;iBAC9B;aACF,CAAC;SACH;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC1B,IAAI,IAAA,0BAAe,EAAC,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC9C,MAAM,IAAI,iBAAQ,CAAC,aAAa,EAAE,2CAA2C,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;wBACnG,IAAI,EAAE,6DAA6D;qBACpE,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;YAClE,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACrF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC1B,MAAM,SAAS,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAClE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5C,OAAO;oBACL,IAAI,EAAE;wBACJ,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;4BAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;4BACvC,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBAC3E,CAAC,CAAC;qBACH;iBACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3E,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBAC7F,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE;wBACJ,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;wBAC9B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzC;iBACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC,EAAE,CAAC;SACpG;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC/C,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC;wBAAE,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;oBACzD,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC9E,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,QAAQ,GAAG,KAAiB,CAAC;wBACnC,MAAM,IAAI,iBAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;4BAC3F,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;yBAC1B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;gBACpE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACvG,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YACpF,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAA,yBAAc,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC;gBACpE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;oBACrD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;oBACpE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBAC5G,CAAC;gBACD,IAAI,GAAQ,CAAC;gBACb,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAW,CAAC,CAAC;oBAC7E,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACvF,CAAC;qBAAM,CAAC;oBACN,GAAG,GAAG,cAAc,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;gBACtE,CAAC;gBACD,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GACjC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC/G,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;gBACpE,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBACtG,OAAO;oBACL,IAAI,EAAE;wBACJ,EAAE,EAAE,IAAI;wBACR,GAAG,EAAE,KAAK;wBACV,UAAU;wBACV,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClD,GAAG,KAAK;wBACR,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;qBACnC;iBACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAW,MAAM,EAAE,cAAc,CAAC,CAAC;gBACtE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAClE,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,EAAE,GAAG,IAAA,gBAAK,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAU,EAAE,IAAI,CAAC,CAAC;gBACrE,MAAM,IAAI,GAAG,IAAA,yBAAc,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC1C,IAAI,EAAE,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS;oBAAE,MAAM,IAAA,mBAAU,EAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAC;gBACpG,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAW,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBACzD,OAAO;oBACL,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;iBAC3H,CAAC;YACJ,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAsC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAC3E,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,KAAK,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACrD,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAA4B,MAAM,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAC5E,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,IAAA,0BAAe,EAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAC/E,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACjD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACpE,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACjC,yEAAyE;gBACzE,IAAI,IAA2B,CAAC;gBAChC,MAAM,KAAK,GAAmB,EAAE,CAAC;gBACjC,0EAA0E;gBAC1E,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC7F,MAAM,SAAS,GAAG,KAAK,IAAoC,EAAE;oBAC3D,IAAI,CAAC;wBACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,0EAA0E;wBAC1E,IAAI,IAAA,wBAAc,EAAC,KAAK,CAAC;4BAAE,OAAO,SAAS,CAAC;wBAC5C,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC;gBACF,qFAAqF;gBACrF,IAAI,GAA2B,CAAC;gBAChC,IAAI,CAAC;oBACH,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBACnC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;wBACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzG,CAAC;oBACD,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;wBACjC,IAAI,CAAC;4BACH,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;wBACxD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,+EAA+E;4BAC/E,IAAI,CAAC,CAAC,KAAK,YAAY,iBAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC;gCAAE,MAAM,KAAK,CAAC;wBAClF,CAAC;wBACD,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CACvH,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,KAAK,MAAM,IAAI,IAAI,KAAK;wBAAE,IAAI,EAAE,CAAC;oBACjC,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,GAAG,GAAG,EAAE,CACjB,IAAA,qBAAQ,EAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC1H,IAAI,CAAC;oBACH,MAAM,IAAA,qBAAY,EAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAClF,CAAC;wBAAS,CAAC;oBACT,KAAK,MAAM,IAAI,IAAI,KAAK;wBAAE,IAAI,EAAE,CAAC;gBACnC,CAAC;gBACD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;gBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG;oBACjB,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC7D,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;iBACtE,CAAC;gBACF,IAAI,MAAM,CAAC,SAAS;oBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9G,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,IAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtH,MAAM,IAAI,iBAAQ,CAAC,cAAc,EAAE,mBAAmB,SAAS,kBAAkB,UAAU,EAAE,EAAE;oBAC7F,SAAS;oBACT,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,GAAG,UAAU;oBACb,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAwB,EAAE;gBACxD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,WAAW,GAAG,IAAA,yBAAc,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBACvE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9F,OAAO;oBACL,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,EAAE;oBACrE,OAAO,EAAE;wBACP,oBAAoB,EAAE,MAAM,CAAC,MAAM;wBACnC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;wBACzC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;wBAC3C,yBAAyB,EAAE,MAAM,CAAC,UAAU;wBAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;qBACrD;iBACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrE,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,gBAAK,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAU,EAAE,UAAU,CAAC,CAAC;gBACjI,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC9D,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAA,mBAAU,EAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC;gBACtI,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAU,EAAE,GAAG,CAAC,EAAE,CAAC;YAClE,CAAC;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;gBAC7C,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YAChC,CAAC;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBAC/C,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YAChC,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/screen/service.js
CHANGED
|
@@ -25,14 +25,13 @@ const TIMEOUTS = {
|
|
|
25
25
|
};
|
|
26
26
|
const DEFAULT_TIMEOUT_MS = 10 * SECOND;
|
|
27
27
|
const READY_WAIT_MS = 20 * SECOND;
|
|
28
|
-
/**
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const FIRST_READ_MS = 1000;
|
|
33
|
-
/** Between settle reads that found the focus unknown or not moved yet. */
|
|
34
|
-
const SETTLE_RETRY_MS = 100;
|
|
28
|
+
/** After the first move, the worker waits until none came for this long: a grid may scroll on. */
|
|
29
|
+
const SETTLE_QUIET_MS = 150;
|
|
30
|
+
/** Past the window: up to 1 s of moves still coming, 0.5 s for a layout confirmation, a 70 ms read. */
|
|
31
|
+
const SETTLE_READ_MS = 2000;
|
|
35
32
|
const REPORT_READ_MS = 5000;
|
|
33
|
+
/** Opening the worker's accessibility session takes about 0.5 s on a Pi, plus up to 1 s after a close. */
|
|
34
|
+
const FOLLOW_MS = 2000;
|
|
36
35
|
const IDENTIFIER = /^[A-Za-z0-9-]+$/;
|
|
37
36
|
const SCRUBBED_ENV = new Set(['XDG_DATA_HOME', 'SUDO_USER', 'SUDO_UID', 'SUDO_GID']);
|
|
38
37
|
const REASONS = {
|
|
@@ -42,8 +41,6 @@ const REASONS = {
|
|
|
42
41
|
FOCUS_UNKNOWN: 'focus not known',
|
|
43
42
|
DEVICE_OFF: 'Apple TV off',
|
|
44
43
|
};
|
|
45
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
46
|
-
const sameElement = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
47
44
|
const isFocusUnknown = (error) => error instanceof errors_1.ApiError && error.code === 'FOCUS_UNKNOWN';
|
|
48
45
|
exports.isFocusUnknown = isFocusUnknown;
|
|
49
46
|
/** Screen reading (DESIGN.md §6): one long-lived screen worker per Apple TV, holding its tunnel. */
|
|
@@ -143,11 +140,12 @@ class ScreenService {
|
|
|
143
140
|
const { element } = await this.read(device);
|
|
144
141
|
return { focus: element, durationMs: Date.now() - started };
|
|
145
142
|
}
|
|
146
|
-
async read(device) {
|
|
143
|
+
async read(device, settle) {
|
|
147
144
|
const sentAt = Date.now();
|
|
148
|
-
const
|
|
145
|
+
const params = settle ? { afterMoves: settle.moves, waitMs: settle.windowMs, quietMs: SETTLE_QUIET_MS } : {};
|
|
146
|
+
const { focus, ageMs, moved } = await this.request(device, 'focus', params);
|
|
149
147
|
// From the send time, the move can only come out earlier than it was: towards unknown.
|
|
150
|
-
const read = { element: focus, movedAtMs: sentAt - ageMs };
|
|
148
|
+
const read = { element: focus, movedAtMs: sentAt - ageMs, ...(moved === undefined ? {} : { moved }) };
|
|
151
149
|
if (!this.isCurrent(device, read)) {
|
|
152
150
|
throw new errors_1.ApiError('FOCUS_UNKNOWN', `The app or playback on ${this.options.devices.displayName(device)} changed after the focus last moved`, {});
|
|
153
151
|
}
|
|
@@ -160,18 +158,37 @@ class ScreenService {
|
|
|
160
158
|
/**
|
|
161
159
|
* The focused element, as a report that never throws. Only uses a tunnel that is already up, so
|
|
162
160
|
* an unpaired or reconnecting screen costs the action nothing. With `settle` (after an action),
|
|
163
|
-
*
|
|
161
|
+
* the worker answers the first move past the baseline once the focus stops moving, or the
|
|
162
|
+
* element still focused when none came within the window.
|
|
164
163
|
*/
|
|
165
|
-
async report(device,
|
|
164
|
+
async report(device, settle) {
|
|
166
165
|
try {
|
|
167
166
|
this.requireTunnel(device);
|
|
168
|
-
const
|
|
169
|
-
|
|
167
|
+
const ms = settle ? settle.windowMs + SETTLE_READ_MS : REPORT_READ_MS;
|
|
168
|
+
const { element, moved } = await this.within(device, this.read(device, settle), ms, 'focus');
|
|
169
|
+
return { available: true, element, ...(moved === undefined ? {} : { moved }) };
|
|
170
170
|
}
|
|
171
171
|
catch (error) {
|
|
172
172
|
return this.unavailable(device, error, 'focus read failed');
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Asks the worker to follow the focus (DESIGN.md §6.1), before an action whose move must be
|
|
177
|
+
* reported: it frames every focus move on the TV meanwhile, so only around agent actions.
|
|
178
|
+
* Answers the worker's move count, the baseline of the settled read after the action. Best
|
|
179
|
+
* effort, like report(): bounded, never throws, nothing without a tunnel already up.
|
|
180
|
+
*/
|
|
181
|
+
async follow(device) {
|
|
182
|
+
try {
|
|
183
|
+
this.requireTunnel(device);
|
|
184
|
+
const { moves } = await this.within(device, this.request(device, 'follow'), FOLLOW_MS, 'follow');
|
|
185
|
+
return moves;
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
this.options.log.debug(`${this.options.devices.displayName(device)}: cannot follow the focus: ${(0, logger_1.errorMessage)(error)}`);
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
175
192
|
/** What tvOS shows; throws the screen errors, `SCREEN_UNAVAILABLE` for a read longer than `withinMs`. */
|
|
176
193
|
async foreground(device, withinMs) {
|
|
177
194
|
const read = this.request(device, 'foreground');
|
|
@@ -198,47 +215,6 @@ class ScreenService {
|
|
|
198
215
|
const reason = apiError.code === 'SCREEN_FAILED' ? failed : (REASONS[apiError.code] ?? apiError.message);
|
|
199
216
|
return { available: false, code: apiError.code, reason, hint: apiError.hint };
|
|
200
217
|
}
|
|
201
|
-
/**
|
|
202
|
-
* Waits SETTLE_MS, then reads until two reads agree or SETTLE_CAP_MS passed. A read that finds
|
|
203
|
-
* the focus unknown, or not moved since `movedSince`, is retried within that window and drops
|
|
204
|
-
* the reads before it: they may show an earlier screen.
|
|
205
|
-
*/
|
|
206
|
-
async settled(device, movedSince) {
|
|
207
|
-
const deadline = Date.now() + SETTLE_CAP_MS;
|
|
208
|
-
await sleep(SETTLE_MS);
|
|
209
|
-
let last;
|
|
210
|
-
let notKnown = new errors_1.ApiError('FOCUS_UNKNOWN', `${this.options.devices.displayName(device)} reported no focus move after the action`, {});
|
|
211
|
-
for (let first = true; first || Date.now() < deadline; first = false) {
|
|
212
|
-
let read;
|
|
213
|
-
try {
|
|
214
|
-
read = await this.readWithin(device, first ? Math.max(FIRST_READ_MS, deadline - Date.now()) : deadline - Date.now());
|
|
215
|
-
}
|
|
216
|
-
catch (error) {
|
|
217
|
-
if (!(0, exports.isFocusUnknown)(error)) {
|
|
218
|
-
if (first)
|
|
219
|
-
throw error;
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
[notKnown, last] = [error, undefined];
|
|
223
|
-
await sleep(SETTLE_RETRY_MS);
|
|
224
|
-
continue;
|
|
225
|
-
}
|
|
226
|
-
if (movedSince !== undefined && read.movedAtMs < movedSince) {
|
|
227
|
-
last = undefined;
|
|
228
|
-
await sleep(SETTLE_RETRY_MS);
|
|
229
|
-
continue;
|
|
230
|
-
}
|
|
231
|
-
if (last && sameElement(last.element, read.element))
|
|
232
|
-
return read.element;
|
|
233
|
-
last = read;
|
|
234
|
-
}
|
|
235
|
-
if (last)
|
|
236
|
-
return last.element;
|
|
237
|
-
throw notKnown;
|
|
238
|
-
}
|
|
239
|
-
readWithin(device, ms) {
|
|
240
|
-
return this.within(device, this.read(device), ms, 'focus');
|
|
241
|
-
}
|
|
242
218
|
within(device, read, ms, what) {
|
|
243
219
|
let timer;
|
|
244
220
|
const timeout = new Promise((_resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/screen/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/screen/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-agent-atv",
|
|
3
3
|
"displayName": "Agent ATV",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"description": "Control an Apple TV from AI agents: an authenticated HTTP API (pyatv bridge), keyboard input, wait conditions, optional screen reading (focused element, screenshots), and a minimal HomeKit TV accessory.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "AlexDemzz",
|
|
@@ -56,9 +56,16 @@ class FakeBackend:
|
|
|
56
56
|
if not self._identifier:
|
|
57
57
|
raise BridgeError("SCREEN_NOT_PAIRED", "No RemotePairing pair record for this Apple TV")
|
|
58
58
|
|
|
59
|
+
async def follow(self, params: Dict[str, Any]) -> Dict[str, Any]:
|
|
60
|
+
self._require_paired()
|
|
61
|
+
return {"moves": 0}
|
|
62
|
+
|
|
59
63
|
async def focus(self, params: Dict[str, Any]) -> Dict[str, Any]:
|
|
60
64
|
self._require_paired()
|
|
61
|
-
|
|
65
|
+
result: Dict[str, Any] = {"focus": dict(FAKE_FOCUS), "ageMs": 0}
|
|
66
|
+
if params.get("afterMoves") is not None:
|
|
67
|
+
result["moved"] = True
|
|
68
|
+
return result
|
|
62
69
|
|
|
63
70
|
async def foreground(self, params: Dict[str, Any]) -> Dict[str, Any]:
|
|
64
71
|
self._require_paired()
|
|
@@ -36,9 +36,20 @@ SCREEN_CHANGE = "UIAccessibilityScreenChangedNotification"
|
|
|
36
36
|
LAYOUT_CHANGE = "UIAccessibilityLayoutChangedNotification"
|
|
37
37
|
# After a layout change the daemon names the element it still inspects, the focused one.
|
|
38
38
|
PROPERTIES_CHANGED = "hostInspectorCurrentElementPropertiesChanged:"
|
|
39
|
+
# A settled read's defaults: how long to wait for a move past the baseline, then for no more moves.
|
|
40
|
+
SETTLE_WAIT_MS = 1000
|
|
41
|
+
SETTLE_QUIET_MS = 150
|
|
42
|
+
# Bounds how long a settled read waits for the focus to stop moving.
|
|
43
|
+
SETTLE_QUIET_CAP_S = 1.0
|
|
44
|
+
# The home screen confirms the focused element within a few ms of a layout change, 0.2 s after a move.
|
|
45
|
+
LAYOUT_CONFIRM_S = 0.5
|
|
39
46
|
# Bounds the inspector reset of a session being dropped, often over a dead tunnel.
|
|
40
47
|
INSPECTOR_RESET_S = 2.0
|
|
41
48
|
NOT_FOLLOWED = "The focused element is not known yet: the Apple TV reports it only when the focus moves"
|
|
49
|
+
NOT_ARMED = (
|
|
50
|
+
"The focus is followed only during agent actions: move it with a direction key and settle"
|
|
51
|
+
" (agent-atv press down --settle)"
|
|
52
|
+
)
|
|
42
53
|
SCREEN_CHANGED = "The screen changed after the focus last moved: the focused element is known again once it moves"
|
|
43
54
|
LAYOUT_CHANGED = (
|
|
44
55
|
"The screen's layout changed after the focus last moved: the focused element is known again once it moves"
|
|
@@ -61,8 +72,10 @@ class Timings:
|
|
|
61
72
|
browse_s: float = 20.0
|
|
62
73
|
pin_timeout_s: float = 120.0
|
|
63
74
|
session_close_s: float = 1.0
|
|
64
|
-
#
|
|
65
|
-
retarget_s: float =
|
|
75
|
+
# How long the session may stay untargeted after the Apple TV ends one lost before it (§6.1 One target).
|
|
76
|
+
retarget_s: float = 30.0
|
|
77
|
+
# How long the focus stays followed after the last follow or focus request (§6.1 Focus following).
|
|
78
|
+
follow_idle_s: float = 15.0
|
|
66
79
|
|
|
67
80
|
|
|
68
81
|
def _text(value: Any) -> Optional[str]:
|
|
@@ -230,6 +243,16 @@ class Pmd3Backend:
|
|
|
230
243
|
self._unknown: Optional[str] = NOT_FOLLOWED
|
|
231
244
|
self._focused: Any = None
|
|
232
245
|
self._moved_at = 0.0
|
|
246
|
+
# Focus moves reported so far, the baseline an action's settled read waits past.
|
|
247
|
+
self._moves = 0
|
|
248
|
+
# Set, then replaced, on every focus move.
|
|
249
|
+
self._moved = asyncio.Event()
|
|
250
|
+
# Loop time until which an agent wants the focus followed, or None (§6.1 Focus following).
|
|
251
|
+
self._follow_until: Optional[float] = None
|
|
252
|
+
self._idle: Optional[asyncio.Task] = None
|
|
253
|
+
# Loop time of the last session close on the current tunnel, or None.
|
|
254
|
+
self._closed_at: Optional[float] = None
|
|
255
|
+
self._reset_failing = False
|
|
233
256
|
|
|
234
257
|
# --- lifecycle -------------------------------------------------------------------------
|
|
235
258
|
|
|
@@ -259,6 +282,9 @@ class Pmd3Backend:
|
|
|
259
282
|
self._pairing = None
|
|
260
283
|
if self._supervisor is not None:
|
|
261
284
|
self._supervisor.cancel()
|
|
285
|
+
if self._idle is not None:
|
|
286
|
+
self._idle.cancel()
|
|
287
|
+
self._follow_until = None
|
|
262
288
|
await self._drop_tunnel()
|
|
263
289
|
|
|
264
290
|
def status(self) -> Dict[str, Any]:
|
|
@@ -299,6 +325,7 @@ class Pmd3Backend:
|
|
|
299
325
|
try:
|
|
300
326
|
await asyncio.wait_for(self._open(), self._timings.connect_timeout_s)
|
|
301
327
|
attempt = 0
|
|
328
|
+
await self._reset_inspector(self._tunnel.rsd)
|
|
302
329
|
await self._keep_following()
|
|
303
330
|
self._set("connected")
|
|
304
331
|
except asyncio.CancelledError:
|
|
@@ -320,8 +347,62 @@ class Pmd3Backend:
|
|
|
320
347
|
await self._keep_following()
|
|
321
348
|
await self._sleep(self._timings.health_s)
|
|
322
349
|
|
|
350
|
+
async def _reset_inspector(self, rsd: Any) -> None:
|
|
351
|
+
"""Turns off what a killed worker may have left on: a frame on every focus move."""
|
|
352
|
+
ax = self._pmd3.accessibilityaudit.AccessibilityAudit(rsd)
|
|
353
|
+
try:
|
|
354
|
+
await asyncio.wait_for(ax.__aenter__(), self._timings.call_timeout_s)
|
|
355
|
+
try:
|
|
356
|
+
await asyncio.wait_for(self._reset(ax), INSPECTOR_RESET_S)
|
|
357
|
+
finally:
|
|
358
|
+
await self._close_quietly(ax)
|
|
359
|
+
self._session_ended()
|
|
360
|
+
except asyncio.CancelledError:
|
|
361
|
+
raise
|
|
362
|
+
except Exception as exc:
|
|
363
|
+
# Tried again on every new tunnel: only the first failure of a streak is news.
|
|
364
|
+
log = _LOGGER.debug if self._reset_failing else _LOGGER.info
|
|
365
|
+
log("Cannot reset the accessibility inspector (%s); the TV may frame each focus move until the next tunnel", _describe(exc))
|
|
366
|
+
self._reset_failing = True
|
|
367
|
+
return
|
|
368
|
+
self._reset_failing = False
|
|
369
|
+
|
|
370
|
+
@classmethod
|
|
371
|
+
async def _reset(cls, ax: Any) -> None:
|
|
372
|
+
await ax._invoke("deviceDidGetTargeted")
|
|
373
|
+
await cls._stop_following(ax)
|
|
374
|
+
|
|
375
|
+
def _session_ended(self) -> None:
|
|
376
|
+
self._session_closed = True
|
|
377
|
+
self._closed_at = asyncio.get_running_loop().time()
|
|
378
|
+
|
|
379
|
+
def _following(self) -> bool:
|
|
380
|
+
return self._follow_until is not None
|
|
381
|
+
|
|
382
|
+
def _keep_armed(self) -> None:
|
|
383
|
+
"""Follows the focus for follow_idle_s more: the inspector frames every move meanwhile."""
|
|
384
|
+
self._follow_until = asyncio.get_running_loop().time() + self._timings.follow_idle_s
|
|
385
|
+
if self._idle is None or self._idle.done():
|
|
386
|
+
self._idle = asyncio.ensure_future(self._disarm_when_idle())
|
|
387
|
+
|
|
388
|
+
async def _disarm_when_idle(self) -> None:
|
|
389
|
+
assert self._focus_lock is not None and self._ax_lock is not None
|
|
390
|
+
loop = asyncio.get_running_loop()
|
|
391
|
+
while self._follow_until is not None:
|
|
392
|
+
if loop.time() < self._follow_until:
|
|
393
|
+
await asyncio.sleep(self._follow_until - loop.time())
|
|
394
|
+
continue
|
|
395
|
+
# After a read in progress, which may have asked for more.
|
|
396
|
+
async with self._focus_lock, self._ax_lock:
|
|
397
|
+
if self._follow_until is not None and loop.time() >= self._follow_until:
|
|
398
|
+
self._follow_until = None
|
|
399
|
+
_LOGGER.debug("No agent asked for the focus for %s s: not following it any more", self._timings.follow_idle_s)
|
|
400
|
+
await self._drop_accessibility()
|
|
401
|
+
|
|
323
402
|
async def _keep_following(self) -> None:
|
|
324
|
-
"""
|
|
403
|
+
"""Re-opens the session of an agent action, lost with its tunnel or ended by another inspector."""
|
|
404
|
+
if not self._following():
|
|
405
|
+
return
|
|
325
406
|
try:
|
|
326
407
|
await asyncio.wait_for(self._accessibility(self._tunnel.rsd), self._timings.call_timeout_s)
|
|
327
408
|
except asyncio.CancelledError:
|
|
@@ -329,7 +410,7 @@ class Pmd3Backend:
|
|
|
329
410
|
except Exception as exc:
|
|
330
411
|
# Retried at every health check: only the first failure of a streak is news.
|
|
331
412
|
log = _LOGGER.debug if self._follow_failing else _LOGGER.info
|
|
332
|
-
log("Cannot follow the focus yet (%s); the next
|
|
413
|
+
log("Cannot follow the focus yet (%s); retrying at the next health check", _describe(exc))
|
|
333
414
|
self._follow_failing = True
|
|
334
415
|
return
|
|
335
416
|
if self._follow_failing:
|
|
@@ -362,6 +443,7 @@ class Pmd3Backend:
|
|
|
362
443
|
await self._drop_accessibility()
|
|
363
444
|
tunnel, self._tunnel = self._tunnel, None
|
|
364
445
|
session_closed, self._session_closed = self._session_closed, False
|
|
446
|
+
self._closed_at = None
|
|
365
447
|
if session_closed:
|
|
366
448
|
self._lost_session_pending = True
|
|
367
449
|
if tunnel is not None:
|
|
@@ -461,13 +543,69 @@ class Pmd3Backend:
|
|
|
461
543
|
|
|
462
544
|
# --- requests --------------------------------------------------------------------------
|
|
463
545
|
|
|
546
|
+
async def follow(self, params: Dict[str, Any]) -> Dict[str, Any]:
|
|
547
|
+
self._keep_armed()
|
|
548
|
+
await self._with_rsd(self._accessibility)
|
|
549
|
+
return {"moves": self._moves}
|
|
550
|
+
|
|
464
551
|
async def focus(self, params: Dict[str, Any]) -> Dict[str, Any]:
|
|
552
|
+
"""The focused element. With `afterMoves` (the count `follow` answered before an action), it
|
|
553
|
+
first waits up to `waitMs` for a later move, then until no move came for `quietMs`, and says
|
|
554
|
+
whether the focus `moved`."""
|
|
465
555
|
assert self._focus_lock is not None
|
|
466
|
-
# Aged from the request's arrival, as the plugin dates it from the send
|
|
556
|
+
# Aged from the request's arrival, as the plugin dates it from the send.
|
|
467
557
|
received = asyncio.get_running_loop().time()
|
|
558
|
+
if self._following():
|
|
559
|
+
# An agent polling the focus, as wait --focus does, is still using it.
|
|
560
|
+
self._keep_armed()
|
|
561
|
+
after = params.get("afterMoves")
|
|
562
|
+
moved = None
|
|
563
|
+
if after is not None:
|
|
564
|
+
if not self._following():
|
|
565
|
+
raise _focus_unknown(NOT_ARMED)
|
|
566
|
+
wait_ms = params.get("waitMs")
|
|
567
|
+
quiet_ms = params.get("quietMs")
|
|
568
|
+
moved = await self._settle(
|
|
569
|
+
after,
|
|
570
|
+
(SETTLE_WAIT_MS if wait_ms is None else wait_ms) / 1000,
|
|
571
|
+
(SETTLE_QUIET_MS if quiet_ms is None else quiet_ms) / 1000,
|
|
572
|
+
)
|
|
468
573
|
async with self._focus_lock:
|
|
469
574
|
focus, moved_at = await self._with_rsd(self._read_focus)
|
|
470
|
-
|
|
575
|
+
result: Dict[str, Any] = {"focus": focus, "ageMs": round((received - moved_at) * 1000)}
|
|
576
|
+
if moved is not None:
|
|
577
|
+
result["moved"] = moved
|
|
578
|
+
return result
|
|
579
|
+
|
|
580
|
+
async def _settle(self, after: int, wait_s: float, quiet_s: float) -> bool:
|
|
581
|
+
"""Whether a move past `after` came within `wait_s`; if so, returns once none came for `quiet_s`."""
|
|
582
|
+
loop = asyncio.get_running_loop()
|
|
583
|
+
deadline = loop.time() + wait_s
|
|
584
|
+
while self._moves <= after:
|
|
585
|
+
if not await self._next_move(deadline - loop.time()):
|
|
586
|
+
return False
|
|
587
|
+
# A grid that scrolls, or a row that loads, can move the focus again right after.
|
|
588
|
+
cap = loop.time() + SETTLE_QUIET_CAP_S
|
|
589
|
+
while await self._next_move(min(quiet_s, cap - loop.time())):
|
|
590
|
+
pass
|
|
591
|
+
confirm_by = loop.time() + LAYOUT_CONFIRM_S
|
|
592
|
+
while self._unknown == LAYOUT_CHANGED and loop.time() < confirm_by:
|
|
593
|
+
await asyncio.sleep(0.02)
|
|
594
|
+
return True
|
|
595
|
+
|
|
596
|
+
async def _next_move(self, timeout_s: float) -> bool:
|
|
597
|
+
if timeout_s <= 0:
|
|
598
|
+
return False
|
|
599
|
+
try:
|
|
600
|
+
await asyncio.wait_for(self._moved.wait(), timeout_s)
|
|
601
|
+
except asyncio.TimeoutError:
|
|
602
|
+
return False
|
|
603
|
+
return True
|
|
604
|
+
|
|
605
|
+
def _note_move(self) -> None:
|
|
606
|
+
self._moves += 1
|
|
607
|
+
moved, self._moved = self._moved, asyncio.Event()
|
|
608
|
+
moved.set()
|
|
471
609
|
|
|
472
610
|
async def _accessibility(self, rsd: Any) -> Any:
|
|
473
611
|
"""One accessibility session per tunnel, following the focus from the moment it opens."""
|
|
@@ -479,6 +617,10 @@ class Pmd3Backend:
|
|
|
479
617
|
if self._ax is not None and self._ax_rsd is rsd and self._follower is not None and not self._follower.done():
|
|
480
618
|
return self._ax
|
|
481
619
|
await self._drop_accessibility()
|
|
620
|
+
if self._closed_at is not None:
|
|
621
|
+
# The daemon learns of a session's end late, then untargets whichever session follows.
|
|
622
|
+
loop = asyncio.get_running_loop()
|
|
623
|
+
await asyncio.sleep(max(0.0, self._closed_at + self._timings.session_close_s - loop.time()))
|
|
482
624
|
ax = self._pmd3.accessibilityaudit.AccessibilityAudit(rsd)
|
|
483
625
|
await ax.__aenter__()
|
|
484
626
|
self._ax, self._ax_rsd = ax, rsd
|
|
@@ -489,27 +631,27 @@ class Pmd3Backend:
|
|
|
489
631
|
await self._drop_accessibility()
|
|
490
632
|
raise
|
|
491
633
|
self._follower = asyncio.ensure_future(self._follow_focus(ax))
|
|
492
|
-
|
|
493
|
-
self._retarget = asyncio.ensure_future(self._retarget_after_loss(ax))
|
|
634
|
+
self._retarget = asyncio.ensure_future(self._keep_targeted(ax))
|
|
494
635
|
return ax
|
|
495
636
|
|
|
496
|
-
async def
|
|
497
|
-
"""
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
637
|
+
async def _keep_targeted(self, ax: Any) -> None:
|
|
638
|
+
"""The Apple TV ends a session lost before this one at no set time, untargeting this one with
|
|
639
|
+
no event to tell, and then highlights every focus move with nobody to clear it."""
|
|
640
|
+
failing = False
|
|
641
|
+
while True:
|
|
642
|
+
await asyncio.sleep(self._timings.retarget_s)
|
|
643
|
+
try:
|
|
644
|
+
await asyncio.wait_for(self._target(ax), self._timings.call_timeout_s)
|
|
645
|
+
except Exception as exc:
|
|
646
|
+
if not failing:
|
|
647
|
+
_LOGGER.info("Targeting the accessibility session again failed (%s); retrying", _describe(exc))
|
|
648
|
+
failing = True
|
|
649
|
+
continue
|
|
650
|
+
failing = False
|
|
651
|
+
if self._lost_session_pending:
|
|
652
|
+
self._lost_session_pending = False
|
|
653
|
+
# The Apple TV may not have reported the moves made while the session was untargeted.
|
|
654
|
+
self._unknown, self._focused = NOT_FOLLOWED, None
|
|
513
655
|
|
|
514
656
|
@staticmethod
|
|
515
657
|
async def _target(ax: Any) -> None:
|
|
@@ -526,17 +668,17 @@ class Pmd3Backend:
|
|
|
526
668
|
self._unknown, self._focused = SCREEN_CHANGED, None
|
|
527
669
|
elif event.name == NOTIFICATION and _first(event.data) == LAYOUT_CHANGE and self._unknown is None:
|
|
528
670
|
self._unknown = LAYOUT_CHANGED
|
|
529
|
-
elif
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
self._unknown = None
|
|
671
|
+
elif event.name == PROPERTIES_CHANGED:
|
|
672
|
+
if self._unknown == LAYOUT_CHANGED and _same_element(getattr(_first(event.data), "element", None), self._focused):
|
|
673
|
+
# The move keeps its time.
|
|
674
|
+
self._unknown = None
|
|
675
|
+
# The daemon highlights the element it names again.
|
|
676
|
+
await ax.set_show_visuals(False)
|
|
536
677
|
elif event.name == FOCUS_CHANGED:
|
|
537
678
|
self._focused = getattr(_first(event.data), "element", None)
|
|
538
679
|
self._moved_at = asyncio.get_running_loop().time()
|
|
539
680
|
self._unknown = None
|
|
681
|
+
self._note_move()
|
|
540
682
|
# The daemon highlights each newly focused element, whatever it was told before.
|
|
541
683
|
await ax.set_show_visuals(False)
|
|
542
684
|
except asyncio.CancelledError:
|
|
@@ -563,7 +705,7 @@ class Pmd3Backend:
|
|
|
563
705
|
except Exception:
|
|
564
706
|
_LOGGER.debug("Resetting the accessibility inspector failed", exc_info=True)
|
|
565
707
|
await self._close_quietly(ax)
|
|
566
|
-
self.
|
|
708
|
+
self._session_ended()
|
|
567
709
|
|
|
568
710
|
@staticmethod
|
|
569
711
|
async def _stop_following(ax: Any) -> None:
|
|
@@ -577,6 +719,8 @@ class Pmd3Backend:
|
|
|
577
719
|
only when the focus is still the one it read: a move reads the new element, a screen change
|
|
578
720
|
makes it unknown.
|
|
579
721
|
"""
|
|
722
|
+
if not self._following():
|
|
723
|
+
raise _focus_unknown(NOT_ARMED)
|
|
580
724
|
try:
|
|
581
725
|
ax = await self._accessibility(rsd)
|
|
582
726
|
while True:
|
|
@@ -585,7 +729,8 @@ class Pmd3Backend:
|
|
|
585
729
|
element, moved_at = self._focused, self._moved_at
|
|
586
730
|
if element is None:
|
|
587
731
|
raise _focus_unknown("The Apple TV reported a focus move without an element")
|
|
588
|
-
|
|
732
|
+
values = await asyncio.gather(*(ax.element_attribute(element.identifier, name) for name in FOCUS_ATTRIBUTES))
|
|
733
|
+
attributes = dict(zip(FOCUS_ATTRIBUTES, values))
|
|
589
734
|
if self._unknown is None and self._focused is element and self._moved_at == moved_at:
|
|
590
735
|
break
|
|
591
736
|
except BridgeError:
|
|
@@ -22,7 +22,12 @@ PIN = re.compile(r"\d{4,8}")
|
|
|
22
22
|
_CHECKS: Dict[str, Dict[str, Callable[[Any], bool]]] = {
|
|
23
23
|
"ping": {},
|
|
24
24
|
"shutdown": {},
|
|
25
|
-
"
|
|
25
|
+
"follow": {},
|
|
26
|
+
"focus": {
|
|
27
|
+
"afterMoves": lambda v: v is None or (type(v) is int and v >= 0),
|
|
28
|
+
"waitMs": lambda v: v is None or (type(v) is int and 0 <= v <= 10_000),
|
|
29
|
+
"quietMs": lambda v: v is None or (type(v) is int and 0 <= v <= 1_000),
|
|
30
|
+
},
|
|
26
31
|
"foreground": {},
|
|
27
32
|
"screenshot": {
|
|
28
33
|
"path": lambda v: isinstance(v, str) and os.path.isabs(v),
|