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.
@@ -40,9 +40,38 @@ function wantsFocus(body) {
40
40
  return false;
41
41
  return (0, validate_1.requiredBoolean)(body, 'focus');
42
42
  }
43
- /** `movedSince`: the action was meant to move the focus, so an older focus is not the answer. */
44
- async function withFocus(deps, device, wanted, movedSince) {
45
- return wanted ? { focus: await deps.screen.report(device, { settle: true, movedSince }) } : {};
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
- async function waitForeground(screen, device, bundleId, waitMs, signal) {
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.kind === 'app' && seen.bundleId === bundleId)
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 agent-atv wait --app ${bundleId}` : report.hint;
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, { settle: false }) : undefined;
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
- const startedAt = Date.now();
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 focus = await withFocus(deps, device, focusWanted, startedAt);
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 startedAt = Date.now();
330
+ const moves = focusWanted ? await deps.screen.follow(device) : undefined;
296
331
  if (target.includes('://')) {
297
- await devices.call(device, 'app.launch', { target });
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 { foreground, seen, unknown } = waitMs > 0 ? await waitForeground(deps.screen, device, app.bundleId, waitMs, signal) : { foreground: false };
311
- const focus = await withFocus(deps, device, focusWanted, startedAt);
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
  }
@@ -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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"}
@@ -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
- /** The worker learns a focus move about 50 ms after the key; a focus read takes about 0.2 s on a Pi. */
29
- const SETTLE_MS = 300;
30
- const SETTLE_CAP_MS = 1000;
31
- /** A read that has to reopen the worker's accessibility session takes 0.4 to 0.6 s on a Pi. */
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 { focus, ageMs } = await this.request(device, 'focus');
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
- * see settled(); `movedSince` then rejects a focus tvOS reported before the action.
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, { settle, movedSince }) {
164
+ async report(device, settle) {
166
165
  try {
167
166
  this.requireTunnel(device);
168
- const element = settle ? await this.settled(device, movedSince) : (await this.readWithin(device, REPORT_READ_MS)).element;
169
- return { available: true, element };
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":";;;;;;AAAA,6CAAsD;AACtD,+CAAgD;AAChD,qCAAiC;AACjC,0DAA6B;AAC7B,0CAAqD;AACrD,6CAA+F;AAG/F,wCAAuC;AACvC,sCAAsD;AACtD,6CAAiD;AAqGjD,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,8FAA8F;AAC9F,MAAM,QAAQ,GAA2B;IACvC,IAAI,EAAE,CAAC,GAAG,MAAM;IAChB,KAAK,EAAE,EAAE,GAAG,MAAM;IAClB,UAAU,EAAE,EAAE,GAAG,MAAM;IACvB,UAAU,EAAE,GAAG,GAAG,MAAM;IACxB,YAAY,EAAE,EAAE,GAAG,MAAM;IACzB,UAAU,EAAE,EAAE,GAAG,MAAM;CACxB,CAAC;AACF,MAAM,kBAAkB,GAAG,EAAE,GAAG,MAAM,CAAC;AACvC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,kGAAkG;AAClG,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,uGAAuG;AACvG,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,0GAA0G;AAC1G,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAErF,MAAM,OAAO,GAA2B;IACtC,qBAAqB,EAAE,oBAAoB;IAC3C,iBAAiB,EAAE,2BAA2B;IAC9C,kBAAkB,EAAE,8BAA8B;IAClD,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,cAAc;CAC3B,CAAC;AAEK,MAAM,cAAc,GAAG,CAAC,KAAc,EAAqB,EAAE,CAAC,KAAK,YAAY,iBAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC;AAApH,QAAA,cAAc,kBAAsG;AAEjI,oGAAoG;AACpG,MAAa,aAAa;IAUL;IATnB,MAAM,CAAe;IACb,KAAK,GAAkB,IAAI,CAAC;IAC5B,MAAM,CAAS;IACN,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,OAAO,GAAG,KAAK,CAAC;IAChB,SAAS,CAAU;IACnB,OAAO,GAAG,KAAK,CAAC;IAExB,YACmB,OAahB;QAbgB,YAAO,GAAP,OAAO,CAavB;QAED,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iHAAiH;IACjH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAA,qBAAY,EAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,6FAA6F;IAC7F,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,0EAA0E;IAClE,KAAK,CAAC,KAAK,CAAC,MAAc;QAChC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAA,mBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,OAAe;QAC1B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAClI,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1F,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,GAAG,uBAAuB,CAAC;aAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;YAAE,MAAM,GAAG,6DAA6D,CAAC;aACzG,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;YAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;aACjD,IAAI,CAAC,SAAS;YAAE,MAAM,GAAG,0CAA0C,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;IACvI,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAAe;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7G,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0D,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACrI,uFAAuF;QACvF,MAAM,IAAI,GAAc,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACjH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,iBAAQ,CAAC,eAAe,EAAE,0BAA0B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;QACnJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iFAAiF;IACjF,SAAS,CAAC,MAAc,EAAE,IAAe;QACvC,OAAO,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAe;QAC1C,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;YACtE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7F,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAqB,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACrH,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,8BAA8B,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvH,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,yGAAyG;IACzG,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,QAAiB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAa,MAAM,EAAE,YAAY,CAAC,CAAC;QAC5D,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3F,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,QAAQ,GAAG,cAAc;QACvD,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,wBAAwB,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;QACrD,IAAI,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,IAAI,YAAY,CAAC,CAAC;IACrF,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,KAAc,EAAE,MAAc;QAChE,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzG,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChF,CAAC;IAEO,MAAM,CAAI,MAAc,EAAE,IAAgB,EAAE,EAAU,EAAE,IAAY;QAC1E,IAAI,KAAiC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YACtD,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CACH,MAAM,CACJ,IAAI,iBAAQ,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,IAAI,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE;gBACnI,IAAI,EAAE,wBAAwB;aAC/B,CAAC,CACH,EACH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,WAA+B,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,KAAqB,EAAE;QAC9G,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAA,gBAAM,GAAE,EAAE,aAAa,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YACjH,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,qBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAO,EAAC,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,iBAAQ,CAAC,eAAe,EAAE,6CAA6C,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACxH,MAAM,MAAM,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,WAAW,KAAK,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QACnI,CAAC;gBAAS,CAAC;YACT,MAAM,IAAA,aAAE,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,GAAW;QACvC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACtH,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO;QAC9C,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7I,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC;QAClG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,0FAA0F;YAC1F,KAAK,MAAM,MAAM,IAAI,CAAC,mBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBAC3F,MAAM,IAAA,aAAE,EAAC,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAU,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1I,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,MAAc,EAAE,UAAU,GAAG,IAAI;QAChD,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,iBAAQ,CAAC,uBAAuB,EAAE,8CAA8C,EAAE,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,iBAAQ,CAAC,oBAAoB,EAAE,yCAAyC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;gBAC3G,IAAI,EAAE,6DAA6D;aACpE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAQ,CAAC,uBAAuB,EAAE,0CAA0C,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;gBAC9I,IAAI,EAAE,4FAA4F;aACnG,CAAC,CAAC;QACL,CAAC;QACD,IAAI,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC/C,MAAM,IAAI,iBAAQ,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;gBACrG,IAAI,EAAE,gCAAgC;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,MAAc;QAChD,IAAI,MAAM,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,iBAAQ,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;YAClI,IAAI,EAAE,wBAAwB;SAC/B,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,OAAO,IAAI,iBAAQ,CAAC,mBAAmB,EAAE,mCAAmC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE;YAC7I,IAAI,EAAE,sBAAsB,MAAM,CAAC,EAAE,WAAW;SACjD,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAW,MAAc,EAAE,MAAc,EAAE,SAAe,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,EAAE;QAC3G,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,iBAAQ,CAAC,oBAAoB,EAAE,gCAAgC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;gBAC3G,IAAI,EAAE,kEAAkE;aACzE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAI,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,MAAc,EAAE,KAAc;QAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAW,CAAC;YAAE,OAAO,IAAA,mBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACxG,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,mBAAmB;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAChC,KAAK,oBAAoB;gBACvB,OAAO,IAAI,iBAAQ,CAAC,oBAAoB,EAAE,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE;oBACpF,IAAI,EAAE,uDAAuD;iBAC9D,CAAC,CAAC;YACL,KAAK,oBAAoB;gBACvB,OAAO,IAAI,iBAAQ,CAAC,oBAAoB,EAAE,yBAAyB,IAAI,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YAC9I,KAAK,gBAAgB;gBACnB,OAAO,IAAI,iBAAQ,CAAC,eAAe,EAAE,yBAAyB,IAAI,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9G,KAAK,gBAAgB;gBACnB,OAAO,IAAI,iBAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;oBAClE,IAAI,EAAE,yGAAyG,MAAM,CAAC,EAAE,WAAW;iBACpI,CAAC,CAAC;YACL;gBACE,OAAO,IAAA,mBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,IAAI,GAAc,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAChI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAc;YAC3C,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,KAAK,EAAE,qBAAqB,IAAI,EAAE;YAClC,SAAS,EAAE,UAAU,IAAI,EAAE;YAC3B,8EAA8E;YAC9E,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,kBAAkB;YAC9D,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,0BAA0B,KAAK,EAAE,OAAO,IAAI,GAAG,qBAAqB,KAAK,EAAE,eAAe,IAAI,KAAK,GAAG;SACxI,CAAC,CAAC;QACH,MAAM,MAAM,GAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACvE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACrB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,4DAA4D;YAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YAC1C,IAAI,KAAK,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAoB,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,MAAc,EAAE,MAAc,EAAE,MAAoB;QACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;YACxF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAChE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,+CAA+C,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CACpG,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,QAAQ,CAAC,MAAc,EAAE,MAAc,EAAE,MAAoB;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,CAAC,SAAS,KAAK,cAAc,CAAC;QACvF,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,oBAAoB,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAA2B;YACpC,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,MAAM,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY;YAC5E,YAAY,EAAE,eAAe,MAAM,yBAAyB;YAC5D,QAAQ,EAAE,aAAa,MAAM,iCAAiC,MAAM,CAAC,EAAE,WAAW;SACnF,CAAC;QACF,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,oBAAoB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,UAAkB;QACvD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAEO,OAAO,CAAC,MAAc;QAC5B,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC;QAC5D,IAAI,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC;gBAAE,SAAS;YACjG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA9aD,sCA8aC"}
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.2",
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
- return {"focus": dict(FAKE_FOCUS), "ageMs": 0}
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
- # The Apple TV ends a session lost with its tunnel 20 to 35 s later, untargeting the one that follows.
65
- retarget_s: float = 40.0
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
- """Follows the focus from the tunnel's start, so moves made before the first read count."""
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 focus read retries", _describe(exc))
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; the read takes ~0.2 s.
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
- return {"focus": focus, "ageMs": round((received - moved_at) * 1000)}
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
- if self._lost_session_pending:
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 _retarget_after_loss(self, ax: Any) -> None:
497
- """Follows the focus again once the Apple TV has ended any session lost before it: that end
498
- untargets the session, and targeting it again brings back notifications but not focus moves
499
- until the monitored type is set again."""
500
- await asyncio.sleep(self._timings.retarget_s)
501
- try:
502
- await asyncio.wait_for(self._target(ax), self._timings.call_timeout_s)
503
- except Exception as exc:
504
- _LOGGER.info("Targeting the accessibility session again failed (%s); focus reads may answer unknown until the next reconnect", _describe(exc))
505
- return
506
- _LOGGER.info(
507
- "A session lost earlier may have untargeted this one: targeted the accessibility session again;"
508
- " the focus is known again after the next move"
509
- )
510
- self._lost_session_pending = False
511
- # The Apple TV did not report the moves made while the session was untargeted.
512
- self._unknown, self._focused = NOT_FOLLOWED, None
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
- event.name == PROPERTIES_CHANGED
531
- and self._unknown == LAYOUT_CHANGED
532
- and _same_element(getattr(_first(event.data), "element", None), self._focused)
533
- ):
534
- # The move keeps its time.
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._session_closed = True
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
- attributes = await ax.element_attributes(element.identifier, FOCUS_ATTRIBUTES)
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
- "focus": {},
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),