@stim-cli/core 1.20.2 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- import { t as withDerivedFacts } from "./status-derived-C13g6eQt.mjs";
1
+ import { i as statusViews, n as applyKeyedDelta, o as withDerivedFacts } from "./keyed-delta-BBoOeR2J.mjs";
2
2
  import { ACTIONS, PROTOCOL_VERSION } from "./protocol.mjs";
3
- export { ACTIONS, PROTOCOL_VERSION, withDerivedFacts };
3
+ export { ACTIONS, PROTOCOL_VERSION, applyKeyedDelta, statusViews, withDerivedFacts };
@@ -1,10 +1,10 @@
1
- import { Fi as HostedDeviceRequest, Jt as BuildHistoryEntry, Li as HostedDeviceSession, Mi as HostedDeviceOfferRequest, Ni as HostedDevicePhase, Pi as HostedDevicePlatform, Sa as HostedAppDelivery, d as HostedLogsPage, en as BuildPlanPayload, il as NdjsonRecord, ji as HostedDeviceOffer, u as HostedLogsCursor, ua as HostedAppLaunch, wa as HostedAppOffer, zn as StatusPayload } from "./index-VDWBflH3.mjs";
1
+ import { Br as MaintenanceStatus, Cr as ArchivedWorkspace, Gl as NdjsonRecord, Ji as HostedDeviceOffer, Oa as HostedAppLaunch, On as EnvironmentState, Qi as HostedDeviceRequest, Sr as ArchivedUsage, T as HostedLogsPage, Ua as HostedAppOffer, Va as HostedAppDelivery, Xi as HostedDevicePhase, Yi as HostedDeviceOfferRequest, Zi as HostedDevicePlatform, _o as SettingScope, a as MachineView, d as WorktreeRow, ea as HostedDeviceSession, er as StatusPayload, hn as BuildPlanPayload, i as ArchivedSummary, ln as BuildHistoryEntry, t as KeyedDelta, u as WorkspaceSummary, ur as WorktreeFacts, w as HostedLogsCursor, yo as SettingWriteResult } from "./index-_wkluvP_.mjs";
2
2
  //#region protocol.d.ts
3
- declare const PROTOCOL_VERSION = 1;
3
+ declare const PROTOCOL_VERSION = 2;
4
4
  declare const PROTOCOL_SCHEMA_FILE = "protocol.schema.json";
5
5
  /**
6
- * `read` serves state. `control` also runs {@link ACTIONS}; only the Mac grants it. `build` lets another Mac run
7
- * project code here to build for it; it never comes with `read` or `control`, and only the Mac approves it.
6
+ * `read` serves state. `control` also runs {@link ACTIONS}; only the machine grants it. `build` lets another machine run
7
+ * project code here to build for it; it never comes with `read` or `control`, and only the machine approves it.
8
8
  * `device-host` permits a client's native app code in its own hosted sessions, and grants no other capability.
9
9
  */
10
10
  declare const CAPABILITIES: readonly ["read", "control", "build", "device-host"];
@@ -30,63 +30,59 @@ type Capability = (typeof CAPABILITIES)[number];
30
30
  * `hosted-ios-process` and `hosted-android-process` accept native app offers in process mode, with live process readiness and no Metro.
31
31
  * `native-xcode-build` accepts native Xcode provider requests with a separate source-transfer identity.
32
32
  * `native-xcode-toolchain` accepts native Xcode discovery without unrelated platform or Ruby probes.
33
+ * `build-artifact-cache` offers and fetches exact completed native Xcode archives without a build job.
33
34
  * `native-gradle-build` accepts declared Gradle transfer inputs with no reusable artifact identity.
34
35
  * `server-update` is `server.update.status`, `server.update.start` and `server.update.chunk`.
36
+ * `status-views` is `workspaces.subscribe`, `workspace.subscribe`, `machine.subscribe`, `builds.history`,
37
+ * `archived.list`, `worktrees.list` and `maintenance.get`.
38
+ * `desktop-reports` serves cached doctor/GC reports to the authenticated local Desktop connection.
39
+ * `desktop-report-platform` accepts an optional ios/android selector for Desktop doctor reports.
40
+ * `desktop-settings` reads settings for a selected folder on the authenticated local Desktop connection.
41
+ * `desktop-settings-write` mutates settings on the proved local Desktop connection.
42
+ * `desktop-stop` streams private Desktop workspace or slot stop progress and its terminal result.
43
+ * `desktop-reload` streams reload output and its terminal result on the proved local Desktop connection.
35
44
  */
36
- declare const FEATURES: readonly ["physical-ios", "physical-android", "notifications", "macos-window", "macos-windows", "macos-window-select", "macos-window-control", "macos-keyboard-extended", "device-frames", "macos-hosted", "ios-hosted", "android-hosted", "hosted-ios-agent", "hosted-android-agent", "duo-frames", "workspace-diff", "hosted-congestion", "hosted-ios-data", "hosted-ios-process", "native-xcode-build", "native-xcode-toolchain", "native-gradle-build", "hosted-android-data", "hosted-android-process", "server-update"];
45
+ declare const FEATURES: readonly ["physical-ios", "physical-android", "notifications", "macos-window", "macos-windows", "macos-window-select", "macos-window-control", "macos-keyboard-extended", "device-frames", "macos-hosted", "ios-hosted", "android-hosted", "hosted-ios-agent", "hosted-android-agent", "duo-frames", "workspace-diff", "hosted-congestion", "hosted-ios-data", "hosted-ios-process", "native-xcode-build", "native-xcode-toolchain", "build-artifact-cache", "native-gradle-build", "hosted-android-data", "hosted-android-process", "server-update", "status-views", "desktop-reports", "desktop-report-platform", "desktop-settings", "desktop-settings-write", "desktop-full-logs", "desktop-doctor-run", "desktop-stop", "desktop-reload"];
37
46
  type Feature = (typeof FEATURES)[number];
