@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.
- package/dist/{core-BkgfKqJ8.mjs → core-DisO3hs1.mjs} +235 -59
- package/dist/{index-VDWBflH3.d.mts → index-_wkluvP_.d.mts} +324 -87
- package/dist/index.d.mts +69 -5
- package/dist/index.mjs +3 -3
- package/dist/keyed-delta-BBoOeR2J.mjs +289 -0
- package/dist/noise-DYIbymAJ.d.mts +100 -0
- package/dist/noise-session.d.mts +164 -0
- package/dist/noise-session.mjs +402 -0
- package/dist/noise.d.mts +2 -0
- package/dist/noise.mjs +393 -0
- package/dist/{ownership-claim-Xxxr9MPp.d.mts → ownership-claim-Bf8Lq6AY.d.mts} +2 -1
- package/dist/{ownership-claim-O31Y5iIb.mjs → ownership-claim-DHUs_Dir.mjs} +1 -1
- package/dist/ownership-claim.d.mts +2 -2
- package/dist/ownership-claim.mjs +2 -2
- package/dist/phone-protocol.d.mts +85 -16
- package/dist/phone-protocol.mjs +2 -2
- package/dist/{protocol-pH632kA3.d.mts → protocol-D8R_3dkO.d.mts} +307 -65
- package/dist/protocol.d.mts +2 -2
- package/dist/protocol.mjs +50 -10
- package/dist/receive-protocol.d.mts +1 -1
- package/dist/receive-protocol.mjs +19832 -14545
- package/dist/state.d.mts +2 -2
- package/dist/state.mjs +1122 -187
- package/dist/toolchain.d.mts +64 -0
- package/dist/toolchain.mjs +326 -0
- package/dist/workspace-link.d.mts +16 -0
- package/dist/workspace-link.mjs +50 -0
- package/package.json +21 -1
- package/dist/status-derived-C13g6eQt.mjs +0 -151
package/dist/phone-protocol.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
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 =
|
|
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
|
|
7
|
-
* project code here to build for it; it never comes with `read` or `control`, and only the
|
|
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
|
|
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; `
|
|
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", "
|
|
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
|
-
*
|
|
68
|
-
*
|
|
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
|
-
|
|
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
|
|
101
|
-
* user it runs as, so clients can show paths under it as `~/...`.
|
|
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
|
|
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
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
751
|
-
* this
|
|
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
|
|
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
|
|
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
|
|
972
|
-
* read (`unreachable`, also while the host restarts), and how much of this
|
|
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
|
-
|
|
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 {
|
|
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 };
|