agent-device 0.10.2 → 0.10.3

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.
Files changed (195) hide show
  1. package/dist/src/376.js +3 -0
  2. package/dist/src/bin.js +74 -73
  3. package/dist/src/daemon.js +37 -37
  4. package/dist/src/index.d.ts +559 -5
  5. package/dist/src/index.js +3 -1
  6. package/package.json +2 -1
  7. package/skills/agent-device/SKILL.md +35 -12
  8. package/skills/agent-device/references/bootstrap-install.md +55 -15
  9. package/skills/agent-device/references/exploration.md +49 -7
  10. package/skills/agent-device/references/macos-desktop.md +1 -2
  11. package/skills/agent-device/references/remote-tenancy.md +15 -2
  12. package/skills/agent-device/references/verification.md +2 -3
  13. package/dist/src/224.js +0 -2
  14. package/dist/src/331.js +0 -3
  15. package/dist/src/425.js +0 -1
  16. package/dist/src/bin.d.ts +0 -1
  17. package/dist/src/cli-client-commands.d.ts +0 -8
  18. package/dist/src/cli.d.ts +0 -6
  19. package/dist/src/client-metro.d.ts +0 -64
  20. package/dist/src/client-normalizers.d.ts +0 -20
  21. package/dist/src/client-shared.d.ts +0 -20
  22. package/dist/src/client-types.d.ts +0 -269
  23. package/dist/src/client.d.ts +0 -5
  24. package/dist/src/core/app-events.d.ts +0 -8
  25. package/dist/src/core/batch.d.ts +0 -17
  26. package/dist/src/core/capabilities.d.ts +0 -3
  27. package/dist/src/core/click-button.d.ts +0 -20
  28. package/dist/src/core/dispatch-payload.d.ts +0 -1
  29. package/dist/src/core/dispatch-resolve.d.ts +0 -29
  30. package/dist/src/core/dispatch-series.d.ts +0 -7
  31. package/dist/src/core/dispatch.d.ts +0 -37
  32. package/dist/src/core/open-target.d.ts +0 -4
  33. package/dist/src/core/session-surface.d.ts +0 -3
  34. package/dist/src/core/settings-contract.d.ts +0 -9
  35. package/dist/src/daemon/action-utils.d.ts +0 -3
  36. package/dist/src/daemon/android-system-dialog.d.ts +0 -11
  37. package/dist/src/daemon/app-log-android.d.ts +0 -4
  38. package/dist/src/daemon/app-log-ios.d.ts +0 -7
  39. package/dist/src/daemon/app-log-process.d.ts +0 -15
  40. package/dist/src/daemon/app-log-stream.d.ts +0 -19
  41. package/dist/src/daemon/app-log.d.ts +0 -28
  42. package/dist/src/daemon/artifact-archive.d.ts +0 -12
  43. package/dist/src/daemon/artifact-download.d.ts +0 -12
  44. package/dist/src/daemon/artifact-materialization.d.ts +0 -17
  45. package/dist/src/daemon/artifact-registry.d.ts +0 -12
  46. package/dist/src/daemon/config.d.ts +0 -16
  47. package/dist/src/daemon/context.d.ts +0 -25
  48. package/dist/src/daemon/device-ready.d.ts +0 -6
  49. package/dist/src/daemon/handlers/find.d.ts +0 -40
  50. package/dist/src/daemon/handlers/install-source.d.ts +0 -44
  51. package/dist/src/daemon/handlers/interaction-common.d.ts +0 -41
  52. package/dist/src/daemon/handlers/interaction-flags.d.ts +0 -4
  53. package/dist/src/daemon/handlers/interaction-get.d.ts +0 -3
  54. package/dist/src/daemon/handlers/interaction-is.d.ts +0 -3
  55. package/dist/src/daemon/handlers/interaction-read.d.ts +0 -14
  56. package/dist/src/daemon/handlers/interaction-scroll.d.ts +0 -3
  57. package/dist/src/daemon/handlers/interaction-selector.d.ts +0 -27
  58. package/dist/src/daemon/handlers/interaction-snapshot.d.ts +0 -8
  59. package/dist/src/daemon/handlers/interaction-targeting.d.ts +0 -28
  60. package/dist/src/daemon/handlers/interaction-touch.d.ts +0 -45
  61. package/dist/src/daemon/handlers/interaction.d.ts +0 -9
  62. package/dist/src/daemon/handlers/lease.d.ts +0 -8
  63. package/dist/src/daemon/handlers/parse-utils.d.ts +0 -3
  64. package/dist/src/daemon/handlers/record-trace-android.d.ts +0 -18
  65. package/dist/src/daemon/handlers/record-trace-ios.d.ts +0 -52
  66. package/dist/src/daemon/handlers/record-trace-recording.d.ts +0 -32
  67. package/dist/src/daemon/handlers/record-trace.d.ts +0 -10
  68. package/dist/src/daemon/handlers/session-batch.d.ts +0 -2
  69. package/dist/src/daemon/handlers/session-close.d.ts +0 -31
  70. package/dist/src/daemon/handlers/session-deploy.d.ts +0 -37
  71. package/dist/src/daemon/handlers/session-device-utils.d.ts +0 -26
  72. package/dist/src/daemon/handlers/session-open-target.d.ts +0 -3
  73. package/dist/src/daemon/handlers/session-open.d.ts +0 -22
  74. package/dist/src/daemon/handlers/session-perf.d.ts +0 -2
  75. package/dist/src/daemon/handlers/session-replay-heal.d.ts +0 -8
  76. package/dist/src/daemon/handlers/session-replay-script.d.ts +0 -3
  77. package/dist/src/daemon/handlers/session-runtime-command.d.ts +0 -9
  78. package/dist/src/daemon/handlers/session-runtime.d.ts +0 -36
  79. package/dist/src/daemon/handlers/session-startup-metrics.d.ts +0 -11
  80. package/dist/src/daemon/handlers/session.d.ts +0 -50
  81. package/dist/src/daemon/handlers/snapshot-alert.d.ts +0 -13
  82. package/dist/src/daemon/handlers/snapshot-capture.d.ts +0 -34
  83. package/dist/src/daemon/handlers/snapshot-session.d.ts +0 -15
  84. package/dist/src/daemon/handlers/snapshot-settings.d.ts +0 -24
  85. package/dist/src/daemon/handlers/snapshot-wait.d.ts +0 -37
  86. package/dist/src/daemon/handlers/snapshot.d.ts +0 -16
  87. package/dist/src/daemon/http-server.d.ts +0 -26
  88. package/dist/src/daemon/install-source-resolution.d.ts +0 -5
  89. package/dist/src/daemon/is-predicates.d.ts +0 -15
  90. package/dist/src/daemon/lease-context.d.ts +0 -9
  91. package/dist/src/daemon/lease-registry.d.ts +0 -63
  92. package/dist/src/daemon/materialized-path-registry.d.ts +0 -15
  93. package/dist/src/daemon/network-log.d.ts +0 -32
  94. package/dist/src/daemon/record-trace-errors.d.ts +0 -6
  95. package/dist/src/daemon/recording-gestures.d.ts +0 -3
  96. package/dist/src/daemon/recording-telemetry.d.ts +0 -20
  97. package/dist/src/daemon/recording-timing.d.ts +0 -24
  98. package/dist/src/daemon/request-cancel.d.ts +0 -9
  99. package/dist/src/daemon/request-lock-policy.d.ts +0 -2
  100. package/dist/src/daemon/request-router.d.ts +0 -23
  101. package/dist/src/daemon/runtime-hints.d.ts +0 -19
  102. package/dist/src/daemon/script-utils.d.ts +0 -28
  103. package/dist/src/daemon/scroll-planner.d.ts +0 -12
  104. package/dist/src/daemon/selectors-build.d.ts +0 -5
  105. package/dist/src/daemon/selectors-match.d.ts +0 -6
  106. package/dist/src/daemon/selectors-parse.d.ts +0 -29
  107. package/dist/src/daemon/selectors-resolve.d.ts +0 -33
  108. package/dist/src/daemon/selectors.d.ts +0 -5
  109. package/dist/src/daemon/server-lifecycle.d.ts +0 -23
  110. package/dist/src/daemon/session-open-script.d.ts +0 -7
  111. package/dist/src/daemon/session-routing.d.ts +0 -3
  112. package/dist/src/daemon/session-selector.d.ts +0 -10
  113. package/dist/src/daemon/session-store.d.ts +0 -33
  114. package/dist/src/daemon/snapshot-diff.d.ts +0 -20
  115. package/dist/src/daemon/snapshot-processing.d.ts +0 -10
  116. package/dist/src/daemon/touch-reference-frame.d.ts +0 -7
  117. package/dist/src/daemon/transport.d.ts +0 -6
  118. package/dist/src/daemon/types.d.ts +0 -173
  119. package/dist/src/daemon/upload-registry.d.ts +0 -7
  120. package/dist/src/daemon/upload.d.ts +0 -5
  121. package/dist/src/daemon-client.d.ts +0 -40
  122. package/dist/src/daemon.d.ts +0 -1
  123. package/dist/src/platforms/android/adb.d.ts +0 -5
  124. package/dist/src/platforms/android/app-lifecycle.d.ts +0 -31
  125. package/dist/src/platforms/android/device-input-state.d.ts +0 -19
  126. package/dist/src/platforms/android/devices.d.ts +0 -26
  127. package/dist/src/platforms/android/index.d.ts +0 -8
  128. package/dist/src/platforms/android/input-actions.d.ts +0 -17
  129. package/dist/src/platforms/android/install-artifact.d.ts +0 -11
  130. package/dist/src/platforms/android/manifest.d.ts +0 -1
  131. package/dist/src/platforms/android/notifications.d.ts +0 -11
  132. package/dist/src/platforms/android/open-target.d.ts +0 -4
  133. package/dist/src/platforms/android/screenshot.d.ts +0 -16
  134. package/dist/src/platforms/android/sdk.d.ts +0 -2
  135. package/dist/src/platforms/android/settings.d.ts +0 -3
  136. package/dist/src/platforms/android/snapshot.d.ts +0 -7
  137. package/dist/src/platforms/android/ui-hierarchy.d.ts +0 -21
  138. package/dist/src/platforms/appearance.d.ts +0 -2
  139. package/dist/src/platforms/boot-diagnostics.d.ts +0 -14
  140. package/dist/src/platforms/install-source.d.ts +0 -29
  141. package/dist/src/platforms/ios/app-filter.d.ts +0 -2
  142. package/dist/src/platforms/ios/apps.d.ts +0 -34
  143. package/dist/src/platforms/ios/config.d.ts +0 -10
  144. package/dist/src/platforms/ios/devicectl.d.ts +0 -13
  145. package/dist/src/platforms/ios/devices.d.ts +0 -40
  146. package/dist/src/platforms/ios/ensure-simulator.d.ts +0 -18
  147. package/dist/src/platforms/ios/index.d.ts +0 -3
  148. package/dist/src/platforms/ios/install-artifact.d.ts +0 -18
  149. package/dist/src/platforms/ios/launch-diagnostics.d.ts +0 -11
  150. package/dist/src/platforms/ios/macos-apps.d.ts +0 -12
  151. package/dist/src/platforms/ios/macos-helper.d.ts +0 -69
  152. package/dist/src/platforms/ios/plist.d.ts +0 -1
  153. package/dist/src/platforms/ios/runner-client.d.ts +0 -38
  154. package/dist/src/platforms/ios/runner-errors.d.ts +0 -20
  155. package/dist/src/platforms/ios/runner-macos-products.d.ts +0 -3
  156. package/dist/src/platforms/ios/runner-session.d.ts +0 -30
  157. package/dist/src/platforms/ios/runner-transport.d.ts +0 -10
  158. package/dist/src/platforms/ios/runner-xctestrun-products.d.ts +0 -2
  159. package/dist/src/platforms/ios/runner-xctestrun.d.ts +0 -38
  160. package/dist/src/platforms/ios/screenshot-status-bar.d.ts +0 -2
  161. package/dist/src/platforms/ios/screenshot.d.ts +0 -14
  162. package/dist/src/platforms/ios/simctl.d.ts +0 -7
  163. package/dist/src/platforms/ios/simulator.d.ts +0 -11
  164. package/dist/src/platforms/permission-utils.d.ts +0 -9
  165. package/dist/src/recording/overlay.d.ts +0 -10
  166. package/dist/src/upload-client.d.ts +0 -7
  167. package/dist/src/utils/args.d.ts +0 -27
  168. package/dist/src/utils/cli-config.d.ts +0 -10
  169. package/dist/src/utils/cli-option-schema.d.ts +0 -19
  170. package/dist/src/utils/cli-options.d.ts +0 -13
  171. package/dist/src/utils/command-schema.d.ts +0 -123
  172. package/dist/src/utils/device-isolation.d.ts +0 -3
  173. package/dist/src/utils/device.d.ts +0 -35
  174. package/dist/src/utils/diagnostics.d.ts +0 -30
  175. package/dist/src/utils/errors.d.ts +0 -26
  176. package/dist/src/utils/exec.d.ts +0 -32
  177. package/dist/src/utils/finders.d.ts +0 -12
  178. package/dist/src/utils/interactors.d.ts +0 -38
  179. package/dist/src/utils/json-input.d.ts +0 -1
  180. package/dist/src/utils/keyed-lock.d.ts +0 -1
  181. package/dist/src/utils/output.d.ts +0 -27
  182. package/dist/src/utils/path-resolution.d.ts +0 -8
  183. package/dist/src/utils/payload-input.d.ts +0 -12
  184. package/dist/src/utils/process-identity.d.ts +0 -11
  185. package/dist/src/utils/remote-config.d.ts +0 -15
  186. package/dist/src/utils/remote-open.d.ts +0 -9
  187. package/dist/src/utils/retry.d.ts +0 -54
  188. package/dist/src/utils/screenshot-diff.d.ts +0 -23
  189. package/dist/src/utils/session-binding.d.ts +0 -18
  190. package/dist/src/utils/snapshot-lines.d.ts +0 -15
  191. package/dist/src/utils/snapshot.d.ts +0 -49
  192. package/dist/src/utils/text-surface.d.ts +0 -19
  193. package/dist/src/utils/timeouts.d.ts +0 -3
  194. package/dist/src/utils/version.d.ts +0 -2
  195. package/dist/src/utils/video.d.ts +0 -9
