@popmelt.com/core 0.17.0 → 0.18.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.
@@ -207,6 +207,87 @@ type AnnotationAttachment = {
207
207
  size: number;
208
208
  kind: 'svg' | 'text';
209
209
  };
210
+ type InteractionEpisodeElementState = {
211
+ selector?: string;
212
+ tagName: string;
213
+ className?: string;
214
+ role?: string;
215
+ ariaLabel?: string;
216
+ text?: string;
217
+ value?: string;
218
+ checked?: boolean;
219
+ disabled?: boolean;
220
+ expanded?: boolean;
221
+ pressed?: boolean;
222
+ selected?: boolean;
223
+ rect?: {
224
+ x: number;
225
+ y: number;
226
+ width: number;
227
+ height: number;
228
+ };
229
+ subject?: {
230
+ adapter: string;
231
+ key: string;
232
+ label: string;
233
+ context?: string;
234
+ data?: Record<string, string>;
235
+ };
236
+ media?: {
237
+ kind: 'image';
238
+ src?: string;
239
+ complete: boolean;
240
+ naturalWidth: number;
241
+ naturalHeight: number;
242
+ } | {
243
+ kind: 'video';
244
+ src?: string;
245
+ currentTime: number;
246
+ duration?: number;
247
+ paused: boolean;
248
+ } | {
249
+ kind: 'canvas';
250
+ width: number;
251
+ height: number;
252
+ };
253
+ };
254
+ type InteractionEpisodeChange = {
255
+ kind: 'added' | 'removed' | 'updated';
256
+ element: InteractionEpisodeElementState;
257
+ };
258
+ type InteractionEpisodeStep = {
259
+ id: string;
260
+ action: {
261
+ kind: 'click' | 'drag' | 'input' | 'change' | 'submit' | 'keydown' | 'scroll' | 'play' | 'pause' | 'seek';
262
+ label: string;
263
+ key?: string;
264
+ target?: InteractionEpisodeElementState;
265
+ };
266
+ startedAt: number;
267
+ completedAt: number;
268
+ outcome: 'changed' | 'no-observable-change';
269
+ changes: InteractionEpisodeChange[];
270
+ result?: InteractionEpisodeElementState;
271
+ visuals?: {
272
+ beforeFrameId?: string;
273
+ afterFrameId?: string;
274
+ };
275
+ };
276
+ type InteractionEpisodeFrame = {
277
+ id: string;
278
+ /** Index in the annotation's out-of-band image list. */
279
+ imageIndex: number;
280
+ fingerprint: string;
281
+ };
282
+ /** A compact, semantic account of actions performed while Comment passes through. */
283
+ type InteractionEpisode = {
284
+ version: 1;
285
+ startedAt: number;
286
+ completedAt: number;
287
+ subject?: InteractionEpisodeElementState;
288
+ steps: InteractionEpisodeStep[];
289
+ frames?: InteractionEpisodeFrame[];
290
+ };
210
291
  type Annotation = {
211
292
  id: string;
212
293
  type: AnnotationType;
@@ -233,6 +314,7 @@ type Annotation = {
233
314
  linkedAnchor?: 'top-left' | 'bottom-left';
234
315
  imageCount?: number;
235
316
  attachments?: AnnotationAttachment[];
317
+ interactionEpisode?: InteractionEpisode;
236
318
  };
237
319
  type BridgeStatus = {
238
320
  ok: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popmelt.com/core",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "description": "A tiny, powerful design layer for humans and AI",
5
5
  "license": "PolyForm-Shield-1.0.0",
6
6
  "author": "Popmelt <reb@popmelt.com> (https://popmelt.com)",