@crosshands/contract 0.1.2

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 (48) hide show
  1. package/LICENSE +21 -0
  2. package/dist/context.d.ts +19 -0
  3. package/dist/context.d.ts.map +1 -0
  4. package/dist/context.js +82 -0
  5. package/dist/context.js.map +1 -0
  6. package/dist/errors.d.ts +164 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +65 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/generate-schemas.d.ts +2 -0
  11. package/dist/generate-schemas.d.ts.map +1 -0
  12. package/dist/generate-schemas.js +8 -0
  13. package/dist/generate-schemas.js.map +1 -0
  14. package/dist/index.d.ts +8 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +8 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/json-schema.d.ts +306 -0
  19. package/dist/json-schema.d.ts.map +1 -0
  20. package/dist/json-schema.js +15 -0
  21. package/dist/json-schema.js.map +1 -0
  22. package/dist/operations.d.ts +2115 -0
  23. package/dist/operations.d.ts.map +1 -0
  24. package/dist/operations.js +205 -0
  25. package/dist/operations.js.map +1 -0
  26. package/dist/provider.d.ts +135 -0
  27. package/dist/provider.d.ts.map +1 -0
  28. package/dist/provider.js +56 -0
  29. package/dist/provider.js.map +1 -0
  30. package/dist/schemas.d.ts +499 -0
  31. package/dist/schemas.d.ts.map +1 -0
  32. package/dist/schemas.js +138 -0
  33. package/dist/schemas.js.map +1 -0
  34. package/dist/versions.d.ts +31 -0
  35. package/dist/versions.d.ts.map +1 -0
  36. package/dist/versions.js +28 -0
  37. package/dist/versions.js.map +1 -0
  38. package/package.json +39 -0
  39. package/schemas/contract.json +7572 -0
  40. package/src/context.ts +107 -0
  41. package/src/errors.ts +82 -0
  42. package/src/generate-schemas.ts +9 -0
  43. package/src/index.ts +7 -0
  44. package/src/json-schema.ts +17 -0
  45. package/src/operations.ts +224 -0
  46. package/src/provider.ts +82 -0
  47. package/src/schemas.ts +161 -0
  48. package/src/versions.ts +46 -0