38
- declare const METHODS: readonly ["hello", "route.setup", "status.subscribe", "logs.query", "logs.subscribe", "stats.get", "settings.get", "workspace.files", "workspace.diff", "frames.subscribe", "frames.keyframe", "frames.seek", "frames.live", "replay.range", "archive.detail", "replay.keyframe", "recording.set", "build.plan", "machine.get", "machine.history", "machine.details", "unsubscribe", "action", "control.begin", "control.end", "input.touch", "input.text", "input.button", "input.rotate", "input.posture", "input.simulator", "input.scroll", "input.key", "input.window", "push.register", "push.unregister", "notifications.list", "build.offer", "build.sync", "build.start", "build.cancel", "build.artifact", "build.attach", "device-host.offer", "device-host.reserve", "device-host.attach", "device-host.stop", "device-host.app.offer", "device-host.app.chunk", "device-host.app.handoff", "device-host.app.launch", "device-host.app.attach", "device-host.logs.query", "device-host.metro.open", "device-host.metro.close", "device-host.frames.subscribe", "device-host.frames.keyframe", "device-host.frames.congested", "device-host.unsubscribe", "device-host.control.begin", "device-host.control.end", "device-host.input.touch", "device-host.input.text", "device-host.input.scroll", "device-host.input.key", "device-host.input.button", "device-host.input.rotate", "device-host.input.posture", "device-host.input.window", "server.update.status", "server.update.start", "server.update.chunk", "machines.update.start", "machines.update.status", "device-host.sessions", "device-host.sessions.stop"];
47
+ declare const METHODS: readonly ["hello", "desktop.authenticate", "desktop.reports.get", "desktop.reports.subscribe", "desktop.reports.invalidate", "desktop.settings.get", "desktop.settings.write", "desktop.logs.subscribe", "desktop.doctor.run", "desktop.stop.subscribe", "desktop.reload.subscribe", "route.setup", "status.subscribe", "workspaces.subscribe", "workspace.subscribe", "machine.subscribe", "builds.history", "archived.list", "worktrees.list", "maintenance.get", "logs.query", "logs.subscribe", "stats.get", "settings.get", "workspace.files", "workspace.diff", "frames.subscribe", "frames.keyframe", "frames.seek", "frames.live", "replay.range", "archive.detail", "replay.keyframe", "recording.set", "build.plan", "machine.get", "machine.history", "machine.details", "unsubscribe", "action", "control.begin", "control.end", "input.touch", "input.text", "input.button", "input.rotate", "input.posture", "input.simulator", "input.scroll", "input.key", "input.window", "push.register", "push.unregister", "notifications.list", "build.offer", "build.sync", "build.start", "build.cancel", "build.artifact", "build.cached-artifact", "build.attach", "device-host.offer", "device-host.reserve", "device-host.attach", "device-host.stop", "device-host.app.offer", "device-host.app.chunk", "device-host.app.handoff", "device-host.app.launch", "device-host.app.attach", "device-host.logs.query", "device-host.metro.open", "device-host.metro.close", "device-host.frames.subscribe", "device-host.frames.keyframe", "device-host.frames.congested", "device-host.unsubscribe", "device-host.control.begin", "device-host.control.end", "device-host.input.touch", "device-host.input.text", "device-host.input.scroll", "device-host.input.key", "device-host.input.button", "device-host.input.rotate", "device-host.input.posture", "device-host.input.window", "server.update.status", "server.update.start", "server.update.chunk", "machines.update.start", "machines.update.status", "device-host.sessions", "device-host.sessions.stop"];
39
48
  /**
40
- * The methods that update this server's `stim-server service`. A Mac this one approved for `build` or
49
+ * The methods that update this server's `stim-server service`. A machine this one approved for `build` or
41
50
  * `device-host` may call them; they need neither `read` nor `control`.
42
51
  */
43
52
  declare const SERVER_UPDATE_METHODS: readonly ["server.update.status", "server.update.start", "server.update.chunk"];
44
53
  /** The methods a connection with the `build` capability may call; they need `build`, not `read`. */
45
- declare const BUILD_METHODS: readonly ["build.offer", "build.sync", "build.start", "build.cancel", "build.artifact", "build.attach"];
54
+ declare const BUILD_METHODS: readonly ["build.offer", "build.sync", "build.start", "build.cancel", "build.artifact", "build.cached-artifact", "build.attach"];
46
55
  /** Methods restricted to explicitly approved device-host clients. */
47
56
  declare const DEVICE_HOST_METHODS: readonly ["device-host.offer", "device-host.reserve", "device-host.attach", "device-host.stop", "device-host.app.offer", "device-host.app.chunk", "device-host.app.handoff", "device-host.app.launch", "device-host.app.attach", "device-host.logs.query", "device-host.metro.open", "device-host.metro.close", "device-host.frames.subscribe", "device-host.frames.keyframe", "device-host.frames.congested", "device-host.unsubscribe", "device-host.control.begin", "device-host.control.end", "device-host.input.touch", "device-host.input.text", "device-host.input.scroll", "device-host.input.key", "device-host.input.button", "device-host.input.rotate", "device-host.input.posture", "device-host.input.window"];
48
57
  type Method = (typeof METHODS)[number];
49
58
  declare const PUSH_TOKEN_PATTERN = "^(Expo|Exponent)PushToken\\[[^\\]\\s]{1,256}\\]$";
50
59
  /**
51
60
  * `unauthorized`, `pairing-expired` and `protocol-unsupported` refuse the client until it pairs again or
52
- * updates; `approval-pending` refuses a build client until the Mac approves it; clients retry the others.
61
+ * updates; `unknown-secret` means the server does not hold the pairing token or setup ticket (yet), so a client with a
62
+ * setup ticket retries until setup runs; clients retry the others. A network connection's refusals during the
63
+ * handshake arrive as the WebSocket close reason.
53
64
  */
54
- declare const ERROR_CODES: readonly ["unauthorized", "pairing-expired", "protocol-unsupported", "approval-pending", "identity-unavailable", "bad-request", "unknown-method", "already-authenticated", "unknown-subscription", "unknown-workspace", "limit-exceeded", "slow-client", "status-failed", "logs-failed", "stim-failed", "frames-failed", "forbidden", "unknown-action", "action-busy", "action-failed", "device-busy", "unknown-session", "no-recording", "build-refused", "build-busy"];
65
+ declare const ERROR_CODES: readonly ["unauthorized", "pairing-expired", "protocol-unsupported", "unknown-secret", "bad-request", "unknown-method", "already-authenticated", "unknown-subscription", "unknown-workspace", "limit-exceeded", "slow-client", "status-failed", "logs-failed", "stim-failed", "frames-failed", "forbidden", "unknown-action", "action-busy", "action-failed", "device-busy", "unknown-session", "no-recording", "build-refused", "build-busy"];
55
66
  type ErrorCode = (typeof ERROR_CODES)[number];
56
67
  type RequestId = number | string;
