@crosshands/platform-darwin 0.1.2

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/index.js ADDED
@@ -0,0 +1,621 @@
1
+ import { execFile, spawn } from 'node:child_process';
2
+ import { createHash, randomBytes } from 'node:crypto';
3
+ import { chmod, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
4
+ import { createConnection } from 'node:net';
5
+ import { tmpdir } from 'node:os';
6
+ import { dirname, isAbsolute, join } from 'node:path';
7
+ import { promisify } from 'node:util';
8
+ import { fileURLToPath } from 'node:url';
9
+ import { COMPUTER_OPERATIONS, CONTRACT_VERSIONS, ProviderHandshakeSchema, createComputerError } from '@crosshands/contract';
10
+ export const packageVersion = CONTRACT_VERSIONS.product;
11
+ const MAX_NATIVE_RESPONSE_BYTES = 4 * 1024 * 1024;
12
+ class NativeProviderError extends Error {
13
+ code;
14
+ constructor(code, message) {
15
+ super(message);
16
+ this.code = code;
17
+ }
18
+ }
19
+ const HELPER_PATH = fileURLToPath(new URL('../assets/CrossHands%20Computer%20Use.app/Contents/MacOS/crosshands-computer-use-macos', import.meta.url));
20
+ const MANIFEST_PATH = fileURLToPath(new URL('../assets/payload.json', import.meta.url));
21
+ const execFileAsync = promisify(execFile);
22
+ export function resolveHelperPath() {
23
+ if (!isAbsolute(HELPER_PATH))
24
+ throw new Error('CrossHands helper path must be absolute');
25
+ return HELPER_PATH;
26
+ }
27
+ export async function verifyDarwinPayload(helperPath = HELPER_PATH, manifestPath = MANIFEST_PATH, verifySignature = process.platform === 'darwin') {
28
+ if (!isAbsolute(helperPath) || !isAbsolute(manifestPath)) {
29
+ throw createComputerError('provider_unavailable', 'macOS payload paths must be absolute');
30
+ }
31
+ const manifest = JSON.parse(await readFile(manifestPath, 'utf8'));
32
+ if (manifest.productVersion !== packageVersion) {
33
+ throw createComputerError('version_incompatible', 'macOS payload product version mismatch');
34
+ }
35
+ if (manifest.bundleIdentifier !== 'ai.crosshands.ComputerUse') {
36
+ throw createComputerError('provider_unavailable', 'macOS helper bundle identity mismatch');
37
+ }
38
+ const expected = manifest.files?.['crosshands-computer-use-macos'];
39
+ if (typeof expected !== 'string' || !/^[a-f0-9]{64}$/.test(expected)) {
40
+ throw createComputerError('provider_unavailable', 'macOS payload manifest is malformed');
41
+ }
42
+ const actual = createHash('sha256')
43
+ .update(await readFile(helperPath))
44
+ .digest('hex');
45
+ if (actual !== expected) {
46
+ throw createComputerError('provider_unavailable', 'macOS provider payload hash mismatch');
47
+ }
48
+ if (!verifySignature)
49
+ return;
50
+ const signing = manifest.signing;
51
+ if (signing?.required !== true ||
52
+ typeof signing.authority !== 'string' ||
53
+ signing.authority.length === 0 ||
54
+ typeof signing.teamIdentifier !== 'string' ||
55
+ !/^[A-Z0-9]{10}$/.test(signing.teamIdentifier) ||
56
+ signing.notarized !== true) {
57
+ throw createComputerError('provider_unavailable', 'macOS release payload has no valid signing and notarization policy');
58
+ }
59
+ const appPath = dirname(dirname(dirname(helperPath)));
60
+ try {
61
+ await execFileAsync('/usr/bin/codesign', ['--verify', '--strict', appPath]);
62
+ const requirement = await execFileAsync('/usr/bin/codesign', ['-d', '-r-', appPath]);
63
+ if (!requirement.stderr.includes('identifier "ai.crosshands.ComputerUse"')) {
64
+ throw new Error('designated requirement does not bind the stable bundle identifier');
65
+ }
66
+ const details = await execFileAsync('/usr/bin/codesign', ['-d', '--verbose=4', appPath]);
67
+ if (!details.stderr.includes(`Authority=${signing.authority}`) ||
68
+ !details.stderr.includes(`TeamIdentifier=${signing.teamIdentifier}`)) {
69
+ throw new Error('code-signing authority or team identifier does not match the manifest');
70
+ }
71
+ await execFileAsync('/usr/sbin/spctl', ['--assess', '--type', 'execute', appPath]);
72
+ }
73
+ catch (cause) {
74
+ throw createComputerError('provider_unavailable', 'macOS provider signature verification failed', {
75
+ cause: cause instanceof Error ? cause.message : 'unknown'
76
+ });
77
+ }
78
+ }
79
+ function currentGraphicalSessionId() {
80
+ const uid = process.getuid?.();
81
+ const osIdentity = uid === undefined ? `user:${process.env.USER ?? 'unknown'}` : `uid:${uid}`;
82
+ return (process.env.CROSSHANDS_GRAPHICAL_SESSION_ID ??
83
+ process.env.SECURITYSESSIONID ??
84
+ `interactive:${osIdentity}`);
85
+ }
86
+ class SocketNativeClient {
87
+ child;
88
+ directory;
89
+ socketPath;
90
+ token;
91
+ #sequence = 0;
92
+ constructor(child, directory, socketPath, token) {
93
+ this.child = child;
94
+ this.directory = directory;
95
+ this.socketPath = socketPath;
96
+ this.token = token;
97
+ }
98
+ static async start(graphicalSessionId) {
99
+ const directory = await mkdtemp(join(tmpdir(), 'crosshands-darwin-'));
100
+ await chmod(directory, 0o700);
101
+ const socketPath = join(directory, 'provider.sock');
102
+ const tokenPath = join(directory, 'provider.token');
103
+ const token = randomBytes(32).toString('base64url');
104
+ await writeFile(tokenPath, `${token}\n`, { mode: 0o600, flag: 'wx' });
105
+ const child = spawn(resolveHelperPath(), ['--agent', socketPath, '--token-file', tokenPath], {
106
+ env: { ...process.env, CROSSHANDS_GRAPHICAL_SESSION_ID: graphicalSessionId },
107
+ stdio: 'ignore'
108
+ });
109
+ const client = new SocketNativeClient(child, directory, socketPath, token);
110
+ const deadline = Date.now() + 3_000;
111
+ let lastError;
112
+ while (Date.now() < deadline) {
113
+ if (child.exitCode !== null)
114
+ break;
115
+ try {
116
+ // oxlint-disable-next-line no-await-in-loop -- readiness requires ordered retries.
117
+ await client.request('handshake');
118
+ return client;
119
+ }
120
+ catch (cause) {
121
+ lastError = cause;
122
+ // oxlint-disable-next-line no-await-in-loop -- readiness requires ordered retries.
123
+ await new Promise((resolve) => setTimeout(resolve, 40));
124
+ }
125
+ }
126
+ await client.close();
127
+ throw createComputerError('provider_unavailable', 'CrossHands macOS helper did not start', {
128
+ cause: lastError instanceof Error ? lastError.message : `exit ${String(child.exitCode)}`
129
+ });
130
+ }
131
+ request(method, params = {}) {
132
+ const id = ++this.#sequence;
133
+ const payload = JSON.stringify({ id, method, params, token: this.token }) + '\n';
134
+ return new Promise((resolve, reject) => {
135
+ const socket = createConnection(this.socketPath);
136
+ let buffer = '';
137
+ let receivedBytes = 0;
138
+ let settled = false;
139
+ const timer = setTimeout(() => {
140
+ settled = true;
141
+ socket.destroy();
142
+ reject(new NativeProviderError('timeout', `macOS helper timed out during ${method}`));
143
+ }, 30_000);
144
+ timer.unref();
145
+ const finish = () => {
146
+ if (settled)
147
+ return false;
148
+ settled = true;
149
+ clearTimeout(timer);
150
+ return true;
151
+ };
152
+ socket.setEncoding('utf8');
153
+ socket.once('connect', () => socket.end(payload));
154
+ socket.on('data', (chunk) => {
155
+ receivedBytes += Buffer.byteLength(chunk);
156
+ if (receivedBytes > MAX_NATIVE_RESPONSE_BYTES) {
157
+ if (finish()) {
158
+ socket.destroy();
159
+ reject(new NativeProviderError('payload_too_large', 'macOS helper response is too large'));
160
+ }
161
+ return;
162
+ }
163
+ buffer += chunk;
164
+ const newline = buffer.indexOf('\n');
165
+ if (newline < 0)
166
+ return;
167
+ if (!finish())
168
+ return;
169
+ socket.destroy();
170
+ try {
171
+ const response = JSON.parse(buffer.slice(0, newline));
172
+ if (response.id !== id)
173
+ throw new Error('macOS helper response id mismatch');
174
+ if (response.ok === true)
175
+ resolve(response.result);
176
+ else {
177
+ const error = asObject(response.error);
178
+ reject(new NativeProviderError(typeof error.code === 'string' ? error.code : 'accessibility_error', typeof error.message === 'string' ? error.message : 'macOS helper failed'));
179
+ }
180
+ }
181
+ catch (cause) {
182
+ reject(cause);
183
+ }
184
+ });
185
+ socket.once('error', (cause) => {
186
+ if (finish())
187
+ reject(cause);
188
+ });
189
+ });
190
+ }
191
+ async close() {
192
+ if (this.child.exitCode === null) {
193
+ await this.request('terminate').catch(() => undefined);
194
+ this.child.kill('SIGTERM');
195
+ }
196
+ await rm(this.directory, { recursive: true, force: true });
197
+ }
198
+ }
199
+ function asObject(value) {
200
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
201
+ throw new TypeError('Expected an object from the macOS helper');
202
+ }
203
+ return value;
204
+ }
205
+ function asString(value, field) {
206
+ if (typeof value !== 'string' || value.length === 0)
207
+ throw new TypeError(`Missing ${field}`);
208
+ return value;
209
+ }
210
+ function asNumber(value, field) {
211
+ if (typeof value !== 'number' || !Number.isFinite(value))
212
+ throw new TypeError(`Missing ${field}`);
213
+ return value;
214
+ }
215
+ function nativeApp(value) {
216
+ const app = asObject(value);
217
+ return {
218
+ name: asString(app.name, 'app.name'),
219
+ bundleId: typeof app.bundleId === 'string' ? app.bundleId : null,
220
+ pid: asNumber(app.pid, 'app.pid'),
221
+ processStartedAt: asString(app.processStartedAt, 'app.processStartedAt'),
222
+ executableId: asString(app.executableId, 'app.executableId'),
223
+ isRunning: app.isRunning !== false
224
+ };
225
+ }
226
+ function appId(app) {
227
+ return app.bundleId ?? app.executableId;
228
+ }
229
+ function normalizeApp(app) {
230
+ return {
231
+ id: appId(app),
232
+ name: app.name,
233
+ bundleId: app.bundleId,
234
+ pid: app.pid,
235
+ isRunning: app.isRunning
236
+ };
237
+ }
238
+ function nativeWindow(value) {
239
+ const window = asObject(value);
240
+ const normalized = {
241
+ id: asNumber(window.id, 'window.id'),
242
+ index: asNumber(window.index, 'window.index'),
243
+ title: typeof window.title === 'string' ? window.title : '',
244
+ x: asNumber(window.x, 'window.x'),
245
+ y: asNumber(window.y, 'window.y'),
246
+ width: asNumber(window.width, 'window.width'),
247
+ height: asNumber(window.height, 'window.height'),
248
+ isMinimized: window.isMinimized === true
249
+ };
250
+ if (window.app !== undefined) {
251
+ normalized.app = asObject(window.app);
252
+ }
253
+ return normalized;
254
+ }
255
+ function normalizeWindow(window, owner) {
256
+ return {
257
+ id: String(window.id),
258
+ appId: appId(owner),
259
+ title: window.title,
260
+ index: window.index,
261
+ bounds: { x: window.x, y: window.y, width: window.width, height: window.height },
262
+ minimized: window.isMinimized
263
+ };
264
+ }
265
+ function bindings(app, window, snapshotId, generation, graphicalSessionId) {
266
+ return {
267
+ brokerGeneration: 'pending-broker',
268
+ providerGeneration: generation,
269
+ graphicalSessionId,
270
+ process: { pid: app.pid, startedAt: app.processStartedAt, executableId: app.executableId },
271
+ appId: appId(app),
272
+ window: { id: String(window.id), ownerPid: app.pid },
273
+ snapshotId,
274
+ desktopEpoch: 0
275
+ };
276
+ }
277
+ function normalizeSnapshot(value, generation, graphicalSessionId) {
278
+ const raw = asObject(value);
279
+ const snapshot = asObject(raw.snapshot);
280
+ const app = nativeApp(snapshot.app);
281
+ const window = nativeWindow(snapshot.window);
282
+ const id = asString(snapshot.id, 'snapshot.id');
283
+ return {
284
+ bindings: bindings(app, window, id, generation, graphicalSessionId),
285
+ snapshot: {
286
+ id,
287
+ app: normalizeApp(app),
288
+ window: normalizeWindow(window, app),
289
+ treeText: typeof snapshot.treeText === 'string' ? snapshot.treeText : '',
290
+ elementCount: asNumber(snapshot.elementCount, 'snapshot.elementCount'),
291
+ focusedElementRef: typeof snapshot.focusedElementId === 'number'
292
+ ? `element:${snapshot.focusedElementId}`
293
+ : null,
294
+ desktopEpoch: 0
295
+ },
296
+ screenshot: raw.screenshot === null || raw.screenshot === undefined
297
+ ? null
298
+ : normalizeScreenshot(raw.screenshot),
299
+ issues: normalizeScreenshotIssues(raw.screenshotStatus)
300
+ };
301
+ }
302
+ export function normalizeScreenshotIssues(value) {
303
+ if (value === null || value === undefined)
304
+ return [];
305
+ const status = asObject(value);
306
+ if (status.state !== 'failed')
307
+ return [];
308
+ const message = asString(status.message, 'screenshotStatus.message');
309
+ const code = status.code === 'permission_denied' || status.code === 'screenshot_failed'
310
+ ? status.code
311
+ : 'screenshot_failed';
312
+ return [
313
+ createComputerError(code, message, {
314
+ component: 'screenshots',
315
+ ...(status.metadata === undefined ? {} : { native: status.metadata })
316
+ }).toJSON()
317
+ ];
318
+ }
319
+ function normalizeScreenshot(value) {
320
+ const screenshot = asObject(value);
321
+ return {
322
+ format: 'png',
323
+ width: asNumber(screenshot.width, 'screenshot.width'),
324
+ height: asNumber(screenshot.height, 'screenshot.height'),
325
+ scale: asNumber(screenshot.scale, 'screenshot.scale'),
326
+ data: asString(screenshot.data, 'screenshot.data')
327
+ };
328
+ }
329
+ function targetReference(input) {
330
+ for (const key of ['target', 'from', 'to']) {
331
+ const target = input[key];
332
+ if (target === null || typeof target !== 'object')
333
+ continue;
334
+ const record = target;
335
+ const candidate = 'contextToken' in record
336
+ ? target
337
+ : record.kind === 'element'
338
+ ? record.ref
339
+ : (record.window ?? target);
340
+ if (candidate !== null && typeof candidate === 'object' && 'snapshotId' in candidate) {
341
+ return candidate;
342
+ }
343
+ }
344
+ return undefined;
345
+ }
346
+ function nativeTarget(target, prefix = '') {
347
+ const value = asObject(target);
348
+ const elementKey = prefix.length === 0 ? 'elementIndex' : `${prefix}ElementIndex`;
349
+ const xKey = prefix.length === 0 ? 'x' : `${prefix}X`;
350
+ const yKey = prefix.length === 0 ? 'y' : `${prefix}Y`;
351
+ if (value.kind === 'element') {
352
+ const ref = asObject(value.ref);
353
+ const index = Number(asString(ref.ref, 'element ref').replace(/^element:/, ''));
354
+ if (!Number.isInteger(index) || index < 0)
355
+ throw new TypeError('Invalid element reference');
356
+ return { [elementKey]: index, snapshotId: ref.snapshotId };
357
+ }
358
+ if (value.kind === 'coordinate') {
359
+ return {
360
+ [xKey]: asNumber(value.x, `${prefix}x`),
361
+ [yKey]: asNumber(value.y, `${prefix}y`),
362
+ ...(value.window === undefined ? {} : { snapshotId: asObject(value.window).snapshotId })
363
+ };
364
+ }
365
+ if ('snapshotId' in value)
366
+ return { snapshotId: value.snapshotId };
367
+ throw new TypeError('Unsupported macOS action target');
368
+ }
369
+ function nativeInput(operation, input) {
370
+ const value = asObject(input);
371
+ const common = {
372
+ ...(typeof value.app === 'string' ? { app: value.app } : {}),
373
+ ...(value.restoreWindow === true ? { restoreWindow: true } : {}),
374
+ ...(value.captureScreenshot === false ? { noScreenshot: true } : {})
375
+ };
376
+ if (operation === 'getAppState') {
377
+ const window = value.window === undefined ? undefined : asObject(value.window);
378
+ return {
379
+ ...common,
380
+ app: value.app,
381
+ ...(window?.id === undefined ? {} : { windowId: Number(window.id) }),
382
+ ...(window?.index === undefined ? {} : { windowIndex: window.index })
383
+ };
384
+ }
385
+ if (operation === 'listWindows')
386
+ return { app: value.app };
387
+ if (!COMPUTER_OPERATIONS[operation].mutation)
388
+ return value;
389
+ const reference = targetReference(value);
390
+ const app = typeof value.app === 'string'
391
+ ? value.app
392
+ : reference
393
+ ? `pid:${reference.process.pid}`
394
+ : undefined;
395
+ const actionCommon = {
396
+ ...common,
397
+ ...(app === undefined ? {} : { app }),
398
+ ...(reference === undefined
399
+ ? {}
400
+ : {
401
+ expectedProcessStartedAt: reference.process.startedAt,
402
+ expectedExecutableId: reference.process.executableId
403
+ })
404
+ };
405
+ if (operation === 'drag') {
406
+ return {
407
+ ...actionCommon,
408
+ ...nativeTarget(value.from, 'from'),
409
+ ...nativeTarget(value.to, 'to'),
410
+ ...(typeof value.durationMs === 'number' ? { durationMs: value.durationMs } : {})
411
+ };
412
+ }
413
+ const target = nativeTarget(value.target);
414
+ switch (operation) {
415
+ case 'click':
416
+ return {
417
+ ...actionCommon,
418
+ ...target,
419
+ mouseButton: value.button,
420
+ clickCount: value.clickCount,
421
+ modifiers: value.modifiers
422
+ };
423
+ case 'performSecondaryAction':
424
+ return { ...actionCommon, ...target, action: value.action };
425
+ case 'scroll':
426
+ return { ...actionCommon, ...target, direction: value.direction, pages: value.pages };
427
+ case 'hotkey':
428
+ return { ...actionCommon, ...target, key: value.keys.join('+') };
429
+ case 'typeText':
430
+ case 'pasteText':
431
+ return { ...actionCommon, ...target, text: value.text };
432
+ case 'pressKey':
433
+ return { ...actionCommon, ...target, key: value.key };
434
+ case 'setValue':
435
+ return { ...actionCommon, ...target, value: value.value };
436
+ default:
437
+ return { ...actionCommon, ...target };
438
+ }
439
+ }
440
+ function errorCode(code) {
441
+ const aliases = {
442
+ window_stale: 'stale_target',
443
+ action_timeout: 'timeout'
444
+ };
445
+ if (code in aliases)
446
+ return aliases[code];
447
+ const known = [
448
+ 'app_not_found',
449
+ 'app_blocked',
450
+ 'window_not_found',
451
+ 'window_not_focused',
452
+ 'permission_denied',
453
+ 'element_not_found',
454
+ 'element_not_clickable',
455
+ 'action_not_supported',
456
+ 'value_not_settable',
457
+ 'invalid_argument',
458
+ 'timeout',
459
+ 'screenshot_failed',
460
+ 'accessibility_error'
461
+ ];
462
+ return known.includes(code)
463
+ ? code
464
+ : 'accessibility_error';
465
+ }
466
+ function mutationResult(value, generation, graphicalSessionId) {
467
+ const raw = asObject(value);
468
+ const action = asObject(raw.action);
469
+ const verification = action.verification === undefined ? undefined : asObject(action.verification);
470
+ return {
471
+ outcome: verification?.state === 'verified'
472
+ ? { state: 'verified', evidence: action }
473
+ : {
474
+ state: 'indeterminate',
475
+ reason: String(verification?.reason ?? 'verification unavailable')
476
+ },
477
+ freshState: normalizeSnapshot(raw, generation, graphicalSessionId)
478
+ };
479
+ }
480
+ export class DarwinComputerProvider {
481
+ graphicalSessionId;
482
+ clientFactory;
483
+ verifyPayload;
484
+ #generation = 'darwin-starting';
485
+ #client;
486
+ #handshake;
487
+ constructor(graphicalSessionId = currentGraphicalSessionId(), clientFactory = SocketNativeClient.start, verifyPayload = clientFactory === SocketNativeClient.start) {
488
+ this.graphicalSessionId = graphicalSessionId;
489
+ this.clientFactory = clientFactory;
490
+ this.verifyPayload = verifyPayload;
491
+ }
492
+ get generation() {
493
+ return this.#generation;
494
+ }
495
+ async start() {
496
+ if (this.#handshake !== undefined)
497
+ return this.#handshake;
498
+ if (this.verifyPayload)
499
+ await verifyDarwinPayload();
500
+ this.#client = await this.clientFactory(this.graphicalSessionId);
501
+ const handshake = ProviderHandshakeSchema.parse(await this.#client.request('handshake'));
502
+ this.#generation = handshake.generation;
503
+ this.#handshake = handshake;
504
+ return handshake;
505
+ }
506
+ async dispatch(request) {
507
+ const client = this.#client ?? (await this.start(), this.#client);
508
+ if (client === undefined)
509
+ throw new Error('macOS provider failed to start');
510
+ try {
511
+ const raw = await client.request(request.operation, nativeInput(request.operation, request.input));
512
+ let result = raw;
513
+ if (request.operation === 'listApps') {
514
+ result = {
515
+ apps: asObject(raw).apps.map((app) => normalizeApp(nativeApp(app)))
516
+ };
517
+ }
518
+ else if (request.operation === 'listWindows') {
519
+ const response = asObject(raw);
520
+ const owner = nativeApp(response.app);
521
+ result = {
522
+ windows: response.windows.map((window) => normalizeWindow(nativeWindow(window), owner))
523
+ };
524
+ }
525
+ else if (request.operation === 'getAppState') {
526
+ result = normalizeSnapshot(raw, this.generation, this.graphicalSessionId);
527
+ }
528
+ else if (COMPUTER_OPERATIONS[request.operation].mutation) {
529
+ result = mutationResult(raw, this.generation, this.graphicalSessionId);
530
+ }
531
+ return {
532
+ requestId: request.requestId,
533
+ dispatched: COMPUTER_OPERATIONS[request.operation].mutation,
534
+ result
535
+ };
536
+ }
537
+ catch (cause) {
538
+ const native = cause instanceof NativeProviderError
539
+ ? cause
540
+ : new NativeProviderError('accessibility_error', cause instanceof Error ? cause.message : 'macOS provider failed');
541
+ const error = createComputerError(errorCode(native.code), native.message);
542
+ const notDispatched = new Set([
543
+ 'permission_denied',
544
+ 'invalid_argument',
545
+ 'app_not_found',
546
+ 'app_blocked',
547
+ 'window_not_found',
548
+ 'window_stale',
549
+ 'element_not_found',
550
+ 'action_not_supported',
551
+ 'value_not_settable'
552
+ ]);
553
+ return {
554
+ requestId: request.requestId,
555
+ dispatched: !notDispatched.has(native.code),
556
+ error: error.toJSON()
557
+ };
558
+ }
559
+ }
560
+ async cancel(_requestId) {
561
+ await this.close();
562
+ }
563
+ async close() {
564
+ const client = this.#client;
565
+ this.#client = undefined;
566
+ this.#handshake = undefined;
567
+ await client?.close();
568
+ }
569
+ async inspect(operation, input) {
570
+ if (operation === 'capabilities' || operation === 'permissions' || operation === 'listApps')
571
+ return null;
572
+ const client = this.#client ?? (await this.start(), this.#client);
573
+ if (client === undefined)
574
+ return null;
575
+ const value = asObject(input);
576
+ const reference = targetReference(value);
577
+ const query = typeof value.app === 'string'
578
+ ? value.app
579
+ : reference
580
+ ? `pid:${reference.process.pid}`
581
+ : undefined;
582
+ if (query === undefined)
583
+ return null;
584
+ const apps = asObject(await client.request('listApps')).apps.map(nativeApp);
585
+ const app = apps.find((candidate) => candidate.name.toLowerCase() === query.toLowerCase() ||
586
+ candidate.bundleId?.toLowerCase() === query.toLowerCase() ||
587
+ `pid:${candidate.pid}` === query);
588
+ if (app === undefined)
589
+ return null;
590
+ const windows = asObject(await client.request('listWindows', { app: `pid:${app.pid}` }))
591
+ .windows;
592
+ const requestedWindow = reference?.window.id ??
593
+ (value.window === undefined ? undefined : String(asObject(value.window).id ?? ''));
594
+ const window = windows
595
+ .map(nativeWindow)
596
+ .find((candidate) => requestedWindow === undefined || String(candidate.id) === requestedWindow);
597
+ if (window === undefined)
598
+ return null;
599
+ const current = bindings(app, window, reference?.snapshotId ?? 'inspection', this.generation, this.graphicalSessionId);
600
+ return {
601
+ bindings: reference === undefined
602
+ ? current
603
+ : {
604
+ ...current,
605
+ brokerGeneration: reference.brokerGeneration,
606
+ snapshotId: reference.snapshotId,
607
+ desktopEpoch: reference.desktopEpoch
608
+ },
609
+ appIdentity: { appId: appId(app), executableId: app.executableId }
610
+ };
611
+ }
612
+ }
613
+ let activeProvider;
614
+ export function createProvider() {
615
+ activeProvider = new DarwinComputerProvider();
616
+ return activeProvider;
617
+ }
618
+ export async function inspectTarget(operation, input) {
619
+ return activeProvider?.inspect(operation, input) ?? null;
620
+ }
621
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}