@@ -1,3 +0,0 @@
1
- import type { DaemonRequest } from './types.ts';
2
- import { SessionStore } from './session-store.ts';
3
- export declare function resolveEffectiveSessionName(req: DaemonRequest, sessionStore: SessionStore): string;
@@ -1,10 +0,0 @@
1
- import type { CommandFlags } from '../core/dispatch.ts';
2
- import type { SessionState } from './types.ts';
3
- export type SessionSelectorConflictKey = 'platform' | 'target' | 'udid' | 'serial' | 'device' | 'iosSimulatorDeviceSet' | 'androidDeviceAllowlist';
4
- export type SessionSelectorConflict = {
5
- key: SessionSelectorConflictKey;
6
- value: string;
7
- };
8
- export declare function assertSessionSelectorMatches(session: SessionState, flags?: CommandFlags): void;
9
- export declare function listSessionSelectorConflicts(session: SessionState, flags?: CommandFlags): SessionSelectorConflict[];
10
- export declare function formatSessionSelectorConflict(conflict: SessionSelectorConflict): string;
@@ -1,33 +0,0 @@
1
- import type { CommandFlags } from '../core/dispatch.ts';
2
- import type { SessionRuntimeHints, SessionState } from './types.ts';
3
- export declare class SessionStore {
4
- private readonly sessions;
5
- private readonly runtimeHints;
6
- private readonly sessionsDir;
7
- constructor(sessionsDir: string);
8
- get(name: string): SessionState | undefined;
9
- has(name: string): boolean;
10
- set(name: string, session: SessionState): void;
11
- delete(name: string): boolean;
12
- values(): IterableIterator<SessionState>;
13
- toArray(): SessionState[];
14
- getRuntimeHints(name: string): SessionRuntimeHints | undefined;
15
- setRuntimeHints(name: string, hints: SessionRuntimeHints): void;
16
- clearRuntimeHints(name: string): boolean;
17
- recordAction(session: SessionState, entry: {
18
- command: string;
19
- positionals: string[];
20
- flags: CommandFlags;
21
- runtime?: SessionRuntimeHints;
22
- result?: Record<string, unknown>;
23
- }): void;
24
- writeSessionLog(session: SessionState): void;
25
- defaultTracePath(session: SessionState): string;
26
- /** Path to session-scoped app log file. Agent can grep this for token-efficient debugging. */
27
- resolveAppLogPath(sessionName: string): string;
28
- resolveAppLogPidPath(sessionName: string): string;
29
- static safeSessionName(name: string): string;
30
- static expandHome(filePath: string, cwd?: string): string;
31
- private resolveScriptPath;
32
- private buildOptimizedActions;
33
- }
@@ -1,20 +0,0 @@
1
- import type { SnapshotNode } from '../utils/snapshot.ts';
2
- type SnapshotDiffLine = {
3
- kind: 'added' | 'removed' | 'unchanged';
4
- text: string;
5
- };
6
- type SnapshotDiffSummary = {
7
- additions: number;
8
- removals: number;
9
- unchanged: number;
10
- };
11
- type SnapshotDiffResult = {
12
- summary: SnapshotDiffSummary;
13
- lines: SnapshotDiffLine[];
14
- };
15
- type SnapshotDiffOptions = {
16
- flatten?: boolean;
17
- };
18
- export declare function buildSnapshotDiff(previousNodes: SnapshotNode[], currentNodes: SnapshotNode[], options?: SnapshotDiffOptions): SnapshotDiffResult;
19
- export declare function countSnapshotComparableLines(nodes: SnapshotNode[], options?: SnapshotDiffOptions): number;
20
- export {};
@@ -1,10 +0,0 @@
1
- import type { Platform } from '../utils/device.ts';
2
- import type { RawSnapshotNode, SnapshotState } from '../utils/snapshot.ts';
3
- export declare function findNodeByLabel(nodes: SnapshotState['nodes'], label: string): import("../index.ts").SnapshotNode | null;
4
- export declare function resolveRefLabel(node: SnapshotState['nodes'][number], nodes: SnapshotState['nodes']): string | undefined;
5
- export declare function pruneGroupNodes(nodes: RawSnapshotNode[]): RawSnapshotNode[];
6
- export declare function normalizeType(type: string): string;
7
- export declare function isFillableType(type: string, platform: Platform): boolean;
8
- export declare function findNearestHittableAncestor(nodes: SnapshotState['nodes'], node: SnapshotState['nodes'][number]): SnapshotState['nodes'][number] | null;
9
- export declare function extractNodeText(node: SnapshotState['nodes'][number]): string;
10
- export declare function extractNodeReadText(node: SnapshotState['nodes'][number]): string;
@@ -1,7 +0,0 @@
1
- import type { SnapshotNode, SnapshotState } from '../utils/snapshot.ts';
2
- export type TouchReferenceFrame = {
3
- referenceWidth: number;
4
- referenceHeight: number;
5
- };
6
- export declare function getSnapshotReferenceFrame(snapshot: SnapshotState | undefined): TouchReferenceFrame | undefined;
7
- export declare function inferTouchReferenceFrame(nodes: Array<Pick<SnapshotNode, 'type' | 'rect'>>): TouchReferenceFrame | undefined;
@@ -1,6 +0,0 @@
1
- import net from 'node:net';
2
- import type { Server as HttpServer } from 'node:http';
3
- import type { DaemonRequest, DaemonResponse } from './types.ts';
4
- export declare function createSocketServer(handleRequest: (req: DaemonRequest) => Promise<DaemonResponse>): net.Server;
5
- export declare function listenNetServer(server: net.Server): Promise<number>;
6
- export declare function listenHttpServer(server: HttpServer): Promise<number>;
@@ -1,173 +0,0 @@
1
- import type { MaterializeInstallSource } from '../platforms/install-source.ts';
2
- import type { CommandFlags } from '../core/dispatch.ts';
3
- import type { SessionSurface } from '../core/session-surface.ts';
4
- import type { DeviceInfo, Platform, PlatformSelector } from '../utils/device.ts';
5
- import type { ExecResult } from '../utils/exec.ts';
6
- import type { SnapshotState } from '../utils/snapshot.ts';
7
- export type DaemonInstallSource = MaterializeInstallSource;
8
- export type DaemonLockPolicy = 'reject' | 'strip';
9
- export type DaemonRequest = {
10
- token: string;
11
- session: string;
12
- command: string;
13
- positionals: string[];
14
- flags?: CommandFlags;
15
- runtime?: SessionRuntimeHints;
16
- meta?: {
17
- requestId?: string;
18
- debug?: boolean;
19
- cwd?: string;
20
- tenantId?: string;
21
- runId?: string;
22
- leaseId?: string;
23
- leaseTtlMs?: number;
24
- leaseBackend?: 'ios-simulator';
25
- sessionIsolation?: 'none' | 'tenant';
26
- uploadedArtifactId?: string;
27
- clientArtifactPaths?: Record<string, string>;
28
- installSource?: DaemonInstallSource;
29
- retainMaterializedPaths?: boolean;
30
- materializedPathRetentionMs?: number;
31
- materializationId?: string;
32
- lockPolicy?: DaemonLockPolicy;
33
- lockPlatform?: PlatformSelector;
34
- };
35
- };
36
- export type SessionRuntimeHints = {
37
- platform?: 'ios' | 'android';
38
- metroHost?: string;
39
- metroPort?: number;
40
- bundleUrl?: string;
41
- launchUrl?: string;
42
- };
43
- export type DaemonArtifact = {
44
- field: string;
45
- artifactId?: string;
46
- fileName?: string;
47
- localPath?: string;
48
- path?: string;
49
- };
50
- export type DaemonResponseData = Record<string, unknown> & {
51
- artifacts?: DaemonArtifact[];
52
- };
53
- export type DaemonResponse = {
54
- ok: true;
55
- data?: DaemonResponseData;
56
- } | {
57
- ok: false;
58
- error: {
59
- code: string;
60
- message: string;
61
- hint?: string;
62
- diagnosticId?: string;
63
- logPath?: string;
64
- details?: Record<string, unknown>;
65
- };
66
- };
67
- type RecordingTelemetryBase = {
68
- tMs: number;
69
- x: number;
70
- y: number;
71
- referenceWidth?: number;
72
- referenceHeight?: number;
73
- };
74
- type RecordingTelemetryTravel = RecordingTelemetryBase & {
75
- x2: number;
76
- y2: number;
77
- durationMs: number;
78
- };
79
- export type RecordingGestureEvent = (RecordingTelemetryBase & {
80
- kind: 'tap' | 'longpress';
81
- durationMs?: number;
82
- }) | (RecordingTelemetryTravel & {
83
- kind: 'swipe';
84
- }) | (RecordingTelemetryTravel & {
85
- kind: 'scroll';
86
- contentDirection: 'up' | 'down' | 'left' | 'right';
87
- amount?: number;
88
- }) | (RecordingTelemetryTravel & {
89
- kind: 'back-swipe';
90
- edge: 'left' | 'right';
91
- }) | (RecordingTelemetryBase & {
92
- kind: 'pinch';
93
- scale: number;
94
- durationMs: number;
95
- });
96
- type SessionRecordingBase = {
97
- outPath: string;
98
- clientOutPath?: string;
99
- telemetryPath?: string;
100
- overlayWarning?: string;
101
- startedAt: number;
102
- showTouches: boolean;
103
- gestureEvents: RecordingGestureEvent[];
104
- touchReferenceFrame?: {
105
- referenceWidth: number;
106
- referenceHeight: number;
107
- };
108
- gestureClockOriginAtMs?: number;
109
- gestureClockOriginUptimeMs?: number;
110
- runnerSessionId?: string;
111
- invalidatedReason?: string;
112
- };
113
- export type SessionState = {
114
- name: string;
115
- device: DeviceInfo;
116
- createdAt: number;
117
- surface?: SessionSurface;
118
- appBundleId?: string;
119
- appName?: string;
120
- snapshot?: SnapshotState;
121
- trace?: {
122
- outPath: string;
123
- startedAt: number;
124
- };
125
- recordSession?: boolean;
126
- saveScriptPath?: string;
127
- actions: SessionAction[];
128
- recording?: (SessionRecordingBase & {
129
- platform: 'ios';
130
- child: ReturnType<typeof import('node:child_process').spawn>;
131
- wait: Promise<ExecResult>;
132
- remotePath?: string;
133
- }) | (SessionRecordingBase & {
134
- platform: 'android';
135
- remotePath: string;
136
- remotePid: string;
137
- }) | (SessionRecordingBase & {
138
- platform: 'ios-device-runner';
139
- remotePath: string;
140
- runnerStartedAtUptimeMs?: number;
141
- targetAppReadyUptimeMs?: number;
142
- }) | (SessionRecordingBase & {
143
- platform: 'macos-runner';
144
- remotePath?: string;
145
- });
146
- /** Session-scoped app log stream; logs written to outPath for agent to grep */
147
- appLog?: {
148
- platform: Platform;
149
- backend: 'ios-simulator' | 'ios-device' | 'android' | 'macos';
150
- outPath: string;
151
- startedAt: number;
152
- getState: () => 'active' | 'failed';
153
- stop: () => Promise<void>;
154
- wait: Promise<ExecResult>;
155
- };
156
- };
157
- export type SessionAction = {
158
- ts: number;
159
- command: string;
160
- positionals: string[];
161
- runtime?: SessionRuntimeHints;
162
- flags: Partial<CommandFlags> & {
163
- snapshotInteractiveOnly?: boolean;
164
- snapshotCompact?: boolean;
165
- snapshotDepth?: number;
166
- snapshotScope?: string;
167
- snapshotRaw?: boolean;
168
- saveScript?: boolean | string;
169
- noRecord?: boolean;
170
- };
171
- result?: Record<string, unknown>;
172
- };
173
- export {};
@@ -1,7 +0,0 @@
1
- export declare function trackUploadedArtifact(params: {
2
- artifactPath: string;
3
- tempDir: string;
4
- tenantId?: string;
5
- }): string;
6
- export declare function prepareUploadedArtifact(uploadId: string, tenantId?: string): string;
7
- export declare function cleanupUploadedArtifact(uploadId: string): void;
@@ -1,5 +0,0 @@
1
- import type { IncomingMessage } from 'node:http';
2
- export declare function receiveUpload(req: IncomingMessage): Promise<{
3
- artifactPath: string;
4
- tempDir: string;
5
- }>;
@@ -1,40 +0,0 @@
1
- import type { DaemonRequest as SharedDaemonRequest, DaemonResponse as SharedDaemonResponse } from './daemon/types.ts';
2
- import { type DaemonPaths } from './daemon/config.ts';
3
- export type DaemonRequest = SharedDaemonRequest;
4
- export type DaemonResponse = SharedDaemonResponse;
5
- export type OpenAppOptions = {
6
- session?: string;
7
- app?: string;
8
- url?: string;
9
- lockPolicy?: NonNullable<DaemonRequest['meta']>['lockPolicy'];
10
- lockPlatform?: NonNullable<DaemonRequest['meta']>['lockPlatform'];
11
- platform?: NonNullable<DaemonRequest['flags']>['platform'];
12
- target?: NonNullable<DaemonRequest['flags']>['target'];
13
- device?: NonNullable<DaemonRequest['flags']>['device'];
14
- udid?: NonNullable<DaemonRequest['flags']>['udid'];
15
- serial?: NonNullable<DaemonRequest['flags']>['serial'];
16
- activity?: NonNullable<DaemonRequest['flags']>['activity'];
17
- out?: NonNullable<DaemonRequest['flags']>['out'];
18
- saveScript?: NonNullable<DaemonRequest['flags']>['saveScript'];
19
- relaunch?: boolean;
20
- runtime?: DaemonRequest['runtime'];
21
- meta?: Omit<NonNullable<DaemonRequest['meta']>, 'uploadedArtifactId' | 'clientArtifactPaths'>;
22
- };
23
- export declare function sendToDaemon(req: Omit<DaemonRequest, 'token'>): Promise<DaemonResponse>;
24
- export declare function openApp(options?: OpenAppOptions): Promise<DaemonResponse>;
25
- export declare function computeDaemonCodeSignature(entryPath: string, root?: string): string;
26
- export declare function downloadRemoteArtifact(params: {
27
- baseUrl: string;
28
- token: string;
29
- artifactId: string;
30
- destinationPath: string;
31
- requestId?: string;
32
- timeoutMs?: number;
33
- }): Promise<void>;
34
- export declare function resolveDaemonRequestTimeoutMs(raw?: string | undefined): number;
35
- export declare function resolveDaemonStartupTimeoutMs(raw?: string | undefined): number;
36
- export declare function resolveDaemonStartupAttempts(raw?: string | undefined): number;
37
- export declare function resolveDaemonStartupHint(state: {
38
- hasInfo: boolean;
39
- hasLock: boolean;
40
- }, paths?: Pick<DaemonPaths, 'infoPath' | 'lockPath'>): string;
@@ -1 +0,0 @@
1
- export {};
@@ -1,5 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- export declare function adbArgs(device: DeviceInfo, args: string[]): string[];
3
- export declare function ensureAdb(): Promise<void>;
4
- export declare function isClipboardShellUnsupported(stdout: string, stderr: string): boolean;
5
- export declare function sleep(ms: number): Promise<void>;
@@ -1,31 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- export declare function resolveAndroidApp(device: DeviceInfo, app: string): Promise<{
3
- type: 'intent' | 'package';
4
- value: string;
5
- }>;
6
- export declare function listAndroidApps(device: DeviceInfo, filter?: 'user-installed' | 'all'): Promise<Array<{
7
- package: string;
8
- name: string;
9
- }>>;
10
- export declare function inferAndroidAppName(packageName: string): string;
11
- export declare function getAndroidAppState(device: DeviceInfo): Promise<{
12
- package?: string;
13
- activity?: string;
14
- }>;
15
- export declare function openAndroidApp(device: DeviceInfo, app: string, activity?: string): Promise<void>;
16
- export declare function isAmStartError(stdout: string, stderr: string): boolean;
17
- export declare function parseAndroidLaunchComponent(stdout: string): string | null;
18
- export declare function openAndroidDevice(device: DeviceInfo): Promise<void>;
19
- export declare function closeAndroidApp(device: DeviceInfo, app: string): Promise<void>;
20
- export declare function installAndroidInstallablePath(device: DeviceInfo, installablePath: string): Promise<void>;
21
- export declare function installAndroidInstallablePathAndResolvePackageName(device: DeviceInfo, installablePath: string, packageNameHint?: string): Promise<string | undefined>;
22
- export declare function installAndroidApp(device: DeviceInfo, appPath: string): Promise<{
23
- archivePath?: string;
24
- installablePath: string;
25
- packageName?: string;
26
- appName?: string;
27
- launchTarget?: string;
28
- }>;
29
- export declare function reinstallAndroidApp(device: DeviceInfo, app: string, appPath: string): Promise<{
30
- package: string;
31
- }>;
@@ -1,19 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- type AndroidKeyboardType = 'text' | 'number' | 'email' | 'phone' | 'password' | 'datetime' | 'unknown';
3
- export type AndroidKeyboardState = {
4
- visible: boolean;
5
- inputType?: string;
6
- type?: AndroidKeyboardType;
7
- };
8
- export declare function getAndroidKeyboardState(device: DeviceInfo): Promise<AndroidKeyboardState>;
9
- export declare function dismissAndroidKeyboard(device: DeviceInfo): Promise<{
10
- attempts: number;
11
- wasVisible: boolean;
12
- dismissed: boolean;
13
- visible: boolean;
14
- inputType?: string;
15
- type?: AndroidKeyboardType;
16
- }>;
17
- export declare function readAndroidClipboardText(device: DeviceInfo): Promise<string>;
18
- export declare function writeAndroidClipboardText(device: DeviceInfo, text: string): Promise<void>;
19
- export {};
@@ -1,26 +0,0 @@
1
- import { runCmd } from '../../utils/exec.ts';
2
- import type { DeviceInfo } from '../../utils/device.ts';
3
- type AndroidDeviceDiscoveryOptions = {
4
- serialAllowlist?: ReadonlySet<string>;
5
- };
6
- type AndroidAdbRunner = typeof runCmd;
7
- export declare function parseAndroidEmulatorAvdNameOutput(rawOutput: string): string | undefined;
8
- export declare function resolveAndroidEmulatorAvdName(serial: string, runAdb?: AndroidAdbRunner): Promise<string | undefined>;
9
- export declare function parseAndroidTargetFromCharacteristics(rawOutput: string): 'tv' | null;
10
- export declare function parseAndroidFeatureListForTv(rawOutput: string): boolean;
11
- export declare function listAndroidDevices(options?: AndroidDeviceDiscoveryOptions): Promise<DeviceInfo[]>;
12
- export declare function parseAndroidAvdList(rawOutput: string): string[];
13
- export declare function resolveAndroidAvdName(avdNames: string[], requestedName: string): string | undefined;
14
- export declare function ensureAndroidEmulatorBooted(params: {
15
- avdName: string;
16
- serial?: string;
17
- timeoutMs?: number;
18
- headless?: boolean;
19
- }): Promise<DeviceInfo>;
20
- export declare function ensureAndroidEmulatorHeadlessBooted(params: {
21
- avdName: string;
22
- serial?: string;
23
- timeoutMs?: number;
24
- }): Promise<DeviceInfo>;
25
- export declare function waitForAndroidBoot(serial: string, timeoutMs?: number): Promise<void>;
26
- export {};
@@ -1,8 +0,0 @@
1
- export { ensureAdb } from './adb.ts';
2
- export { resolveAndroidApp, listAndroidApps, inferAndroidAppName, getAndroidAppState, openAndroidApp, isAmStartError, parseAndroidLaunchComponent, openAndroidDevice, closeAndroidApp, installAndroidInstallablePath, installAndroidInstallablePathAndResolvePackageName, installAndroidApp, reinstallAndroidApp, } from './app-lifecycle.ts';
3
- export { pressAndroid, swipeAndroid, backAndroid, homeAndroid, appSwitcherAndroid, longPressAndroid, typeAndroid, focusAndroid, fillAndroid, readAndroidTextAtPoint, scrollAndroid, scrollIntoViewAndroid, getAndroidScreenSize, } from './input-actions.ts';
4
- export { type AndroidKeyboardState, getAndroidKeyboardState, dismissAndroidKeyboard, readAndroidClipboardText, writeAndroidClipboardText, } from './device-input-state.ts';
5
- export { setAndroidSetting } from './settings.ts';
6
- export { pushAndroidNotification } from './notifications.ts';
7
- export { snapshotAndroid } from './snapshot.ts';
8
- export { screenshotAndroid } from './screenshot.ts';
@@ -1,17 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- export declare function pressAndroid(device: DeviceInfo, x: number, y: number): Promise<void>;
3
- export declare function swipeAndroid(device: DeviceInfo, x1: number, y1: number, x2: number, y2: number, durationMs?: number): Promise<void>;
4
- export declare function backAndroid(device: DeviceInfo): Promise<void>;
5
- export declare function homeAndroid(device: DeviceInfo): Promise<void>;
6
- export declare function appSwitcherAndroid(device: DeviceInfo): Promise<void>;
7
- export declare function longPressAndroid(device: DeviceInfo, x: number, y: number, durationMs?: number): Promise<void>;
8
- export declare function typeAndroid(device: DeviceInfo, text: string): Promise<void>;
9
- export declare function focusAndroid(device: DeviceInfo, x: number, y: number): Promise<void>;
10
- export declare function fillAndroid(device: DeviceInfo, x: number, y: number, text: string): Promise<void>;
11
- export declare function scrollAndroid(device: DeviceInfo, direction: string, amount?: number): Promise<void>;
12
- export declare function scrollIntoViewAndroid(device: DeviceInfo, text: string): Promise<void>;
13
- export declare function getAndroidScreenSize(device: DeviceInfo): Promise<{
14
- width: number;
15
- height: number;
16
- }>;
17
- export declare function readAndroidTextAtPoint(device: DeviceInfo, x: number, y: number): Promise<string | null>;
@@ -1,11 +0,0 @@
1
- import { type MaterializeInstallSource } from '../install-source.ts';
2
- export type PreparedAndroidInstallArtifact = {
3
- archivePath?: string;
4
- installablePath: string;
5
- packageName?: string;
6
- cleanup: () => Promise<void>;
7
- };
8
- export declare function prepareAndroidInstallArtifact(source: MaterializeInstallSource, options?: {
9
- signal?: AbortSignal;
10
- resolveIdentity?: boolean;
11
- }): Promise<PreparedAndroidInstallArtifact>;
@@ -1 +0,0 @@
1
- export declare function resolveAndroidArchivePackageName(archivePath: string): Promise<string | undefined>;
@@ -1,11 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- type AndroidBroadcastPayload = {
3
- action?: string;
4
- receiver?: string;
5
- extras?: Record<string, unknown>;
6
- };
7
- export declare function pushAndroidNotification(device: DeviceInfo, packageName: string, payload: AndroidBroadcastPayload): Promise<{
8
- action: string;
9
- extrasCount: number;
10
- }>;
11
- export {};
@@ -1,4 +0,0 @@
1
- export type AndroidAppTargetKind = 'package' | 'binary' | 'other';
2
- export declare function classifyAndroidAppTarget(target: string): AndroidAppTargetKind;
3
- export declare function looksLikeAndroidPackageName(value: string): boolean;
4
- export declare function formatAndroidInstalledPackageRequiredMessage(target: string): string;
@@ -1,16 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- type ScreenshotAndroidDeps = {
3
- enableDemoMode: (device: DeviceInfo) => Promise<void>;
4
- settle: (ms: number) => Promise<void>;
5
- capture: (device: DeviceInfo, outPath: string) => Promise<void>;
6
- disableDemoMode: (device: DeviceInfo) => Promise<void>;
7
- };
8
- export declare function screenshotAndroid(device: DeviceInfo, outPath: string, deps?: ScreenshotAndroidDeps): Promise<void>;
9
- /**
10
- * Enable Android demo mode and set deterministic time in status bar
11
- * for consistent screenshots.
12
- */
13
- export declare function enableAndroidDemoMode(device: DeviceInfo): Promise<void>;
14
- /** Disable demo mode and restore the live status bar. */
15
- export declare function disableAndroidDemoMode(device: DeviceInfo): Promise<void>;
16
- export {};
@@ -1,2 +0,0 @@
1
- export declare function resolveAndroidSdkRoots(env?: NodeJS.ProcessEnv): string[];
2
- export declare function ensureAndroidSdkPathConfigured(env?: NodeJS.ProcessEnv): Promise<void>;
@@ -1,3 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- import { type PermissionSettingOptions } from '../permission-utils.ts';
3
- export declare function setAndroidSetting(device: DeviceInfo, setting: string, state: string, appPackage?: string, options?: PermissionSettingOptions): Promise<Record<string, unknown> | void>;
@@ -1,7 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- import type { RawSnapshotNode, SnapshotOptions } from '../../utils/snapshot.ts';
3
- export declare function snapshotAndroid(device: DeviceInfo, options?: SnapshotOptions): Promise<{
4
- nodes: RawSnapshotNode[];
5
- truncated?: boolean;
6
- }>;
7
- export declare function dumpUiHierarchy(device: DeviceInfo): Promise<string>;
@@ -1,21 +0,0 @@
1
- import type { RawSnapshotNode, Rect, SnapshotOptions } from '../../utils/snapshot.ts';
2
- export declare function findBounds(xml: string, query: string): {
3
- x: number;
4
- y: number;
5
- } | null;
6
- export declare function parseUiHierarchy(xml: string, maxNodes: number, options: SnapshotOptions): {
7
- nodes: RawSnapshotNode[];
8
- truncated?: boolean;
9
- };
10
- export declare function readNodeAttributes(node: string): {
11
- text: string | null;
12
- desc: string | null;
13
- resourceId: string | null;
14
- className: string | null;
15
- bounds: string | null;
16
- clickable?: boolean;
17
- enabled?: boolean;
18
- focusable?: boolean;
19
- focused?: boolean;
20
- };
21
- export declare function parseBounds(bounds: string | null): Rect | undefined;
@@ -1,2 +0,0 @@
1
- export type AppearanceAction = 'light' | 'dark' | 'toggle';
2
- export declare function parseAppearanceAction(state: string): AppearanceAction;
@@ -1,14 +0,0 @@
1
- type BootFailureReason = 'IOS_BOOT_TIMEOUT' | 'IOS_RUNNER_CONNECT_TIMEOUT' | 'IOS_TOOL_MISSING' | 'ANDROID_BOOT_TIMEOUT' | 'ADB_TRANSPORT_UNAVAILABLE' | 'CI_RESOURCE_STARVATION_SUSPECTED' | 'BOOT_COMMAND_FAILED' | 'UNKNOWN';
2
- type BootDiagnosticContext = {
3
- platform?: 'ios' | 'android';
4
- phase?: 'boot' | 'connect' | 'transport';
5
- };
6
- export declare function classifyBootFailure(input: {
7
- error?: unknown;
8
- message?: string;
9
- stdout?: string;
10
- stderr?: string;
11
- context?: BootDiagnosticContext;
12
- }): BootFailureReason;
13
- export declare function bootFailureHint(reason: BootFailureReason): string;
14
- export {};
@@ -1,29 +0,0 @@
1
- export type MaterializeInstallSource = {
2
- kind: 'url';
3
- url: string;
4
- headers?: Record<string, string>;
5
- } | {
6
- kind: 'path';
7
- path: string;
8
- };
9
- type MaterializeInstallableOptions = {
10
- source: MaterializeInstallSource;
11
- isInstallablePath: (candidatePath: string, stat: {
12
- isFile(): boolean;
13
- isDirectory(): boolean;
14
- }) => boolean;
15
- installableLabel: string;
16
- allowArchiveExtraction?: boolean;
17
- signal?: AbortSignal;
18
- downloadTimeoutMs?: number;
19
- };
20
- export type MaterializedInstallable = {
21
- archivePath?: string;
22
- installablePath: string;
23
- cleanup: () => Promise<void>;
24
- };
25
- export declare function materializeInstallablePath(options: MaterializeInstallableOptions): Promise<MaterializedInstallable>;
26
- export declare function expandSourcePath(inputPath: string): string;
27
- export declare function validateDownloadSourceUrl(parsedUrl: URL): Promise<void>;
28
- export declare function isTrustedInstallSourceUrl(sourceUrl: string | URL): boolean;
29
- export {};
@@ -1,2 +0,0 @@
1
- import type { IosAppInfo } from './devicectl.ts';
2
- export declare function filterAppleAppsByBundlePrefix(apps: IosAppInfo[], filter: 'user-installed' | 'all'): IosAppInfo[];
@@ -1,34 +0,0 @@
1
- import type { DeviceInfo } from '../../utils/device.ts';
2
- import { type PermissionSettingOptions } from '../permission-utils.ts';
3
- import { type IosAppInfo } from './devicectl.ts';
4
- export { screenshotIos, shouldFallbackToRunnerForIosScreenshot, shouldRetryIosSimulatorScreenshot, } from './screenshot.ts';
5
- type InstallIosAppOptions = {
6
- appIdentifierHint?: string;
7
- };
8
- export declare function resolveIosApp(device: DeviceInfo, app: string): Promise<string>;
9
- export declare function openIosApp(device: DeviceInfo, app: string, options?: {
10
- appBundleId?: string;
11
- url?: string;
12
- }): Promise<void>;
13
- export declare function openIosDevice(device: DeviceInfo): Promise<void>;
14
- export declare function closeIosApp(device: DeviceInfo, app: string): Promise<void>;
15
- export declare function uninstallIosApp(device: DeviceInfo, app: string): Promise<{
16
- bundleId: string;
17
- }>;
18
- export declare function installIosApp(device: DeviceInfo, appPath: string, options?: InstallIosAppOptions): Promise<{
19
- archivePath?: string;
20
- installablePath: string;
21
- bundleId?: string;
22
- appName?: string;
23
- launchTarget?: string;
24
- }>;
25
- export declare function reinstallIosApp(device: DeviceInfo, app: string, appPath: string): Promise<{
26
- bundleId: string;
27
- }>;
28
- export declare function installIosInstallablePath(device: DeviceInfo, installablePath: string): Promise<void>;
29
- export declare function readIosClipboardText(device: DeviceInfo): Promise<string>;
30
- export declare function writeIosClipboardText(device: DeviceInfo, text: string): Promise<void>;
31
- export declare function pushIosNotification(device: DeviceInfo, bundleId: string, payload: Record<string, unknown>): Promise<void>;
32
- export declare function setIosSetting(device: DeviceInfo, setting: string, state: string, appBundleId?: string, options?: PermissionSettingOptions): Promise<Record<string, unknown> | void>;
33
- export declare function listIosApps(device: DeviceInfo, filter?: 'user-installed' | 'all'): Promise<IosAppInfo[]>;
34
- export declare function listSimulatorApps(device: DeviceInfo): Promise<IosAppInfo[]>;
@@ -1,10 +0,0 @@
1
- export declare const IOS_BOOT_TIMEOUT_MS: number;
2
- export declare const IOS_SIMCTL_LIST_TIMEOUT_MS: number;
3
- export declare const IOS_APP_LAUNCH_TIMEOUT_MS: number;
4
- export declare const IOS_DEVICECTL_TIMEOUT_MS: number;
5
- export declare const IOS_SIMULATOR_FOCUS_TIMEOUT_MS: number;
6
- export declare const IOS_SIMULATOR_SCREENSHOT_TIMEOUT_MS: number;
7
- export declare const IOS_RUNNER_SCREENSHOT_COPY_TIMEOUT_MS: number;
8
- export declare const IOS_SIMULATOR_SCREENSHOT_RETRY_MAX_ATTEMPTS = 5;
9
- export declare const IOS_SIMULATOR_SCREENSHOT_RETRY_BASE_DELAY_MS = 1000;
10
- export declare const IOS_SIMULATOR_SCREENSHOT_RETRY_MAX_DELAY_MS = 5000;