57
- /** Spends a single-use pairing token; the result carries the new device token. */
58
- interface PairingAuth {
59
- pairingToken: string;
60
- deviceName: string;
61
- }
62
- /** Presents the device token a previous pairing returned. */
63
- interface DeviceAuth {
64
- deviceToken: string;
65
- }
66
68
  /**
67
- * Asks, from another Mac on the tailnet, to build here. The result carries a device token with no
68
- * capabilities and `approval`; the token authenticates once the Mac approves the request.
69
+ * The first request on a connection, after the Noise handshake on a network connection or none on the local Unix
70
+ * socket. Authentication already happened; capabilities come from the server's record of the client's key.
69
71
  */
70
- interface BuildRequestAuth {
71
- request: "build";
72
- deviceName: string;
73
- setupTicket?: string;
74
- }
75
- /** Requests explicit device hosting approval; grants no read, control or build access. */
76
- interface DeviceHostRequestAuth {
77
- request: "device-host";
78
- deviceName: string;
79
- setupTicket?: string;
80
- }
81
72
  interface HelloParams {
82
- protocol: number;
83
73
  /** `runId` is the CLI invocation's id: letters, digits, `.`, `_`, `-`, at most 64. The server puts it on its log lines for the connection. */
84
74
  client: {
85
75
  name: string;
86
76
  version: string;
87
77
  runId?: string;
88
78
  };
89
- auth: PairingAuth | DeviceAuth | BuildRequestAuth | DeviceHostRequestAuth;
79
+ /**
80
+ * Which of the key's own records this connection acts as: its `build` or `device-host` approval. Without it, the
81
+ * pairing in `devices.json`. It never widens what a record allows.
82
+ */
83
+ access?: "build" | "device-host";
84
+ /** On the local Unix socket only: asks for the private Desktop bootstrap challenge. It grants nothing by itself. */
85
+ desktopBootstrap?: true;
90
86
  }
91
87
  interface HelloResult {
92
88
  /** Present when the server runs under Stim Host: the grants macOS gives that app, or null if unavailable. */
@@ -97,31 +93,34 @@ interface HelloResult {
97
93
  } | null;
98
94
  protocol: number;
99
95
  /**
100
- * The Mac's name, this package's version, the version of the `stim` it runs, and the home directory of the
101
- * user it runs as, so clients can show paths under it as `~/...`. A pending approval result has no `home`.
96
+ * The machine's name, this package's version, the version of the `stim` it runs, and the home directory of the
97
+ * user it runs as, so clients can show paths under it as `~/...`.
102
98
  */
99
+ /** `port`, on the local socket only, is the server's TCP port, so a client can tell which server answered. */
103
100
  server: {
104
101
  name: string;
105
102
  version: string;
106
103
  stim: string;
107
104
  home?: string;
105
+ id?: string;
106
+ port?: number;
108
107
  };
109
108
  capabilities: Capability[];
110
109
  features: Feature[];
111
110
  /** The actions this device may run: every one of {@link ACTIONS} with `control`, none without. */
112
111
  actions: ActionName[];
113
- /** The paired device this connection authenticated as, as `stim-server devices` lists it. */
112
+ /** The record this connection authenticated as, as `stim-server devices` lists it; `local` on the Unix socket. */
114
113
  device: {
115
114
  id: string;
116
115
  name: string;
117
116
  };
118
- /** Present only when the hello spent a pairing token or requested build or device-host access. The server keeps only its hash. */
119
- deviceToken?: string;
120
- /** Present only on a build or device-host request, which the server then closes; the request lapses at `expiresAt`. */
121
- approval?: {
122
- state: "pending";
123
- expiresAt: string;
124
- };
117
+ /** Present only for a requested private bootstrap on the local Unix socket. */
118
+ desktopBootstrap?: DesktopBootstrapChallenge;
119
+ }
120
+ /** Per-connection nonce and HMAC-SHA256 proof under the parent's private key, with the `server:` domain. */
121
+ interface DesktopBootstrapChallenge {
122
+ nonce: string;
123
+ proof: string;
125
124
  }
