🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

macbeth

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

macbeth - npm Package Compare versions

Comparing version
0.2.3
to
0.2.4
+25
dist/app-target.d.ts
import type { AppAccessibility, AppInfo } from "./types.js";
/** How an app can be addressed: a fuzzy name, a PID, or a handle from a previous
* connect. The handle form is what makes `connect_app`'s return value useful — pass
* it back as the app target and no name re-resolution happens. */
export type AppTarget = string | number;
export declare function isAppHandle(target: AppTarget): target is string;
/** Build `connect_app` params for a name, PID, or app handle. */
export declare function appConnectParams(target: AppTarget): {
pid: number;
} | {
appHandle: string;
} | {
name: string;
};
/** Read an app's readiness, tolerating a daemon old enough not to report one.
* The field is required in the protocol — the current daemon always sends it — so
* this is a wire-compatibility check, not an optional property. */
export declare function appAccessibility(app: AppInfo): AppAccessibility;
/**
* Render `list_apps` so that "running" and "drivable through Accessibility" are
* visibly different things. Listing an app that `connect_app` will reject — without
* saying so — is what makes discovery untrustworthy.
*/
export declare function formatAppList(apps: AppInfo[]): string;
//# sourceMappingURL=app-target.d.ts.map
{"version":3,"file":"app-target.d.ts","sourceRoot":"","sources":["../src/app-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5D;;mEAEmE;AACnE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAMxC,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,IAAI,MAAM,CAE/D;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,GAChB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAI5D;AAUD;;oEAEoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAE/D;AAgBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAwCrD"}
/** Handle ids are minted by the daemon as `h_<n>`, so they are unambiguous against
* real application names. */
const APP_HANDLE_PATTERN = /^h_\d+$/;
export function isAppHandle(target) {
return typeof target === "string" && APP_HANDLE_PATTERN.test(target);
}
/** Build `connect_app` params for a name, PID, or app handle. */
export function appConnectParams(target) {
if (typeof target === "number")
return { pid: target };
if (isAppHandle(target))
return { appHandle: target };
return { name: target };
}
/** Assumed readiness when the field is absent from the wire — an older daemon that
* predates accessibility probing. Treating those apps as connectable keeps the old
* behaviour (everything listed flat) rather than declaring every app broken. */
const UNPROBED = {
status: "connectable",
connectable: true,
};
/** Read an app's readiness, tolerating a daemon old enough not to report one.
* The field is required in the protocol — the current daemon always sends it — so
* this is a wire-compatibility check, not an optional property. */
export function appAccessibility(app) {
return "accessibility" in app ? app.accessibility : UNPROBED;
}
function describeApp(app) {
const bundle = app.bundleId ? `, bundle: ${app.bundleId}` : "";
const aliases = app.aliases?.length ? `, aliases: ${app.aliases.join(", ")}` : "";
return `${app.name} (pid: ${app.pid}, runtime: ${app.runtime}${bundle}${aliases})`;
}
function describeBlockedApp(app) {
const info = appAccessibility(app);
const code = info.axCode != null ? ` [AX ${info.axCode} ${info.axError ?? "unknown"}]` : "";
const why = info.explanation ? `\n ${info.explanation}` : "";
const next = info.nextAction ? `\n Next: ${info.nextAction}` : "";
return `${describeApp(app)}${code}${why}${next}`;
}
/**
* Render `list_apps` so that "running" and "drivable through Accessibility" are
* visibly different things. Listing an app that `connect_app` will reject — without
* saying so — is what makes discovery untrustworthy.
*/
export function formatAppList(apps) {
if (apps.length === 0)
return "No running apps found.";
const connectable = apps.filter((a) => appAccessibility(a).connectable);
const blocked = apps.filter((a) => !appAccessibility(a).connectable);
// A permission failure is global, not per-app: reporting each app individually
// would bury the single fix behind a wall of identical entries.
const permissionBlocked = blocked.filter((a) => appAccessibility(a).status === "permission_required");
if (permissionBlocked.length > 0 && permissionBlocked.length === apps.length) {
const info = appAccessibility(permissionBlocked[0]);
return [
`No app is reachable through Accessibility right now (AX ${info.axCode ?? "?"} ${info.axError ?? "api_disabled"}).`,
info.explanation ?? "",
info.nextAction ? `Next: ${info.nextAction}` : "",
"",
"Running apps:",
...apps.map((a) => ` ${describeApp(a)}`),
]
.filter(Boolean)
.join("\n");
}
const sections = [];
sections.push(connectable.length > 0
? `Connectable through Accessibility (${connectable.length}):\n`
+ connectable.map((a) => ` ${describeApp(a)}`).join("\n")
: "Connectable through Accessibility: none.");
if (blocked.length > 0) {
sections.push(`Running but NOT connectable through Accessibility (${blocked.length}) — `
+ `connect_app will fail for these:\n`
+ blocked.map((a) => ` ${describeBlockedApp(a)}`).join("\n"));
}
return sections.join("\n\n");
}
//# sourceMappingURL=app-target.js.map
{"version":3,"file":"app-target.js","sourceRoot":"","sources":["../src/app-target.ts"],"names":[],"mappings":"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"}
/**
* Error types shared by the RPC layer, the health tracker and the MCP layer.
*
* The distinction this module encodes is the one that matters for MCP hosts:
* an *operation* failure (including a timeout) is the result of one call and
* says nothing about the server, while a *transport* failure means the daemon
* connection itself is broken. Hosts open their circuit breaker on the latter,
* so operation timeouts must never be reported in a way that looks like it.
*/
/** JSON-RPC error codes used by the daemon (see `RPCError` in the Swift sources). */
export declare const RPC_ERROR_CODES: {
readonly elementNotFound: -32000;
readonly timeout: -32001;
readonly permissionDenied: -32002;
readonly appNotFound: -32003;
readonly actionFailed: -32004;
readonly menuItemNotFound: -32005;
readonly menuItemDisabled: -32006;
readonly appBusy: -32007;
readonly scriptFailed: -32008;
readonly axLookupFailed: -32009;
/** A handle the daemon issued whose element is gone; `data.reason` says why. */
readonly staleHandle: -32010;
/** A handle id the daemon never issued (or one from a previous daemon process). */
readonly unknownHandle: -32011;
};
/** Agent-readable names for the codes above, used when formatting MCP errors. */
export declare const RPC_ERROR_NAMES: Record<number, string>;
/** Lifecycle reasons the daemon reports in `data.reason` of a `stale_handle` error. */
export type StaleHandleReason = "expired" | "destroyed" | "recycled" | "app_terminated"
/** A concurrent operation raced a table lookup that doesn't check liveness (pin/unpin).
* Not a lifecycle event — recoverable the same way, by re-resolving and retrying. */
| "transient";
/**
* True when a handle-based call failed because the handle can no longer be used, and
* re-resolving from the original query path is the right recovery.
*
* Deliberately covers `unknown_handle` too: the daemon draws that distinction so an
* *agent* can tell a lifecycle event from a bad id, but a caller that still holds the
* query path recovers from both the same way — and a restarted daemon reports its
* predecessor's handles as unknown.
*/
export declare function isRecoverableHandleError(err: unknown): boolean;
/**
* True when the daemon says it never issued this handle id.
*
* That means the id came from a *different daemon process*, so nothing the caller holds
* from before is trustworthy — including the app handle, whose id the new daemon may
* already have issued to a different app. Recovery has to re-acquire the app first.
*/
export declare function isUnknownHandleError(err: unknown): boolean;
/** True when the daemon rejected the app handle itself (dead or never issued). */
export declare function isAppHandleInvalid(err: unknown): boolean;
/** The lifecycle reason behind a stale-handle error, when the daemon reported one. */
export declare function staleHandleReason(err: unknown): StaleHandleReason | undefined;
export declare class JsonRpcError extends Error {
code: number;
data?: unknown;
constructor(code: number, message: string, data?: unknown);
}
/**
* Build the typed timeout raised when a call outlives its client-side deadline
* without any daemon response. `phase: "client_wait"` marks it as a local
* deadline rather than one the daemon reported.
*/
export declare function operationTimeoutError(method: string, timeoutMs: number): JsonRpcError;
/** True for any typed timeout — daemon-enforced or client-side. */
export declare function isOperationTimeout(err: unknown): boolean;
/** True only for a timeout the client raised because no response ever arrived. */
export declare function isClientWaitTimeout(err: unknown): boolean;
/**
* True when the socket to the daemon is unusable and a reconnect is worth
* attempting. A `JsonRpcError` is never a connection error: receiving one
* proves the daemon answered.
*/
export declare function isConnectionError(err: unknown): boolean;
/**
* True when a failure is evidence that the daemon/transport is unhealthy,
* as opposed to a call that legitimately failed or ran out of time.
*/
export declare function isTransportFailure(err: unknown): boolean;
//# sourceMappingURL=errors.d.ts.map
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qFAAqF;AACrF,eAAO,MAAM,eAAe;;;;;;;;;;;IAW1B,gFAAgF;;IAEhF,mFAAmF;;CAE3E,CAAC;AAEX,iFAAiF;AACjF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAalD,CAAC;AAEF,uFAAuF;AACvF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,WAAW,GACX,UAAU,GACV,gBAAgB;AAClB;sFACsF;GACpF,WAAW,CAAC;AAEhB;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAa9D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAExD;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAM7E;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM1D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,YAAY,CAOd;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAExD;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMzD;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIxD"}
/**
* Error types shared by the RPC layer, the health tracker and the MCP layer.
*
* The distinction this module encodes is the one that matters for MCP hosts:
* an *operation* failure (including a timeout) is the result of one call and
* says nothing about the server, while a *transport* failure means the daemon
* connection itself is broken. Hosts open their circuit breaker on the latter,
* so operation timeouts must never be reported in a way that looks like it.
*/
/** JSON-RPC error codes used by the daemon (see `RPCError` in the Swift sources). */
export const RPC_ERROR_CODES = {
elementNotFound: -32000,
timeout: -32001,
permissionDenied: -32002,
appNotFound: -32003,
actionFailed: -32004,
menuItemNotFound: -32005,
menuItemDisabled: -32006,
appBusy: -32007,
scriptFailed: -32008,
axLookupFailed: -32009,
/** A handle the daemon issued whose element is gone; `data.reason` says why. */
staleHandle: -32010,
/** A handle id the daemon never issued (or one from a previous daemon process). */
unknownHandle: -32011,
};
/** Agent-readable names for the codes above, used when formatting MCP errors. */
export const RPC_ERROR_NAMES = {
[RPC_ERROR_CODES.elementNotFound]: "element_not_found",
[RPC_ERROR_CODES.timeout]: "timeout",
[RPC_ERROR_CODES.permissionDenied]: "permission_denied",
[RPC_ERROR_CODES.appNotFound]: "app_not_found",
[RPC_ERROR_CODES.actionFailed]: "action_failed",
[RPC_ERROR_CODES.menuItemNotFound]: "menu_item_not_found",
[RPC_ERROR_CODES.menuItemDisabled]: "menu_item_disabled",
[RPC_ERROR_CODES.appBusy]: "app_busy",
[RPC_ERROR_CODES.scriptFailed]: "script_failed",
[RPC_ERROR_CODES.axLookupFailed]: "ax_lookup_failed",
[RPC_ERROR_CODES.staleHandle]: "stale_handle",
[RPC_ERROR_CODES.unknownHandle]: "unknown_handle",
};
/**
* True when a handle-based call failed because the handle can no longer be used, and
* re-resolving from the original query path is the right recovery.
*
* Deliberately covers `unknown_handle` too: the daemon draws that distinction so an
* *agent* can tell a lifecycle event from a bad id, but a caller that still holds the
* query path recovers from both the same way — and a restarted daemon reports its
* predecessor's handles as unknown.
*/
export function isRecoverableHandleError(err) {
if (!(err instanceof JsonRpcError))
return false;
if (err.code === RPC_ERROR_CODES.staleHandle
|| err.code === RPC_ERROR_CODES.unknownHandle) {
return true;
}
// Daemons predating the typed codes reported both as element_not_found, marking the
// message instead. Keep recognising them so an updated client works against an older
// daemon binary.
return err.code === RPC_ERROR_CODES.elementNotFound
&& (err.message.includes("expired") || err.message.includes("stale-element"));
}
/**
* True when the daemon says it never issued this handle id.
*
* That means the id came from a *different daemon process*, so nothing the caller holds
* from before is trustworthy — including the app handle, whose id the new daemon may
* already have issued to a different app. Recovery has to re-acquire the app first.
*/
export function isUnknownHandleError(err) {
return err instanceof JsonRpcError && err.code === RPC_ERROR_CODES.unknownHandle;
}
/** True when the daemon rejected the app handle itself (dead or never issued). */
export function isAppHandleInvalid(err) {
return err instanceof JsonRpcError && err.code === RPC_ERROR_CODES.appNotFound;
}
/** The lifecycle reason behind a stale-handle error, when the daemon reported one. */
export function staleHandleReason(err) {
if (!(err instanceof JsonRpcError))
return undefined;
const data = err.data;
if (typeof data !== "object" || data === null)
return undefined;
const reason = data.reason;
return typeof reason === "string" ? reason : undefined;
}
export class JsonRpcError extends Error {
code;
data;
constructor(code, message, data) {
super(message);
this.name = "JsonRpcError";
this.code = code;
this.data = data;
}
}
/**
* Build the typed timeout raised when a call outlives its client-side deadline
* without any daemon response. `phase: "client_wait"` marks it as a local
* deadline rather than one the daemon reported.
*/
export function operationTimeoutError(method, timeoutMs) {
return new JsonRpcError(RPC_ERROR_CODES.timeout, `Operation timed out: ${method} did not respond within ${timeoutMs}ms. `
+ "Only this call failed; the daemon connection is still usable.", { phase: "client_wait", method, timeoutMs });
}
/** True for any typed timeout — daemon-enforced or client-side. */
export function isOperationTimeout(err) {
return err instanceof JsonRpcError && err.code === RPC_ERROR_CODES.timeout;
}
/** True only for a timeout the client raised because no response ever arrived. */
export function isClientWaitTimeout(err) {
if (!isOperationTimeout(err))
return false;
const data = err.data;
return typeof data === "object"
&& data !== null
&& data.phase === "client_wait";
}
const CONNECTION_ERROR_CODES = ["ECONNREFUSED", "ENOENT", "EPIPE", "ECONNRESET"];
/**
* True when the socket to the daemon is unusable and a reconnect is worth
* attempting. A `JsonRpcError` is never a connection error: receiving one
* proves the daemon answered.
*/
export function isConnectionError(err) {
if (err instanceof JsonRpcError)
return false;
if (!(err instanceof Error))
return false;
const msg = err.message;
return msg === "Not connected"
|| msg === "Connection closed"
|| CONNECTION_ERROR_CODES.some((code) => msg.includes(code));
}
/**
* True when a failure is evidence that the daemon/transport is unhealthy,
* as opposed to a call that legitimately failed or ran out of time.
*/
export function isTransportFailure(err) {
if (err instanceof JsonRpcError)
return false;
if (isConnectionError(err))
return true;
return err instanceof Error && err.message.startsWith("Daemon failed to start");
}
//# sourceMappingURL=errors.js.map
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
export type FailureKind = "transport" | "operation_timeout" | "operation";
export interface HealthSnapshot {
/** False only after `failureThreshold` consecutive transport failures. */
healthy: boolean;
/** Transport failures since the last proof that the daemon is reachable. */
consecutiveTransportFailures: number;
transportFailures: number;
operationTimeouts: number;
operationErrors: number;
successes: number;
lastFailureKind: FailureKind | null;
}
/**
* Tracks whether the *daemon connection* is healthy, deliberately separating
* that from whether individual operations succeed.
*
* Only transport failures — a dead socket, a daemon that will not start — count
* against health. A script that blows its deadline, an element that is not
* found, a menu item that is disabled: those are answers, not outages, and they
* must never accumulate into "the server is down". This mirrors what MCP hosts
* do with tool results versus protocol errors, and is why repeated
* `run_applescript` timeouts leave `connect_app` working.
*/
export declare class ServerHealth {
private readonly failureThreshold;
private consecutiveTransportFailures;
private transportFailures;
private operationTimeouts;
private operationErrors;
private successes;
private lastFailureKind;
constructor(options?: {
failureThreshold?: number;
});
/** A completed call: the daemon is reachable. */
recordSuccess(): void;
/** Classify a failed call and update health accordingly. */
recordFailure(err: unknown): FailureKind;
get healthy(): boolean;
get snapshot(): HealthSnapshot;
}
//# sourceMappingURL=health.d.ts.map
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,4BAA4B,EAAE,MAAM,CAAC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,WAAW,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,4BAA4B,CAAK;IACzC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAA4B;gBAEvC,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE;IAInD,iDAAiD;IACjD,aAAa,IAAI,IAAI;IAKrB,4DAA4D;IAC5D,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAwBxC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAU7B;CACF"}
import { isClientWaitTimeout, isOperationTimeout, isTransportFailure, JsonRpcError, } from "./errors.js";
/**
* Tracks whether the *daemon connection* is healthy, deliberately separating
* that from whether individual operations succeed.
*
* Only transport failures — a dead socket, a daemon that will not start — count
* against health. A script that blows its deadline, an element that is not
* found, a menu item that is disabled: those are answers, not outages, and they
* must never accumulate into "the server is down". This mirrors what MCP hosts
* do with tool results versus protocol errors, and is why repeated
* `run_applescript` timeouts leave `connect_app` working.
*/
export class ServerHealth {
failureThreshold;
consecutiveTransportFailures = 0;
transportFailures = 0;
operationTimeouts = 0;
operationErrors = 0;
successes = 0;
lastFailureKind = null;
constructor(options) {
this.failureThreshold = options?.failureThreshold ?? 3;
}
/** A completed call: the daemon is reachable. */
recordSuccess() {
this.successes += 1;
this.consecutiveTransportFailures = 0;
}
/** Classify a failed call and update health accordingly. */
recordFailure(err) {
if (isTransportFailure(err)) {
this.transportFailures += 1;
this.consecutiveTransportFailures += 1;
this.lastFailureKind = "transport";
return "transport";
}
if (isOperationTimeout(err)) {
this.operationTimeouts += 1;
this.lastFailureKind = "operation_timeout";
// A daemon-reported timeout arrived over the socket, so the transport is
// provably alive. A client-side deadline proves nothing either way, so it
// leaves the transport counter untouched rather than clearing it.
if (!isClientWaitTimeout(err))
this.consecutiveTransportFailures = 0;
return "operation_timeout";
}
this.operationErrors += 1;
this.lastFailureKind = "operation";
if (err instanceof JsonRpcError)
this.consecutiveTransportFailures = 0;
return "operation";
}
get healthy() {
return this.consecutiveTransportFailures < this.failureThreshold;
}
get snapshot() {
return {
healthy: this.healthy,
consecutiveTransportFailures: this.consecutiveTransportFailures,
transportFailures: this.transportFailures,
operationTimeouts: this.operationTimeouts,
operationErrors: this.operationErrors,
successes: this.successes,
lastFailureKind: this.lastFailureKind,
};
}
}
//# sourceMappingURL=health.js.map
{"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,aAAa,CAAC;AAgBrB;;;;;;;;;;GAUG;AACH,MAAM,OAAO,YAAY;IACN,gBAAgB,CAAS;IAClC,4BAA4B,GAAG,CAAC,CAAC;IACjC,iBAAiB,GAAG,CAAC,CAAC;IACtB,iBAAiB,GAAG,CAAC,CAAC;IACtB,eAAe,GAAG,CAAC,CAAC;IACpB,SAAS,GAAG,CAAC,CAAC;IACd,eAAe,GAAuB,IAAI,CAAC;IAEnD,YAAY,OAAuC;QACjD,IAAI,CAAC,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,iDAAiD;IACjD,aAAa;QACX,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,4DAA4D;IAC5D,aAAa,CAAC,GAAY;QACxB,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,4BAA4B,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;YACnC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC;YAC3C,yEAAyE;YACzE,0EAA0E;YAC1E,kEAAkE;YAClE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;YACrE,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACnC,IAAI,GAAG,YAAY,YAAY;YAAE,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACnE,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;YAC/D,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;IACJ,CAAC;CACF"}
import type { KeyStroke } from "./types.js";
/** Human label for a single key press, e.g. `cmd+shift+a`. */
export declare function describeKeyPress(key: string, modifiers?: string[]): string;
/** Human label for a key sequence, e.g. `cmd+l, "example.com", return`. */
export declare function describeKeyStrokes(keys: KeyStroke[]): string;
export interface KeyDispatchReport {
text: string;
/** Only true when nothing was sent at all — never for merely unverified delivery. */
isError: boolean;
}
/**
* Render a keyboard dispatch result for an agent.
*
* The wording never claims the target app acted on the input, because nothing in
* the AX or CoreGraphics APIs reports that. It states which tier was reached and,
* when the tier is below `dispatched`, says so without framing it as a hard
* failure — an agent that reads "failed" tends to resend, and resent keystrokes
* are worse than an honest "unconfirmed".
*/
export declare function formatKeyDispatch(label: string, result: unknown, legacyText: string): KeyDispatchReport;
//# sourceMappingURL=key-dispatch.d.ts.map
{"version":3,"file":"key-dispatch.d.ts","sourceRoot":"","sources":["../src/key-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5D,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1E;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAQ5D;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;CAClB;AA+CD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,MAAM,GACjB,iBAAiB,CAiBnB"}
/** Human label for a single key press, e.g. `cmd+shift+a`. */
export function describeKeyPress(key, modifiers) {
return modifiers?.length ? `${modifiers.join("+")}+${key}` : key;
}
/** Human label for a key sequence, e.g. `cmd+l, "example.com", return`. */
export function describeKeyStrokes(keys) {
return keys
.map((stroke) => "key" in stroke
? describeKeyPress(stroke.key, stroke.modifiers)
: JSON.stringify(stroke.text))
.join(", ");
}
/**
* Detect a result from a daemon that predates outcome reporting.
*
* A newer client talking to an older `macbethd` still gets `{success: true}`; that
* case keeps the old wording rather than inventing evidence it never received.
*/
function hasOutcome(result) {
if (typeof result !== "object" || result === null)
return false;
const payload = result;
// Require the whole shape, not just `outcome`: another RPC could grow an
// `outcome` field of its own without ever being a keyboard dispatch report.
return (typeof payload.outcome === "string" &&
typeof payload.success === "boolean" &&
typeof payload.target === "object" &&
payload.target !== null);
}
function describeTarget(result) {
const { target } = result;
if (!target || (target.app === null && target.pid === null))
return "an unknown target";
const parts = [target.app ?? `pid ${target.pid}`];
if (target.app && target.pid !== null)
parts[0] = `${target.app} (pid ${target.pid})`;
if (target.window?.title)
parts.push(`window "${target.window.title}"`);
const focused = target.focusedElement;
if (focused?.role) {
const name = focused.title ?? focused.identifier;
parts.push(name ? `focus ${focused.role} "${name}"` : `focus ${focused.role}`);
}
else {
parts.push("no focused element");
}
if (!target.frontmost) {
const holder = target.focusedApp?.name
? `${target.focusedApp.name}${target.focusedApp.pid !== null ? ` (pid ${target.focusedApp.pid})` : ""}`
: "another app";
parts.push(`NOT frontmost — keyboard focus was on ${holder}`);
}
return parts.join(", ");
}
/**
* Render a keyboard dispatch result for an agent.
*
* The wording never claims the target app acted on the input, because nothing in
* the AX or CoreGraphics APIs reports that. It states which tier was reached and,
* when the tier is below `dispatched`, says so without framing it as a hard
* failure — an agent that reads "failed" tends to resend, and resent keystrokes
* are worse than an honest "unconfirmed".
*/
export function formatKeyDispatch(label, result, legacyText) {
if (!hasOutcome(result)) {
return { text: legacyText, isError: false };
}
const lines = [`Sent ${label} to ${describeTarget(result)}.`];
if (result.note)
lines.push(result.note);
const warnings = result.warnings?.length ? result.warnings.join(", ") : "none";
const evidence = result.evidence ?? { sessionKeyDownDelta: null, accessibilityTrusted: true };
lines.push(`outcome=${result.outcome} verified=${result.verified === true} ` +
`keysPosted=${result.keysPosted}/${result.keysRequested} ` +
`sessionKeyDownDelta=${evidence.sessionKeyDownDelta ?? "unknown"} warnings=[${warnings}]`);
return { text: lines.join("\n"), isError: result.success === false };
}
//# sourceMappingURL=key-dispatch.js.map
{"version":3,"file":"key-dispatch.js","sourceRoot":"","sources":["../src/key-dispatch.ts"],"names":[],"mappings":"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"}
import type { AppTarget } from "./app-target.js";
import type { AppWindowInfo, ListWindowsOptions } from "./types.js";
interface WindowLister {
listWindows(options?: ListWindowsOptions): Promise<AppWindowInfo[]>;
}
interface ListWindowsDeps {
/** Scoped listing: connect to the requested app first. */
connect: (app: AppTarget) => Promise<WindowLister>;
/** Unscoped listing: every app that owns a window. */
listAll: WindowLister["listWindows"];
}
export interface ListWindowsToolParams {
app?: AppTarget;
includeAllSurfaces?: boolean;
}
/**
* `list_windows` tool body. Keeping the app filter optional is the point: an
* agent asking "is a Unity window open?" gets an answer in one call, without
* connecting to an app or paying for an accessibility-tree walk.
*/
export declare function runListWindowsTool(deps: ListWindowsDeps, params: ListWindowsToolParams): Promise<{
content: {
type: "text";
text: string;
}[];
}>;
export {};
//# sourceMappingURL=mcp-windows.d.ts.map
{"version":3,"file":"mcp-windows.d.ts","sourceRoot":"","sources":["../src/mcp-windows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEpE,UAAU,YAAY;IACpB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACrE;AAED,UAAU,eAAe;IACvB,0DAA0D;IAC1D,OAAO,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACnD,sDAAsD;IACtD,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,qBAAqB;;;;;GAa9B"}
/**
* `list_windows` tool body. Keeping the app filter optional is the point: an
* agent asking "is a Unity window open?" gets an answer in one call, without
* connecting to an app or paying for an accessibility-tree walk.
*/
export async function runListWindowsTool(deps, params) {
const options = params.includeAllSurfaces ? { includeAllSurfaces: true } : undefined;
const windows = params.app === undefined
? await deps.listAll(options)
: await (await deps.connect(params.app)).listWindows(options);
return {
content: [{
type: "text",
text: JSON.stringify({ count: windows.length, windows }, null, 2),
}],
};
}
//# sourceMappingURL=mcp-windows.js.map
{"version":3,"file":"mcp-windows.js","sourceRoot":"","sources":["../src/mcp-windows.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAqB,EACrB,MAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS;QACtC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEhE,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAClE,CAAC;KACH,CAAC;AACJ,CAAC"}
/**
* Bounds for caller-configurable script execution deadlines.
*
* These mirror `ScriptTimeout` in
* `daemon/Sources/macbethd/Methods/ScriptExecution.swift` — the daemon clamps
* independently, so a hand-written RPC call cannot ask for an unbounded run.
*/
export declare const SCRIPT_TIMEOUT: {
readonly defaultMs: 30000;
readonly minMs: 100;
readonly maxMs: 300000;
/** Extra time the client waits so the daemon can report its own timeout. */
readonly clientGraceMs: 2000;
};
/** Clamp a requested script timeout into the supported range. */
export declare function clampScriptTimeoutMs(requestedMs?: number): number;
/** Convert the MCP tool's seconds-based `timeout` into a clamped millisecond value. */
export declare function scriptTimeoutFromSeconds(seconds?: number): number;
/**
* How long the client waits for the daemon's reply. Always longer than the
* daemon's own deadline so a script that overruns is reported as the daemon's
* typed timeout rather than as a silent client-side one.
*/
export declare function scriptRequestTimeoutMs(timeoutMs: number): number;
//# sourceMappingURL=timeouts.d.ts.map
{"version":3,"file":"timeouts.d.ts","sourceRoot":"","sources":["../src/timeouts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;IAIzB,4EAA4E;;CAEpE,CAAC;AAEX,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE"}
/**
* Bounds for caller-configurable script execution deadlines.
*
* These mirror `ScriptTimeout` in
* `daemon/Sources/macbethd/Methods/ScriptExecution.swift` — the daemon clamps
* independently, so a hand-written RPC call cannot ask for an unbounded run.
*/
export const SCRIPT_TIMEOUT = {
defaultMs: 30_000,
minMs: 100,
maxMs: 300_000,
/** Extra time the client waits so the daemon can report its own timeout. */
clientGraceMs: 2_000,
};
/** Clamp a requested script timeout into the supported range. */
export function clampScriptTimeoutMs(requestedMs) {
if (requestedMs === undefined || !Number.isFinite(requestedMs)) {
return SCRIPT_TIMEOUT.defaultMs;
}
return Math.min(Math.max(Math.round(requestedMs), SCRIPT_TIMEOUT.minMs), SCRIPT_TIMEOUT.maxMs);
}
/** Convert the MCP tool's seconds-based `timeout` into a clamped millisecond value. */
export function scriptTimeoutFromSeconds(seconds) {
if (seconds === undefined || !Number.isFinite(seconds)) {
return SCRIPT_TIMEOUT.defaultMs;
}
return clampScriptTimeoutMs(seconds * 1_000);
}
/**
* How long the client waits for the daemon's reply. Always longer than the
* daemon's own deadline so a script that overruns is reported as the daemon's
* typed timeout rather than as a silent client-side one.
*/
export function scriptRequestTimeoutMs(timeoutMs) {
return timeoutMs + SCRIPT_TIMEOUT.clientGraceMs;
}
//# sourceMappingURL=timeouts.js.map
{"version":3,"file":"timeouts.js","sourceRoot":"","sources":["../src/timeouts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,OAAO;IACd,4EAA4E;IAC5E,aAAa,EAAE,KAAK;CACZ,CAAC;AAEX,iEAAiE;AACjE,MAAM,UAAU,oBAAoB,CAAC,WAAoB;IACvD,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/D,OAAO,cAAc,CAAC,SAAS,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,EACvD,cAAc,CAAC,KAAK,CACrB,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,cAAc,CAAC,SAAS,CAAC;IAClC,CAAC;IACD,OAAO,oBAAoB,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,OAAO,SAAS,GAAG,cAAc,CAAC,aAAa,CAAC;AAClD,CAAC"}
+11
-0

@@ -205,2 +205,13 @@ #!/usr/bin/env node

default: {
const MCP_START_ALIASES = new Set(["mcp", "serve", "server", "start"]);
if (command && MCP_START_ALIASES.has(command)) {
// These read as "start the server" verbs, but the MCP server has no
// subcommand — it's what `macbeth` does with no arguments at all.
// Name the fix instead of just refusing.
process.stderr.write(
`Unknown command: ${command} — the MCP server is the default; ` +
`run \`macbeth\` with no arguments.\n`
);
process.exit(1);
}
if (command && !command.startsWith("-")) {

@@ -207,0 +218,0 @@ // An unrecognized bare word is almost certainly a typo; surface help

+48
-10
import { JsonRpcClient } from "./rpc.js";
import { Locator } from "./elements.js";
import type { ConnectOptions, AppConnectOptions, AppInfo, AppRuntime, KeyStroke, TreeOptions, ScreenshotResult, QueryStep, ElementTarget, ElementInfo, ClickStrategy, FillStrategy, FormField, AppMatchKind, QueryTreeDetailedResult, TreeDiagnostics, AppWindowInfo } from "./types.js";
import { type AppTarget } from "./app-target.js";
import type { HealthSnapshot } from "./health.js";
import type { ConnectOptions, AppConnectOptions, AppInfo, AppRuntime, KeyStroke, PressKeyResult, PressKeysResult, TreeOptions, ScreenshotResult, QueryStep, ElementTarget, ElementInfo, ClickStrategy, FillStrategy, FormField, AppMatchKind, QueryTreeDetailedResult, TreeDiagnostics, AppWindowInfo, ListWindowsOptions } from "./types.js";
/**

@@ -36,2 +38,14 @@ * AppHandle represents a connected application.

get handle(): string;
/**
* Re-connect to this app and adopt its current app handle.
*
* App handles are daemon-local: a daemon restart invalidates them, and the new process
* may hand the same `h_N` to whichever app connects first. Re-connecting by pid pins
* this handle back to the right app. Scoped locators derived from this AppHandle call
* it when a recovery needs it — see `Locator.rediscover`.
*
* Throws `app_not_found` if the app itself is gone (a relaunch changes the pid, so the
* caller has to connect again by name).
*/
reconnect(): Promise<string>;
/** Get the AX tree as indented text or JSON */

@@ -41,4 +55,5 @@ queryTree(options?: TreeOptions): Promise<string>;

queryTreeDetailed(options?: TreeOptions): Promise<QueryTreeDetailedResult>;
/** List WindowServer surfaces owned by the app or its helper processes. */
listWindows(): Promise<AppWindowInfo[]>;
/** List WindowServer surfaces owned by the app or its helper processes.
* Returns real windows only unless `includeAllSurfaces` is set. */
listWindows(options?: ListWindowsOptions): Promise<AppWindowInfo[]>;
/** Capture a screenshot of the app window, optionally cropped to a region */

@@ -74,6 +89,10 @@ screenshot(options?: {

selectMenuItem(menuPath: string[]): Promise<string>;
/** Send a keyboard input */
pressKey(key: string, modifiers?: string[]): Promise<void>;
/** Send a keyboard input.
*
* Resolves with what could be established about the dispatch — see
* {@link PressKeyResult}. It rejects only on RPC-level failures, so callers
* that ignore the result behave exactly as before. */
pressKey(key: string, modifiers?: string[]): Promise<PressKeyResult>;
/** Send a sequence of keyboard inputs in one RPC call */
pressKeys(keys: KeyStroke[]): Promise<void>;
pressKeys(keys: KeyStroke[]): Promise<PressKeysResult>;
/** Click an element addressed by a locator query or a direct handle id.

@@ -107,10 +126,29 @@ * Lower-level than {@link Locator.click}: it applies no query chain and takes

private ensureConnected;
/** List running macOS apps with accessibility support */
/** Health of the daemon connection itself. Failed or timed-out operations do
* not degrade it — only an unusable transport does. */
get health(): HealthSnapshot;
/** List running macOS apps, each annotated with whether it is currently reachable
* through the Accessibility API. */
listApps(): Promise<AppInfo[]>;
/** Connect to a running app by name or PID.
/** List WindowServer surfaces across every app that owns a window.
*
* Answers "is app X open, and what is it showing?" without connecting to an
* app or walking an accessibility tree. Returns real windows only unless
* `includeAllSurfaces` is set. */
listWindows(options?: ListWindowsOptions): Promise<AppWindowInfo[]>;
/** Connect to a running app by name, PID, or an app handle from a previous connect.
*
* Passing a handle (`h_3`) skips name resolution, so a caller that already
* disambiguated a fuzzy name keeps addressing the same process.
*
* For Electron apps the daemon enables Chromium's accessibility tree and waits for
* it to build before returning. Pass `readyTimeoutMs` to tune that wait (default 3s). */
connect(nameOrPid: string | number, options?: AppConnectOptions): Promise<AppHandle>;
/** Run AppleScript or JXA in a deadline-enforced daemon worker process. */
connect(target: AppTarget, options?: AppConnectOptions): Promise<AppHandle>;
/** Run AppleScript or JXA in a deadline-enforced daemon worker process.
*
* `timeoutMs` is clamped to
* [{@link SCRIPT_TIMEOUT}.minMs, {@link SCRIPT_TIMEOUT}.maxMs] (default 30s).
* Overrunning the deadline rejects with a typed timeout (`JsonRpcError`,
* code -32001) for this call only: the daemon connection stays usable and
* unrelated calls are unaffected. */
runAppleScript(source: string, language?: "AppleScript" | "JavaScript", options?: {

@@ -117,0 +155,0 @@ interactive?: boolean;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
import { DaemonManager } from "./daemon.js";
import { JsonRpcClient } from "./rpc.js";
import { Locator } from "./elements.js";
import { appConnectParams } from "./app-target.js";
import { clampScriptTimeoutMs, scriptRequestTimeoutMs, } from "./timeouts.js";
/**

@@ -32,2 +34,3 @@ * AppHandle represents a connected application.

this.webContentReadiness = info.webContentReadiness ?? null;
this.reacquireApp = () => this.reconnect();
}

@@ -38,2 +41,20 @@ /** Opaque app handle used by subsequent RPC calls. */

}
/**
* Re-connect to this app and adopt its current app handle.
*
* App handles are daemon-local: a daemon restart invalidates them, and the new process
* may hand the same `h_N` to whichever app connects first. Re-connecting by pid pins
* this handle back to the right app. Scoped locators derived from this AppHandle call
* it when a recovery needs it — see `Locator.rediscover`.
*
* Throws `app_not_found` if the app itself is gone (a relaunch changes the pid, so the
* caller has to connect again by name).
*/
async reconnect() {
const result = await this.rpc.call("connect_app", {
pid: this.pid,
});
this.appHandle = result.appHandle;
return result.appHandle;
}
/** Get the AX tree as indented text or JSON */

@@ -61,6 +82,8 @@ async queryTree(options) {

}
/** List WindowServer surfaces owned by the app or its helper processes. */
async listWindows() {
/** List WindowServer surfaces owned by the app or its helper processes.
* Returns real windows only unless `includeAllSurfaces` is set. */
async listWindows(options) {
const result = await this.rpc.call("list_windows", {
appHandle: this.appHandle,
...(options?.includeAllSurfaces ? { includeAllSurfaces: true } : {}),
});

@@ -109,5 +132,9 @@ return result.windows;

}
/** Send a keyboard input */
/** Send a keyboard input.
*
* Resolves with what could be established about the dispatch — see
* {@link PressKeyResult}. It rejects only on RPC-level failures, so callers
* that ignore the result behave exactly as before. */
async pressKey(key, modifiers) {
await this.rpc.call("press_key", {
return await this.rpc.call("press_key", {
appHandle: this.appHandle,

@@ -120,3 +147,3 @@ key,

async pressKeys(keys) {
await this.rpc.call("press_keys", {
return await this.rpc.call("press_keys", {
appHandle: this.appHandle,

@@ -189,3 +216,9 @@ keys,

}
/** List running macOS apps with accessibility support */
/** Health of the daemon connection itself. Failed or timed-out operations do
* not degrade it — only an unusable transport does. */
get health() {
return this.rpc.health;
}
/** List running macOS apps, each annotated with whether it is currently reachable
* through the Accessibility API. */
async listApps() {

@@ -196,11 +229,22 @@ await this.ensureConnected();

}
/** Connect to a running app by name or PID.
/** List WindowServer surfaces across every app that owns a window.
*
* Answers "is app X open, and what is it showing?" without connecting to an
* app or walking an accessibility tree. Returns real windows only unless
* `includeAllSurfaces` is set. */
async listWindows(options) {
await this.ensureConnected();
const result = await this.rpc.call("list_windows", options?.includeAllSurfaces ? { includeAllSurfaces: true } : {});
return result.windows;
}
/** Connect to a running app by name, PID, or an app handle from a previous connect.
*
* Passing a handle (`h_3`) skips name resolution, so a caller that already
* disambiguated a fuzzy name keeps addressing the same process.
*
* For Electron apps the daemon enables Chromium's accessibility tree and waits for
* it to build before returning. Pass `readyTimeoutMs` to tune that wait (default 3s). */
async connect(nameOrPid, options) {
async connect(target, options) {
await this.ensureConnected();
const params = typeof nameOrPid === "number"
? { pid: nameOrPid }
: { name: nameOrPid };
const params = appConnectParams(target);
if (options?.readyTimeoutMs !== undefined) {

@@ -223,6 +267,12 @@ params.readyTimeoutMs = options.readyTimeoutMs;

}
/** Run AppleScript or JXA in a deadline-enforced daemon worker process. */
/** Run AppleScript or JXA in a deadline-enforced daemon worker process.
*
* `timeoutMs` is clamped to
* [{@link SCRIPT_TIMEOUT}.minMs, {@link SCRIPT_TIMEOUT}.maxMs] (default 30s).
* Overrunning the deadline rejects with a typed timeout (`JsonRpcError`,
* code -32001) for this call only: the daemon connection stays usable and
* unrelated calls are unaffected. */
async runAppleScript(source, language, options) {
await this.ensureConnected();
const timeoutMs = Math.min(Math.max(options?.timeoutMs ?? 30_000, 100), 300_000);
const timeoutMs = clampScriptTimeoutMs(options?.timeoutMs);
const result = await this.rpc.call("run_applescript", {

@@ -233,3 +283,3 @@ source,

timeoutMs,
}, { timeoutMs: timeoutMs + 2_000 });
}, { timeoutMs: scriptRequestTimeoutMs(timeoutMs) });
return result.output;

@@ -236,0 +286,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,12 @@

import { type JsonRpcClient } from "./rpc.js";
import type { JsonRpcClient } from "./rpc.js";
export interface LocatorOptions {
timeout?: number;
/**
* Re-connect to the app this locator belongs to and return its current app handle.
* Supplied by `AppHandle`, which knows the pid. Recovery paths use it when the app
* handle itself has stopped being valid — chiefly after a daemon restart, which
* invalidates element handles and app handles alike.
*/
reacquireApp?: () => Promise<string>;
}
import type { QueryStep, ElementInfo, ClickOptions, FillStrategy } from "./types.js";

@@ -13,5 +23,6 @@ /**

protected defaultTimeout: number;
constructor(rpc: JsonRpcClient, appHandle: string, queryPath: QueryStep[], options?: {
timeout?: number;
});
protected reacquireApp?: () => Promise<string>;
constructor(rpc: JsonRpcClient, appHandle: string, queryPath: QueryStep[], options?: LocatorOptions);
/** Options that derived locators inherit. */
protected get inheritedOptions(): LocatorOptions;
private child;

@@ -78,5 +89,3 @@ /** Find a child by role, title, and/or identifier */

private handleId;
constructor(rpc: JsonRpcClient, appHandle: string, queryPath: QueryStep[], handleId: string, options?: {
timeout?: number;
});
constructor(rpc: JsonRpcClient, appHandle: string, queryPath: QueryStep[], handleId: string, options?: LocatorOptions);
click(options?: ClickOptions): Promise<void>;

@@ -88,3 +97,23 @@ fill(value: string, options?: {

getInfo(): Promise<ElementInfo>;
/**
* Run a handle-based call, re-resolving and retrying exactly once if it fails because
* the handle went stale. A second stale failure propagates instead of recursing again —
* an app that keeps recycling the element faster than we can resolve it (Electron
* re-render storms, list virtualisation) must fail fast, not hang the caller forever.
*/
private withRediscovery;
/**
* Re-resolve the element from the query path this locator was built from.
*
* The app handle can be dead too. An `unknown_handle` says so outright — the id came
* from a previous daemon process, so this one's app handles are unrelated and its
* `h_N` may already belong to a *different* app, which would resolve the query against
* the wrong window. Re-acquire the app first in that case. For every other stale
* reason the app handle is presumed good, and re-acquiring is only attempted if the
* query is actually rejected for it — connect_app waits for Electron web content, so
* it must not be on the path of an ordinary TTL re-resolve.
*/
private rediscover;
private resolveFromQuery;
private reacquireAppHandle;
unpin(): Promise<void>;

@@ -91,0 +120,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoBrF;;;;GAIG;AACH,qBAAa,OAAO;IAClB,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;IACjC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAG/B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EAAE,EACtB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAUhC,OAAO,CAAC,KAAK;IAOb,qDAAqD;IACrD,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAQlC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAC/D,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IACjC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IACjC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAChC,OAAO,IAAI,OAAO;IAClB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IACnC,OAAO,IAAI,OAAO;IAClB,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC7B,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC7B,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC/B,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IACjC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC7B,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC9B,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IACnC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC/B,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IACnC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAChC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAC7B,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAGnC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAChC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAI1B,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3F,OAAO,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ7D,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAO/B,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKtC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAK7B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;kGAC8F;IACxF,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC;CAKtC;AAED,cAAM,aAAc,SAAQ,OAAO;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAGvB,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAMjB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3F,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;YAehC,UAAU;IASlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,2 @@

import { JsonRpcError } from "./rpc.js";
import { isAppHandleInvalid, isRecoverableHandleError, isUnknownHandleError, } from "./errors.js";
function buildClickParams(args) {

@@ -23,2 +23,3 @@ const { appHandle, query, defaultTimeout, options, handleId } = args;

defaultTimeout;
reacquireApp;
constructor(rpc, appHandle, queryPath, options) {

@@ -29,3 +30,8 @@ this.rpc = rpc;

this.defaultTimeout = options?.timeout ?? 30_000;
this.reacquireApp = options?.reacquireApp;
}
/** Options that derived locators inherit. */
get inheritedOptions() {
return { timeout: this.defaultTimeout, reacquireApp: this.reacquireApp };
}
// --- Narrowing methods (return new Locator with appended step) ---

@@ -36,3 +42,3 @@ child(role, title, opts) {

{ role, title, identifier: opts?.identifier },
], { timeout: this.defaultTimeout });
], this.inheritedOptions);
}

@@ -44,3 +50,3 @@ /** Find a child by role, title, and/or identifier */

query,
], { timeout: this.defaultTimeout });
], this.inheritedOptions);
}

@@ -130,3 +136,3 @@ // Convenience shorthand methods for common roles

await this.rpc.call("pin_handle", { handleId: info.handleId });
return new ScopedLocator(this.rpc, this.appHandle, this.queryPath, info.handleId, { timeout: this.defaultTimeout });
return new ScopedLocator(this.rpc, this.appHandle, this.queryPath, info.handleId, this.inheritedOptions);
}

@@ -141,60 +147,95 @@ }

async click(options) {
try {
await this.rpc.call("click", buildClickParams({
appHandle: this.appHandle,
handleId: this.handleId,
query: this.queryPath,
defaultTimeout: this.defaultTimeout,
options,
}));
}
catch (err) {
if (isHandleStale(err)) {
await this.rediscover();
return this.click(options);
}
throw err;
}
await this.withRediscovery(() => this.rpc.call("click", buildClickParams({
appHandle: this.appHandle,
handleId: this.handleId,
query: this.queryPath,
defaultTimeout: this.defaultTimeout,
options,
})));
}
async fill(value, options) {
await this.withRediscovery(() => this.rpc.call("fill", {
appHandle: this.appHandle,
handleId: this.handleId,
value,
timeout: (options?.timeout ?? this.defaultTimeout) / 1000,
...(options?.strategy ? { strategy: options.strategy } : {}),
}));
}
async getInfo() {
return this.withRediscovery(() => this.rpc.call("get_element", {
appHandle: this.appHandle,
handleId: this.handleId,
}));
}
/**
* Run a handle-based call, re-resolving and retrying exactly once if it fails because
* the handle went stale. A second stale failure propagates instead of recursing again —
* an app that keeps recycling the element faster than we can resolve it (Electron
* re-render storms, list virtualisation) must fail fast, not hang the caller forever.
*/
async withRediscovery(action) {
try {
await this.rpc.call("fill", {
appHandle: this.appHandle,
handleId: this.handleId,
value,
timeout: (options?.timeout ?? this.defaultTimeout) / 1000,
...(options?.strategy ? { strategy: options.strategy } : {}),
});
return await action();
}
catch (err) {
if (isHandleStale(err)) {
await this.rediscover();
return this.fill(value, options);
}
throw err;
if (!isRecoverableHandleError(err))
throw err;
await this.rediscover(err);
return action();
}
}
async getInfo() {
/**
* Re-resolve the element from the query path this locator was built from.
*
* The app handle can be dead too. An `unknown_handle` says so outright — the id came
* from a previous daemon process, so this one's app handles are unrelated and its
* `h_N` may already belong to a *different* app, which would resolve the query against
* the wrong window. Re-acquire the app first in that case. For every other stale
* reason the app handle is presumed good, and re-acquiring is only attempted if the
* query is actually rejected for it — connect_app waits for Electron web content, so
* it must not be on the path of an ordinary TTL re-resolve.
*/
async rediscover(cause) {
let reacquired = false;
if (isUnknownHandleError(cause)) {
await this.reacquireAppHandle();
reacquired = true;
}
let info;
try {
return await this.rpc.call("get_element", {
appHandle: this.appHandle,
handleId: this.handleId,
});
info = await this.resolveFromQuery();
}
catch (err) {
if (isHandleStale(err)) {
await this.rediscover();
return this.getInfo();
}
throw err;
// Already reacquired once for this rediscovery: a second app_not_found means
// reconnecting didn't help, so retrying it again would only waste a redundant
// connect_app (Electron waits for web content on every call) for no benefit.
if (reacquired || !isAppHandleInvalid(err) || this.reacquireApp === undefined)
throw err;
await this.reacquireAppHandle();
info = await this.resolveFromQuery();
}
const previousHandleId = this.handleId;
this.handleId = info.handleId;
await this.rpc.call("pin_handle", { handleId: this.handleId });
if (previousHandleId !== this.handleId) {
// Best-effort: the old handle is almost always already invalidated (that's why we're
// here), so unpin_handle commonly fails with a stale/unknown error. Swallow it — the
// goal is just to release the pin if the entry still happens to be live, not to
// require it. Leaving this unhandled would leak a pinned entry on every retry against
// a flapping app until the app dies.
await this.rpc.call("unpin_handle", { handleId: previousHandleId }).catch(() => { });
}
}
async rediscover() {
const info = await this.rpc.call("get_element", {
resolveFromQuery() {
return this.rpc.call("get_element", {
appHandle: this.appHandle,
query: this.queryPath,
});
this.handleId = info.handleId;
await this.rpc.call("pin_handle", { handleId: this.handleId });
}
async reacquireAppHandle() {
if (this.reacquireApp === undefined)
return;
this.appHandle = await this.reacquireApp();
}
async unpin() {

@@ -204,10 +245,2 @@ await this.rpc.call("unpin_handle", { handleId: this.handleId });

}
/** True when a handle-based call failed because the handle expired (TTL) OR because
* the underlying element was invalidated by a host re-render (Electron). Both are
* recoverable by re-resolving from the original query path. */
function isHandleStale(err) {
return (err instanceof JsonRpcError &&
err.code === -32000 &&
(err.message.includes("expired") || err.message.includes("stale-element")));
}
//# sourceMappingURL=elements.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"elements.js","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"elements.js","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAcrB,SAAS,gBAAgB,CAAC,IAMzB;IACC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACrE,OAAO;QACL,SAAS;QACT,KAAK;QACL,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,cAAc,CAAC,GAAG,IAAI;QACpD,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,OAAO;IACR,GAAG,CAAgB;IACnB,SAAS,CAAS;IAClB,SAAS,CAAc;IACvB,cAAc,CAAS;IACvB,YAAY,CAAyB;IAE/C,YACE,GAAkB,EAClB,SAAiB,EACjB,SAAsB,EACtB,OAAwB;QAExB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;IAC5C,CAAC;IAED,6CAA6C;IAC7C,IAAc,gBAAgB;QAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAC3E,CAAC;IAED,oEAAoE;IAE5D,KAAK,CAAC,IAAY,EAAE,KAAc,EAAE,IAA8B;QACxE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3C,GAAG,IAAI,CAAC,SAAS;YACjB,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;SAC9C,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IAED,qDAAqD;IACrD,OAAO,CAAC,KAAgB;QACtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3C,GAAG,IAAI,CAAC,SAAS;YACjB,KAAK;SACN,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IAED,iDAAiD;IACjD,MAAM,CAAC,KAAa,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,KAAc,EAAE,IAA8B,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7G,SAAS,CAAC,KAAc,EAAE,IAA8B,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACpH,QAAQ,CAAC,KAAc,EAAE,IAA8B,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClH,QAAQ,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,KAAK,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,KAAa,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAa,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,KAAa,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,KAAc,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,WAAW,CAAC,KAAa,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,KAAc,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,KAAK,CAAC,KAAc,EAAE,IAA8B,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3G,IAAI,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,KAAK,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,KAAK,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,KAAK,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,UAAU,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,UAAU,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChF,8EAA8E;IAC9E,mDAAmD;IACnD,OAAO,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAc,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzE,6CAA6C;IAE7C,KAAK,CAAC,KAAK,CAAC,OAAsB;QAChC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;YAC5C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO;SACR,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,OAAuD;QAC/E,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,KAAK;YACL,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI;YACzD,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA8B;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,UAAU,EAAE;YAC5C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,aAAa,EAAE;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;kGAC8F;IAC9F,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAC/E,CAAC;IACJ,CAAC;CACF;AAED,MAAM,aAAc,SAAQ,OAAO;IACzB,QAAQ,CAAS;IAEzB,YACE,GAAkB,EAClB,SAAiB,EACjB,SAAsB,EACtB,QAAgB,EAChB,OAAwB;QAExB,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,KAAK,CAAC,OAAsB;QACzC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;YACtC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO;SACR,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,OAAuD;QACxF,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;YACL,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI;YACzD,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CACH,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,aAAa,EAAE;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,eAAe,CAAI,MAAwB;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YAC9C,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,UAAU,CAAC,KAAe;QACtC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,IAAI,IAAiB,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,6EAA6E;YAC7E,8EAA8E;YAC9E,6EAA6E;YAC7E,IAAI,UAAU,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;gBAAE,MAAM,GAAG,CAAC;YACzF,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,IAAI,gBAAgB,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,qFAAqF;YACrF,qFAAqF;YACrF,gFAAgF;YAChF,sFAAsF;YACtF,qCAAqC;YACrC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,aAAa,EAAE;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,OAAO;QAC5C,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;CACF"}

@@ -20,3 +20,9 @@ import { AppHandle } from "./client.js";

export { JsonRpcClient, JsonRpcError } from "./rpc.js";
export type { ConnectOptions, AppConnectOptions, AppInfo, AppWindowInfo, AppRuntime, AppMatchKind, ClickStrategy, ClickOptions, FillStrategy, TreeOptions, ElementInfo, ScreenshotResult, KeyStroke, QueryStep, AXNodeJSON, TreeDiagnostics, QueryTreeDetailedResult, } from "./types.js";
export { isConnectionError, isOperationTimeout, isTransportFailure, RPC_ERROR_CODES, RPC_ERROR_NAMES, } from "./errors.js";
export { ServerHealth } from "./health.js";
export type { FailureKind, HealthSnapshot } from "./health.js";
export { clampScriptTimeoutMs, scriptRequestTimeoutMs, scriptTimeoutFromSeconds, SCRIPT_TIMEOUT, } from "./timeouts.js";
export type { ConnectOptions, AppConnectOptions, AppInfo, AppWindowInfo, ListWindowsOptions, AppRuntime, AppMatchKind, AppAccessibility, AXReadiness, ClickStrategy, ClickOptions, FillStrategy, TreeOptions, ElementInfo, ScreenshotResult, KeyStroke, KeyDispatchOutcome, KeyTargetInfo, KeyFocusedElementInfo, PressKeyResult, PressKeysResult, QueryStep, AXNodeJSON, TreeDiagnostics, QueryTreeDetailedResult, } from "./types.js";
export { isAppHandle, appConnectParams, formatAppList } from "./app-target.js";
export type { AppTarget } from "./app-target.js";
export { run, runJson } from "./shell.js";

@@ -23,0 +29,0 @@ export { runAppleScript } from "./applescript.js";

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,CAGpB;AAED,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,CAGpB;AAED,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,EACf,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}

@@ -22,2 +22,6 @@ import { MacbethClient } from "./client.js";

export { JsonRpcClient, JsonRpcError } from "./rpc.js";
export { isConnectionError, isOperationTimeout, isTransportFailure, RPC_ERROR_CODES, RPC_ERROR_NAMES, } from "./errors.js";
export { ServerHealth } from "./health.js";
export { clampScriptTimeoutMs, scriptRequestTimeoutMs, scriptTimeoutFromSeconds, SCRIPT_TIMEOUT, } from "./timeouts.js";
export { isAppHandle, appConnectParams, formatAppList } from "./app-target.js";
export { run, runJson } from "./shell.js";

@@ -24,0 +28,0 @@ export { runAppleScript } from "./applescript.js";

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,MAAM,aAAa,CAAC;AAGvD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,OAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAoBvD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,MAAM,aAAa,CAAC;AAGvD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,OAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,eAAe,CAAC;AA4BvB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}

@@ -10,7 +10,11 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

import { MacbethClient } from "./client.js";
import { isOperationTimeout, JsonRpcError, RPC_ERROR_NAMES } from "./errors.js";
import { describeKeyPress, describeKeyStrokes, formatKeyDispatch } from "./key-dispatch.js";
import { runScreenshotTool } from "./mcp-screenshot.js";
import { JsonRpcError } from "./rpc.js";
import { runListWindowsTool } from "./mcp-windows.js";
import { saveScreenshotToTempFile } from "./screenshots.js";
import { resolveElementTarget } from "./mcp-target.js";
import { formatAppList } from "./app-target.js";
import { runWithActivity } from "./mcp-activity.js";
import { SCRIPT_TIMEOUT, scriptTimeoutFromSeconds } from "./timeouts.js";
import { readInstalledVersion } from "./update.js";

@@ -35,17 +39,5 @@ const MODULE_DIR = dirname(fileURLToPath(import.meta.url));

}
const ERROR_NAMES = {
[-32000]: "element_not_found",
[-32001]: "timeout",
[-32002]: "permission_denied",
[-32003]: "app_not_found",
[-32004]: "action_failed",
[-32005]: "menu_item_not_found",
[-32006]: "menu_item_disabled",
[-32007]: "app_busy",
[-32008]: "script_failed",
[-32009]: "ax_lookup_failed",
};
function formatError(prefix, err) {
if (err instanceof JsonRpcError) {
const kind = ERROR_NAMES[err.code] ?? `error_${err.code}`;
const kind = RPC_ERROR_NAMES[err.code] ?? `error_${err.code}`;
let msg = `${prefix} [${kind}]: ${err.message}`;

@@ -65,2 +57,16 @@ if (err.data && typeof err.data === "object") {

}
/**
* Format a script failure. A timeout is scoped to the call that hit it: say so
* explicitly and point at the knob, so the agent raises `timeout` instead of
* treating the whole server as broken and retrying blindly.
*/
function formatScriptError(err, timeoutSeconds) {
const base = formatError("Script failed", err);
if (!isOperationTimeout(err))
return base;
return `${base}\nThe script exceeded its ${timeoutSeconds}s budget and was stopped. `
+ "Only this call failed — the Macbeth server and every other tool are unaffected. "
+ `Re-run with a larger 'timeout' (up to ${SCRIPT_TIMEOUT.maxMs / 1_000}s) if the work `
+ "legitimately takes longer.";
}
const server = new McpServer({ name: "macbeth", version: readInstalledVersion(INSTALL_DIR) }, { capabilities: { tools: {} } });

@@ -85,15 +91,13 @@ // --- Tools ---

// native processes, which can be addressable by PID but not discoverable by name.
const appTargetSchema = z.union([z.string(), z.number()]).describe("App name or PID");
// App handles are accepted too, so connect_app's return value can be passed straight
// back in and no name is re-resolved.
const appTargetSchema = z
.union([z.string(), z.number()])
.describe('App name (fuzzy), PID, or an app handle returned by connect_app (e.g. "h_3")');
server.registerTool("list_apps", {
description: "List running macOS apps with accessibility support",
description: "List running macOS apps, split into the ones that are currently reachable through the Accessibility API and the ones that are running but will fail to connect (launchers, helper processes, apps that never implement AX). Blocked entries carry the AX error code, what it means, and what to do instead.",
annotations: { readOnlyHint: true },
}, async () => {
const apps = await client.listApps();
const text = apps
.map((a) => {
const bundle = a.bundleId ? `, bundle: ${a.bundleId}` : "";
const aliases = a.aliases?.length ? `, aliases: ${a.aliases.join(", ")}` : "";
return `${a.name} (pid: ${a.pid}, runtime: ${a.runtime}${bundle}${aliases})`;
})
.join("\n");
return { content: [{ type: "text", text }] };
return { content: [{ type: "text", text: formatAppList(apps) }] };
});

@@ -123,29 +127,36 @@ server.registerTool("list_daemon_methods", {

server.registerTool("connect_app", {
description: "Connect to a macOS app by name, declared bundle alias, bundle identifier, or PID. Reports exactly how the target resolved and whether Chromium accessibility content became ready.",
description: "OPTIONAL preflight. Every app-taking tool (query_tree, click, fill, screenshot, ...) connects on its own, so you do NOT need to call this first. Call it to (a) check an app is reachable through Accessibility before driving it, (b) see exactly how a fuzzy name resolved, or (c) warm up an Electron app's accessibility tree with a custom readyTimeoutMs. It returns an app handle (\"h_3\") that you can pass as the `app` argument to any other tool to address the same process without re-resolving the name.",
inputSchema: {
name: z.string().optional().describe("App name (fuzzy match)"),
pid: z.number().optional().describe("Process ID"),
appHandle: z.string().optional().describe("Handle from a previous connect_app; reconnects without re-resolving the name"),
readyTimeoutMs: z.number().int().nonnegative().optional().describe("Electron accessibility-tree readiness timeout in milliseconds"),
},
}, async ({ name, pid, readyTimeoutMs }) => {
const target = pid ?? name;
}, async ({ name, pid, appHandle, readyTimeoutMs }) => {
const target = pid ?? appHandle ?? name;
if (!target) {
return { content: [{ type: "text", text: "Error: provide 'name' or 'pid'" }], isError: true };
return { content: [{ type: "text", text: "Error: provide 'name', 'pid', or 'appHandle'" }], isError: true };
}
const app = await client.connect(target, readyTimeoutMs === undefined ? undefined : { readyTimeoutMs });
const requested = typeof target === "string" ? `Requested “${target}” → ` : "";
const bundle = app.bundleId ? `, bundle: ${app.bundleId}` : "";
const aliases = app.aliases.length ? `, aliases: ${app.aliases.join(", ")}` : "";
const accessibility = app.runtime === "electron"
? `, manualAccessibility: ${app.manualAccessibility}, webContent: ${app.webContentReadiness}`
: "";
return {
content: [{
type: "text",
text: `${requested}${app.name} (match: ${app.matchKind} via ${app.matchedValue}, pid: ${app.pid}, runtime: ${app.runtime}${bundle}${aliases}${accessibility}, handle: ${app.handle})`,
}],
};
try {
const app = await client.connect(target, readyTimeoutMs === undefined ? undefined : { readyTimeoutMs });
const requested = typeof target === "string" ? `Requested “${target}” → ` : "";
const bundle = app.bundleId ? `, bundle: ${app.bundleId}` : "";
const aliases = app.aliases.length ? `, aliases: ${app.aliases.join(", ")}` : "";
const accessibility = app.runtime === "electron"
? `, manualAccessibility: ${app.manualAccessibility}, webContent: ${app.webContentReadiness}`
: "";
return {
content: [{
type: "text",
text: `${requested}${app.name} (match: ${app.matchKind} via ${app.matchedValue}, pid: ${app.pid}, runtime: ${app.runtime}${bundle}${aliases}${accessibility})\n`
+ `Connected. Pass app: "${app.handle}" to any other tool to reuse this connection.`,
}],
};
}
catch (err) {
return { content: [{ type: "text", text: formatError("Connect failed", err) }], isError: true };
}
});
server.registerTool("query_tree", {
description: "Get an app's accessibility tree, including its menu hierarchy. Use this first; it connects automatically, so a separate connect_app or list_menu_bar call is unnecessary. If Chromium web content is empty, the result explains available screenshot/OCR/menu/keyboard fallbacks.",
description: "Get an app's accessibility tree, including its menu hierarchy. Use this first; it connects automatically, so a separate connect_app or list_menu_bar call is unnecessary. Element handles (h_N) are stable: the same element keeps the same handle across calls, so handles you already have stay valid and you can plan several actions from one tree instead of re-querying between them. A handle that stops working reports stale_handle (re-query for it) or unknown_handle (it was never issued). If Chromium web content is empty, the result explains available screenshot/OCR/menu/keyboard fallbacks.",
inputSchema: {

@@ -166,11 +177,19 @@ app: appTargetSchema,

server.registerTool("list_windows", {
description: "List WindowServer surfaces owned by an app or its helper processes across macOS Spaces. Returns window IDs, titles, frames, visibility, and whether each surface is capturable. This is read-only and does not activate windows or switch Spaces.",
description: "List open windows across macOS Spaces without touching an accessibility tree. "
+ "Omit 'app' to list windows for every running app — that answers \"is app X open, and what is it showing?\" in one call; "
+ "pass 'app' to scope the listing to one app and its helper processes. "
+ "Each entry has windowId, title, ownerName/ownerPid/bundleId, frame, onScreen/active/minimized, AX role/subrole, kind, and whether it is capturable. "
+ "windowId is a WindowServer ID, not an element handle: it has no 5-minute TTL, ignores pin_handle, and stays valid until the window closes. "
+ "Read-only — it does not activate windows or switch Spaces.",
inputSchema: {
app: appTargetSchema,
app: appTargetSchema.optional().describe('Optional filter: app name (fuzzy), PID, or an app handle (e.g. "h_3"). Omit to list windows for every app.'),
includeAllSurfaces: z.boolean().optional().default(false)
.describe("Also return menu-bar strips, overlays, and bookkeeping surfaces (kind != 'window'). Default false."),
},
annotations: { readOnlyHint: true },
}, async ({ app }) => {
const handle = await client.connect(app);
const windows = await handle.listWindows();
return { content: [{ type: "text", text: JSON.stringify({ windows }, null, 2) }] };
}, async ({ app, includeAllSurfaces }) => {
return runListWindowsTool({
connect: (target) => client.connect(target),
listAll: (options) => client.listWindows(options),
}, { app, includeAllSurfaces });
});

@@ -260,3 +279,3 @@ server.registerTool("click", {

server.registerTool("press_key", {
description: 'WARNING: This tool steals focus — it activates the target app window before sending input. Use as a last resort when click/fill cannot achieve the goal (e.g. keyboard shortcuts, arrow-key navigation). Prefer "fill" for text entry and "click" for buttons. Key names: "return", "tab", "escape", "a"-"z", "1"-"9", "f1"-"f12", "up", "down", "left", "right", "space", "delete". Modifiers: "cmd", "shift", "alt", "ctrl".',
description: 'WARNING: This tool steals focus — it activates the target app window before sending input. Use as a last resort when click/fill cannot achieve the goal (e.g. keyboard shortcuts, arrow-key navigation). Prefer "fill" for text entry and "click" for buttons. Key names: "return", "tab", "escape", "a"-"z", "1"-"9", "f1"-"f12", "up", "down", "left", "right", "space", "delete". Modifiers: "cmd", "shift", "alt", "ctrl". The result reports how far the input got: outcome=dispatched means the events entered the system event stream (the app may still have ignored them); outcome=attempted means even that could not be confirmed. Neither proves the app acted — confirm real effects with query_tree, wait_for, or screenshot instead of resending.',
inputSchema: {

@@ -270,8 +289,10 @@ app: appTargetSchema,

const handle = await client.connect(app);
await handle.pressKey(key, modifiers);
return { content: [{ type: "text", text: `Pressed ${modifiers?.length ? modifiers.join("+") + "+" : ""}${key}` }] };
const result = await handle.pressKey(key, modifiers);
const label = describeKeyPress(key, modifiers);
const report = formatKeyDispatch(label, result, `Pressed ${label}`);
return { content: [{ type: "text", text: report.text }], isError: report.isError };
});
});
server.registerTool("press_keys", {
description: 'WARNING: This tool steals focus — it activates the target app window before sending input. Use as a last resort when click/fill cannot achieve the goal. Prefer "fill" for text entry and "click" for buttons. Sends a sequence of keyboard inputs in one call. Each step accepts either `key` plus optional `modifiers`, or `text` to type literally, plus optional `delayMs`.',
description: 'WARNING: This tool steals focus — it activates the target app window before sending input. Use as a last resort when click/fill cannot achieve the goal. Prefer "fill" for text entry and "click" for buttons. Sends a sequence of keyboard inputs in one call. Each step accepts either `key` plus optional `modifiers`, or `text` to type literally, plus optional `delayMs`. Reports the same dispatch outcome as press_key, covering the sequence as a whole.',
inputSchema: {

@@ -284,4 +305,6 @@ app: appTargetSchema,

const handle = await client.connect(app);
await handle.pressKeys(keys);
return { content: [{ type: "text", text: `Sent ${keys.length} input item${keys.length === 1 ? "" : "s"}` }] };
const strokes = keys;
const result = await handle.pressKeys(strokes);
const report = formatKeyDispatch(describeKeyStrokes(strokes), result, `Sent ${keys.length} input item${keys.length === 1 ? "" : "s"}`);
return { content: [{ type: "text", text: report.text }], isError: report.isError };
});

@@ -472,12 +495,28 @@ });

server.registerTool("run_applescript", {
description: "Run an AppleScript or JavaScript for Automation (JXA) script. Returns the script's output as text.",
description: "Run an AppleScript or JavaScript for Automation (JXA) script. Returns the script's output as text. "
+ "The script goes in 'source' (not 'script' or 'code'), and 'language' is exactly \"AppleScript\" or \"JavaScript\" — "
+ "JXA is \"JavaScript\", the string \"jxa\" is not accepted. Examples:\n"
+ " {\"source\": \"tell application \\\"Finder\\\" to get name of every window\"}\n"
+ " {\"source\": \"Application('Finder').windows().map(w => w.name()).join(', ')\", \"language\": \"JavaScript\"}\n"
+ "Set 'timeout' for work that legitimately runs long (e.g. enumerating many apps); the default is 30 seconds. "
+ "A script that overruns its timeout is stopped and reported as a timeout for that call alone — the server stays "
+ "healthy and other tools keep working.",
inputSchema: {
source: z.string().describe("Script source code"),
language: z.enum(["AppleScript", "JavaScript"]).optional().default("AppleScript").describe("Script language (default: AppleScript)"),
source: z.string().describe("Script source code. AppleScript example: tell application \"Finder\" to get name of every window. "
+ "JXA example: Application('Finder').windows().map(w => w.name()).join(', ')"),
language: z.enum(["AppleScript", "JavaScript"]).optional().default("AppleScript")
.describe("Script language: \"AppleScript\" or \"JavaScript\" (JXA). Default: AppleScript."),
interaction: z.enum(["interactive", "read_only"]).optional().default("interactive").describe("Whether the script can control apps/input or only inspect state"),
timeout: z.number().positive().max(300).optional().default(30).describe("Hard timeout in seconds (default: 30, max: 300)"),
timeout: z.number()
.min(SCRIPT_TIMEOUT.minMs / 1_000)
.max(SCRIPT_TIMEOUT.maxMs / 1_000)
.optional()
.default(SCRIPT_TIMEOUT.defaultMs / 1_000)
.describe(`Hard timeout in seconds for this call (default: ${SCRIPT_TIMEOUT.defaultMs / 1_000}, `
+ `max: ${SCRIPT_TIMEOUT.maxMs / 1_000}). The daemon enforces it in a separate process and `
+ "clamps out-of-range values."),
},
}, async ({ source, language, interaction, timeout }) => {
const execute = async () => {
const timeoutMs = (timeout ?? 30) * 1000;
const timeoutMs = scriptTimeoutFromSeconds(timeout);
try {

@@ -491,3 +530,6 @@ const output = await client.runAppleScript(source, language, {

catch (err) {
return { content: [{ type: "text", text: formatError("Script failed", err) }], isError: true };
return {
content: [{ type: "text", text: formatScriptError(err, timeoutMs / 1_000) }],
isError: true,
};
}

@@ -494,0 +536,0 @@ };

@@ -1,1 +0,1 @@

{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}

@@ -1,6 +0,3 @@

export declare class JsonRpcError extends Error {
code: number;
data?: unknown;
constructor(code: number, message: string, data?: unknown);
}
import { type HealthSnapshot } from "./health.js";
export { JsonRpcError } from "./errors.js";
export declare class JsonRpcClient {

@@ -14,2 +11,3 @@ private socket;

private onReconnect?;
private serverHealth;
constructor(options?: {

@@ -19,2 +17,5 @@ timeout?: number;

});
/** Daemon-connection health. Operation failures, timeouts included, never
* make this unhealthy — see {@link ServerHealth}. */
get health(): HealthSnapshot;
connect(socketPath: string): Promise<void>;

@@ -21,0 +22,0 @@ call<T = unknown>(method: string, params?: Record<string, unknown>, options?: {

@@ -1,1 +0,1 @@

{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAeA,qBAAa,YAAa,SAAQ,KAAK;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM1D;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAC,CAAsB;gBAE9B,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;IAKvE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC1C,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,CAAC,CAAC;YAYC,QAAQ;IAkCtB,KAAK,IAAI,IAAI;IAOb,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,OAAO,CAAC,aAAa;CAsCtB"}
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAehE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAe;gBAEvB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;IAM7E;0DACsD;IACtD,IAAI,MAAM,IAAI,cAAc,CAE3B;IAEK,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC1C,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,CAAC,CAAC;YAuBC,QAAQ;IAqCtB,KAAK,IAAI,IAAI;IAOb,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,OAAO,CAAC,aAAa;CAsCtB"}
import * as net from "node:net";
export class JsonRpcError extends Error {
code;
data;
constructor(code, message, data) {
super(message);
this.name = "JsonRpcError";
this.code = code;
this.data = data;
}
}
import { isConnectionError, JsonRpcError, operationTimeoutError } from "./errors.js";
import { ServerHealth } from "./health.js";
export { JsonRpcError } from "./errors.js";
export class JsonRpcClient {

@@ -20,6 +13,13 @@ socket = null;

onReconnect;
serverHealth;
constructor(options) {
this.requestTimeout = options?.timeout ?? 60_000;
this.onReconnect = options?.onReconnect;
this.serverHealth = new ServerHealth();
}
/** Daemon-connection health. Operation failures, timeouts included, never
* make this unhealthy — see {@link ServerHealth}. */
get health() {
return this.serverHealth.snapshot;
}
async connect(socketPath) {

@@ -56,9 +56,21 @@ this.socketPath = socketPath;

try {
return await this.callOnce(method, params, options?.timeoutMs);
const result = await this.callOnce(method, params, options?.timeoutMs);
this.serverHealth.recordSuccess();
return result;
}
catch (err) {
if (this.onReconnect && isConnectionError(err)) {
this.serverHealth.recordFailure(err);
await this.onReconnect();
return await this.callOnce(method, params, options?.timeoutMs);
try {
const result = await this.callOnce(method, params, options?.timeoutMs);
this.serverHealth.recordSuccess();
return result;
}
catch (retryErr) {
this.serverHealth.recordFailure(retryErr);
throw retryErr;
}
}
this.serverHealth.recordFailure(err);
throw err;

@@ -79,7 +91,10 @@ }

return new Promise((resolve, reject) => {
const effectiveTimeout = timeoutMs ?? this.requestTimeout;
const timer = setTimeout(() => {
// Drop only this request. The socket stays open and later requests keep
// working, so an operation that runs long is never a transport failure.
// A late reply for `id` is ignored by processBuffer().
this.pending.delete(id);
const effectiveTimeout = timeoutMs ?? this.requestTimeout;
reject(new Error(`Request timeout: ${method} (${effectiveTimeout}ms)`));
}, timeoutMs ?? this.requestTimeout);
reject(operationTimeoutError(method, effectiveTimeout));
}, effectiveTimeout);
this.pending.set(id, {

@@ -137,11 +152,2 @@ resolve: resolve,

}
function isConnectionError(err) {
if (!(err instanceof Error))
return false;
const msg = err.message;
return msg === "Not connected" ||
msg === "Connection closed" ||
msg.includes("ECONNREFUSED") ||
msg.includes("ENOENT");
}
//# sourceMappingURL=rpc.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}

@@ -17,2 +17,17 @@ export interface QueryStep {

export type AppRuntime = "native" | "electron" | "unknown";
/** Whether a running app can currently be driven through the Accessibility API.
* `permission_required` means the API is off for every app because macbeth has not
* been granted Accessibility; `not_connectable` means this specific process refuses
* accessibility requests (launchers, helper processes, apps that never implement AX). */
export type AXReadiness = "connectable" | "permission_required" | "not_connectable";
export interface AppAccessibility {
status: AXReadiness;
connectable: boolean;
/** Raw AX error code from the probe. Absent when connectable. */
axCode?: number;
/** Stable snake_case name for the AX error, e.g. "cannot_complete". */
axError?: string;
explanation?: string;
nextAction?: string;
}
export interface AppInfo {

@@ -24,4 +39,5 @@ name: string;

runtime: AppRuntime;
accessibility: AppAccessibility;
}
export type AppMatchKind = "pid" | "exact_name" | "declared_alias" | "bundle_identifier" | "partial_name" | "partial_alias" | "partial_bundle_identifier";
export type AppMatchKind = "pid" | "app_handle" | "exact_name" | "declared_alias" | "bundle_identifier" | "partial_name" | "partial_alias" | "partial_bundle_identifier";
export interface TreeDiagnostics {

@@ -37,2 +53,5 @@ runtime: AppRuntime;

export interface AppWindowInfo {
/** WindowServer window ID. Not an AX element handle: it is issued by macOS,
* is unaffected by handle TTL or `pin_handle`, and stays valid until the
* window closes (a reopened window gets a new ID). */
windowId: number;

@@ -54,4 +73,16 @@ ownerPid: number | null;

kind: "window" | "bookkeeping" | "menu_bar" | "overlay";
/** The window a screenshot captures for this owner when no `windowId` is given. */
default: boolean;
/** AX role, or null when the app exposes no AX window for this surface. */
role: string | null;
/** AX subrole (e.g. "AXStandardWindow", "AXDialog"), or null when unavailable. */
subrole: string | null;
/** Minimized into the Dock; null when AX metadata is unavailable. */
minimized: boolean | null;
}
export interface ListWindowsOptions {
/** Include menu-bar strips, overlays, and bookkeeping surfaces
* (`kind !== "window"`). Default false. */
includeAllSurfaces?: boolean;
}
export interface ConnectOptions {

@@ -112,2 +143,57 @@ socketPath?: string;

};
/**
* How far a keyboard call got.
*
* - `attempted` — the events could not be shown to have entered the event stream.
* - `dispatched` — they entered the system event stream; app delivery is unproven.
* - `verified` — the app's observable state changed. Not produced yet.
*/
export type KeyDispatchOutcome = "attempted" | "dispatched" | "verified";
export interface KeyFocusedElementInfo {
role: string | null;
subrole: string | null;
title: string | null;
identifier: string | null;
value: string | null;
}
export interface KeyTargetInfo {
app: string | null;
pid: number | null;
bundleId: string | null;
/** Whether the target app held keyboard focus when the events were posted. */
frontmost: boolean;
/** Who actually held keyboard focus — the app that received the events. */
focusedApp: {
pid: number | null;
name: string | null;
};
window: {
title: string | null;
identity: string | null;
};
focusedElement: KeyFocusedElementInfo | null;
}
export interface PressKeyResult {
/** False only when no key event could be created at all. */
success: boolean;
outcome: KeyDispatchOutcome;
dispatched: boolean;
verified: boolean;
/** Human-readable explanation of the outcome and its caveats. */
note: string;
/** Machine-readable warning codes, e.g. `target-not-frontmost`. */
warnings: string[];
keysRequested: number;
keysPosted: number;
evidence: {
/** Session key-down counter delta across the dispatch. */
sessionKeyDownDelta: number | null;
accessibilityTrusted: boolean;
};
target: KeyTargetInfo;
}
export interface PressKeysResult extends PressKeyResult {
/** Number of key/text items in the sequence. */
count: number;
}
export interface FormField {

@@ -114,0 +200,0 @@ handleId: string;

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
{
"name": "macbeth",
"version": "0.2.3",
"version": "0.2.4",
"mcpName": "io.github.wende/macbeth",

@@ -5,0 +5,0 @@ "description": "Open-source Computer Use for macOS. See and operate Mac applications through MCP or TypeScript, including native and Electron interfaces.",

@@ -58,2 +58,4 @@ # Developing with Macbeth

**The split:** everything app-scoped (`queryTree`, `screenshot`, locators, keyboard input, …) hangs off the `AppHandle` returned by `connect()`, not off `MacbethClient`. The client itself only holds global/cross-app operations — `listApps`, `connect`, `runAppleScript`, `dumpAttributes`, lifecycle (`close`). The one deliberate exception is `client.extractText({ appHandle, ... })`: it stays on `MacbethClient` because it also accepts raw image `data` with no app involved at all, so it can't be a pure `AppHandle` method.
## Locators

@@ -173,4 +175,16 @@

Keyboard delivery activates the target app. Background-safe text entry: use `fill` (AX path). Details: [docs/keyboard-input-and-foregrounding.md](../docs/keyboard-input-and-foregrounding.md).
Keyboard delivery activates the target app. Background-safe text entry: use `fill` (AX path).
Both calls resolve with a dispatch report — `outcome` (`attempted` | `dispatched` |
`verified`), the addressed target, and warning codes — which callers may ignore:
```ts
const result = await app.pressKey("return");
if (result.outcome !== "dispatched") console.warn(result.note);
```
`dispatched` means the events entered the system event stream, not that the app
acted on them; assert real effects with `waitFor` or a fresh query. Details:
[docs/keyboard-input-and-foregrounding.md](../docs/keyboard-input-and-foregrounding.md).
## Screenshots

@@ -195,2 +209,30 @@

## Listing windows
```ts
const client = new MacbethClient();
// Every app that owns a window — no connect, no AX tree walk.
const all = await client.listWindows();
const unityIsOpen = all.some((window) => window.ownerName === "Unity");
// One app and its helper processes.
const unity = await client.connect("Unity");
const unityWindows = await unity.listWindows();
// Menu-bar strips, overlays, and bookkeeping surfaces are filtered out by
// default; ask for them when diagnosing a window you cannot capture.
const everySurface = await client.listWindows({ includeAllSurfaces: true });
```
Each entry: `windowId`, `title`, `ownerName` / `ownerPid` / `bundleId`, `frame`,
`layer`, `onScreen`, `active`, `minimized`, `role`, `subrole`, `kind`,
`capturable`, `default`. `role`, `subrole`, and `minimized` come from the
accessibility API and are `null` when the app exposes no AX window for the
surface.
`windowId` is a WindowServer ID, not an element handle: it has no 5-minute TTL,
`pin_handle` does not apply, and it stays valid until the window closes (a
reopened window gets a new ID). Only `h_N` element handles expire.
## Listing apps

@@ -197,0 +239,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet