homebridge-agent-atv 0.1.2 → 0.2.1
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 +180 -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":"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"}
|
|
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.1
|
|
4
|
+
"version": "0.2.1",
|
|
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,11 @@ 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
|
+
# Agents think 15 to 47 s between TV commands (transcripts, 2026-11-03): long enough to cover that.
|
|
79
|
+
follow_idle_s: float = 60.0
|
|
66
80
|
|
|
67
81
|
|
|
68
82
|
def _text(value: Any) -> Optional[str]:
|
|
@@ -230,6 +244,16 @@ class Pmd3Backend:
|
|
|
230
244
|
self._unknown: Optional[str] = NOT_FOLLOWED
|
|
231
245
|
self._focused: Any = None
|
|
232
246
|
self._moved_at = 0.0
|
|
247
|
+
# Focus moves reported so far, the baseline an action's settled read waits past.
|
|
248
|
+
self._moves = 0
|
|
249
|
+
# Set, then replaced, on every focus move.
|
|
250
|
+
self._moved = asyncio.Event()
|
|
251
|
+
# Loop time until which an agent wants the focus followed, or None (§6.1 Focus following).
|
|
252
|
+
self._follow_until: Optional[float] = None
|
|
253
|
+
self._idle: Optional[asyncio.Task] = None
|
|
254
|
+
# Loop time of the last session close on the current tunnel, or None.
|
|
255
|
+
self._closed_at: Optional[float] = None
|
|
256
|
+
self._reset_failing = False
|
|
233
257
|
|
|
234
258
|
# --- lifecycle -------------------------------------------------------------------------
|
|
235
259
|
|
|
@@ -259,6 +283,9 @@ class Pmd3Backend:
|
|
|
259
283
|
self._pairing = None
|
|
260
284
|
if self._supervisor is not None:
|
|
261
285
|
self._supervisor.cancel()
|
|
286
|
+
if self._idle is not None:
|
|
287
|
+
self._idle.cancel()
|
|
288
|
+
self._follow_until = None
|
|
262
289
|
await self._drop_tunnel()
|
|
263
290
|
|
|
264
291
|
def status(self) -> Dict[str, Any]:
|
|
@@ -299,6 +326,7 @@ class Pmd3Backend:
|
|
|
299
326
|
try:
|
|
300
327
|
await asyncio.wait_for(self._open(), self._timings.connect_timeout_s)
|
|
301
328
|
attempt = 0
|
|
329
|
+
await self._reset_inspector(self._tunnel.rsd)
|
|
302
330
|
await self._keep_following()
|
|
303
331
|
self._set("connected")
|
|
304
332
|
except asyncio.CancelledError:
|
|
@@ -320,8 +348,62 @@ class Pmd3Backend:
|
|
|
320
348
|
await self._keep_following()
|
|
321
349
|
await self._sleep(self._timings.health_s)
|
|
322
350
|
|
|
351
|
+
async def _reset_inspector(self, rsd: Any) -> None:
|
|
352
|
+
"""Turns off what a killed worker may have left on: a frame on every focus move."""
|
|
353
|
+
ax = self._pmd3.accessibilityaudit.AccessibilityAudit(rsd)
|
|
354
|
+
try:
|
|
355
|
+
await asyncio.wait_for(ax.__aenter__(), self._timings.call_timeout_s)
|
|
356
|
+
try:
|
|
357
|
+
await asyncio.wait_for(self._reset(ax), INSPECTOR_RESET_S)
|
|
358
|
+
finally:
|
|
359
|
+
await self._close_quietly(ax)
|
|
360
|
+
self._session_ended()
|
|
361
|
+
except asyncio.CancelledError:
|
|
362
|
+
raise
|
|
363
|
+
except Exception as exc:
|
|
364
|
+
# Tried again on every new tunnel: only the first failure of a streak is news.
|
|
365
|
+
log = _LOGGER.debug if self._reset_failing else _LOGGER.info
|
|
366
|
+
log("Cannot reset the accessibility inspector (%s); the TV may frame each focus move until the next tunnel", _describe(exc))
|
|
367
|
+
self._reset_failing = True
|
|
368
|
+
return
|
|
369
|
+
self._reset_failing = False
|
|
370
|
+
|
|
371
|
+
@classmethod
|
|
372
|
+
async def _reset(cls, ax: Any) -> None:
|
|
373
|
+
await ax._invoke("deviceDidGetTargeted")
|
|
374
|
+
await cls._stop_following(ax)
|
|
375
|
+
|
|
376
|
+
def _session_ended(self) -> None:
|
|
377
|
+
self._session_closed = True
|
|
378
|
+
self._closed_at = asyncio.get_running_loop().time()
|
|
379
|
+
|
|
380
|
+
def _following(self) -> bool:
|
|
381
|
+
return self._follow_until is not None
|
|
382
|
+
|
|
383
|
+
def _keep_armed(self) -> None:
|
|
384
|
+
"""Follows the focus for follow_idle_s more: the inspector frames every move meanwhile."""
|
|
385
|
+
self._follow_until = asyncio.get_running_loop().time() + self._timings.follow_idle_s
|
|
386
|
+
if self._idle is None or self._idle.done():
|
|
387
|
+
self._idle = asyncio.ensure_future(self._disarm_when_idle())
|
|
388
|
+
|
|
389
|
+
async def _disarm_when_idle(self) -> None:
|
|
390
|
+
assert self._focus_lock is not None and self._ax_lock is not None
|
|
391
|
+
loop = asyncio.get_running_loop()
|
|
392
|
+
while self._follow_until is not None:
|
|
393
|
+
if loop.time() < self._follow_until:
|
|
394
|
+
await asyncio.sleep(self._follow_until - loop.time())
|
|
395
|
+
continue
|
|
396
|
+
# After a read in progress, which may have asked for more.
|
|
397
|
+
async with self._focus_lock, self._ax_lock:
|
|
398
|
+
if self._follow_until is not None and loop.time() >= self._follow_until:
|
|
399
|
+
self._follow_until = None
|
|
400
|
+
_LOGGER.debug("No agent asked for the focus for %s s: not following it any more", self._timings.follow_idle_s)
|
|
401
|
+
await self._drop_accessibility()
|
|
402
|
+
|
|
323
403
|
async def _keep_following(self) -> None:
|
|
324
|
-
"""
|
|
404
|
+
"""Re-opens the session of an agent action, lost with its tunnel or ended by another inspector."""
|
|
405
|
+
if not self._following():
|
|
406
|
+
return
|
|
325
407
|
try:
|
|
326
408
|
await asyncio.wait_for(self._accessibility(self._tunnel.rsd), self._timings.call_timeout_s)
|
|
327
409
|
except asyncio.CancelledError:
|
|
@@ -329,7 +411,7 @@ class Pmd3Backend:
|
|
|
329
411
|
except Exception as exc:
|
|
330
412
|
# Retried at every health check: only the first failure of a streak is news.
|
|
331
413
|
log = _LOGGER.debug if self._follow_failing else _LOGGER.info
|
|
332
|
-
log("Cannot follow the focus yet (%s); the next
|
|
414
|
+
log("Cannot follow the focus yet (%s); retrying at the next health check", _describe(exc))
|
|
333
415
|
self._follow_failing = True
|
|
334
416
|
return
|
|
335
417
|
if self._follow_failing:
|
|
@@ -362,6 +444,7 @@ class Pmd3Backend:
|
|
|
362
444
|
await self._drop_accessibility()
|
|
363
445
|
tunnel, self._tunnel = self._tunnel, None
|
|
364
446
|
session_closed, self._session_closed = self._session_closed, False
|
|
447
|
+
self._closed_at = None
|
|
365
448
|
if session_closed:
|
|
366
449
|
self._lost_session_pending = True
|
|
367
450
|
if tunnel is not None:
|
|
@@ -461,13 +544,69 @@ class Pmd3Backend:
|
|
|
461
544
|
|
|
462
545
|
# --- requests --------------------------------------------------------------------------
|
|
463
546
|
|
|
547
|
+
async def follow(self, params: Dict[str, Any]) -> Dict[str, Any]:
|
|
548
|
+
self._keep_armed()
|
|
549
|
+
await self._with_rsd(self._accessibility)
|
|
550
|
+
return {"moves": self._moves}
|
|
551
|
+
|
|
464
552
|
async def focus(self, params: Dict[str, Any]) -> Dict[str, Any]:
|
|
553
|
+
"""The focused element. With `afterMoves` (the count `follow` answered before an action), it
|
|
554
|
+
first waits up to `waitMs` for a later move, then until no move came for `quietMs`, and says
|
|
555
|
+
whether the focus `moved`."""
|
|
465
556
|
assert self._focus_lock is not None
|
|
466
|
-
# Aged from the request's arrival, as the plugin dates it from the send
|
|
557
|
+
# Aged from the request's arrival, as the plugin dates it from the send.
|
|
467
558
|
received = asyncio.get_running_loop().time()
|
|
559
|
+
if self._following():
|
|
560
|
+
# An agent polling the focus, as wait --focus does, is still using it.
|
|
561
|
+
self._keep_armed()
|
|
562
|
+
after = params.get("afterMoves")
|
|
563
|
+
moved = None
|
|
564
|
+
if after is not None:
|
|
565
|
+
if not self._following():
|
|
566
|
+
raise _focus_unknown(NOT_ARMED)
|
|
567
|
+
wait_ms = params.get("waitMs")
|
|
568
|
+
quiet_ms = params.get("quietMs")
|
|
569
|
+
moved = await self._settle(
|
|
570
|
+
after,
|
|
571
|
+
(SETTLE_WAIT_MS if wait_ms is None else wait_ms) / 1000,
|
|
572
|
+
(SETTLE_QUIET_MS if quiet_ms is None else quiet_ms) / 1000,
|
|
573
|
+
)
|
|
468
574
|
async with self._focus_lock:
|
|
469
575
|
focus, moved_at = await self._with_rsd(self._read_focus)
|
|
470
|
-
|
|
576
|
+
result: Dict[str, Any] = {"focus": focus, "ageMs": round((received - moved_at) * 1000)}
|
|
577
|
+
if moved is not None:
|
|
578
|
+
result["moved"] = moved
|
|
579
|
+
return result
|
|
580
|
+
|
|
581
|
+
async def _settle(self, after: int, wait_s: float, quiet_s: float) -> bool:
|
|
582
|
+
"""Whether a move past `after` came within `wait_s`; if so, returns once none came for `quiet_s`."""
|
|
583
|
+
loop = asyncio.get_running_loop()
|
|
584
|
+
deadline = loop.time() + wait_s
|
|
585
|
+
while self._moves <= after:
|
|
586
|
+
if not await self._next_move(deadline - loop.time()):
|
|
587
|
+
return False
|
|
588
|
+
# A grid that scrolls, or a row that loads, can move the focus again right after.
|
|
589
|
+
cap = loop.time() + SETTLE_QUIET_CAP_S
|
|
590
|
+
while await self._next_move(min(quiet_s, cap - loop.time())):
|
|
591
|
+
pass
|
|
592
|
+
confirm_by = loop.time() + LAYOUT_CONFIRM_S
|
|
593
|
+
while self._unknown == LAYOUT_CHANGED and loop.time() < confirm_by:
|
|
594
|
+
await asyncio.sleep(0.02)
|
|
595
|
+
return True
|
|
596
|
+
|
|
597
|
+
async def _next_move(self, timeout_s: float) -> bool:
|
|
598
|
+
if timeout_s <= 0:
|
|
599
|
+
return False
|
|
600
|
+
try:
|
|
601
|
+
await asyncio.wait_for(self._moved.wait(), timeout_s)
|
|
602
|
+
except asyncio.TimeoutError:
|
|
603
|
+
return False
|
|
604
|
+
return True
|
|
605
|
+
|
|
606
|
+
def _note_move(self) -> None:
|
|
607
|
+
self._moves += 1
|
|
608
|
+
moved, self._moved = self._moved, asyncio.Event()
|
|
609
|
+
moved.set()
|
|
471
610
|
|
|
472
611
|
async def _accessibility(self, rsd: Any) -> Any:
|
|
473
612
|
"""One accessibility session per tunnel, following the focus from the moment it opens."""
|
|
@@ -479,6 +618,10 @@ class Pmd3Backend:
|
|
|
479
618
|
if self._ax is not None and self._ax_rsd is rsd and self._follower is not None and not self._follower.done():
|
|
480
619
|
return self._ax
|
|
481
620
|
await self._drop_accessibility()
|
|
621
|
+
if self._closed_at is not None:
|
|
622
|
+
# The daemon learns of a session's end late, then untargets whichever session follows.
|
|
623
|
+
loop = asyncio.get_running_loop()
|
|
624
|
+
await asyncio.sleep(max(0.0, self._closed_at + self._timings.session_close_s - loop.time()))
|
|
482
625
|
ax = self._pmd3.accessibilityaudit.AccessibilityAudit(rsd)
|
|
483
626
|
await ax.__aenter__()
|
|
484
627
|
self._ax, self._ax_rsd = ax, rsd
|
|
@@ -489,27 +632,27 @@ class Pmd3Backend:
|
|
|
489
632
|
await self._drop_accessibility()
|
|
490
633
|
raise
|
|
491
634
|
self._follower = asyncio.ensure_future(self._follow_focus(ax))
|
|
492
|
-
|
|
493
|
-
self._retarget = asyncio.ensure_future(self._retarget_after_loss(ax))
|
|
635
|
+
self._retarget = asyncio.ensure_future(self._keep_targeted(ax))
|
|
494
636
|
return ax
|
|
495
637
|
|
|
496
|
-
async def
|
|
497
|
-
"""
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
638
|
+
async def _keep_targeted(self, ax: Any) -> None:
|
|
639
|
+
"""The Apple TV ends a session lost before this one at no set time, untargeting this one with
|
|
640
|
+
no event to tell, and then highlights every focus move with nobody to clear it."""
|
|
641
|
+
failing = False
|
|
642
|
+
while True:
|
|
643
|
+
await asyncio.sleep(self._timings.retarget_s)
|
|
644
|
+
try:
|
|
645
|
+
await asyncio.wait_for(self._target(ax), self._timings.call_timeout_s)
|
|
646
|
+
except Exception as exc:
|
|
647
|
+
if not failing:
|
|
648
|
+
_LOGGER.info("Targeting the accessibility session again failed (%s); retrying", _describe(exc))
|
|
649
|
+
failing = True
|
|
650
|
+
continue
|
|
651
|
+
failing = False
|
|
652
|
+
if self._lost_session_pending:
|
|
653
|
+
self._lost_session_pending = False
|
|
654
|
+
# The Apple TV may not have reported the moves made while the session was untargeted.
|
|
655
|
+
self._unknown, self._focused = NOT_FOLLOWED, None
|
|
513
656
|
|
|
514
657
|
@staticmethod
|
|
515
658
|
async def _target(ax: Any) -> None:
|
|
@@ -526,17 +669,17 @@ class Pmd3Backend:
|
|
|
526
669
|
self._unknown, self._focused = SCREEN_CHANGED, None
|
|
527
670
|
elif event.name == NOTIFICATION and _first(event.data) == LAYOUT_CHANGE and self._unknown is None:
|
|
528
671
|
self._unknown = LAYOUT_CHANGED
|
|
529
|
-
elif
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
self._unknown = None
|
|
672
|
+
elif event.name == PROPERTIES_CHANGED:
|
|
673
|
+
if self._unknown == LAYOUT_CHANGED and _same_element(getattr(_first(event.data), "element", None), self._focused):
|
|
674
|
+
# The move keeps its time.
|
|
675
|
+
self._unknown = None
|
|
676
|
+
# The daemon highlights the element it names again.
|
|
677
|
+
await ax.set_show_visuals(False)
|
|
536
678
|
elif event.name == FOCUS_CHANGED:
|
|
537
679
|
self._focused = getattr(_first(event.data), "element", None)
|
|
538
680
|
self._moved_at = asyncio.get_running_loop().time()
|
|
539
681
|
self._unknown = None
|
|
682
|
+
self._note_move()
|
|
540
683
|
# The daemon highlights each newly focused element, whatever it was told before.
|
|
541
684
|
await ax.set_show_visuals(False)
|
|
542
685
|
except asyncio.CancelledError:
|
|
@@ -563,7 +706,7 @@ class Pmd3Backend:
|
|
|
563
706
|
except Exception:
|
|
564
707
|
_LOGGER.debug("Resetting the accessibility inspector failed", exc_info=True)
|
|
565
708
|
await self._close_quietly(ax)
|
|
566
|
-
self.
|
|
709
|
+
self._session_ended()
|
|
567
710
|
|
|
568
711
|
@staticmethod
|
|
569
712
|
async def _stop_following(ax: Any) -> None:
|
|
@@ -577,6 +720,8 @@ class Pmd3Backend:
|
|
|
577
720
|
only when the focus is still the one it read: a move reads the new element, a screen change
|
|
578
721
|
makes it unknown.
|
|
579
722
|
"""
|
|
723
|
+
if not self._following():
|
|
724
|
+
raise _focus_unknown(NOT_ARMED)
|
|
580
725
|
try:
|
|
581
726
|
ax = await self._accessibility(rsd)
|
|
582
727
|
while True:
|
|
@@ -585,7 +730,8 @@ class Pmd3Backend:
|
|
|
585
730
|
element, moved_at = self._focused, self._moved_at
|
|
586
731
|
if element is None:
|
|
587
732
|
raise _focus_unknown("The Apple TV reported a focus move without an element")
|
|
588
|
-
|
|
733
|
+
values = await asyncio.gather(*(ax.element_attribute(element.identifier, name) for name in FOCUS_ATTRIBUTES))
|
|
734
|
+
attributes = dict(zip(FOCUS_ATTRIBUTES, values))
|
|
589
735
|
if self._unknown is None and self._focused is element and self._moved_at == moved_at:
|
|
590
736
|
break
|
|
591
737
|
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),
|