126
125
  interface SubscribeResult {
127
126
  subscription: string;
@@ -149,6 +148,14 @@ interface LogFilter {
149
148
  errors?: boolean;
150
149
  tail?: number;
151
150
  }
151
+ /** Complete retained output on the private local Desktop connection; slot and time bounds are applied by Desktop. */
152
+ interface DesktopLogFilter {
153
+ workspace: string;
154
+ sources?: LogSource[];
155
+ level?: LogLevel;
156
+ grep?: string;
157
+ errors?: boolean;
158
+ }
152
159
  /** One record as `stim logs --json` prints it. */
153
160
  type LogRecord = NdjsonRecord;
154
161
  interface LogsQueryResult {
@@ -162,6 +169,42 @@ interface WorkspaceParams {
162
169
  type StatsResult = Record<string, unknown>;
163
170
  /** `stim settings --json`; the CLI masks sensitive values. */
164
171
  type SettingsResult = Record<string, unknown>;
172
+ /** One settings mutation from the Desktop that started this server. Values use CLI text syntax. */
173
+ type DesktopSettingsWriteParams = {
174
+ cwd: string;
175
+ key: string;
176
+ scope?: SettingScope;
177
+ } & ({
178
+ action: "set";
179
+ value: string;
180
+ } | {
181
+ action: "unset";
182
+ });
183
+ /** A masked write result or the CLI's typed refusal; transport failures use the RPC error channel. */
184
+ type DesktopSettingsWriteResult = SettingWriteResult | {
185
+ code: string;
186
+ message: string;
187
+ remedy: string | null;
188
+ };
189
+ type DesktopReportTarget = {
190
+ report: "doctor";
191
+ cwd: string;
192
+ platform?: "ios" | "android";
193
+ } | {
194
+ report: "gc";
195
+ };
196
+ interface DesktopReportSnapshot {
197
+ pending: boolean;
198
+ value: Record<string, unknown> | null;
199
+ error?: string;
200
+ measuredAt?: string;
201
+ }
202
+ interface DesktopReportEvent {
203
+ event: "desktop-report";
204
+ subscription: string;
205
+ target: DesktopReportTarget;
206
+ snapshot: DesktopReportSnapshot;
207
+ }
165
208
  /** `web` is the workspace's Stim-owned Chrome page, from `stim web`; it has only the default slot. */
166
209
  declare const PLATFORMS: readonly ["ios", "android", "web", "macos"];
167
210
  type Platform = (typeof PLATFORMS)[number];
@@ -228,7 +271,7 @@ interface KeyframeParams {
228
271
  }
229
272
  /**
230
273
  * Plays recorded footage into a video subscription instead of the live screen: the frame at `at` (epoch
231
- * milliseconds on the Mac's clock) arrives at once, as the access units from the keyframe before it, then playback
274
+ * milliseconds on the machine's clock) arrives at once, as the access units from the keyframe before it, then playback
232
275
  * goes on at `rate` times real time. A `rate` of 0 stays paused on that frame. Time where nothing was recorded is
233
276
  * skipped.
234
277
  */
@@ -253,7 +296,7 @@ interface ReplayTarget {
253
296
  platform: Platform;
254
297
  slot?: string;
255
298
  }
256
- /** A time range with recorded footage, in epoch milliseconds on the Mac's clock. */
299
+ /** A time range with recorded footage, in epoch milliseconds on the machine's clock. */
257
300
  interface ReplaySpan {
258
301
  start: number;
259
302
  end: number;
@@ -281,6 +324,67 @@ interface ReplayRange {
281
324
  spans: ReplaySpan[];
282
325
  markers: ReplayMarker[];
283
326
  }
327
+ /** A workspace path from the workspace list. */
328
+ interface WorkspaceRef {
329
+ workspace: string;
330
+ }
331
+ /** The workspace list, all at once: every workspace's summary, the unprovisioned worktrees and the archives' summary. */
332
+ interface WorkspacesSnapshot {
333
+ workspaces: WorkspaceSummary[];
334
+ worktrees: WorktreeRow[];
335
+ archived: ArchivedSummary;
336
+ }
337
+ /**
338
+ * The workspace list of a `workspaces.subscribe` subscription. Its first event, `seq` 0, carries `snapshot`; each
339
+ * later one carries what changed since the previous event, `seq` one higher: whole workspaces and worktrees to insert or
340
+ * replace by `path`, the paths that are gone, and the archives' summary when it changed. A client that misses a `seq`
341
+ * subscribes again for a new snapshot.
342
+ */
343
+ interface WorkspacesEvent {
344
+ event: "workspaces";
345
+ subscription: string;
346
+ seq: number;
347
+ snapshot?: WorkspacesSnapshot;
348
+ workspaces?: KeyedDelta<WorkspaceSummary>;
349
+ worktrees?: KeyedDelta<WorktreeRow>;
350
+ archived?: ArchivedSummary;
351
+ }
352
+ /**
353
+ * One workspace, as `stim status --json` prints its environment, on subscribing and on every change to it. `environment`
354
+ * is null while no workspace has that path.
355
+ */
356
+ interface WorkspaceEvent {
357
+ event: "workspace";
358
+ subscription: string;
359
+ seq: number;
360
+ environment: EnvironmentState | null;
361
+ }
362
+ /** The machine on subscribing and on every change, with the usage history and own leases a `status` event carries. */
363
+ interface MachineEvent {
364
+ event: "machine";
365
+ subscription: string;
366
+ seq: number;
367
+ machine: MachineView;
368
+ usage?: UsageHistory;
369
+ /** `grantedAt` of the device leases this server holds for phones; absent when it holds none. */
370
+ ownLeases?: string[];
371
+ }
372
+ /** A workspace's full build history, newest first per platform. */
373
+ interface BuildsHistoryResult {
374
+ builds: EnvironmentState["builds"];
375
+ }
376
+ /** `before` is the `next` of the previous page; `limit` is at most {@link ARCHIVED_PAGE_LIMIT}. */
377
+ interface ArchivedListParams {
378
+ before?: string;
379
+ limit?: number;
380
+ }
381
+ declare const ARCHIVED_PAGE_LIMIT = 50;
382
+ /** A page of archives, newest removal first, the usage of all of them, and the cursor of the next page or null. */
383
+ interface ArchivedListResult {
384
+ archived: ArchivedWorkspace[];
385
+ usage: ArchivedUsage;
386
+ next: string | null;
387
+ }
284
388
  /** An archived[].id from status; the original workspace is not required. */
285
389
  interface ArchiveDetailParams {
286
390
  archive: string;
@@ -294,7 +398,7 @@ interface ArchiveDetailResult {
294
398
  spans: ReplaySpan[];
295
399
  }[];
296
400
  }
297
- /** A device slot, as {@link ReplayTarget} names it, and a time in epoch milliseconds on the Mac's clock. */
401
+ /** A device slot, as {@link ReplayTarget} names it, and a time in epoch milliseconds on the machine's clock. */
298
402
  interface ReplayKeyframeParams extends ReplayTarget {
299
403
  at: number;
300
404
  }
@@ -341,7 +445,7 @@ declare const VIDEO_ARTWORK = 32;
341
445
  /**
342
446
  * The layout of a binary video message, big-endian: u8 version ({@link VIDEO_HEADER_VERSION}), u8 flags
343
447
  * ({@link VIDEO_KEYFRAME}, posture bits and {@link VIDEO_ARTWORK}), u16 header length, u32 sequence number of the messages sent on this subscription, f64 capture time in milliseconds since the
344
- * epoch on the Mac's clock, u16 width, u16 height, u8 subscription id length N, N bytes of ASCII subscription
448
+ * epoch on the machine's clock, u16 width, u16 height, u8 subscription id length N, N bytes of ASCII subscription
345
449
  * id. After the header comes one Annex-B H.264 access unit; a keyframe carries its SPS and PPS. The stream has
346
450
  * no B-frames, so each access unit is shown as it arrives.
347
451
  */
@@ -499,11 +603,11 @@ interface BuildPlanParams {
499
603
  }
500
604
  /** `stim ios|android --plan --json`. It builds, boots and installs nothing, and writes no Stim state. */
501
605
  type BuildPlanResult = BuildPlanPayload;
502
- /** A client's repository on a remote Mac: letters, digits, `.`, `_` and `-`, at most 80. */
606
+ /** A client's repository on a remote machine: letters, digits, `.`, `_` and `-`, at most 80. */
503
607
  declare const BUILD_REPO_PATTERN = "^[A-Za-z0-9][A-Za-z0-9._-]{0,79}$";
504
608
  /** A version-manager Ruby installation name, without path separators. */
505
609
  declare const BUILD_RUBY_VERSION_PATTERN = "^(?!\\.{1,2}$)[^/\\\\\\u0000\\r\\n]+$";
506
- /** Asks a remote Mac what it can build, how busy it is, and how warm its copy of `repo` is. */
610
+ /** Asks a remote machine what it can build, how busy it is, and how warm its copy of `repo` is. */
507
611
  interface BuildOfferParams {
508
612
  repo: string;
509
613
  /** sha256 of the repository's lockfile, compared with the one the machine last installed from. */
@@ -511,10 +615,23 @@ interface BuildOfferParams {
511
615
  /** The project's normalized .ruby-version; absent uses the worker's default Ruby. */
512
616
  rubyVersion?: string;
513
617
  native?: "xcode" | "gradle";
618
+ artifact?: BuildArtifactIdentity;
619
+ }
620
+ /** A native Xcode identity whose key includes its complete inputs, target and toolchain. */
621
+ interface BuildArtifactIdentity {
622
+ fingerprint: string;
623
+ cacheKey: string;
624
+ }
625
+ interface CachedBuildArtifact extends BuildArtifactIdentity {
626
+ name: string;
627
+ size: number;
628
+ sha256: string;
514
629
  }
515
- /** The toolchain a build must match exactly on both Macs. */
630
+ /** The toolchain a build must match exactly on both machines. */
516
631
  interface BuildToolchain {
517
632
  stimBuild: string | null;
633
+ /** The OS stim-server runs on, as Node names it; absent from a stim-server older than this field. */
634
+ os?: string;
518
635
  arch: string;
519
636
  xcode: string | null;
520
637
  simulatorSdk: string | null;
@@ -532,7 +649,7 @@ interface BuildToolchain {
532
649
  } | null;
533
650
  }
534
651
  /**
535
- * How busy the remote Mac is. `running` counts offloaded builds and `max` is how many it runs at once.
652
+ * How busy the remote machine is. `running` counts offloaded builds and `max` is how many it runs at once.
536
653
  * `cpus`, `loadPerCore` (5-minute load average per CPU), `builds` (its own Stim native builds plus the offloaded
537
654
  * ones), `maxBuilds` (its `concurrency.maxBuilds`, 0 when unlimited), `maxLoadPerCore`, `memoryUsedBytes`
538
655
  * (Activity Monitor's Memory Used) and `memoryTotalBytes` are absent from a stim-server older than them. `declined` is why it would refuse a build now, null when it would take one.
@@ -559,6 +676,7 @@ interface BuildOfferResult {
559
676
  dependencies: boolean;
560
677
  build: boolean;
561
678
  };
679
+ artifact?: CachedBuildArtifact | null;
562
680
  }
563
681
  /** One file of the client's checkout. A `link` blob holds the symlink's target. */
564
682
  interface BuildFile {
@@ -647,7 +765,7 @@ interface BuildArtifactResult {
647
765
  size: number;
648
766
  sha256: string;
649
767
  /**
650
- * For a macOS job, a single-use token for the staged bundle this Mac keeps for a while, which a hosted session of a
768
+ * For a macOS job, a single-use token for the staged bundle this machine keeps for a while, which a hosted session of a
651
769
  * device-host client on the same tailnet node can take with `device-host.app.handoff`.
652
770
  */
653
771
  handoff?: string;
@@ -681,7 +799,7 @@ interface MachineVolume {
681
799
  interface MachineUsage {
682
800
  volumes: MachineVolume[];
683
801
  /**
684
- * `usedBytes` is the Mac's memory in use, as Activity Monitor's "Memory Used" counts it: app memory, wired and
802
+ * `usedBytes` is the machine's memory in use, as Activity Monitor's "Memory Used" counts it: app memory, wired and
685
803
  * compressed. `pressure` is the macOS memory pressure level. Both are null on other systems or when they cannot
686
804
  * be read.
687
805
  */
@@ -697,7 +815,7 @@ interface MachineUsage {
697
815
  cpus: number;
698
816
  };
699
817
  /**
700
- * `usage` is the Mac's overall CPU busy fraction (0..1), from the tick delta between this call and the
818
+ * `usage` is the machine's overall CPU busy fraction (0..1), from the tick delta between this call and the
701
819
  * previous one. Null on the first call of a server process, since there is no previous sample yet.
702
820
  */
703
821
  cpu: {
@@ -727,7 +845,7 @@ interface MachineHistory {
727
845
  samples: UsageSample[];
728
846
  }
729
847
  /**
730
- * The Mac's disk and build detail: the payloads of the `stim gc --json` dry run and of `stim stats --json`, both run in
848
+ * The machine's disk and build detail: the payloads of the `stim gc --json` dry run and of `stim stats --json`, both run in
731
849
  * the home directory. A part is null when its command failed, and its `gcError` or `statsError` says why.
732
850
  * `measuredAt` is when the commands started. The server keeps one result for 60 seconds, shared by every connection.
733
851
  */
@@ -737,7 +855,7 @@ interface MachineDetails {
737
855
  stats: Record<string, unknown> | null;
738
856
  statsError?: string;
739
857
  /**
740
- * `remoteMachines` from `stim doctor --json --platform ios`; empty when `remote.machines` names none. The reply
858
+ * `remoteMachines` from `stim doctor --json`; empty when `remote.machines` names none. The reply
741
859
  * never waits for doctor: `buildMachines` and `buildMachinesError` are the last result a background doctor run
742
860
  * settled, `buildMachinesAt` is when it settled, and `buildMachinesPending` is true while that result is stale
743
861
  * (or absent) and a refresh is running. A client that wants the refreshed result asks `machine.details` again.
@@ -747,8 +865,8 @@ interface MachineDetails {
747
865
  buildMachinesAt?: string;
748
866
  buildMachinesPending?: boolean;
749
867
  /**
750
- * The builds this Mac ran for other Macs, one entry per client, from the audit log. `today` is
751
- * this Mac's local calendar day. Absent from a server older than this field.
868
+ * The builds this machine ran for other machines, one entry per client, from the audit log. `today` is
869
+ * this machine's local calendar day. Absent from a server older than this field.
752
870
  */
753
871
  buildClients?: BuildClientSummary[];
754
872
  measuredAt: string;
@@ -824,7 +942,7 @@ interface QuietHours {
824
942
  /**
825
943
  * Asks the server to push this device's notifications through the Expo push service to `token`, an Expo push
826
944
  * token, for at least one event. Registering again replaces the previous registration. `ref` is echoed as
827
- * `data.ref` in every push, so the phone can tell which Mac sent it. `stuckMinutes` is how long a driven workspace
945
+ * `data.ref` in every push, so the phone can tell which machine sent it. `stuckMinutes` is how long a driven workspace
828
946
  * must show no activity to look stuck, 15 by default. `levels` sets each event's delivery; an event it leaves out
829
947
  * is silent. An older server ignores `levels`. `agentOnly` is accepted from older phones and ignored.
830
948
  */
@@ -919,7 +1037,7 @@ interface ServerUpdatePackage {
919
1037
  }
920
1038
  /**
921
1039
  * What `server.update.start` installs: an exact stim-server `release` from the public npm registry, or the
922
- * `packages` of a client's own build, which the Mac takes only while its `server.acceptClientBuilds` is true.
1040
+ * `packages` of a client's own build, which the machine takes only while its `server.acceptClientBuilds` is true.
923
1041
  */
924
1042
  type ServerUpdateStartParams = {
925
1043
  release: string;
@@ -968,8 +1086,8 @@ interface ServerUpdateStatus {
968
1086
  last: ServerUpdateOutcome | null;
969
1087
  }
970
1088
  /**
971
- * Where an update this Mac asked `machine` for stands: the host's own `server.update.status`, or why it could not be
972
- * read (`unreachable`, also while the host restarts), and how much of this Mac's build it has sent.
1089
+ * Where an update this machine asked `machine` for stands: the host's own `server.update.status`, or why it could not be
1090
+ * read (`unreachable`, also while the host restarts), and how much of this machine's build it has sent.
973
1091
  */
974
1092
  interface MachineUpdateStatus {
975
1093
  remote: ServerUpdateStatus | null;
@@ -1188,10 +1306,97 @@ interface Methods {
1188
1306
  params: HelloParams;
1189
1307
  result: HelloResult;
1190
1308
  };
1309
+ "desktop.authenticate": {
1310
+ params: {
1311
+ proof: string;
1312
+ };
1313
+ result: {
1314
+ authorized: true;
1315
+ };
1316
+ };
1317
+ "desktop.reports.get": {
1318
+ params: DesktopReportTarget;
1319
+ result: DesktopReportSnapshot;
1320
+ };
1321
+ "desktop.reports.subscribe": {
1322
+ params: DesktopReportTarget;
1323
+ result: SubscribeResult;
1324
+ };
1325
+ "desktop.reports.invalidate": {
1326
+ params?: Record<string, never>;
1327
+ result: Record<string, never>;
1328
+ };
1329
+ "desktop.settings.get": {
1330
+ params: {
1331
+ cwd: string;
1332
+ };
1333
+ result: SettingsResult;
1334
+ };
1335
+ "desktop.settings.write": {
1336
+ params: DesktopSettingsWriteParams;
1337
+ result: DesktopSettingsWriteResult;
1338
+ };
1339
+ "desktop.logs.subscribe": {
1340
+ params: DesktopLogFilter;
1341
+ result: SubscribeResult;
1342
+ };
1343
+ "desktop.doctor.run": {
1344
+ params: {
1345
+ cwd: string;
1346
+ platform?: "ios" | "android";
1347
+ };
1348
+ result: Record<string, unknown>;
1349
+ };
1350
+ "desktop.stop.subscribe": {
1351
+ params: {
1352
+ cwd: string;
1353
+ slot?: string;
1354
+ };
1355
+ result: SubscribeResult;
1356
+ };
1357
+ "desktop.reload.subscribe": {
1358
+ params: {
1359
+ cwd: string;
1360
+ platform?: ReloadPlatform;
1361
+ };
1362
+ result: SubscribeResult;
1363
+ };
1191
1364
  "status.subscribe": {
1192
1365
  params?: Record<string, never>;
1193
1366
  result: SubscribeResult;
1194
1367
  };
1368
+ "workspaces.subscribe": {
1369
+ params?: Record<string, never>;
1370
+ result: SubscribeResult;
1371
+ };
1372
+ "workspace.subscribe": {
1373
+ params: WorkspaceRef;
1374
+ result: SubscribeResult;
1375
+ };
1376
+ "machine.subscribe": {
1377
+ params?: Record<string, never>;
1378
+ result: SubscribeResult;
1379
+ };
1380
+ "builds.history": {
1381
+ params: WorkspaceRef;
1382
+ result: BuildsHistoryResult;
1383
+ };
1384
+ "archived.list": {
1385
+ params?: ArchivedListParams;
1386
+ result: ArchivedListResult;
1387
+ };
1388
+ "worktrees.list": {
1389
+ params?: Record<string, never>;
1390
+ result: {
1391
+ worktrees: WorktreeFacts[];
1392
+ };
1393
+ };
1394
+ "maintenance.get": {
1395
+ params?: Record<string, never>;
1396
+ result: {
1397
+ maintenance: MaintenanceStatus | null;
1398
+ };
1399
+ };
1195
1400
  "logs.query": {
1196
1401
  params: LogFilter;
1197
1402
  result: LogsQueryResult;
@@ -1340,6 +1545,13 @@ interface Methods {
1340
1545
  params: BuildJobParams;
1341
1546
  result: BuildArtifactResult;
1342
1547
  };
1548
+ "build.cached-artifact": {
1549
+ params: {
1550
+ repo: string;
1551
+ artifact: BuildArtifactIdentity;
1552
+ };
1553
+ result: CachedBuildArtifact | null;
1554
+ };
1343
1555
  "build.attach": {
1344
1556
  params: BuildJobParams;
1345
1557
  result: BuildAttachResult;
@@ -1531,7 +1743,37 @@ interface BuildProgressEvent {
1531
1743
  record?: Record<string, unknown>;
1532
1744
  outcome?: BuildJobOutcome;
1533
1745
  }
1534
- type ServerEvent = BuildProgressEvent | NotificationEvent | StatusEvent | LogsEvent | LogsEndedEvent | FrameEvent | DeviceFrameEvent | MacosWindowsEvent | FrameDelayedEvent | ReplayEndedEvent | ErrorEvent | ControlEndedEvent;
1746
+ /** Progress chunks from a private Desktop stop, before its terminal event. */
1747
+ interface DesktopStopProgressEvent {
1748
+ event: "desktop-stop-progress";
1749
+ subscription: string;
1750
+ stream: "stdout" | "stderr";
1751
+ message: string;
1752
+ }
1753
+ /** The stop's CLI-compatible JSON, exit status and human summary or refusal. */
1754
+ interface DesktopStopEndedEvent {
1755
+ event: "desktop-stop-ended";
1756
+ subscription: string;
1757
+ exitCode: 0 | 1;
1758
+ stdout: string;
1759
+ message: string;
1760
+ }
1761
+ /** Progress chunks from a private Desktop reload, before its terminal event. */
1762
+ interface DesktopReloadProgressEvent {
1763
+ event: "desktop-reload-progress";
1764
+ subscription: string;
1765
+ stream: "stdout" | "stderr";
1766
+ message: string;
1767
+ }
1768
+ /** The reload's CLI-compatible JSON, exit status and human summary or refusal. */
1769
+ interface DesktopReloadEndedEvent {
1770
+ event: "desktop-reload-ended";
1771
+ subscription: string;
1772
+ exitCode: 0 | 1;
1773
+ stdout: string;
1774
+ message: string;
1775
+ }
1776
+ type ServerEvent = DesktopReloadProgressEvent | DesktopReloadEndedEvent | DesktopStopProgressEvent | DesktopStopEndedEvent | DesktopReportEvent | BuildProgressEvent | NotificationEvent | StatusEvent | WorkspacesEvent | WorkspaceEvent | MachineEvent | LogsEvent | LogsEndedEvent | FrameEvent | DeviceFrameEvent | MacosWindowsEvent | FrameDelayedEvent | ReplayEndedEvent | ErrorEvent | ControlEndedEvent;
1535
1777
  type ServerMessage = ServerResponse | ServerEvent;
1536
1778
  type ServeRoute = {
1537
1779
  state: "routed";
@@ -1549,4 +1791,4 @@ type ServeRoute = {
1549
1791
  port: number;
1550
1792
  };
1551
1793
  //#endregion
1552
- export { FRAME_EDGE as $, TouchPhase as $n, Methods as $t, BuildToolchain as A, ReplayMarker as An, LOG_LEVELS as At, DEVICE_HOST_METHODS as B, ServerResponse as Bn, MAX_INPUT_TEXT as Bt, BuildPlanResult as C, ROTATE_DIRECTIONS as Cn, InputTextParams as Ct, BuildStartParams as D, ReplayEndedEvent as Dn, KeyModifier as Dt, BuildRequestAuth as E, ReloadPlatform as En, KEY_MODIFIERS as Et, ControlBeginParams as F, RotateDirection as Fn, LogRecord as Ft, DeviceHostRequestAuth as G, ServerUpdateStatus as Gn, MachineHistoryParams as Gt, DeviceAuth as H, ServerUpdatePackage as Hn, METHODS as Ht, ControlBeginResult as I, SERVER_UPDATE_METHODS as In, LogSource as It, DuoFramePose as J, SimulatorOptions as Jn, MachineVolume as Jt, DevicePosture as K, SettingsResult as Kn, MachineUpdateStatus as Kt, ControlEndParams as L, ServeRoute as Ln, LogsEndedEvent as Lt, CONTROL_END_REASONS as M, ReplaySpan as Mn, LegacyPushEvent as Mt, Capability as N, ReplayTarget as Nn, LogFilter as Nt, BuildSyncParams as O, ReplayKeyframe as On, KeyframeParams as Ot, ClientRequest as P, RequestId as Pn, LogLevel as Pt, FEATURES as Q, TOUCH_PHASES as Qn, Method as Qt, ControlEndedEvent as R, ServerEvent as Rn, LogsEvent as Rt, BuildPlanParams as S, REPLAY_RATES as Sn, InputSimulatorParams as St, BuildProgressEvent as T, RecordingSetResult as Tn, InputWindowParams as Tt, DeviceFrameArtwork as U, ServerUpdateProgress as Un, MachineDetails as Ut, DEVICE_POSTURES as V, ServerUpdateOutcome as Vn, MAX_LOG_TAIL as Vt, DeviceFrameEvent as W, ServerUpdateStartParams as Wn, MachineHistory as Wt, ErrorCode as X, StatusEvent as Xn, MacosWindowsEvent as Xt, ERROR_CODES as Y, StatsResult as Yn, MacosWindow as Yt, ErrorEvent as Z, SubscribeResult as Zn, MemoryPressure as Zt, BuildJobParams as _, PushEvent as _n, InputKey as _t, ArchiveDetailParams as a, NotificationSuppression as an, VIDEO_CODECS as ar, FramesLiveParams as at, BuildOfferParams as b, RELOAD_PLATFORMS as bn, InputRotateParams as bt, BUILD_REPO_PATTERN as c, NotificationsListResult as cn, VIDEO_KEYFRAME as cr, FramesSubscribeResult as ct, BuildArtifactResult as d, PROTOCOL_VERSION as dn, VideoPacket as dr, HelloResult as dt, NOTIFICATION_LEVELS as en, UnsubscribeParams as er, FRAME_FPS as et, BuildAttachResult as f, PUSH_EVENTS as fn, WorkspaceDiff as fr, HostedSessionRow as ft, BuildJobOutcome as g, ProtocolError as gn, WorkspacePatch as gr, InputButtonParams as gt, BuildFile as h, Platform as hn, WorkspaceParams as hr, InputButton as ht, ActionResult as i, NotificationLevel as in, VIDEO_ARTWORK as ir, FrameTarget as it, CAPABILITIES as j, ReplayRange as jn, LOG_SOURCES as jt, BuildSyncResult as k, ReplayKeyframeParams as kn, LEGACY_PUSH_EVENTS as kt, BUILD_RUBY_VERSION_PATTERN as l, PLATFORMS as ln, VIDEO_UNFOLDED as lr, GradleOffloadInputs as lt, BuildClientSummary as m, PairingAuth as mn, WorkspaceFiles as mr, INPUT_KEYS as mt, ActionName as n, NotificationEntry as nn, UsageSample as nr, FrameDelayedEvent as nt, ArchiveDetailResult as o, NotificationTarget as on, VIDEO_FOLDED as or, FramesSeekParams as ot, BuildCapacity as p, PUSH_TOKEN_PATTERN as pn, WorkspaceFile as pr, INPUT_BUTTONS as pt, DeviceUsageSeries as q, SimulatorCommand as qn, MachineUsage as qt, ActionParams as r, NotificationEvent as rn, UsageSeries as rr, FrameEvent as rt, BUILD_METHODS as s, NotificationsListParams as sn, VIDEO_HEADER_VERSION as sr, FramesSeekResult as st, ACTIONS as t, NOTIFICATION_SUPPRESSIONS as tn, UsageHistory as tr, Feature as tt, BuildAndroidOptions as u, PROTOCOL_SCHEMA_FILE as un, VideoCodec as ur, HelloParams as ut, BuildMachineCapacity as v, PushRegisterParams as vn, InputKeyParams as vt, BuildPlatform as w, RecordingSetParams as wn, InputTouchParams as wt, BuildOfferResult as x, REPLAY_MARKER_KINDS as xn, InputScrollParams as xt, BuildMachineReport as y, QuietHours as yn, InputPostureParams as yt, ControlPlatform as z, ServerMessage as zn, LogsQueryResult as zt };
1794
+ export { DesktopReportTarget as $, ServerMessage as $n, LogsQueryResult as $t, BuildStartParams as A, ProtocolError as An, WorkspaceParams as Ar, InputButtonParams as At, ControlBeginParams as B, ReloadPlatform as Bn, KEY_MODIFIERS as Bt, BuildMachineReport as C, NotificationsListResult as Cn, VIDEO_UNFOLDED as Cr, GradleOffloadInputs as Ct, BuildPlanResult as D, PUSH_EVENTS as Dn, WorkspaceEvent as Dr, INPUT_BUTTONS as Dt, BuildPlanParams as E, PROTOCOL_VERSION as En, WorkspaceDiff as Er, HostedSessionRow as Et, CAPABILITIES as F, REPLAY_MARKER_KINDS as Fn, InputScrollParams as Ft, DEVICE_HOST_METHODS as G, ReplayRange as Gn, LOG_SOURCES as Gt, ControlEndParams as H, ReplayKeyframe as Hn, KeyframeParams as Ht, CONTROL_END_REASONS as I, REPLAY_RATES as In, InputSimulatorParams as It, DesktopLogFilter as J, RequestId as Jn, LogLevel as Jt, DEVICE_POSTURES as K, ReplaySpan as Kn, LegacyPushEvent as Kt, CachedBuildArtifact as L, ROTATE_DIRECTIONS as Ln, InputTextParams as Lt, BuildSyncResult as M, PushRegisterParams as Mn, WorkspaceRef as Mr, InputKeyParams as Mt, BuildToolchain as N, QuietHours as Nn, WorkspacesEvent as Nr, InputPostureParams as Nt, BuildPlatform as O, PUSH_TOKEN_PATTERN as On, WorkspaceFile as Or, INPUT_KEYS as Ot, BuildsHistoryResult as P, RELOAD_PLATFORMS as Pn, WorkspacesSnapshot as Pr, InputRotateParams as Pt, DesktopReportSnapshot as Q, ServerEvent as Qn, LogsEvent as Qt, Capability as R, RecordingSetParams as Rn, InputTouchParams as Rt, BuildMachineCapacity as S, NotificationsListParams as Sn, VIDEO_KEYFRAME as Sr, FramesSubscribeResult as St, BuildOfferResult as T, PROTOCOL_SCHEMA_FILE as Tn, VideoPacket as Tr, HelloResult as Tt, ControlEndedEvent as U, ReplayKeyframeParams as Un, LEGACY_PUSH_EVENTS as Ut, ControlBeginResult as V, ReplayEndedEvent as Vn, KeyModifier as Vt, ControlPlatform as W, ReplayMarker as Wn, LOG_LEVELS as Wt, DesktopReloadProgressEvent as X, SERVER_UPDATE_METHODS as Xn, LogSource as Xt, DesktopReloadEndedEvent as Y, RotateDirection as Yn, LogRecord as Yt, DesktopReportEvent as Z, ServeRoute as Zn, LogsEndedEvent as Zt, BuildCapacity as _, NotificationEntry as _n, UsageSeries as _r, FrameEvent as _t, ActionResult as a, MachineHistory as an, ServerUpdateStatus as ar, DeviceFrameEvent as at, BuildJobOutcome as b, NotificationSuppression as bn, VIDEO_FOLDED as br, FramesSeekParams as bt, ArchivedListParams as c, MachineUsage as cn, SimulatorOptions as cr, DuoFramePose as ct, BUILD_REPO_PATTERN as d, MacosWindowsEvent as dn, SubscribeResult as dr, ErrorEvent as dt, MAX_INPUT_TEXT as en, ServerResponse as er, DesktopSettingsWriteParams as et, BUILD_RUBY_VERSION_PATTERN as f, MemoryPressure as fn, TOUCH_PHASES as fr, FEATURES as ft, BuildAttachResult as g, NOTIFICATION_SUPPRESSIONS as gn, UsageSample as gr, FrameDelayedEvent as gt, BuildArtifactResult as h, NOTIFICATION_LEVELS as hn, UsageHistory as hr, Feature as ht, ActionParams as i, MachineEvent as in, ServerUpdateStartParams as ir, DeviceFrameArtwork as it, BuildSyncParams as j, PushEvent as jn, WorkspacePatch as jr, InputKey as jt, BuildProgressEvent as k, Platform as kn, WorkspaceFiles as kr, InputButton as kt, ArchivedListResult as l, MachineVolume as ln, StatsResult as lr, ERROR_CODES as lt, BuildArtifactIdentity as m, Methods as mn, UnsubscribeParams as mr, FRAME_FPS as mt, ARCHIVED_PAGE_LIMIT as n, METHODS as nn, ServerUpdatePackage as nr, DesktopStopEndedEvent as nt, ArchiveDetailParams as o, MachineHistoryParams as on, SettingsResult as or, DevicePosture as ot, BuildAndroidOptions as p, Method as pn, TouchPhase as pr, FRAME_EDGE as pt, DesktopBootstrapChallenge as q, ReplayTarget as qn, LogFilter as qt, ActionName as r, MachineDetails as rn, ServerUpdateProgress as rr, DesktopStopProgressEvent as rt, ArchiveDetailResult as s, MachineUpdateStatus as sn, SimulatorCommand as sr, DeviceUsageSeries as st, ACTIONS as t, MAX_LOG_TAIL as tn, ServerUpdateOutcome as tr, DesktopSettingsWriteResult as tt, BUILD_METHODS as u, MacosWindow as un, StatusEvent as ur, ErrorCode as ut, BuildClientSummary as v, NotificationEvent as vn, VIDEO_ARTWORK as vr, FrameTarget as vt, BuildOfferParams as w, PLATFORMS as wn, VideoCodec as wr, HelloParams as wt, BuildJobParams as x, NotificationTarget as xn, VIDEO_HEADER_VERSION as xr, FramesSeekResult as xt, BuildFile as y, NotificationLevel as yn, VIDEO_CODECS as yr, FramesLiveParams as yt, ClientRequest as z, RecordingSetResult as zn, InputWindowParams as zt };