@stim-cli/core 1.16.0 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,15 +17,23 @@ declare function parseNdjsonText(text: unknown): NdjsonRecord[];
17
17
  declare function readNdjsonGenerations(file: string): NdjsonRecord[];
18
18
  //#endregion
19
19
  //#region state/agent-actions.d.ts
20
- interface AgentTarget {
20
+ interface DeviceTarget {
21
21
  platform: "ios" | "android";
22
22
  id: string;
23
23
  slot: string;
24
24
  name?: string;
25
25
  }
26
+ type AgentTarget = DeviceTarget | {
27
+ platform: "macos";
28
+ id: string;
29
+ slot: string;
30
+ bundleId: string;
31
+ launchedAt: number;
32
+ };
26
33
  interface AgentActionReaderOptions {
27
34
  sessionsDirs: readonly string[] | (() => readonly string[]);
28
- targets?: AgentTarget[];
35
+ /** Re-resolved on every read, so a follower picks up a native launch that starts or restarts later. */
36
+ targets?: AgentTarget[] | (() => AgentTarget[]);
29
37
  sinceTs?: number;
30
38
  now?: () => number;
31
39
  claimedDevice?: (session: string, sessionsDir: string) => string | null;
@@ -35,7 +43,7 @@ interface AgentActionReaderOptions {
35
43
  * records are restricted to those devices; without targets, retained session metadata supplies attribution.
36
44
  * Missing directories and unreadable files yield no records.
37
45
  */
38
- declare function createAgentActionReader({ sessionsDirs, targets, sinceTs, now, claimedDevice }: AgentActionReaderOptions): () => NdjsonRecord[];
46
+ declare function createAgentActionReader({ sessionsDirs, targets: resolveTargets, sinceTs, now, claimedDevice }: AgentActionReaderOptions): () => NdjsonRecord[];
39
47
  //#endregion
40
48
  //#region state/agent-device-usage.d.ts
41
49
  interface AgentDeviceUsage {
@@ -139,7 +147,7 @@ declare function tryAcquireBuildSlotClaim({ max, details }: {
139
147
  /**
140
148
  * How busy this Mac is for native builds. `loadPerCore` is the 5-minute load average divided by the CPU count,
141
149
  * rounded to one decimal. `builds` counts this Stim home's runs that hold a live native-run claim and are in
142
- * prebuild, pods or compile here, not on a build machine, plus the build slots this Mac holds for other Macs'
150
+ * prebuild, pods or compile here, not on a remote Mac, plus the build slots this Mac holds for other Macs'
143
151
  * offloaded builds. `maxBuilds` is `concurrency.maxBuilds`, 0 when unlimited.
144
152
  */
145
153
  interface MachineCapacity {
@@ -155,7 +163,7 @@ declare function saturation(capacity: MachineCapacity): string | null;
155
163
  //#endregion
156
164
  //#region state/build-machines.d.ts
157
165
  /**
158
- * A build machine this Mac asked to build on. `machine` is the `offload.machines` entry; `nodeId` is the
166
+ * A remote Mac this Mac asked to build on. `machine` is the `remote.machines` entry; `nodeId` is the
159
167
  * worker's tailnet StableID pinned when the request was sent, which every later connection must match.
160
168
  */
161
169
  interface BuildMachineCredential {
@@ -265,20 +273,19 @@ interface StimConfig {
265
273
  metroCache?: unknown;
266
274
  };
267
275
  hosting?: {
268
- machines?: unknown;
269
276
  agentDriver?: unknown;
270
277
  };
271
278
  server?: {
272
279
  acceptClientBuilds?: unknown;
273
- };
274
- offload?: {
275
- machine?: unknown;
276
- machines?: unknown;
277
- mode?: unknown;
278
- workerRoot?: unknown;
279
280
  maxLoadPerCore?: unknown;
281
+ workerRoot?: unknown;
280
282
  gradleDaemonIdleMinutes?: unknown;
281
283
  };
284
+ remote?: {
285
+ machines?: unknown;
286
+ build?: unknown;
287
+ buildMode?: unknown;
288
+ };
282
289
  [key: string]: unknown;
283
290
  }
284
291
  type Config = StimConfig;
@@ -286,13 +293,21 @@ type Config = StimConfig;
286
293
  //#region state/config.d.ts
287
294
  declare function withConfigLock<T>(fn: () => T): T;
288
295
  declare function configCorruptRepair(path?: string): string;
289
- /** The build worker root: `offload.workerRoot` when it is absolute, else `$STIM_HOME/build-worker`. */
296
+ /** The build worker root: `server.workerRoot` when it is absolute, else `$STIM_HOME/build-worker`. */
290
297
  declare function buildWorkerRoot(config?: Config | null): string;
291
298
  declare function loadConfig(): Config | null;
292
299
  declare function getProject(projectPath: string): ProjectRecord | null;
293
300
  declare function getConcurrencyLimits({ env }?: {
294
301
  env?: NodeJS.ProcessEnv;
295
302
  }): ConcurrencyLimits;
303
+ interface ParkedMax {
304
+ max: number;
305
+ error: string | null;
306
+ }
307
+ declare function getParkedMax(platform: "ios" | "android", { config, env }?: {
308
+ config?: Config | null;
309
+ env?: NodeJS.ProcessEnv;
310
+ }): ParkedMax;
296
311
  declare function getProjectSettings(projectPath: string): Record<string, unknown>;
297
312
  declare function getProjectSetting(projectPath: string, dottedKey: string): unknown;
298
313
  declare function getRepoSettings(gitCommonDir: string): Record<string, unknown>;
@@ -473,10 +488,10 @@ declare function gitMergeCacheDir(): string;
473
488
  declare function pullRequestCacheDir(): string;
474
489
  declare function agentSessionsCacheFile(): string;
475
490
  declare function diskUsageCacheDir(): string;
476
- /** The build machines this Mac paired with, each with its pinned tailnet node and device token. */
491
+ /** The remote Macs this Mac paired with, each with its pinned tailnet node and device token. */
477
492
  declare function buildMachinesFile(): string;
478
493
  declare function buildMachinesLock(): string;
479
- /** The hosting machines this Mac asked for access, separate from build credentials. */
494
+ /** The remote Macs this Mac asked for access, separate from build credentials. */
480
495
  declare function deviceHostMachinesFile(): string;
481
496
  declare function deviceHostMachinesLock(): string;
482
497
  declare function deviceHostMachinesClaims(): string;
@@ -533,7 +548,7 @@ declare function openSegmentName(start: number): string;
533
548
  /** The segments in one device directory, oldest first. Files that are not segments are left out; `closedOnly` excludes files still being written. */
534
549
  declare function listSegments(dir: string, closedOnly?: boolean): RecordedSegment[];
535
550
  /** Every device slot recorded under a workspace's recordings directory. */
536
- declare function listRecordedDevices(recordingsDir: string): RecordedDevice[];
551
+ declare function listRecordedDevices(recordingsDir: string, closedOnly?: boolean): RecordedDevice[];
537
552
  declare function recordedBytes(devices: readonly RecordedDevice[]): number;
538
553
  /**
539
554
  * The oldest closed segments to delete so that one device keeps at most `footageMs` of footage. Time between
@@ -730,14 +745,14 @@ interface HostedMacosDevice extends HostedMacosChoice {
730
745
  }
731
746
  /**
732
747
  * The agent-device lease owner scope a client names on every request. `deviceKey` is `<bundleId>@<pid>`
733
- * for a macOS app, or `ios:mobile:<udid>` with `backend: ios-instance` for a hosted simulator.
748
+ * for a macOS app, or `ios:mobile:<udid>` with `backend: ios-instance` for a hosted simulator, or `android:mobile:<serial>` with `backend: android-instance` for a hosted emulator.
734
749
  */
735
750
  interface HostedAgentLease {
736
751
  tenant: string;
737
752
  runId: string;
738
753
  clientId: string;
739
754
  deviceKey: string;
740
- backend?: "ios-instance";
755
+ backend?: "ios-instance" | "android-instance";
741
756
  }
742
757
  /**
743
758
  * Agent control the host grants a client for one installed hosted app, sent only over that client's approved
@@ -832,6 +847,9 @@ type HostedNativeOffer = {
832
847
  memoryPressure: "normal" | "warning" | "critical" | null;
833
848
  /** Available bytes on the Stim home volume, not necessarily the Android AVD volume. */
834
849
  workerDiskFreeBytes: number | null;
850
+ localDevices?: number | {
851
+ unknown: string;
852
+ };
835
853
  };
836
854
  declined: string | null;
837
855
  } & ({
@@ -849,6 +867,9 @@ type HostedDeviceOffer = HostedNativeOffer & {
849
867
  running: number;
850
868
  max: number;
851
869
  available: number | null;
870
+ local?: number | {
871
+ unknown: string;
872
+ };
852
873
  };
853
874
  };
854
875
  interface HostedDeviceRequest extends HostedDeviceOfferRequest {
@@ -865,9 +886,14 @@ interface HostedDeviceSession extends HostedDeviceRequest {
865
886
  consolePort?: number;
866
887
  appSlot?: number;
867
888
  createdAt: string;
889
+ parked?: {
890
+ at: string;
891
+ };
868
892
  notice?: string;
869
893
  appAttempt?: string;
894
+ agent?: HostedAgentGrant;
870
895
  metroPort?: number;
896
+ clientMetroPort?: number;
871
897
  }
872
898
  declare function deviceHostRoot(): string;
873
899
  declare function deviceHostArea(id: string): string;
@@ -880,6 +906,9 @@ declare function parseHostedPlatformDevice(value: unknown, platform: HostedDevic
880
906
  declare function hostedDeviceId(device: HostedDevice): string;
881
907
  declare function parseHostedRequest(value: unknown): HostedDeviceRequest | null;
882
908
  declare function parseHostedOfferRequest(value: unknown): HostedDeviceOfferRequest | null;
909
+ declare function parseHostedLocalDeviceCount(value: unknown): number | {
910
+ unknown: string;
911
+ } | null;
883
912
  declare function parseHostedNativeOffer(value: unknown): HostedNativeOffer | null;
884
913
  /** A missing established journal or malformed record is a refusal, never an empty reservation set. */
885
914
  declare function readHostedSessions(): HostedDeviceSession[];
@@ -918,11 +947,13 @@ interface IdleStopRecord {
918
947
  idleMinutes: number;
919
948
  }
920
949
  declare function readIdleStop(state: WorkspaceState | null | undefined): IdleStopRecord | null;
950
+ declare const DEVICE_RECLAIM_REASON = "reclaimed for a waiting run";
921
951
  declare const DEVICE_IDLE_SHUTDOWN_KEY = "deviceIdleShutdowns";
922
- /** An owned simulator or emulator the supervisor shut down after `devices.idleShutdownMinutes` with no use. */
952
+ /** An owned simulator or emulator shut down after being idle. */
923
953
  interface DeviceIdleShutdownRecord {
924
954
  at: string;
925
955
  idleMinutes: number;
956
+ reason?: string;
926
957
  }
927
958
  /** The recorded idle shutdowns by device slot key (`ios`, `android`, `ios:<slot>`). */
928
959
  declare function readDeviceIdleShutdowns(state: WorkspaceState | null | undefined): Record<string, DeviceIdleShutdownRecord>;
@@ -976,9 +1007,10 @@ declare function parseMissReason(value: unknown): BuildMissReason | null;
976
1007
  * ones with a source position first.
977
1008
  */
978
1009
  declare function buildDiagnostics(value: unknown): BuildDiagnostic[];
1010
+ declare function readDevicePlacement(state: WorkspaceState | null, platform: StatsPlatform, slot?: string): DevicePlacement | null;
979
1011
  declare function readLastBuilds(state: WorkspaceState | null | undefined): Partial<Record<StatsPlatform, LastBuildReport>>;
980
1012
  /** Each platform's recorded runs, newest first, at most `BUILD_HISTORY_LIMIT` each. */
981
- declare function readBuildHistory(state: WorkspaceState | null | undefined): Partial<Record<StatsPlatform, BuildHistoryEntry[]>>;
1013
+ declare function readBuildHistory(state: WorkspaceState | null | undefined): Partial<Record<BuildPlatform, BuildHistoryEntry[]>>;
982
1014
  declare function readWorkspaceState(root: string): WorkspaceState | null;
983
1015
  declare function lastUseFrom(state: WorkspaceState | null, logMtimes: readonly number[]): number;
984
1016
  declare function workspaceLastUsed(root: string): number;
@@ -1009,18 +1041,47 @@ declare const WORKSPACE_AGENT_KEY = "agentSession";
1009
1041
  */
1010
1042
  declare function readWorkspaceAgent(state: WorkspaceState | null | undefined): AgentSession | null;
1011
1043
  //#endregion
1012
- //#region state/hosted-ios.d.ts
1013
- /** A workspace slot's placement; null device means its reservation has not reached ready yet. */
1014
- interface HostedIosPlacement {
1044
+ //#region state/hosted-native.d.ts
1045
+ interface HostedNativePlacement<D> {
1015
1046
  machine: string;
1016
1047
  session: string;
1017
1048
  appAttempt: string;
1018
- device: HostedIosDevice | null;
1049
+ device: D | null;
1019
1050
  selected: string;
1051
+ reason?: string;
1020
1052
  agent: HostedAgentAccess;
1021
1053
  }
1054
+ declare function parseHostedNativePlacement(value: unknown, platform: "ios"): HostedNativePlacement<HostedIosDevice> | null;
1055
+ declare function parseHostedNativePlacement(value: unknown, platform: "android"): HostedNativePlacement<HostedAndroidDevice> | null;
1056
+ declare function parseHostedNativePlacement(value: unknown, platform: "ios" | "android"): HostedNativePlacement<HostedIosDevice | HostedAndroidDevice> | null;
1057
+ declare function hostedNativeRecords(state: WorkspaceState | null, platform: "ios" | "android"): Record<string, unknown>;
1058
+ declare function unreadableHostedNative(slot: string, platform: "ios" | "android"): string;
1059
+ //#endregion
1060
+ //#region state/hosted-android.d.ts
1061
+ /** A workspace slot's placement; null device means its reservation has not reached ready yet. */
1062
+ interface HostedAndroidPlacement extends HostedNativePlacement<HostedAndroidDevice> {}
1063
+ /** Public hosting facts; the host's serial, AVD name and private Metro gateway are excluded. */
1064
+ type HostedAndroidStatus = Pick<HostedAndroidPlacement, "machine" | "session" | "selected" | "reason" | "agent"> & {
1065
+ device: {
1066
+ name: string;
1067
+ systemImage: string;
1068
+ api: number;
1069
+ } | null;
1070
+ /** The latest session probe in status, independent of a conflicting local emulator's state. */
1071
+ state?: string;
1072
+ };
1073
+ declare function parseHostedAndroidPlacement(value: unknown): HostedAndroidPlacement | null;
1074
+ declare function hostedAndroidStatus(placement: HostedAndroidPlacement): HostedAndroidStatus;
1075
+ declare function hostedAndroidRecords(state: WorkspaceState | null): Record<string, unknown>;
1076
+ declare function unreadableHostedAndroid(slot: string): string;
1077
+ declare function hostedAndroidPlacements(state: WorkspaceState | null): Record<string, HostedAndroidPlacement>;
1078
+ declare function hostedAndroidDeviceName(device: HostedAndroidDevice): string;
1079
+ //#endregion
1080
+ //#region state/hosted-ios.d.ts
1081
+ /** A workspace slot's placement; null device means its reservation has not reached ready yet. */
1082
+ interface HostedIosPlacement extends HostedNativePlacement<HostedIosDevice> {}
1022
1083
  /** Public hosting facts; the host's UDID and private Metro gateway are excluded. */
1023
- type HostedIosStatus = Pick<HostedIosPlacement, "machine" | "session" | "selected" | "agent"> & {
1084
+ type HostedIosStatus = Pick<HostedIosPlacement, "machine" | "session" | "selected" | "reason" | "agent"> & {
1024
1085
  device: {
1025
1086
  name: string;
1026
1087
  runtime: string;
@@ -1030,7 +1091,6 @@ type HostedIosStatus = Pick<HostedIosPlacement, "machine" | "session" | "selecte
1030
1091
  };
1031
1092
  declare function parseHostedIosPlacement(value: unknown): HostedIosPlacement | null;
1032
1093
  declare function hostedIosStatus(placement: HostedIosPlacement): HostedIosStatus;
1033
- /** Includes unreadable placements so callers retain every recorded hosting slot. */
1034
1094
  declare function hostedIosRecords(state: WorkspaceState | null): Record<string, unknown>;
1035
1095
  declare function unreadableHostedIos(slot: string): string;
1036
1096
  declare function hostedIosPlacements(state: WorkspaceState | null): Record<string, HostedIosPlacement>;
@@ -1183,6 +1243,7 @@ interface ArchivedUsage {
1183
1243
  }
1184
1244
  declare function readArchives(): ArchivedWorkspace[];
1185
1245
  declare function readArchive(id: string): ArchivedWorkspace | null;
1246
+ declare function readArchiveState(id: string): WorkspaceState | null;
1186
1247
  declare function archivedUsage(archives: readonly ArchivedWorkspace[]): ArchivedUsage;
1187
1248
  declare function linkReplacedArchives(archives: readonly ArchivedWorkspace[], paths: readonly string[]): ArchivedWorkspace[];
1188
1249
  declare function archiveEnabled(env: NodeJS.ProcessEnv, layers: readonly unknown[]): boolean;
@@ -1230,12 +1291,14 @@ declare function macosAppState(record: MacosAppRecord | null): MacosAppState | n
1230
1291
  //#endregion
1231
1292
  //#region state/status.d.ts
1232
1293
  type StatsPlatform = "ios" | "android";
1294
+ /** A platform whose build reports phases: the stats platforms and `macos`. */
1295
+ type BuildPlatform = StatsPlatform | "macos";
1233
1296
  type RunOutcomeKind = "hit" | "cold";
1234
1297
  declare const BUILD_PHASES: readonly ["prepare", "cache-lookup", "wait", "prebuild", "pods", "compile", "device", "install", "launch"];
1235
1298
  type BuildPhase = (typeof BUILD_PHASES)[number];
1236
1299
  type ActiveBuildState = "running" | "stale" | "unknown";
1237
1300
  /**
1238
- * Where a running build compiles: `local`, or the build machine it was offloaded to, with the phase it is in there
1301
+ * Where a running build compiles: `local`, or the remote Mac it was offloaded to, with the phase it is in there
1239
1302
  * (`sync`, `deps`, `prebuild`, `pods`, `build` or `fetch`) and when the offload and that phase started.
1240
1303
  */
1241
1304
  type BuildPlacement = "local" | {
@@ -1244,8 +1307,14 @@ type BuildPlacement = "local" | {
1244
1307
  startedAt: string;
1245
1308
  phaseStartedAt: string;
1246
1309
  };
1310
+ interface BuildWaitingFor {
1311
+ kind: "build-slot" | "device-slot";
1312
+ inUse: number;
1313
+ max: number;
1314
+ since: string;
1315
+ }
1247
1316
  interface BuildReport {
1248
- platform: StatsPlatform;
1317
+ platform: BuildPlatform;
1249
1318
  slot: string;
1250
1319
  state: ActiveBuildState;
1251
1320
  phase: BuildPhase;
@@ -1280,6 +1349,7 @@ interface BuildReport {
1280
1349
  waitingOn?: {
1281
1350
  path: string;
1282
1351
  };
1352
+ waitingFor?: BuildWaitingFor;
1283
1353
  }
1284
1354
  /** One phase a running build is expected to go through, and its median duration in comparable runs. */
1285
1355
  interface PlannedPhase {
@@ -1290,15 +1360,16 @@ interface PlannedPhase {
1290
1360
  declare const NATIVE_BUILD_STEPS: readonly ["configure", "compile", "link", "resources", "script", "dex", "package", "sign"];
1291
1361
  type NativeBuildStep = (typeof NATIVE_BUILD_STEPS)[number];
1292
1362
  /**
1293
- * A running build's progress as its tool reports it. `unit` is `targets` for xcodebuild and `tasks` for Gradle.
1294
- * xcodebuild's `done` counts targets it finished and `total` the targets in its dependency graph, which includes
1295
- * targets with nothing to do; Gradle's `done` counts the tasks it reported, with a null `total`. They are counts, not
1296
- * a completion fraction. `status` reports the detail only during the `compile` phase. `line` is
1363
+ * A running build's progress as its tool reports it. `unit` is `targets` for xcodebuild, `tasks` for Gradle and
1364
+ * `steps` for SwiftPM. xcodebuild's `done` counts targets it finished and `total` the targets in its dependency graph,
1365
+ * which includes targets with nothing to do; Gradle's `done` counts the tasks it reported, with a null `total`;
1366
+ * SwiftPM's `done` and `total` are the `[done/total]` of its latest progress line, and its total can grow while it
1367
+ * builds. They are counts, not a completion fraction. `status` reports the detail only during the `compile` phase. `line` is
1297
1368
  * the latest compile, link or task line with paths shortened to file names.
1298
1369
  */
1299
1370
  interface BuildDetail {
1300
1371
  step: NativeBuildStep | null;
1301
- unit: "targets" | "tasks" | null;
1372
+ unit: "targets" | "tasks" | "steps" | null;
1302
1373
  done: number | null;
1303
1374
  total: number | null;
1304
1375
  line: string | null;
@@ -1307,8 +1378,14 @@ interface BuildDetail {
1307
1378
  /** Where a build's app came from: a cache tier, or `false` when it compiled or failed before one was found. */
1308
1379
  type BuildCacheHit = "local" | "remote" | false;
1309
1380
  /** A platform's most recent `ios` or `android` run in one workspace. */
1381
+ interface DevicePlacement {
1382
+ decision: "local" | "hosted" | "waited-locally";
1383
+ reason: string;
1384
+ machine?: string;
1385
+ }
1310
1386
  interface LastBuildReport {
1311
- platform: StatsPlatform;
1387
+ devicePlacement?: DevicePlacement;
1388
+ platform: BuildPlatform;
1312
1389
  status: "ok" | "failed";
1313
1390
  cacheHit: BuildCacheHit;
1314
1391
  cacheSkipped: boolean;
@@ -1322,7 +1399,7 @@ interface LastBuildReport {
1322
1399
  buildMachine?: string;
1323
1400
  /** Where compilation ran: here or a machine name; absent when no build ran. */
1324
1401
  builtOn?: string;
1325
- /** The build machine that compiled the app when the build was offloaded. */
1402
+ /** The remote Mac that compiled the app when the build was offloaded. */
1326
1403
  offloadedTo?: string;
1327
1404
  /** Why the run built here after it considered offloading; absent when it offloaded or never considered it. */
1328
1405
  offloadFallback?: string;
@@ -1703,6 +1780,7 @@ interface MetroBundleState {
1703
1780
  };
1704
1781
  }
1705
1782
  interface SimulatorState {
1783
+ devicePlacement?: DevicePlacement;
1706
1784
  host?: HostedIosStatus;
1707
1785
  name: string | null;
1708
1786
  udid: string;
@@ -1713,24 +1791,28 @@ interface SimulatorState {
1713
1791
  appPresence?: AppPresence;
1714
1792
  /** The simulator's data folder, for an owned simulator once measured. */
1715
1793
  disk?: DiskMeasure;
1716
- /** Present while the device is not booted after the supervisor shut it down for `devices.idleShutdownMinutes`. */
1794
+ /** Present while the device is not booted after idle shutdown or queue reclaim. */
1717
1795
  idleShutdown?: DeviceIdleShutdownRecord;
1718
1796
  }
1719
1797
  interface AndroidDeviceState {
1798
+ devicePlacement?: DevicePlacement;
1799
+ host?: HostedAndroidStatus;
1720
1800
  name: string | undefined;
1721
1801
  owned: boolean;
1722
1802
  physical: boolean;
1723
1803
  serial?: string | null;
1724
- state?: AndroidRuntimeFacts["state"];
1804
+ state?: AndroidRuntimeFacts["state"] | "ready" | "stopped" | "unverified";
1725
1805
  deviceProfile?: string | null;
1726
1806
  activity?: DeviceActivity;
1727
1807
  app?: DeviceAppProcess;
1728
1808
  appPresence?: AppPresence;
1729
1809
  /** The AVD's folder, for an owned emulator once measured. */
1730
1810
  disk?: DiskMeasure;
1731
- /** Present while the emulator is not running after the supervisor shut it down for `devices.idleShutdownMinutes`. */
1811
+ /** Present while the emulator is not running after idle shutdown or queue reclaim. */
1732
1812
  idleShutdown?: DeviceIdleShutdownRecord;
1733
1813
  }
1814
+ /** The tutorial format version the installed Stim writes into the tutorial app. */
1815
+ declare const TUTORIAL_VERSION = 1;
1734
1816
  interface EnvironmentState {
1735
1817
  slots?: {
1736
1818
  slot: string;
@@ -1740,6 +1822,10 @@ interface EnvironmentState {
1740
1822
  path: string;
1741
1823
  /** Statically detected app platforms; always set by status, empty when none are detected. */
1742
1824
  platforms?: string[];
1825
+ /** Present when the app's app.json sets expo.extra.stimTutorial to a positive integer: that version. */
1826
+ tutorial?: {
1827
+ version: number;
1828
+ };
1743
1829
  live: boolean;
1744
1830
  phase?: WorkspacePhase;
1745
1831
  /** When the warm started (`warming`) or finished (`ready`); null for `live` and `idle`. */
@@ -1804,7 +1890,7 @@ interface EnvironmentState {
1804
1890
  build?: BuildReport | null;
1805
1891
  lastBuilds?: Partial<Record<StatsPlatform, LastBuildReport>>;
1806
1892
  /** Each platform's recent runs, newest first, at most `BUILD_HISTORY_LIMIT` each. */
1807
- builds?: Partial<Record<StatsPlatform, BuildHistoryEntry[]>>;
1893
+ builds?: Partial<Record<BuildPlatform, BuildHistoryEntry[]>>;
1808
1894
  disk?: EnvironmentDisk;
1809
1895
  /** The coding-agent sessions working in the environment, most recently active first; absent when none. */
1810
1896
  agents?: AgentSession[];
@@ -1940,7 +2026,7 @@ declare function readAgentSessionsCache(): AgentSessionsCache | null;
1940
2026
  //#region state/stim-build.d.ts
1941
2027
  /**
1942
2028
  * A digest of Stim's built code: the first 16 hex characters of the sha256 over the sorted `*.mjs` names and
1943
- * bytes of a `stim` `dist` directory. A client and a build machine offload only when both compute the same one.
2029
+ * bytes of a `stim` `dist` directory. A client and a remote Mac offload only when both compute the same one.
1944
2030
  */
1945
2031
  declare function stimBuildDigest(dir: string): string | null;
1946
2032
  //#endregion
@@ -1991,7 +2077,7 @@ interface RunSample {
1991
2077
  deviceSetup?: boolean;
1992
2078
  }
1993
2079
  type RunHistory = Partial<Record<StatsPlatform, Partial<Record<RunOutcomeKind, RunSample[]>>>>;
1994
- /** Where a compiling build ran: here, on a build machine, or here after offloading it failed. */
2080
+ /** Where a compiling build ran: here, on a remote Mac, or here after offloading it failed. */
1995
2081
  declare const PLACEMENT_DECISIONS: readonly ["here", "offloaded", "fell-back"];
1996
2082
  type PlacementDecision = (typeof PLACEMENT_DECISIONS)[number];
1997
2083
  interface StatsPlacement {
@@ -2003,10 +2089,33 @@ interface StatsPlacement {
2003
2089
  machine?: string;
2004
2090
  buildMs?: number;
2005
2091
  slotWaitMs?: number;
2092
+ deviceSlotWaitMs?: number;
2006
2093
  /** The project's last cold build here before this run. */
2007
2094
  localEstimateMs?: number;
2008
2095
  failed?: true;
2009
2096
  }
2097
+ declare const CAPACITY_REFUSAL_LIMIT = 50;
2098
+ declare const CAPACITY_REFUSAL_MAX_AGE_MS: number;
2099
+ interface StatsCapacityRefusal {
2100
+ at: string;
2101
+ kind: "device";
2102
+ platform: StatsPlatform;
2103
+ max: number;
2104
+ workspace: string;
2105
+ }
2106
+ interface StatsCapacityWait {
2107
+ at: string;
2108
+ kind: "device-wait";
2109
+ reclaimed?: number;
2110
+ platform: StatsPlatform;
2111
+ ms: number;
2112
+ max: number;
2113
+ workspace: string;
2114
+ }
2115
+ declare function trimCapacityRefusals<T extends {
2116
+ at: string;
2117
+ }>(events: T[], now: number): T[];
2118
+ declare const trimCapacityWaits: (events: StatsCapacityWait[], now: number) => StatsCapacityWait[];
2010
2119
  interface BuildMachineTotals {
2011
2120
  offloaded: number;
2012
2121
  offloadedMs: number;
@@ -2022,6 +2131,8 @@ interface StatsRecord {
2022
2131
  projects: Record<string, StatsScope>;
2023
2132
  history?: Record<string, RunHistory>;
2024
2133
  placements?: StatsPlacement[];
2134
+ capacityRefusals?: StatsCapacityRefusal[];
2135
+ capacityWaits?: StatsCapacityWait[];
2025
2136
  buildMachines?: Record<string, BuildMachineTotals>;
2026
2137
  }
2027
2138
  /**
@@ -2085,6 +2196,8 @@ interface StatsReport {
2085
2196
  android: StatsBucket | null;
2086
2197
  };
2087
2198
  offload: OffloadSummary;
2199
+ capacityRefusals?: StatsCapacityRefusal[];
2200
+ capacityWaits?: StatsCapacityWait[];
2088
2201
  agentDevice: AgentDeviceUsage | null;
2089
2202
  swiftpmCache: SwiftpmCacheUsage | null;
2090
2203
  }
@@ -2095,7 +2208,7 @@ declare function readStatsReport(key: string | null, now: number): {
2095
2208
  declare function findProjectRoot(startDir: string): string | null;
2096
2209
  //#endregion
2097
2210
  //#region state/device-host-machines.d.ts
2098
- /** A separately approved hosting machine, pinned before sending its device token. */
2211
+ /** A separately approved remote Mac, pinned before sending its device token. */
2099
2212
  interface DeviceHostMachineCredential {
2100
2213
  machine: string;
2101
2214
  nodeId: string;
@@ -2171,7 +2284,7 @@ type HostedLogsCursor = Record<string, number>;
2171
2284
  interface HostedLogsPage {
2172
2285
  records: NdjsonRecord[];
2173
2286
  cursor: HostedLogsCursor;
2174
- /** Last completed iOS collection window, for detecting catch-up progress independently of file offsets. */
2287
+ /** Last completed native collection window, for detecting catch-up progress independently of file offsets. */
2175
2288
  checkpoint?: number;
2176
2289
  /** True when the budget ended this page before the end of the logs; ask again with `cursor`. */
2177
2290
  more: boolean;
@@ -2180,12 +2293,14 @@ declare const HOSTED_LOGS_PAGE_BYTES: number;
2180
2293
  declare const HOSTED_LOGS_FIRST_BYTES: number;
2181
2294
  declare function parseHostedLogsCursor(value: unknown): HostedLogsCursor | null;
2182
2295
  declare function hostedMacosLogsDir(home: string): string | null;
2183
- declare const hostedIosLogsDir: (home: string) => string;
2296
+ declare const hostedNativeLogsDir: (home: string, platform: "ios" | "android") => string;
2184
2297
  /** The completed query window and overlap digests, or null for a missing, malformed or unreadable checkpoint. */
2185
- declare function readHostedIosLogsCheckpoint(home: string): {
2298
+ declare function readHostedNativeLogsCheckpoint(home: string, platform?: "ios" | "android"): {
2186
2299
  until: number;
2187
2300
  boundary: string[];
2188
2301
  windowMs?: number;
2302
+ appAttempt?: string;
2303
+ pid?: number;
2189
2304
  } | null;
2190
2305
  /**
2191
2306
  * The records in `dir` after `cursor`, in file order. A file without a cursor entry starts at most
@@ -2225,4 +2340,4 @@ declare function readSetupJournal(hash: string): SetupJournal | null;
2225
2340
  declare function isJournalExpired(journal: SetupJournal, now?: number): boolean;
2226
2341
  declare function isSetupJournalPrunable(journal: SetupJournal, now: number): boolean;
2227
2342
  //#endregion
2228
- export { trimSamples as $, createdDevicesLock as $a, validHostedAppBlob as $i, MaintenanceAction as $n, queryLogs as $o, HostedDevicePhase as $r, AgentDeviceUsageRoots as $s, EnvironmentDisk as $t, DeviceHostMachineCredential as A, RECORDING_CAP_BYTES as Aa, HostedMacosDevice as Ai, WebBrowserState as An, workspaceEndedAgentsFile as Ao, READY_PHASE_MS as Ar, withConfigLock as As, AndroidRuntimeFacts as At, STATS_VERSION as B, listSegments as Ba, HostedAppDelivery as Bi, MacosProcess as Bn, NATIVE_CRASH_LOG_PREFIX as Bo, readDevServerStopRequest as Br, SupervisorRecord as Bs, BuildMissChange as Bt, pinnedEndpoint as C, acceptsShape as Ca, HOSTED_MACOS_APP_SLOTS as Ci, StatusIssue as Cn, sharedPods as Co, DevServerStopRecord as Cr, getConcurrencyLimits as Cs, APP_PROCESS_STATES as Ct, HostedMetroRequest as D, isSensitiveReference as Da, HostedAgentLease as Di, WORKSPACE_PHASES as Dn, workspaceAgentDeviceDir as Do, IdleStopRecord as Dr, getRepoSettings as Ds, AgentSession as Dt, HostedMetroGateway as E, isLayeredSetting as Ea, HostedAgentGrant as Ei, WEB_PAGE_STATES as En, supervisorPidFile as Eo, IDLE_STOP_KEY as Er, getProjectSettings as Es, ActivityRecencyBasis as Et, PLACEMENT_DECISIONS as F, RecordingPlatform as Fa, parseHostedAgentGrant as Fi, WorktreeGit as Fn, workspaceMetadataFile as Fo, buildDiagnostics as Fr, PlatformRecords as Fs, BuildCause as Ft, StatsScope as G, agentSessionsCacheFile as Ga, hostedAppAttempt as Gi, ArchivedBytes as Gn, bundleMarkerPlatform as Go, readWorkspaceAgent as Gr, buildSlotsDir as Gs, BuildReport as Gt, StatsPlacement as H, recordedBytes as Ha, HostedAppOffer as Hi, parseMacosRecord as Hn, advanceTail as Ho, readIdleStop as Hr, readBuildMachines as Hs, BuildPhase as Ht, ReadStatsResult as I, capDrops as Ia, parseHostedMacosChoice as Ii, WorktreePullRequest as In, workspaceRecordingsDir as Io, lastUseFrom as Ir, ProjectRecord as Is, BuildDetail as It, offloadSummary as J, archiveRoot as Ja, parseHostedAppOffer as Ji, archiveEnabled as Jn, followLogs as Jo, HostedAndroidChoice as Jr, tryAcquireBuildSlotClaim as Js, DeviceActivity as Jt, decodeStats as K, archiveDir as Ka, hostedAppBlobs as Ki, ArchivedUsage as Kn, compileGrep as Ko, readWorkspaceState as Kr, machineCapacity as Ks, BuildResult as Kt, RunEstimates as L, closedSegmentName as La, parseHostedMacosDevice as Li, MacosAppRecord as Ln, workspaceStateFile as Lo, parseMissReason as Lr, RepoRecord as Ls, BuildDiagnostic as Lt, BuildMachineTotals as M, RECORDING_PLATFORMS as Ma, hostedMacosAppSlot as Mi, WorkspacePhase as Mn, workspaceGradleBuild as Mo, WORKSPACE_AGENT_KEY as Mr, Config as Ms, BUILD_PHASES as Mt, HISTORY_LIMIT as N, RecordedDevice as Na, hostedMacosBundleId as Ni, WorkspaceStage as Nn, workspaceLogErrorIndex as No, WarmRecord as Nr, DeviceRecord as Ns, BUILD_RESULTS as Nt, hostedMetroGateways as O, settingDefinition as Oa, HostedAppLaunch as Oi, WORKSPACE_STAGE_KINDS as On, workspaceBuildDetailFile as Oo, LAST_BUILD_KEYS as Or, isPathPrefix as Os, AgentTool as Ot, OffloadSummary as P, RecordedSegment as Pa, parseHostedAgentAccess as Pi, WorktreeFacts as Pn, workspaceLogsDir as Po, WorkspaceState as Pr, DoctorRunRecord as Ps, BuildCacheHit as Pt, statsProjectKey as Q, createdDevicesFile as Qa, validHostedAppArguments as Qi, readArchives as Qn, queryJsonLogs as Qo, HostedDeviceOfferRequest as Qr, AgentDeviceUsage as Qs, EndedAgentSession as Qt, RunHistory as R, footageDrops as Ra, parseHostedMacosPlacement as Ri, MacosAppState as Rn, workspaceStateLock as Ro, readBuildHistory as Rr, SettingsObject as Rs, BuildHistoryEntry as Rt, parseMachine as S, WebViewport as Sa, HOSTED_AGENT_DRIVERS as Si, StatusCapacity as Sn, sharedGradle as So, DEV_SERVER_STOP_REQUEST_KEY as Sr, findProjectByMetroPort as Ss, AGENT_TOOLS as St, HOSTED_METRO_REQUESTS_KEY as T, expectedShape as Ta, HostedAgentDriverName as Ti, StatusPayload as Tn, supervisorLogFile as To, DeviceIdleShutdownRecord as Tr, getProjectSetting as Ts, ActivityDriver as Tt, StatsRecord as U, recordingDeviceName as Ua, HostedAppRecord as Ui, readHostedMacosApp as Un, attachExpoErrorContext as Uo, readLastBuilds as Ur, MachineCapacity as Us, BuildPlacement as Ut, StatsBucket as V, openSegmentName as Va, HostedAppFile as Vi, macosAppState as Vn, QueryCriteria as Vo, readDeviceIdleShutdowns as Vr, BuildMachineCredential as Vs, BuildMissReason as Vt, StatsReport as W, recordingEnabled as Wa, hostedAppArea as Wi, readMacosRecord as Wn, buildCriteria as Wo, readWarmRecord as Wr, buildSlotPath as Ws, BuildPlanPayload as Wt, readStats as X, buildMachinesLock as Xa, readHostedAppMetadata as Xi, linkReplacedArchives as Xn, markerWindow as Xo, HostedDevice as Xr, readSwiftpmCacheUsage as Xs, DeviceLeaseState as Xt, readRunEstimates as Y, buildMachinesFile as Ya, readHostedApp as Yi, archivedUsage as Yn, logFiles as Yo, HostedAndroidDevice as Yr, SwiftpmCacheUsage as Ys, DeviceAppProcess as Yt, readStatsReport as Z, configLockPath as Za, rememberHostedAppBlobRename as Zi, readArchive as Zn, parseSince as Zo, HostedDeviceOffer as Zr, swiftpmCacheUsageFile as Zs, DiskMeasure as Zt, Endpoint as _, SettingType as _a, parseHostedPlatformDevice as _i, RemoteDeviceState as _n, pullRequestCacheDir as _o, parseHostedIosPlacement as _r, withStateReadCache as _s, readEndedAgentSessions as _t, parseSetupJournal as a, ANDROID_PCH_CHOICES as aa, createAgentActionReader as ac, HostedIosDevice as ai, MEMORY_SOURCES as an, easMachineStateRoot as ao, MaintenanceRecord as ar, countErrorEntries as as, AgentSessionsCache as at, endpoint as b, TunnelMode as ba, readHostedDeviceLedger as bi, SimulatorState as bn, sharedCcache as bo, BUILD_HISTORY_LIMIT as br, configCorruptRepair as bs, withGitChip as bt, HOSTED_LOGS_FIRST_BYTES as c, OffloadMode as ca, SOURCES as cc, deviceHostArea as ci, MachineUsageState as cn, emulatorLogFile as co, MaintenanceStatus as cr, EasSessionClaim as cs, StatusCacheEntry as ct, HostedLogsPage as d, SETTINGS as da, parseNdjsonText as dc, hostedDeviceId as di, NATIVE_BUILD_STEPS as dn, maintenanceAttemptFile as do, readMaintenanceState as dr, readEasSessionLedger as ds, endedAgentSessionOf as dt, SETTINGS_SCHEMA_FILE as ea, agentDeviceUsageFile as ec, HostedDevicePlatform as ei, EnvironmentState as en, deviceHostMachinesClaims as eo, MaintenanceActionKind as er, readLogRecords as es, wholePhases as et, hostedIosLogsDir as f, SETTING_GROUPS as fa, readNdjsonGenerations as fc, parseHostedAndroidDevice as fi, NativeBuildStep as fn, maintenanceChildLogFile as fo, HostedIosPlacement as fr, validEasSessionClaim as fs, listStatusCacheEntries as ft, readLogsSince as g, SettingScope as ga, parseHostedOfferRequest as gi, PlannedPhase as gn, maintenanceStateFile as go, hostedIosStatus as gr, readStateFile as gs, readDiskUsage as gt, readHostedIosLogsCheckpoint as h, SettingEntry as ha, parseHostedNativeOffer as hi, PhysicalDeviceState as hn, maintenanceRunClaims as ho, hostedIosRecords as hr, readJsonObject as hs, readBuildDetail as ht, isSetupJournalPrunable as i, ANDROID_EMULATOR_APPS as ia, AgentTarget as ic, HostedIosChoice as ii, MACHINE_OWNER_KINDS as in, diskUsageCacheDir as io, MaintenancePressure as ir, tailRead as is, stimBuildDigest as it, readDeviceHostMachines as j, RECORDING_FOOTAGE_MS as ja, HostedMacosPlacement as ji, WebPageState as jn, workspaceEndedAgentsLock as jo, WARM_KEY as jr, ConcurrencyLimits as js, AppPresence as jt, hostedMetroRequests as k, settingValueError as ka, HostedMacosChoice as ki, WarmStep as kn, workspaceDerivedData as ko, MetroLastStop as kr, loadConfig as ks, AndroidDeviceState as kt, HOSTED_LOGS_PAGE_BYTES as l, REMOTE_DEVICE_BACKENDS as la, levelRank as lc, deviceHostRoot as li, MemorySource as ln, getConfigPath as lo, parseMaintenanceState as lr, EasSessionLedgerRead as ls, agentSessionOf as lt, parseHostedLogsCursor as m, SettingDefinition as ma, parseHostedDevice as mi, PhysicalDeviceConnection as mn, maintenanceNdjsonFile as mo, hostedIosPlacements as mr, readJsonFile as ms, readAgentSessionsCache as mt, SetupJournal as n, settingsJsonSchema as na, readAgentDeviceUsageCache as nc, HostedDeviceSelectors as ni, GitChipPart as nn, deviceHostMachinesLock as no, MaintenanceMode as nr, recordMatches as ns, ViewedDevice as nt, readSetupJournal as o, IOS_SIMULATOR_APPS as oa, LEVELS as oc, HostedNativeOffer as oi, MachineOwner as on, easSessionLedgerFile as oo, MaintenanceSize as or, CreatedDevicePlatform as os, ENDED_AGENT_RETENTION_MS as ot, hostedMacosLogsDir as p, SETTING_SCOPES as pa, parseHostedChoice as pi, PHYSICAL_DEVICE_CONNECTIONS as pn, maintenanceDir as po, HostedIosStatus as pr, isJsonObject as ps, pullRequestCacheFile as pt, findProjectRoot as q, archiveLock as qa, parseHostedAppManifest as qi, ArchivedWorkspace as qn, fileSizes as qo, workspaceLastUsed as qr, saturation as qs, ChecksState as qt, isJournalExpired as r, ANDROID_COMPILER_CACHE_CHOICES as ra, AgentActionReaderOptions as rc, HostedDeviceSession as ri, LastBuildReport as rn, deviceViewersDir as ro, MaintenancePass as rr, sortByTs as rs, readViewedDevices as rt, agentDeviceStateDirs as s, OFFLOAD_MODES as sa, NdjsonRecord as sc, assertHostedDeviceLedger as si, MachineOwnerKind as sn, easSessionLedgerLock as so, MaintenanceState as sr, CreatedDevices as ss, PullRequestCacheEntry as st, SetupCapability as t, SETTINGS_SCHEMA_URL as ta, readAgentDeviceUsage as tc, HostedDeviceRequest as ti, GitChip as tn, deviceHostMachinesFile as to, MaintenanceCheck as tr, readLogTimeline as ts, DeviceViewersRecord as tt, HostedLogsCursor as u, RemoteDeviceBackend as ua, parseNdjsonLine as uc, hostedConsolePort as ui, MetroBundleState as un, gitMergeCacheDir as uo, readMaintenanceAttempt as ur, readCreatedDevices as us, diskUsageCacheFile as ut, TAILNET_MACHINE_PATTERN as v, SettingsPayload as va, parseHostedRequest as vi, RunOutcomeKind as vn, serverSetupDir as vo, unreadableHostedIos as vr, allMetroPorts as vs, readPullRequestCache as vt, HOSTED_METRO_GATEWAYS_KEY as w, coerceSettingText as wa, HostedAgentAccess as wi, StatusIssueCode as wn, statsFile as wo, DevServerStopRequest as wr, getProject as ws, ActiveBuildState as wt, findPeer as x, WEB_VIEWPORTS as xa, readHostedSessions as xi, StatsPlatform as xn, sharedCompilationCache as xo, DEVICE_IDLE_SHUTDOWN_KEY as xr, findEnclosingWorktreeRoot as xs, ACTIVITY_RECENCY_BASES as xt, TailnetPeer as y, TUNNEL_MODES as ya, readHostedDevice as yi, STATUS_ISSUE_CODES as yn, setupJournalFile as yo, BUILD_HISTORY_KEY as yr, buildWorkerRoot as ys, withDerivedFacts as yt, RunSample as z, listRecordedDevices as za, HOSTED_APP_CHUNK_BYTES as zi, MacosBuild as zn, ERROR_SOURCES as zo, readDevServerStop as zr, StimConfig as zs, BuildMissCategory as zt };
2343
+ export { readRunEstimates as $, isSensitiveReference as $a, HostedAgentLease as $i, readHostedMacosApp as $n, workspaceAgentDeviceDir as $o, MetroLastStop as $r, getProjectSetting as $s, BuildResult as $t, DeviceHostMachineCredential as A, ANDROID_EMULATOR_APPS as Aa, readAgentDeviceUsageCache as Ac, HostedIosDevice as Ai, StatsPlatform as An, diskUsageCacheDir as Ao, HostedAndroidPlacement as Ar, tailRead as As, ActiveBuildState as At, RunHistory as B, SettingDefinition as Ba, readNdjsonGenerations as Bc, parseHostedLocalDeviceCount as Bi, WebBrowserState as Bn, maintenanceNdjsonFile as Bo, parseHostedNativePlacement as Br, readJsonFile as Bs, BuildCacheHit as Bt, pinnedEndpoint as C, rememberHostedAppBlobRename as Ca, SwiftpmCacheUsage as Cc, HostedDeviceOfferRequest as Ci, PhysicalDeviceConnection as Cn, configLockPath as Co, HostedIosPlacement as Cr, parseSince as Cs, readEndedAgentSessions as Ct, HostedMetroRequest as D, SETTINGS_SCHEMA_URL as Da, AgentDeviceUsageRoots as Dc, HostedDeviceSelectors as Di, RunOutcomeKind as Dn, deviceHostMachinesFile as Do, hostedIosStatus as Dr, readLogTimeline as Ds, ACTIVITY_RECENCY_BASES as Dt, HostedMetroGateway as E, SETTINGS_SCHEMA_FILE as Ea, AgentDeviceUsage as Ec, HostedDeviceRequest as Ei, RemoteDeviceState as En, deviceHostMachinesClaims as Eo, hostedIosRecords as Er, readLogRecords as Es, withGitChip as Et, HISTORY_LIMIT as F, REMOTE_DEVICE_BACKENDS as Fa, NdjsonRecord as Fc, hostedConsolePort as Fi, TUTORIAL_VERSION as Fn, getConfigPath as Fo, hostedAndroidStatus as Fr, EasSessionLedgerRead as Fs, AndroidDeviceState as Ft, StatsCapacityWait as G, TUNNEL_MODES as Ga, readHostedDevice as Gi, WorktreeGit as Gn, setupJournalFile as Go, DEVICE_RECLAIM_REASON as Gr, allMetroPorts as Gs, BuildMissCategory as Gt, STATS_VERSION as H, SettingScope as Ha, parseHostedOfferRequest as Hi, WorkspacePhase as Hn, maintenanceStateFile as Ho, BUILD_HISTORY_KEY as Hr, readStateFile as Hs, BuildDetail as Ht, OffloadSummary as I, RemoteDeviceBackend as Ia, SOURCES as Ic, hostedDeviceId as Ii, WEB_PAGE_STATES as In, gitMergeCacheDir as Io, parseHostedAndroidPlacement as Ir, readCreatedDevices as Is, AndroidRuntimeFacts as It, StatsReport as J, WebViewport as Ja, HOSTED_AGENT_DRIVERS as Ji, MacosAppState as Jn, sharedGradle as Jo, DevServerStopRequest as Jr, findEnclosingWorktreeRoot as Js, BuildPhase as Jt, StatsPlacement as K, TunnelMode as Ka, readHostedDeviceLedger as Ki, WorktreePullRequest as Kn, sharedCcache as Ko, DEV_SERVER_STOP_REQUEST_KEY as Kr, buildWorkerRoot as Ks, BuildMissChange as Kt, PLACEMENT_DECISIONS as L, SETTINGS as La, levelRank as Lc, parseHostedAndroidDevice as Li, WORKSPACE_PHASES as Ln, maintenanceAttemptFile as Lo, unreadableHostedAndroid as Lr, readEasSessionLedger as Ls, AppPresence as Lt, BuildMachineTotals as M, IOS_SIMULATOR_APPS as Ma, AgentTarget as Mc, assertHostedDeviceLedger as Mi, StatusIssue as Mn, easSessionLedgerFile as Mo, hostedAndroidDeviceName as Mr, CreatedDevicePlatform as Ms, ActivityRecencyBasis as Mt, CAPACITY_REFUSAL_LIMIT as N, OFFLOAD_MODES as Na, createAgentActionReader as Nc, deviceHostArea as Ni, StatusIssueCode as Nn, easSessionLedgerLock as No, hostedAndroidPlacements as Nr, CreatedDevices as Ns, AgentSession as Nt, hostedMetroGateways as O, settingsJsonSchema as Oa, agentDeviceUsageFile as Oc, HostedDeviceSession as Oi, STATUS_ISSUE_CODES as On, deviceHostMachinesLock as Oo, parseHostedIosPlacement as Or, recordMatches as Os, AGENT_TOOLS as Ot, CAPACITY_REFUSAL_MAX_AGE_MS as P, OffloadMode as Pa, LEVELS as Pc, deviceHostRoot as Pi, StatusPayload as Pn, emulatorLogFile as Po, hostedAndroidRecords as Pr, EasSessionClaim as Ps, AgentTool as Pt, offloadSummary as Q, isLayeredSetting as Qa, HostedAgentGrant as Qi, parseMacosRecord as Qn, supervisorPidFile as Qo, LAST_BUILD_KEYS as Qr, getProject as Qs, BuildReport as Qt, ReadStatsResult as R, SETTING_GROUPS as Ra, parseNdjsonLine as Rc, parseHostedChoice as Ri, WORKSPACE_STAGE_KINDS as Rn, maintenanceChildLogFile as Ro, HostedNativePlacement as Rr, validEasSessionClaim as Rs, BUILD_PHASES as Rt, parseMachine as S, readHostedAppMetadata as Sa, tryAcquireBuildSlotClaim as Sc, HostedDeviceOffer as Si, PHYSICAL_DEVICE_CONNECTIONS as Sn, buildMachinesLock as So, readMaintenanceState as Sr, markerWindow as Ss, readDiskUsage as St, HOSTED_METRO_REQUESTS_KEY as T, validHostedAppBlob as Ta, swiftpmCacheUsageFile as Tc, HostedDevicePlatform as Ti, PlannedPhase as Tn, createdDevicesLock as To, hostedIosPlacements as Tr, queryLogs as Ts, withDerivedFacts as Tt, StatsBucket as U, SettingType as Ua, parseHostedPlatformDevice as Ui, WorkspaceStage as Un, pullRequestCacheDir as Uo, BUILD_HISTORY_LIMIT as Ur, withStateReadCache as Us, BuildDiagnostic as Ut, RunSample as V, SettingEntry as Va, parseHostedNativeOffer as Vi, WebPageState as Vn, maintenanceRunClaims as Vo, unreadableHostedNative as Vr, readJsonObject as Vs, BuildCause as Vt, StatsCapacityRefusal as W, SettingsPayload as Wa, parseHostedRequest as Wi, WorktreeFacts as Wn, serverSetupDir as Wo, DEVICE_IDLE_SHUTDOWN_KEY as Wr, ParkedMax as Ws, BuildHistoryEntry as Wt, decodeStats as X, coerceSettingText as Xa, HostedAgentAccess as Xi, MacosProcess as Xn, statsFile as Xo, IDLE_STOP_KEY as Xr, getConcurrencyLimits as Xs, BuildPlanPayload as Xt, StatsScope as Y, acceptsShape as Ya, HOSTED_MACOS_APP_SLOTS as Yi, MacosBuild as Yn, sharedPods as Yo, DeviceIdleShutdownRecord as Yr, findProjectByMetroPort as Ys, BuildPlacement as Yt, findProjectRoot as Z, expectedShape as Za, HostedAgentDriverName as Zi, macosAppState as Zn, supervisorLogFile as Zo, IdleStopRecord as Zr, getParkedMax as Zs, BuildPlatform as Zt, Endpoint as _, hostedAppAttempt as _a, MachineCapacity as _c, readWorkspaceState as _i, MachineUsageState as _n, agentSessionsCacheFile as _o, MaintenanceSize as _r, bundleMarkerPlatform as _s, endedAgentSessionOf as _t, parseSetupJournal as a, hostedMacosBundleId as aa, ConcurrencyLimits as ac, buildDiagnostics as ai, DevicePlacement as an, RecordedDevice as ao, archivedUsage as ar, workspaceLogErrorIndex as as, trimSamples as at, endpoint as b, parseHostedAppOffer as ba, machineCapacity as bc, HostedAndroidDevice as bi, NATIVE_BUILD_STEPS as bn, archiveRoot as bo, parseMaintenanceState as br, followLogs as bs, readAgentSessionsCache as bt, HOSTED_LOGS_FIRST_BYTES as c, parseHostedMacosChoice as ca, DoctorRunRecord as cc, readBuildHistory as ci, EnvironmentDisk as cn, capDrops as co, readArchiveState as cr, workspaceRecordingsDir as cs, ViewedDevice as ct, HostedLogsPage as d, HOSTED_APP_CHUNK_BYTES as da, RepoRecord as dc, readDeviceIdleShutdowns as di, GitChipPart as dn, listRecordedDevices as do, MaintenanceActionKind as dr, ERROR_SOURCES as ds, AgentSessionsCache as dt, HostedAppLaunch as ea, getProjectSettings as ec, READY_PHASE_MS as ei, BuildWaitingFor as en, settingDefinition as eo, readMacosRecord as er, workspaceBuildDetailFile as es, readStats as et, hostedMacosLogsDir as f, HostedAppDelivery as fa, SettingsObject as fc, readDevicePlacement as fi, LastBuildReport as fn, listSegments as fo, MaintenanceCheck as fr, NATIVE_CRASH_LOG_PREFIX as fs, ENDED_AGENT_RETENTION_MS as ft, readLogsSince as g, hostedAppArea as ga, readBuildMachines as gc, readWorkspaceAgent as gi, MachineOwnerKind as gn, recordingEnabled as go, MaintenanceRecord as gr, buildCriteria as gs, diskUsageCacheFile as gt, readHostedNativeLogsCheckpoint as h, HostedAppRecord as ha, BuildMachineCredential as hc, readWarmRecord as hi, MachineOwner as hn, recordingDeviceName as ho, MaintenancePressure as hr, attachExpoErrorContext as hs, agentSessionOf as ht, isSetupJournalPrunable as i, hostedMacosAppSlot as ia, withConfigLock as ic, WorkspaceState as ii, DeviceLeaseState as in, RECORDING_PLATFORMS as io, archiveEnabled as ir, workspaceGradleBuild as is, trimCapacityWaits as it, readDeviceHostMachines as j, ANDROID_PCH_CHOICES as ja, AgentActionReaderOptions as jc, HostedNativeOffer as ji, StatusCapacity as jn, easMachineStateRoot as jo, HostedAndroidStatus as jr, countErrorEntries as js, ActivityDriver as jt, hostedMetroRequests as k, ANDROID_COMPILER_CACHE_CHOICES as ka, readAgentDeviceUsage as kc, HostedIosChoice as ki, SimulatorState as kn, deviceViewersDir as ko, unreadableHostedIos as kr, sortByTs as ks, APP_PROCESS_STATES as kt, HOSTED_LOGS_PAGE_BYTES as l, parseHostedMacosDevice as la, PlatformRecords as lc, readDevServerStop as li, EnvironmentState as ln, closedSegmentName as lo, readArchives as lr, workspaceStateFile as ls, readViewedDevices as lt, parseHostedLogsCursor as m, HostedAppOffer as ma, SupervisorRecord as mc, readLastBuilds as mi, MEMORY_SOURCES as mn, recordedBytes as mo, MaintenancePass as mr, advanceTail as ms, StatusCacheEntry as mt, SetupJournal as n, HostedMacosDevice as na, isPathPrefix as nc, WORKSPACE_AGENT_KEY as ni, DeviceActivity as nn, RECORDING_CAP_BYTES as no, ArchivedUsage as nr, workspaceEndedAgentsFile as ns, statsProjectKey as nt, readSetupJournal as o, parseHostedAgentAccess as oa, Config as oc, lastUseFrom as oi, DiskMeasure as on, RecordedSegment as oo, linkReplacedArchives as or, workspaceLogsDir as os, wholePhases as ot, hostedNativeLogsDir as p, HostedAppFile as pa, StimConfig as pc, readIdleStop as pi, MACHINE_OWNER_KINDS as pn, openSegmentName as po, MaintenanceMode as pr, QueryCriteria as ps, PullRequestCacheEntry as pt, StatsRecord as q, WEB_VIEWPORTS as qa, readHostedSessions as qi, MacosAppRecord as qn, sharedCompilationCache as qo, DevServerStopRecord as qr, configCorruptRepair as qs, BuildMissReason as qt, isJournalExpired as r, HostedMacosPlacement as ra, loadConfig as rc, WarmRecord as ri, DeviceAppProcess as rn, RECORDING_FOOTAGE_MS as ro, ArchivedWorkspace as rr, workspaceEndedAgentsLock as rs, trimCapacityRefusals as rt, agentDeviceStateDirs as s, parseHostedAgentGrant as sa, DeviceRecord as sc, parseMissReason as si, EndedAgentSession as sn, RecordingPlatform as so, readArchive as sr, workspaceMetadataFile as ss, DeviceViewersRecord as st, SetupCapability as t, HostedMacosChoice as ta, getRepoSettings as tc, WARM_KEY as ti, ChecksState as tn, settingValueError as to, ArchivedBytes as tr, workspaceDerivedData as ts, readStatsReport as tt, HostedLogsCursor as u, parseHostedMacosPlacement as ua, ProjectRecord as uc, readDevServerStopRequest as ui, GitChip as un, footageDrops as uo, MaintenanceAction as ur, workspaceStateLock as us, stimBuildDigest as ut, TAILNET_MACHINE_PATTERN as v, hostedAppBlobs as va, buildSlotPath as vc, workspaceLastUsed as vi, MemorySource as vn, archiveDir as vo, MaintenanceState as vr, compileGrep as vs, listStatusCacheEntries as vt, HOSTED_METRO_GATEWAYS_KEY as w, validHostedAppArguments as wa, readSwiftpmCacheUsage as wc, HostedDevicePhase as wi, PhysicalDeviceState as wn, createdDevicesFile as wo, HostedIosStatus as wr, queryJsonLogs as ws, readPullRequestCache as wt, findPeer as x, readHostedApp as xa, saturation as xc, HostedDevice as xi, NativeBuildStep as xn, buildMachinesFile as xo, readMaintenanceAttempt as xr, logFiles as xs, readBuildDetail as xt, TailnetPeer as y, parseHostedAppManifest as ya, buildSlotsDir as yc, HostedAndroidChoice as yi, MetroBundleState as yn, archiveLock as yo, MaintenanceStatus as yr, fileSizes as ys, pullRequestCacheFile as yt, RunEstimates as z, SETTING_SCOPES as za, parseNdjsonText as zc, parseHostedDevice as zi, WarmStep as zn, maintenanceDir as zo, hostedNativeRecords as zr, isJsonObject as zs, BUILD_RESULTS as zt };