@@ -0,0 +1,306 @@
1
+ export declare const contractJsonSchemas: {
2
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3
+ readonly versions: {
4
+ readonly product: "0.1.2";
5
+ readonly publicContract: "1.1.0";
6
+ readonly brokerControl: 1;
7
+ readonly providerProtocol: 1;
8
+ readonly mcpProtocol: "2025-11-25";
9
+ };
10
+ readonly operations: {
11
+ [k: string]: {
12
+ mutation: boolean;
13
+ input: import("zod/v4/core").ZodStandardJSONSchemaPayload<import("zod").ZodObject<{}, import("zod/v4/core").$strict>>;
14
+ output: import("zod/v4/core").ZodStandardJSONSchemaPayload<import("zod").ZodObject<{
15
+ context: import("zod").ZodObject<{
16
+ brokerGeneration: import("zod").ZodString;
17
+ providerGeneration: import("zod").ZodString;
18
+ graphicalSessionId: import("zod").ZodString;
19
+ process: import("zod").ZodObject<{
20
+ pid: import("zod").ZodNumber;
21
+ startedAt: import("zod").ZodISODateTime;
22
+ executableId: import("zod").ZodString;
23
+ }, import("zod/v4/core").$strict>;
24
+ appId: import("zod").ZodString;
25
+ window: import("zod").ZodObject<{
26
+ id: import("zod").ZodString;
27
+ ownerPid: import("zod").ZodNumber;
28
+ }, import("zod/v4/core").$strict>;
29
+ snapshotId: import("zod").ZodString;
30
+ desktopEpoch: import("zod").ZodNumber;
31
+ token: import("zod").ZodString;
32
+ issuedAt: import("zod").ZodISODateTime;
33
+ expiresAt: import("zod").ZodISODateTime;
34
+ }, import("zod/v4/core").$strict>;
35
+ snapshot: import("zod").ZodObject<{
36
+ id: import("zod").ZodString;
37
+ app: import("zod").ZodObject<{
38
+ id: import("zod").ZodString;
39
+ name: import("zod").ZodString;
40
+ bundleId: import("zod").ZodNullable<import("zod").ZodString>;
41
+ pid: import("zod").ZodNumber;
42
+ isRunning: import("zod").ZodBoolean;
43
+ }, import("zod/v4/core").$strict>;
44
+ window: import("zod").ZodObject<{
45
+ id: import("zod").ZodString;
46
+ appId: import("zod").ZodString;
47
+ title: import("zod").ZodString;
48
+ index: import("zod").ZodNumber;
49
+ bounds: import("zod").ZodObject<{
50
+ x: import("zod").ZodNumber;
51
+ y: import("zod").ZodNumber;
52
+ width: import("zod").ZodNumber;
53
+ height: import("zod").ZodNumber;
54
+ }, import("zod/v4/core").$strict>;
55
+ minimized: import("zod").ZodBoolean;
56
+ }, import("zod/v4/core").$strict>;
57
+ treeText: import("zod").ZodString;
58
+ elementCount: import("zod").ZodNumber;
59
+ focusedElementRef: import("zod").ZodNullable<import("zod").ZodString>;
60
+ desktopEpoch: import("zod").ZodNumber;
61
+ }, import("zod/v4/core").$strict>;
62
+ screenshot: import("zod").ZodNullable<import("zod").ZodObject<{
63
+ format: import("zod").ZodLiteral<"png">;
64
+ width: import("zod").ZodNumber;
65
+ height: import("zod").ZodNumber;
66
+ scale: import("zod").ZodNumber;
67
+ data: import("zod").ZodOptional<import("zod").ZodString>;
68
+ path: import("zod").ZodOptional<import("zod").ZodString>;
69
+ expiresAt: import("zod").ZodOptional<import("zod").ZodISODateTime>;
70
+ }, import("zod/v4/core").$strict>>;
71
+ issues: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
72
+ code: import("zod").ZodEnum<{
73
+ app_not_found: "app_not_found";
74
+ app_unavailable: "app_unavailable";
75
+ app_blocked: "app_blocked";
76
+ window_not_found: "window_not_found";
77
+ window_unavailable: "window_unavailable";
78
+ window_not_focused: "window_not_focused";
79
+ permission_denied: "permission_denied";
80
+ stale_target: "stale_target";
81
+ element_not_found: "element_not_found";
82
+ element_not_clickable: "element_not_clickable";
83
+ action_not_supported: "action_not_supported";
84
+ value_not_settable: "value_not_settable";
85
+ invalid_argument: "invalid_argument";
86
+ timeout: "timeout";
87
+ unsupported_capability: "unsupported_capability";
88
+ provider_unavailable: "provider_unavailable";
89
+ provider_crashed: "provider_crashed";
90
+ version_incompatible: "version_incompatible";
91
+ interaction_context_invalid: "interaction_context_invalid";
92
+ interaction_context_expired: "interaction_context_expired";
93
+ session_unavailable: "session_unavailable";
94
+ screenshot_failed: "screenshot_failed";
95
+ accessibility_error: "accessibility_error";
96
+ }>;
97
+ message: import("zod").ZodString;
98
+ retry: import("zod").ZodBoolean;
99
+ remediation: import("zod").ZodString;
100
+ details: import("zod").ZodOptional<import("zod").ZodUnknown>;
101
+ }, import("zod/v4/core").$strict>>>;
102
+ }, import("zod/v4/core").$strict>> | import("zod/v4/core").ZodStandardJSONSchemaPayload<import("zod").ZodObject<{
103
+ outcome: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
104
+ state: import("zod").ZodLiteral<"verified">;
105
+ evidence: import("zod").ZodOptional<import("zod").ZodUnknown>;
106
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
107
+ state: import("zod").ZodLiteral<"indeterminate">;
108
+ reason: import("zod").ZodOptional<import("zod").ZodString>;
109
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
110
+ state: import("zod").ZodLiteral<"failed">;
111
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
112
+ code: import("zod").ZodEnum<{
113
+ app_not_found: "app_not_found";
114
+ app_unavailable: "app_unavailable";
115
+ app_blocked: "app_blocked";
116
+ window_not_found: "window_not_found";
117
+ window_unavailable: "window_unavailable";
118
+ window_not_focused: "window_not_focused";
119
+ permission_denied: "permission_denied";
120
+ stale_target: "stale_target";
121
+ element_not_found: "element_not_found";
122
+ element_not_clickable: "element_not_clickable";
123
+ action_not_supported: "action_not_supported";
124
+ value_not_settable: "value_not_settable";
125
+ invalid_argument: "invalid_argument";
126
+ timeout: "timeout";
127
+ unsupported_capability: "unsupported_capability";
128
+ provider_unavailable: "provider_unavailable";
129
+ provider_crashed: "provider_crashed";
130
+ version_incompatible: "version_incompatible";
131
+ interaction_context_invalid: "interaction_context_invalid";
132
+ interaction_context_expired: "interaction_context_expired";
133
+ session_unavailable: "session_unavailable";
134
+ screenshot_failed: "screenshot_failed";
135
+ accessibility_error: "accessibility_error";
136
+ }>;
137
+ message: import("zod").ZodString;
138
+ retry: import("zod").ZodBoolean;
139
+ remediation: import("zod").ZodString;
140
+ details: import("zod").ZodOptional<import("zod").ZodUnknown>;
141
+ }, import("zod/v4/core").$strict>>;
142
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
143
+ state: import("zod").ZodLiteral<"not_attempted">;
144
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
145
+ code: import("zod").ZodEnum<{
146
+ app_not_found: "app_not_found";
147
+ app_unavailable: "app_unavailable";
148
+ app_blocked: "app_blocked";
149
+ window_not_found: "window_not_found";
150
+ window_unavailable: "window_unavailable";
151
+ window_not_focused: "window_not_focused";
152
+ permission_denied: "permission_denied";
153
+ stale_target: "stale_target";
154
+ element_not_found: "element_not_found";
155
+ element_not_clickable: "element_not_clickable";
156
+ action_not_supported: "action_not_supported";
157
+ value_not_settable: "value_not_settable";
158
+ invalid_argument: "invalid_argument";
159
+ timeout: "timeout";
160
+ unsupported_capability: "unsupported_capability";
161
+ provider_unavailable: "provider_unavailable";
162
+ provider_crashed: "provider_crashed";
163
+ version_incompatible: "version_incompatible";
164
+ interaction_context_invalid: "interaction_context_invalid";
165
+ interaction_context_expired: "interaction_context_expired";
166
+ session_unavailable: "session_unavailable";
167
+ screenshot_failed: "screenshot_failed";
168
+ accessibility_error: "accessibility_error";
169
+ }>;
170
+ message: import("zod").ZodString;
171
+ retry: import("zod").ZodBoolean;
172
+ remediation: import("zod").ZodString;
173
+ details: import("zod").ZodOptional<import("zod").ZodUnknown>;
174
+ }, import("zod/v4/core").$strict>>;
175
+ }, import("zod/v4/core").$strict>], "state">;
176
+ freshState: import("zod").ZodOptional<import("zod").ZodObject<{
177
+ context: import("zod").ZodObject<{
178
+ brokerGeneration: import("zod").ZodString;
179
+ providerGeneration: import("zod").ZodString;
180
+ graphicalSessionId: import("zod").ZodString;
181
+ process: import("zod").ZodObject<{
182
+ pid: import("zod").ZodNumber;
183
+ startedAt: import("zod").ZodISODateTime;
184
+ executableId: import("zod").ZodString;
185
+ }, import("zod/v4/core").$strict>;
186
+ appId: import("zod").ZodString;
187
+ window: import("zod").ZodObject<{
188
+ id: import("zod").ZodString;
189
+ ownerPid: import("zod").ZodNumber;
190
+ }, import("zod/v4/core").$strict>;
191
+ snapshotId: import("zod").ZodString;
192
+ desktopEpoch: import("zod").ZodNumber;
193
+ token: import("zod").ZodString;
194
+ issuedAt: import("zod").ZodISODateTime;
195
+ expiresAt: import("zod").ZodISODateTime;
196
+ }, import("zod/v4/core").$strict>;
197
+ snapshot: import("zod").ZodObject<{
198
+ id: import("zod").ZodString;
199
+ app: import("zod").ZodObject<{
200
+ id: import("zod").ZodString;
201
+ name: import("zod").ZodString;
202
+ bundleId: import("zod").ZodNullable<import("zod").ZodString>;
203
+ pid: import("zod").ZodNumber;
204
+ isRunning: import("zod").ZodBoolean;
205
+ }, import("zod/v4/core").$strict>;
206
+ window: import("zod").ZodObject<{
207
+ id: import("zod").ZodString;
208
+ appId: import("zod").ZodString;
209
+ title: import("zod").ZodString;
210
+ index: import("zod").ZodNumber;
211
+ bounds: import("zod").ZodObject<{
212
+ x: import("zod").ZodNumber;
213
+ y: import("zod").ZodNumber;
214
+ width: import("zod").ZodNumber;
215
+ height: import("zod").ZodNumber;
216
+ }, import("zod/v4/core").$strict>;
217
+ minimized: import("zod").ZodBoolean;
218
+ }, import("zod/v4/core").$strict>;
219
+ treeText: import("zod").ZodString;
220
+ elementCount: import("zod").ZodNumber;
221
+ focusedElementRef: import("zod").ZodNullable<import("zod").ZodString>;
222
+ desktopEpoch: import("zod").ZodNumber;
223
+ }, import("zod/v4/core").$strict>;
224
+ screenshot: import("zod").ZodNullable<import("zod").ZodObject<{
225
+ format: import("zod").ZodLiteral<"png">;
226
+ width: import("zod").ZodNumber;
227
+ height: import("zod").ZodNumber;
228
+ scale: import("zod").ZodNumber;
229
+ data: import("zod").ZodOptional<import("zod").ZodString>;
230
+ path: import("zod").ZodOptional<import("zod").ZodString>;
231
+ expiresAt: import("zod").ZodOptional<import("zod").ZodISODateTime>;
232
+ }, import("zod/v4/core").$strict>>;
233
+ issues: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
234
+ code: import("zod").ZodEnum<{
235
+ app_not_found: "app_not_found";
236
+ app_unavailable: "app_unavailable";
237
+ app_blocked: "app_blocked";
238
+ window_not_found: "window_not_found";
239
+ window_unavailable: "window_unavailable";
240
+ window_not_focused: "window_not_focused";
241
+ permission_denied: "permission_denied";
242
+ stale_target: "stale_target";
243
+ element_not_found: "element_not_found";
244
+ element_not_clickable: "element_not_clickable";
245
+ action_not_supported: "action_not_supported";
246
+ value_not_settable: "value_not_settable";
247
+ invalid_argument: "invalid_argument";
248
+ timeout: "timeout";
249
+ unsupported_capability: "unsupported_capability";
250
+ provider_unavailable: "provider_unavailable";
251
+ provider_crashed: "provider_crashed";
252
+ version_incompatible: "version_incompatible";
253
+ interaction_context_invalid: "interaction_context_invalid";
254
+ interaction_context_expired: "interaction_context_expired";
255
+ session_unavailable: "session_unavailable";
256
+ screenshot_failed: "screenshot_failed";
257
+ accessibility_error: "accessibility_error";
258
+ }>;
259
+ message: import("zod").ZodString;
260
+ retry: import("zod").ZodBoolean;
261
+ remediation: import("zod").ZodString;
262
+ details: import("zod").ZodOptional<import("zod").ZodUnknown>;
263
+ }, import("zod/v4/core").$strict>>>;
264
+ }, import("zod/v4/core").$strict>>;
265
+ }, import("zod/v4/core").$strict>> | import("zod/v4/core").ZodStandardJSONSchemaPayload<import("zod").ZodObject<{
266
+ platform: import("zod").ZodEnum<{
267
+ darwin: "darwin";
268
+ win32: "win32";
269
+ linux: "linux";
270
+ }>;
271
+ provider: import("zod").ZodString;
272
+ providerVersion: import("zod").ZodString;
273
+ operations: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodBoolean>;
274
+ permissions: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodEnum<{
275
+ unknown: "unknown";
276
+ granted: "granted";
277
+ denied: "denied";
278
+ not_required: "not_required";
279
+ }>>;
280
+ }, import("zod/v4/core").$strict>> | import("zod/v4/core").ZodStandardJSONSchemaPayload<import("zod").ZodObject<{
281
+ apps: import("zod").ZodArray<import("zod").ZodObject<{
282
+ id: import("zod").ZodString;
283
+ name: import("zod").ZodString;
284
+ bundleId: import("zod").ZodNullable<import("zod").ZodString>;
285
+ pid: import("zod").ZodNumber;
286
+ isRunning: import("zod").ZodBoolean;
287
+ }, import("zod/v4/core").$strict>>;
288
+ }, import("zod/v4/core").$strict>> | import("zod/v4/core").ZodStandardJSONSchemaPayload<import("zod").ZodObject<{
289
+ windows: import("zod").ZodArray<import("zod").ZodObject<{
290
+ id: import("zod").ZodString;
291
+ appId: import("zod").ZodString;
292
+ title: import("zod").ZodString;
293
+ index: import("zod").ZodNumber;
294
+ bounds: import("zod").ZodObject<{
295
+ x: import("zod").ZodNumber;
296
+ y: import("zod").ZodNumber;
297
+ width: import("zod").ZodNumber;
298
+ height: import("zod").ZodNumber;
299
+ }, import("zod/v4/core").$strict>;
300
+ minimized: import("zod").ZodBoolean;
301
+ }, import("zod/v4/core").$strict>>;
302
+ }, import("zod/v4/core").$strict>>;
303
+ };
304
+ };
305
+ };
306
+ //# sourceMappingURL=json-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAatB,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { COMPUTER_OPERATIONS } from './operations.js';
2
+ import { CONTRACT_VERSIONS } from './versions.js';
3
+ export const contractJsonSchemas = {
4
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
5
+ versions: CONTRACT_VERSIONS,
6
+ operations: Object.fromEntries(Object.entries(COMPUTER_OPERATIONS).map(([name, operation]) => [
7
+ name,
8
+ {
9
+ mutation: operation.mutation,
10
+ input: operation.input.toJSONSchema({ target: 'draft-2020-12' }),
11
+ output: operation.output.toJSONSchema({ target: 'draft-2020-12' })
12
+ }
13
+ ]))
14
+ };
15
+ //# sourceMappingURL=json-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,8CAA8C;IACvD,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;QAC7D,IAAI;QACJ;YACE,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YAChE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;SACnE;KACF,CAAC,CACH;CACO,CAAA"}