@devicerail/protocol 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +33 -0
  3. package/dist/generated/v1/action-call.d.ts +10 -0
  4. package/dist/generated/v1/action-definition.d.ts +12 -0
  5. package/dist/generated/v1/action-execution.d.ts +27 -0
  6. package/dist/generated/v1/action-outcome.d.ts +103 -0
  7. package/dist/generated/v1/action-protection.d.ts +5 -0
  8. package/dist/generated/v1/action-result.d.ts +77 -0
  9. package/dist/generated/v1/asset-ref.d.ts +11 -0
  10. package/dist/generated/v1/clear-element-arguments.d.ts +59 -0
  11. package/dist/generated/v1/clear-element-result.d.ts +26 -0
  12. package/dist/generated/v1/coordinate-fallback-reason.d.ts +5 -0
  13. package/dist/generated/v1/device-capabilities-request.d.ts +21 -0
  14. package/dist/generated/v1/device-capabilities-response.d.ts +37 -0
  15. package/dist/generated/v1/device-capabilities-result.d.ts +13 -0
  16. package/dist/generated/v1/device-connect-request.d.ts +21 -0
  17. package/dist/generated/v1/device-connect-response.d.ts +69 -0
  18. package/dist/generated/v1/device-connect-result.d.ts +44 -0
  19. package/dist/generated/v1/device-disconnect-request.d.ts +21 -0
  20. package/dist/generated/v1/device-disconnect-response.d.ts +35 -0
  21. package/dist/generated/v1/device-disconnect-result.d.ts +10 -0
  22. package/dist/generated/v1/device-execute-params.d.ts +23 -0
  23. package/dist/generated/v1/device-execute-request.d.ts +33 -0
  24. package/dist/generated/v1/device-execute-response.d.ts +102 -0
  25. package/dist/generated/v1/device-execute-result.d.ts +77 -0
  26. package/dist/generated/v1/device-id.d.ts +5 -0
  27. package/dist/generated/v1/device-info.d.ts +44 -0
  28. package/dist/generated/v1/device-observe-request.d.ts +21 -0
  29. package/dist/generated/v1/device-observe-response.d.ts +79 -0
  30. package/dist/generated/v1/device-observe-result.d.ts +54 -0
  31. package/dist/generated/v1/device-select-params.d.ts +10 -0
  32. package/dist/generated/v1/device-select-request.d.ts +19 -0
  33. package/dist/generated/v1/device-select-response.d.ts +75 -0
  34. package/dist/generated/v1/device-select-result.d.ts +50 -0
  35. package/dist/generated/v1/devices-list-request.d.ts +15 -0
  36. package/dist/generated/v1/devices-list-response.d.ts +76 -0
  37. package/dist/generated/v1/devices-list-result.d.ts +51 -0
  38. package/dist/generated/v1/element-selector.d.ts +31 -0
  39. package/dist/generated/v1/element-target.d.ts +56 -0
  40. package/dist/generated/v1/error-info.d.ts +10 -0
  41. package/dist/generated/v1/event-id.d.ts +5 -0
  42. package/dist/generated/v1/event-sequence.d.ts +11 -0
  43. package/dist/generated/v1/event-stream-cursor.d.ts +24 -0
  44. package/dist/generated/v1/event-stream-endpoint.d.ts +8 -0
  45. package/dist/generated/v1/event-stream-epoch.d.ts +9 -0
  46. package/dist/generated/v1/event-stream-origin-policy.d.ts +13 -0
  47. package/dist/generated/v1/event-subscription-id.d.ts +5 -0
  48. package/dist/generated/v1/events-clear-request.d.ts +19 -0
  49. package/dist/generated/v1/events-clear-response.d.ts +36 -0
  50. package/dist/generated/v1/events-clear-result.d.ts +11 -0
  51. package/dist/generated/v1/events-list-params.d.ts +19 -0
  52. package/dist/generated/v1/events-list-request.d.ts +28 -0
  53. package/dist/generated/v1/events-list-response.d.ts +209 -0
  54. package/dist/generated/v1/events-list-result.d.ts +192 -0
  55. package/dist/generated/v1/events-stream-event-notification.d.ts +216 -0
  56. package/dist/generated/v1/events-stream-event-params.d.ts +209 -0
  57. package/dist/generated/v1/events-stream-open-params.d.ts +17 -0
  58. package/dist/generated/v1/events-stream-open-request.d.ts +26 -0
  59. package/dist/generated/v1/events-stream-open-response.d.ts +43 -0
  60. package/dist/generated/v1/events-stream-open-result.d.ts +18 -0
  61. package/dist/generated/v1/events-stream-terminal-notification.d.ts +70 -0
  62. package/dist/generated/v1/events-stream-terminal-params.d.ts +63 -0
  63. package/dist/generated/v1/events-stream-termination.d.ts +37 -0
  64. package/dist/generated/v1/events-subscribe-params.d.ts +28 -0
  65. package/dist/generated/v1/events-subscribe-request.d.ts +37 -0
  66. package/dist/generated/v1/events-subscribe-response.d.ts +56 -0
  67. package/dist/generated/v1/events-subscribe-result.d.ts +31 -0
  68. package/dist/generated/v1/feature-offer.d.ts +8 -0
  69. package/dist/generated/v1/feature-selection.d.ts +7 -0
  70. package/dist/generated/v1/find-element-arguments.d.ts +34 -0
  71. package/dist/generated/v1/find-element-result.d.ts +26 -0
  72. package/dist/generated/v1/hello-params.d.ts +35 -0
  73. package/dist/generated/v1/hello-result.d.ts +29 -0
  74. package/dist/generated/v1/index.d.ts +179 -0
  75. package/dist/generated/v1/json-rpc-version.d.ts +5 -0
  76. package/dist/generated/v1/manual-action-arguments.d.ts +11 -0
  77. package/dist/generated/v1/manual-action-step.d.ts +25 -0
  78. package/dist/generated/v1/manual-recording.d.ts +43 -0
  79. package/dist/generated/v1/media-frame.d.ts +25 -0
  80. package/dist/generated/v1/media-stream-capture-params.d.ts +16 -0
  81. package/dist/generated/v1/media-stream-capture-request.d.ts +31 -0
  82. package/dist/generated/v1/media-stream-capture-response.d.ts +56 -0
  83. package/dist/generated/v1/media-stream-capture-result.d.ts +31 -0
  84. package/dist/generated/v1/media-stream-end-params.d.ts +10 -0
  85. package/dist/generated/v1/media-stream-end-request.d.ts +19 -0
  86. package/dist/generated/v1/media-stream-end-response.d.ts +36 -0
  87. package/dist/generated/v1/media-stream-end-result.d.ts +11 -0
  88. package/dist/generated/v1/media-stream-id.d.ts +5 -0
  89. package/dist/generated/v1/media-stream-info.d.ts +17 -0
  90. package/dist/generated/v1/media-stream-kind.d.ts +5 -0
  91. package/dist/generated/v1/media-stream-start-params.d.ts +17 -0
  92. package/dist/generated/v1/media-stream-start-request.d.ts +26 -0
  93. package/dist/generated/v1/media-stream-start-response.d.ts +48 -0
  94. package/dist/generated/v1/media-stream-start-result.d.ts +23 -0
  95. package/dist/generated/v1/method-map.d.ts +162 -0
  96. package/dist/generated/v1/observation.d.ts +54 -0
  97. package/dist/generated/v1/peer-info.d.ts +8 -0
  98. package/dist/generated/v1/platform.d.ts +36 -0
  99. package/dist/generated/v1/protocol-incompatibility-reason.d.ts +5 -0
  100. package/dist/generated/v1/protocol-offer.d.ts +22 -0
  101. package/dist/generated/v1/protocol-range.d.ts +12 -0
  102. package/dist/generated/v1/protocol-selection.d.ts +11 -0
  103. package/dist/generated/v1/protocol-version.d.ts +8 -0
  104. package/dist/generated/v1/recorded-action-call.d.ts +18 -0
  105. package/dist/generated/v1/request-cancel-params.d.ts +8 -0
  106. package/dist/generated/v1/request-cancel-request.d.ts +16 -0
  107. package/dist/generated/v1/request-cancel-response.d.ts +34 -0
  108. package/dist/generated/v1/request-cancel-result.d.ts +10 -0
  109. package/dist/generated/v1/request-cancel-status.d.ts +5 -0
  110. package/dist/generated/v1/request-timeout-ms.d.ts +9 -0
  111. package/dist/generated/v1/rpc-error.d.ts +15 -0
  112. package/dist/generated/v1/rpc-id.d.ts +5 -0
  113. package/dist/generated/v1/rpc-params.d.ts +7 -0
  114. package/dist/generated/v1/rpc-request.d.ts +21 -0
  115. package/dist/generated/v1/rpc-response.d.ts +29 -0
  116. package/dist/generated/v1/rpc-server-message.d.ts +274 -0
  117. package/dist/generated/v1/rpc-server-notification.d.ts +256 -0
  118. package/dist/generated/v1/screenshot-omission-reason.d.ts +5 -0
  119. package/dist/generated/v1/session-current-request.d.ts +15 -0
  120. package/dist/generated/v1/session-current-response.d.ts +35 -0
  121. package/dist/generated/v1/session-current-result.d.ts +10 -0
  122. package/dist/generated/v1/session-end-params.d.ts +12 -0
  123. package/dist/generated/v1/session-end-request.d.ts +21 -0
  124. package/dist/generated/v1/session-end-response.d.ts +45 -0
  125. package/dist/generated/v1/session-end-result.d.ts +20 -0
  126. package/dist/generated/v1/session-export-params.d.ts +23 -0
  127. package/dist/generated/v1/session-export-request.d.ts +32 -0
  128. package/dist/generated/v1/session-export-response.d.ts +229 -0
  129. package/dist/generated/v1/session-export-result.d.ts +211 -0
  130. package/dist/generated/v1/session-export.d.ts +204 -0
  131. package/dist/generated/v1/session-id.d.ts +5 -0
  132. package/dist/generated/v1/session-info.d.ts +20 -0
  133. package/dist/generated/v1/session-outcome.d.ts +5 -0
  134. package/dist/generated/v1/session-start-request.d.ts +15 -0
  135. package/dist/generated/v1/session-start-response.d.ts +45 -0
  136. package/dist/generated/v1/session-start-result.d.ts +20 -0
  137. package/dist/generated/v1/session-state.d.ts +5 -0
  138. package/dist/generated/v1/session-target-params.d.ts +10 -0
  139. package/dist/generated/v1/sessions-list-request.d.ts +15 -0
  140. package/dist/generated/v1/sessions-list-response.d.ts +45 -0
  141. package/dist/generated/v1/sessions-list-result.d.ts +21 -0
  142. package/dist/generated/v1/set-element-value-arguments.d.ts +60 -0
  143. package/dist/generated/v1/set-element-value-result.d.ts +26 -0
  144. package/dist/generated/v1/system-describe-request.d.ts +15 -0
  145. package/dist/generated/v1/system-describe-response.d.ts +63 -0
  146. package/dist/generated/v1/system-describe-result.d.ts +38 -0
  147. package/dist/generated/v1/system-hello-request.d.ts +44 -0
  148. package/dist/generated/v1/system-hello-response.d.ts +54 -0
  149. package/dist/generated/v1/tap-element-arguments.d.ts +59 -0
  150. package/dist/generated/v1/tap-element-result.d.ts +26 -0
  151. package/dist/generated/v1/test-event-payload.d.ts +181 -0
  152. package/dist/generated/v1/test-event.d.ts +191 -0
  153. package/dist/generated/v1/text-match-mode.d.ts +5 -0
  154. package/dist/generated/v1/text-match.d.ts +9 -0
  155. package/dist/generated/v1/transport-info.d.ts +8 -0
  156. package/dist/generated/v1/ui-context-kind.d.ts +5 -0
  157. package/dist/generated/v1/ui-context-ref.d.ts +15 -0
  158. package/dist/generated/v1/ui-context-selector.d.ts +12 -0
  159. package/dist/generated/v1/ui-node-ref.d.ts +23 -0
  160. package/dist/generated/v1/ui-node.d.ts +26 -0
  161. package/dist/generated/v1/ui-rect.d.ts +10 -0
  162. package/dist/generated/v1/ui-snapshot-get-params.d.ts +13 -0
  163. package/dist/generated/v1/ui-snapshot-get-request.d.ts +22 -0
  164. package/dist/generated/v1/ui-snapshot-get-response.d.ts +81 -0
  165. package/dist/generated/v1/ui-snapshot-get-result.d.ts +56 -0
  166. package/dist/generated/v1/ui-snapshot-omission-reason.d.ts +5 -0
  167. package/dist/generated/v1/ui-snapshot-ref.d.ts +32 -0
  168. package/dist/generated/v1/ui-snapshot.d.ts +56 -0
  169. package/dist/generated/v1/verdict-record-params.d.ts +29 -0
  170. package/dist/generated/v1/verdict-record-request.d.ts +38 -0
  171. package/dist/generated/v1/verdict-record-response.d.ts +215 -0
  172. package/dist/generated/v1/verdict-record-result.d.ts +197 -0
  173. package/dist/generated/v1/verdict-status.d.ts +5 -0
  174. package/dist/generated/v1/verdict.d.ts +20 -0
  175. package/dist/generated/v1/viewport.d.ts +10 -0
  176. package/dist/generated/v1/wait-for-element-arguments.d.ts +35 -0
  177. package/dist/generated/v1/wait-for-element-condition.d.ts +5 -0
  178. package/dist/generated/v1/wait-for-element-result.d.ts +29 -0
  179. package/dist/index.d.ts +1 -0
  180. package/package.json +49 -0
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type TestEventPayload = {
6
+ type: "sessionStarted";
7
+ } | {
8
+ outcome: SessionOutcome;
9
+ reason?: string | null;
10
+ type: "sessionEnded";
11
+ } | {
12
+ observation: Observation;
13
+ type: "observationCaptured";
14
+ } | {
15
+ call: RecordedActionCall;
16
+ type: "actionStarted";
17
+ } | {
18
+ callId: string;
19
+ outcome: ActionOutcome;
20
+ type: "actionCompleted";
21
+ } | {
22
+ stream: MediaStreamInfo;
23
+ type: "mediaStreamStarted";
24
+ } | {
25
+ frame: MediaFrame;
26
+ type: "mediaFrameCaptured";
27
+ } | {
28
+ frameCount: number;
29
+ streamId: string;
30
+ type: "mediaStreamEnded";
31
+ } | {
32
+ type: "verdictRecorded";
33
+ verdict: Verdict;
34
+ } | {
35
+ error: ErrorInfo;
36
+ type: "error";
37
+ };
38
+ export type SessionOutcome = "completed" | "failed" | "cancelled" | "shutdown";
39
+ export type ScreenshotOmissionReason = "policy" | "protectedAction";
40
+ export type UiContextKind = "native" | "web";
41
+ export type UiSnapshotOmissionReason = "driverUnsupported" | "policy" | "protectedAction";
42
+ /**
43
+ * The terminal outcome for one action call.
44
+ *
45
+ * Keeping the four outcomes structurally distinct prevents clients from
46
+ * having to infer timeout or cancellation from human-readable error text.
47
+ */
48
+ export type ActionOutcome = {
49
+ outcome: "succeeded";
50
+ result: ActionResult;
51
+ } | {
52
+ error: ErrorInfo;
53
+ outcome: "failed";
54
+ } | {
55
+ error: ErrorInfo;
56
+ outcome: "cancelled";
57
+ } | {
58
+ error: ErrorInfo;
59
+ outcome: "timedOut";
60
+ timeoutMs: number;
61
+ };
62
+ export type ActionExecution = {
63
+ context: UiContextRef;
64
+ mode: "nativeSemantic";
65
+ } | {
66
+ context: UiContextRef;
67
+ mode: "webSemantic";
68
+ } | {
69
+ context: UiContextRef;
70
+ fallbackReason: CoordinateFallbackReason;
71
+ mode: "coordinateFallback";
72
+ };
73
+ export type CoordinateFallbackReason = "semanticInteractionUnavailable" | "platformLimitation";
74
+ export type MediaStreamKind = "screenshot" | "video";
75
+ /**
76
+ * A one-based sequence number within one session.
77
+ *
78
+ * The wire value is capped at JavaScript's maximum safe integer so generated
79
+ * clients can sort and resume event streams without losing precision.
80
+ */
81
+ export type EventSequence = number;
82
+ export type VerdictStatus = "pass" | "fail" | "unknown";
83
+ export interface Observation {
84
+ capturedAtMs: number;
85
+ deviceId: string;
86
+ id: string;
87
+ metadata?: {
88
+ [k: string]: unknown;
89
+ };
90
+ screenshot?: AssetRef | null;
91
+ screenshotOmission?: ScreenshotOmissionReason | null;
92
+ uiSnapshot?: UiSnapshotRef | null;
93
+ uiSnapshotOmission?: UiSnapshotOmissionReason | null;
94
+ viewport: Viewport;
95
+ [k: string]: unknown;
96
+ }
97
+ export interface AssetRef {
98
+ id: string;
99
+ mediaType: string;
100
+ sha256?: string | null;
101
+ uri: string;
102
+ [k: string]: unknown;
103
+ }
104
+ /**
105
+ * Small Observation-side reference to a UI Tree Evidence object.
106
+ */
107
+ export interface UiSnapshotRef {
108
+ byteLength: number;
109
+ context: UiContextRef;
110
+ evidence: AssetRef;
111
+ formatVersion: number;
112
+ nodeCount: number;
113
+ }
114
+ /**
115
+ * Full identity of one native accessibility or web-document context.
116
+ * `documentEpoch` is required for both channels and changes after reconnect,
117
+ * navigation, or any replacement that invalidates prior node references.
118
+ */
119
+ export interface UiContextRef {
120
+ contextId: string;
121
+ contextKind: UiContextKind;
122
+ documentEpoch: string;
123
+ }
124
+ export interface Viewport {
125
+ height: number;
126
+ scaleFactor: number;
127
+ width: number;
128
+ [k: string]: unknown;
129
+ }
130
+ /**
131
+ * Durable representation of an Action invocation.
132
+ *
133
+ * Standard calls preserve the historical wire shape. Protected and unknown
134
+ * calls retain only correlation fields and serialize `arguments` as `null`
135
+ * with an explicit `argumentsRedacted` marker.
136
+ */
137
+ export interface RecordedActionCall {
138
+ arguments?: unknown;
139
+ argumentsRedacted?: boolean;
140
+ id: string;
141
+ name: string;
142
+ [k: string]: unknown;
143
+ }
144
+ export interface ActionResult {
145
+ after?: Observation | null;
146
+ before?: Observation | null;
147
+ callId: string;
148
+ evidence?: AssetRef[];
149
+ execution?: ActionExecution | null;
150
+ finishedAtMs: number;
151
+ output: unknown;
152
+ startedAtMs: number;
153
+ [k: string]: unknown;
154
+ }
155
+ export interface ErrorInfo {
156
+ code: string;
157
+ details?: unknown;
158
+ message: string;
159
+ retryable: boolean;
160
+ }
161
+ export interface MediaStreamInfo {
162
+ id: string;
163
+ kind: MediaStreamKind;
164
+ mediaType: string;
165
+ viewport?: Viewport | null;
166
+ }
167
+ export interface MediaFrame {
168
+ durationMs?: number | null;
169
+ evidence: AssetRef;
170
+ frameIndex: EventSequence;
171
+ keyFrame?: boolean;
172
+ streamId: string;
173
+ }
174
+ export interface Verdict {
175
+ /**
176
+ * @maxItems 64
177
+ */
178
+ evidence?: AssetRef[];
179
+ status: VerdictStatus;
180
+ summary: string;
181
+ }
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type TestEventPayload = {
6
+ type: "sessionStarted";
7
+ } | {
8
+ outcome: SessionOutcome;
9
+ reason?: string | null;
10
+ type: "sessionEnded";
11
+ } | {
12
+ observation: Observation;
13
+ type: "observationCaptured";
14
+ } | {
15
+ call: RecordedActionCall;
16
+ type: "actionStarted";
17
+ } | {
18
+ callId: string;
19
+ outcome: ActionOutcome;
20
+ type: "actionCompleted";
21
+ } | {
22
+ stream: MediaStreamInfo;
23
+ type: "mediaStreamStarted";
24
+ } | {
25
+ frame: MediaFrame;
26
+ type: "mediaFrameCaptured";
27
+ } | {
28
+ frameCount: number;
29
+ streamId: string;
30
+ type: "mediaStreamEnded";
31
+ } | {
32
+ type: "verdictRecorded";
33
+ verdict: Verdict;
34
+ } | {
35
+ error: ErrorInfo;
36
+ type: "error";
37
+ };
38
+ export type SessionOutcome = "completed" | "failed" | "cancelled" | "shutdown";
39
+ export type ScreenshotOmissionReason = "policy" | "protectedAction";
40
+ export type UiContextKind = "native" | "web";
41
+ export type UiSnapshotOmissionReason = "driverUnsupported" | "policy" | "protectedAction";
42
+ /**
43
+ * The terminal outcome for one action call.
44
+ *
45
+ * Keeping the four outcomes structurally distinct prevents clients from
46
+ * having to infer timeout or cancellation from human-readable error text.
47
+ */
48
+ export type ActionOutcome = {
49
+ outcome: "succeeded";
50
+ result: ActionResult;
51
+ } | {
52
+ error: ErrorInfo;
53
+ outcome: "failed";
54
+ } | {
55
+ error: ErrorInfo;
56
+ outcome: "cancelled";
57
+ } | {
58
+ error: ErrorInfo;
59
+ outcome: "timedOut";
60
+ timeoutMs: number;
61
+ };
62
+ export type ActionExecution = {
63
+ context: UiContextRef;
64
+ mode: "nativeSemantic";
65
+ } | {
66
+ context: UiContextRef;
67
+ mode: "webSemantic";
68
+ } | {
69
+ context: UiContextRef;
70
+ fallbackReason: CoordinateFallbackReason;
71
+ mode: "coordinateFallback";
72
+ };
73
+ export type CoordinateFallbackReason = "semanticInteractionUnavailable" | "platformLimitation";
74
+ export type MediaStreamKind = "screenshot" | "video";
75
+ /**
76
+ * A one-based sequence number within one session.
77
+ *
78
+ * The wire value is capped at JavaScript's maximum safe integer so generated
79
+ * clients can sort and resume event streams without losing precision.
80
+ */
81
+ export type EventSequence = number;
82
+ export type VerdictStatus = "pass" | "fail" | "unknown";
83
+ export type RpcIdSchema = string | number;
84
+ export interface TestEvent {
85
+ atMs: number;
86
+ deviceId?: string | null;
87
+ eventId: string;
88
+ payload: TestEventPayload;
89
+ requestId?: RpcIdSchema | null;
90
+ sequence: EventSequence;
91
+ sessionId: string;
92
+ }
93
+ export interface Observation {
94
+ capturedAtMs: number;
95
+ deviceId: string;
96
+ id: string;
97
+ metadata?: {
98
+ [k: string]: unknown;
99
+ };
100
+ screenshot?: AssetRef | null;
101
+ screenshotOmission?: ScreenshotOmissionReason | null;
102
+ uiSnapshot?: UiSnapshotRef | null;
103
+ uiSnapshotOmission?: UiSnapshotOmissionReason | null;
104
+ viewport: Viewport;
105
+ [k: string]: unknown;
106
+ }
107
+ export interface AssetRef {
108
+ id: string;
109
+ mediaType: string;
110
+ sha256?: string | null;
111
+ uri: string;
112
+ [k: string]: unknown;
113
+ }
114
+ /**
115
+ * Small Observation-side reference to a UI Tree Evidence object.
116
+ */
117
+ export interface UiSnapshotRef {
118
+ byteLength: number;
119
+ context: UiContextRef;
120
+ evidence: AssetRef;
121
+ formatVersion: number;
122
+ nodeCount: number;
123
+ }
124
+ /**
125
+ * Full identity of one native accessibility or web-document context.
126
+ * `documentEpoch` is required for both channels and changes after reconnect,
127
+ * navigation, or any replacement that invalidates prior node references.
128
+ */
129
+ export interface UiContextRef {
130
+ contextId: string;
131
+ contextKind: UiContextKind;
132
+ documentEpoch: string;
133
+ }
134
+ export interface Viewport {
135
+ height: number;
136
+ scaleFactor: number;
137
+ width: number;
138
+ [k: string]: unknown;
139
+ }
140
+ /**
141
+ * Durable representation of an Action invocation.
142
+ *
143
+ * Standard calls preserve the historical wire shape. Protected and unknown
144
+ * calls retain only correlation fields and serialize `arguments` as `null`
145
+ * with an explicit `argumentsRedacted` marker.
146
+ */
147
+ export interface RecordedActionCall {
148
+ arguments?: unknown;
149
+ argumentsRedacted?: boolean;
150
+ id: string;
151
+ name: string;
152
+ [k: string]: unknown;
153
+ }
154
+ export interface ActionResult {
155
+ after?: Observation | null;
156
+ before?: Observation | null;
157
+ callId: string;
158
+ evidence?: AssetRef[];
159
+ execution?: ActionExecution | null;
160
+ finishedAtMs: number;
161
+ output: unknown;
162
+ startedAtMs: number;
163
+ [k: string]: unknown;
164
+ }
165
+ export interface ErrorInfo {
166
+ code: string;
167
+ details?: unknown;
168
+ message: string;
169
+ retryable: boolean;
170
+ }
171
+ export interface MediaStreamInfo {
172
+ id: string;
173
+ kind: MediaStreamKind;
174
+ mediaType: string;
175
+ viewport?: Viewport | null;
176
+ }
177
+ export interface MediaFrame {
178
+ durationMs?: number | null;
179
+ evidence: AssetRef;
180
+ frameIndex: EventSequence;
181
+ keyFrame?: boolean;
182
+ streamId: string;
183
+ }
184
+ export interface Verdict {
185
+ /**
186
+ * @maxItems 64
187
+ */
188
+ evidence?: AssetRef[];
189
+ status: VerdictStatus;
190
+ summary: string;
191
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type TextMatchMode = "exact" | "contains";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export interface TextMatch {
6
+ caseSensitive?: boolean;
7
+ mode?: "exact" | "contains";
8
+ value: string;
9
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export interface TransportInfo {
6
+ framing: string;
7
+ kind: string;
8
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type UiContextKind = "native" | "web";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type UiContextKind = "native" | "web";
6
+ /**
7
+ * Full identity of one native accessibility or web-document context.
8
+ * `documentEpoch` is required for both channels and changes after reconnect,
9
+ * navigation, or any replacement that invalidates prior node references.
10
+ */
11
+ export interface UiContextRef {
12
+ contextId: string;
13
+ contextKind: UiContextKind;
14
+ documentEpoch: string;
15
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type UiContextKind = "native" | "web";
6
+ /**
7
+ * Selects a current context without pretending to own its document epoch.
8
+ */
9
+ export interface UiContextSelector {
10
+ contextId?: string | null;
11
+ contextKind: UiContextKind;
12
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type UiContextKind = "native" | "web";
6
+ /**
7
+ * Durable reference to one node in one observed UI Tree.
8
+ */
9
+ export interface UiNodeRef {
10
+ context: UiContextRef;
11
+ observationId: string;
12
+ stableNodeId: string;
13
+ }
14
+ /**
15
+ * Full identity of one native accessibility or web-document context.
16
+ * `documentEpoch` is required for both channels and changes after reconnect,
17
+ * navigation, or any replacement that invalidates prior node references.
18
+ */
19
+ export interface UiContextRef {
20
+ contextId: string;
21
+ contextKind: UiContextKind;
22
+ documentEpoch: string;
23
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ /**
6
+ * One node in the normalized preorder list. Unknown platform values remain
7
+ * `null`; Drivers must not manufacture optimistic enabled/hittable states.
8
+ */
9
+ export interface UiNode {
10
+ bounds?: UiRect | null;
11
+ enabled?: boolean | null;
12
+ hittable?: boolean | null;
13
+ identifier?: string | null;
14
+ name?: string | null;
15
+ parentStableNodeId?: string | null;
16
+ role: string;
17
+ stableNodeId: string;
18
+ text?: string | null;
19
+ value?: string | null;
20
+ }
21
+ export interface UiRect {
22
+ height: number;
23
+ width: number;
24
+ x: number;
25
+ y: number;
26
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export interface UiRect {
6
+ height: number;
7
+ width: number;
8
+ x: number;
9
+ y: number;
10
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ /**
6
+ * Parameters accepted by `ui.snapshot.get`.
7
+ *
8
+ * The active Session owns the Observation lookup; callers cannot name a
9
+ * different Session or provide an arbitrary Evidence reference.
10
+ */
11
+ export interface UiSnapshotGetParams {
12
+ observationId: string;
13
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type RpcIdSchema = string | number;
6
+ export type JsonRpcVersion = "2.0";
7
+ export type UiSnapshotGetMethodSchema = "ui.snapshot.get";
8
+ export interface UiSnapshotGetRequest {
9
+ id: RpcIdSchema;
10
+ jsonrpc: JsonRpcVersion;
11
+ method: UiSnapshotGetMethodSchema;
12
+ params: UiSnapshotGetParams;
13
+ }
14
+ /**
15
+ * Parameters accepted by `ui.snapshot.get`.
16
+ *
17
+ * The active Session owns the Observation lookup; callers cannot name a
18
+ * different Session or provide an arbitrary Evidence reference.
19
+ */
20
+ export interface UiSnapshotGetParams {
21
+ observationId: string;
22
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type UiSnapshotGetResponse = UiSnapshotGetSuccessSchema | SystemHelloFailureSchema;
6
+ export type RpcIdSchema = string | number;
7
+ export type JsonRpcVersion = "2.0";
8
+ export type UiContextKind = "native" | "web";
9
+ export type NullableRpcIdSchema = RpcIdSchema | null;
10
+ export interface UiSnapshotGetSuccessSchema {
11
+ id: RpcIdSchema;
12
+ jsonrpc: JsonRpcVersion;
13
+ result: UiSnapshot;
14
+ }
15
+ /**
16
+ * Canonical UI Tree. `nodes` is preorder and every parent must precede its
17
+ * contiguous descendants. The serialized payload is bounded to 768 KiB.
18
+ */
19
+ export interface UiSnapshot {
20
+ context: UiContextRef;
21
+ formatVersion: number;
22
+ /**
23
+ * @minItems 1
24
+ * @maxItems 10000
25
+ */
26
+ nodes: [UiNode, ...UiNode[]];
27
+ observationId: string;
28
+ /**
29
+ * @minItems 1
30
+ * @maxItems 10000
31
+ */
32
+ rootStableNodeIds: [string, ...string[]];
33
+ }
34
+ /**
35
+ * Full identity of one native accessibility or web-document context.
36
+ * `documentEpoch` is required for both channels and changes after reconnect,
37
+ * navigation, or any replacement that invalidates prior node references.
38
+ */
39
+ export interface UiContextRef {
40
+ contextId: string;
41
+ contextKind: UiContextKind;
42
+ documentEpoch: string;
43
+ }
44
+ /**
45
+ * One node in the normalized preorder list. Unknown platform values remain
46
+ * `null`; Drivers must not manufacture optimistic enabled/hittable states.
47
+ */
48
+ export interface UiNode {
49
+ bounds?: UiRect | null;
50
+ enabled?: boolean | null;
51
+ hittable?: boolean | null;
52
+ identifier?: string | null;
53
+ name?: string | null;
54
+ parentStableNodeId?: string | null;
55
+ role: string;
56
+ stableNodeId: string;
57
+ text?: string | null;
58
+ value?: string | null;
59
+ }
60
+ export interface UiRect {
61
+ height: number;
62
+ width: number;
63
+ x: number;
64
+ y: number;
65
+ }
66
+ export interface SystemHelloFailureSchema {
67
+ error: RpcError;
68
+ id: NullableRpcIdSchema;
69
+ jsonrpc: JsonRpcVersion;
70
+ }
71
+ export interface RpcError {
72
+ code: number;
73
+ data: ErrorInfo;
74
+ message: string;
75
+ }
76
+ export interface ErrorInfo {
77
+ code: string;
78
+ details?: unknown;
79
+ message: string;
80
+ retryable: boolean;
81
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type UiContextKind = "native" | "web";
6
+ /**
7
+ * Canonical UI Tree. `nodes` is preorder and every parent must precede its
8
+ * contiguous descendants. The serialized payload is bounded to 768 KiB.
9
+ */
10
+ export interface UiSnapshotGetResult {
11
+ context: UiContextRef;
12
+ formatVersion: number;
13
+ /**
14
+ * @minItems 1
15
+ * @maxItems 10000
16
+ */
17
+ nodes: [UiNode, ...UiNode[]];
18
+ observationId: string;
19
+ /**
20
+ * @minItems 1
21
+ * @maxItems 10000
22
+ */
23
+ rootStableNodeIds: [string, ...string[]];
24
+ }
25
+ /**
26
+ * Full identity of one native accessibility or web-document context.
27
+ * `documentEpoch` is required for both channels and changes after reconnect,
28
+ * navigation, or any replacement that invalidates prior node references.
29
+ */
30
+ export interface UiContextRef {
31
+ contextId: string;
32
+ contextKind: UiContextKind;
33
+ documentEpoch: string;
34
+ }
35
+ /**
36
+ * One node in the normalized preorder list. Unknown platform values remain
37
+ * `null`; Drivers must not manufacture optimistic enabled/hittable states.
38
+ */
39
+ export interface UiNode {
40
+ bounds?: UiRect | null;
41
+ enabled?: boolean | null;
42
+ hittable?: boolean | null;
43
+ identifier?: string | null;
44
+ name?: string | null;
45
+ parentStableNodeId?: string | null;
46
+ role: string;
47
+ stableNodeId: string;
48
+ text?: string | null;
49
+ value?: string | null;
50
+ }
51
+ export interface UiRect {
52
+ height: number;
53
+ width: number;
54
+ x: number;
55
+ y: number;
56
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated from the checked-in DeviceRail JSON Schema. DO NOT EDIT.
3
+ * Run `pnpm protocol:types:generate` from the repository root.
4
+ */
5
+ export type UiSnapshotOmissionReason = "driverUnsupported" | "policy" | "protectedAction";