Skip to content

Commit d2b02f1

Browse files
authored
feat: export snapshot contracts (#394)
1 parent 6f13f60 commit d2b02f1

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

src/__tests__/client-public.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
type AgentDeviceClient,
66
type CaptureScreenshotResult,
77
type CaptureSnapshotResult,
8+
centerOfRect,
89
type Point,
910
type Rect,
1011
type ScreenshotOverlayRef,
@@ -55,4 +56,5 @@ const overlay = {
5556
test('package root exports createAgentDeviceClient', () => {
5657
const client: AgentDeviceClient = createAgentDeviceClient();
5758
assert.equal(typeof client.capture.snapshot, 'function');
59+
assert.deepEqual(centerOfRect(rect), { x: 3, y: 4 });
5860
});

src/__tests__/contracts-schema-public.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,24 @@ import assert from 'node:assert/strict';
33
import {
44
daemonCommandRequestSchema,
55
daemonRuntimeSchema,
6+
centerOfRect,
67
jsonRpcRequestSchema,
78
leaseAllocateSchema,
89
leaseHeartbeatSchema,
910
leaseReleaseSchema,
11+
type Rect,
12+
type SnapshotNode,
1013
} from '../contracts.ts';
1114

15+
const rect = { x: 1, y: 2, width: 3, height: 4 } satisfies Rect;
16+
const node = {
17+
index: 0,
18+
ref: 'e1',
19+
type: 'Button',
20+
label: 'Continue',
21+
rect,
22+
} satisfies SnapshotNode;
23+
1224
test('public contract schemas validate daemon requests and lease payloads', () => {
1325
const runtime = daemonRuntimeSchema.parse({
1426
platform: 'ios',
@@ -54,6 +66,8 @@ test('public contract schemas validate daemon requests and lease payloads', () =
5466
assert.equal(release.tenant, 'acme');
5567
assert.equal(heartbeat.leaseId, 'lease-1');
5668
assert.equal(release.leaseId, 'lease-1');
69+
assert.deepEqual(centerOfRect(rect), { x: 3, y: 4 });
70+
assert.equal(node.ref, 'e1');
5771
});
5872

5973
test('public contract schemas reject invalid payloads', () => {

src/contracts.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ export type JsonRpcRequestEnvelope<TParams = unknown> = {
119119
params?: TParams;
120120
};
121121

122+
export { centerOfRect } from './utils/snapshot.ts';
123+
export type { Rect, SnapshotNode } from './utils/snapshot.ts';
124+
122125
type RuntimeSchema<T> = {
123126
parse(input: unknown): T;
124127
};

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export { createAgentDeviceClient } from './client.ts';
22
export { AppError } from './utils/errors.ts';
3+
export { centerOfRect } from './utils/snapshot.ts';
34

45
export type {
56
AgentDeviceClient,

0 commit comments

Comments
 (0)