ue-mcp 1.0.33 → 1.0.34

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 (26) hide show
  1. package/README.md +2 -2
  2. package/dist/pie/schema.d.ts +671 -0
  3. package/dist/pie/schema.js +126 -0
  4. package/dist/pie/schema.js.map +1 -0
  5. package/dist/tool-counts.json +5 -5
  6. package/dist/tools/gameplay.js +55 -0
  7. package/dist/tools/gameplay.js.map +1 -1
  8. package/dist/ue-mcp.default.yml +108 -0
  9. package/package.json +2 -2
  10. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +18 -0
  11. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.h +26 -0
  12. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_InputInject.cpp +202 -0
  13. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_PIEDiff.cpp +146 -0
  14. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_PIERecord.cpp +324 -0
  15. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_PIEReplay.cpp +143 -0
  16. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEFrameSampler.cpp +333 -0
  17. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEFrameSampler.h +94 -0
  18. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputInjector.cpp +272 -0
  19. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputInjector.h +76 -0
  20. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputRecorder.cpp +456 -0
  21. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputRecorder.h +135 -0
  22. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputReplayer.cpp +527 -0
  23. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputReplayer.h +133 -0
  24. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIESequenceFormat.cpp +709 -0
  25. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIESequenceFormat.h +205 -0
  26. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +16 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # UE-MCP
2
2
 
3
- **Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->525+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows.
3
+ **Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->543+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows.
4
4
 
5
5
  ```mermaid
6
6
  flowchart LR
@@ -57,7 +57,7 @@ If you prefer to configure manually, add to your MCP client config:
57
57
 
58
58
  - [Getting Started](https://db-lyon.github.io/ue-mcp/getting-started/) — Installation, configuration, first run
59
59
  - [Architecture](https://db-lyon.github.io/ue-mcp/architecture/) — How the pieces fit together
60
- - [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->525+<!-- /count --> actions
60
+ - [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->543+<!-- /count --> actions
61
61
  - [Flows](https://db-lyon.github.io/ue-mcp/flows/) - YAML flow engine, custom tasks, rollback, hooks
62
62
  - [Configuration](https://db-lyon.github.io/ue-mcp/configuration/) — `.ue-mcp.json` and MCP client config
63
63
  - [Neon Shrine Demo](https://db-lyon.github.io/ue-mcp/neon-shrine-demo/) — Interactive guided demo
@@ -0,0 +1,671 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Zod schemas describing the PIE record/replay on-disk format. The C++
4
+ * recorder/replayer (plugin/.../Private/PIE/PIESequenceFormat.{h,cpp}) is the
5
+ * canonical writer; these schemas are the wire-shape contract used by tests
6
+ * and any future TS-side tooling. Keep in sync with PIESequenceFormat.h.
7
+ */
8
+ export declare const PIE_FORMAT_VERSION: 1;
9
+ export declare const ActionValueType: z.ZodEnum<["Boolean", "Axis1D", "Axis2D", "Axis3D"]>;
10
+ export type ActionValueType = z.infer<typeof ActionValueType>;
11
+ export declare const ActionSpec: z.ZodObject<{
12
+ name: z.ZodString;
13
+ path: z.ZodString;
14
+ value_type: z.ZodEnum<["Boolean", "Axis1D", "Axis2D", "Axis3D"]>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ path: string;
17
+ name: string;
18
+ value_type: "Boolean" | "Axis1D" | "Axis2D" | "Axis3D";
19
+ }, {
20
+ path: string;
21
+ name: string;
22
+ value_type: "Boolean" | "Axis1D" | "Axis2D" | "Axis3D";
23
+ }>;
24
+ export type ActionSpec = z.infer<typeof ActionSpec>;
25
+ export declare const TrackedValueSpec: z.ZodObject<{
26
+ path: z.ZodString;
27
+ type: z.ZodString;
28
+ }, "strip", z.ZodTypeAny, {
29
+ path: string;
30
+ type: string;
31
+ }, {
32
+ path: string;
33
+ type: string;
34
+ }>;
35
+ export type TrackedValueSpec = z.infer<typeof TrackedValueSpec>;
36
+ export declare const Marker: z.ZodObject<{
37
+ frame: z.ZodNumber;
38
+ time: z.ZodNumber;
39
+ label: z.ZodString;
40
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ label: string;
43
+ frame: number;
44
+ time: number;
45
+ metadata?: Record<string, unknown> | undefined;
46
+ }, {
47
+ label: string;
48
+ frame: number;
49
+ time: number;
50
+ metadata?: Record<string, unknown> | undefined;
51
+ }>;
52
+ export type Marker = z.infer<typeof Marker>;
53
+ export declare const Manifest: z.ZodObject<{
54
+ version: z.ZodLiteral<1>;
55
+ id: z.ZodString;
56
+ started_at: z.ZodString;
57
+ ended_at: z.ZodString;
58
+ duration_seconds: z.ZodNumber;
59
+ total_frames: z.ZodNumber;
60
+ sample_hz: z.ZodNumber;
61
+ pin_max_fps: z.ZodNumber;
62
+ rng_seed: z.ZodNumber;
63
+ pie_world: z.ZodString;
64
+ pawn_class: z.ZodString;
65
+ axis_threshold: z.ZodNumber;
66
+ actions: z.ZodArray<z.ZodObject<{
67
+ name: z.ZodString;
68
+ path: z.ZodString;
69
+ value_type: z.ZodEnum<["Boolean", "Axis1D", "Axis2D", "Axis3D"]>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ path: string;
72
+ name: string;
73
+ value_type: "Boolean" | "Axis1D" | "Axis2D" | "Axis3D";
74
+ }, {
75
+ path: string;
76
+ name: string;
77
+ value_type: "Boolean" | "Axis1D" | "Axis2D" | "Axis3D";
78
+ }>, "many">;
79
+ tracked_values: z.ZodArray<z.ZodObject<{
80
+ path: z.ZodString;
81
+ type: z.ZodString;
82
+ }, "strip", z.ZodTypeAny, {
83
+ path: string;
84
+ type: string;
85
+ }, {
86
+ path: string;
87
+ type: string;
88
+ }>, "many">;
89
+ markers: z.ZodArray<z.ZodObject<{
90
+ frame: z.ZodNumber;
91
+ time: z.ZodNumber;
92
+ label: z.ZodString;
93
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ label: string;
96
+ frame: number;
97
+ time: number;
98
+ metadata?: Record<string, unknown> | undefined;
99
+ }, {
100
+ label: string;
101
+ frame: number;
102
+ time: number;
103
+ metadata?: Record<string, unknown> | undefined;
104
+ }>, "many">;
105
+ files: z.ZodObject<{
106
+ csv: z.ZodString;
107
+ sequence: z.ZodString;
108
+ drift: z.ZodOptional<z.ZodString>;
109
+ }, "strip", z.ZodTypeAny, {
110
+ csv: string;
111
+ sequence: string;
112
+ drift?: string | undefined;
113
+ }, {
114
+ csv: string;
115
+ sequence: string;
116
+ drift?: string | undefined;
117
+ }>;
118
+ }, "strip", z.ZodTypeAny, {
119
+ id: string;
120
+ version: 1;
121
+ actions: {
122
+ path: string;
123
+ name: string;
124
+ value_type: "Boolean" | "Axis1D" | "Axis2D" | "Axis3D";
125
+ }[];
126
+ axis_threshold: number;
127
+ sample_hz: number;
128
+ rng_seed: number;
129
+ started_at: string;
130
+ ended_at: string;
131
+ duration_seconds: number;
132
+ total_frames: number;
133
+ pin_max_fps: number;
134
+ pie_world: string;
135
+ pawn_class: string;
136
+ tracked_values: {
137
+ path: string;
138
+ type: string;
139
+ }[];
140
+ markers: {
141
+ label: string;
142
+ frame: number;
143
+ time: number;
144
+ metadata?: Record<string, unknown> | undefined;
145
+ }[];
146
+ files: {
147
+ csv: string;
148
+ sequence: string;
149
+ drift?: string | undefined;
150
+ };
151
+ }, {
152
+ id: string;
153
+ version: 1;
154
+ actions: {
155
+ path: string;
156
+ name: string;
157
+ value_type: "Boolean" | "Axis1D" | "Axis2D" | "Axis3D";
158
+ }[];
159
+ axis_threshold: number;
160
+ sample_hz: number;
161
+ rng_seed: number;
162
+ started_at: string;
163
+ ended_at: string;
164
+ duration_seconds: number;
165
+ total_frames: number;
166
+ pin_max_fps: number;
167
+ pie_world: string;
168
+ pawn_class: string;
169
+ tracked_values: {
170
+ path: string;
171
+ type: string;
172
+ }[];
173
+ markers: {
174
+ label: string;
175
+ frame: number;
176
+ time: number;
177
+ metadata?: Record<string, unknown> | undefined;
178
+ }[];
179
+ files: {
180
+ csv: string;
181
+ sequence: string;
182
+ drift?: string | undefined;
183
+ };
184
+ }>;
185
+ export type Manifest = z.infer<typeof Manifest>;
186
+ export declare const TapeValue: z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
187
+ export type TapeValue = z.infer<typeof TapeValue>;
188
+ export declare const InputStep: z.ZodObject<{
189
+ delay_ms: z.ZodNumber;
190
+ } & {
191
+ type: z.ZodLiteral<"input">;
192
+ action: z.ZodString;
193
+ value_x: z.ZodOptional<z.ZodNumber>;
194
+ value_y: z.ZodOptional<z.ZodNumber>;
195
+ value_z: z.ZodOptional<z.ZodNumber>;
196
+ }, "strip", z.ZodTypeAny, {
197
+ type: "input";
198
+ action: string;
199
+ delay_ms: number;
200
+ value_x?: number | undefined;
201
+ value_y?: number | undefined;
202
+ value_z?: number | undefined;
203
+ }, {
204
+ type: "input";
205
+ action: string;
206
+ delay_ms: number;
207
+ value_x?: number | undefined;
208
+ value_y?: number | undefined;
209
+ value_z?: number | undefined;
210
+ }>;
211
+ export declare const HoldStep: z.ZodObject<{
212
+ delay_ms: z.ZodNumber;
213
+ } & {
214
+ type: z.ZodLiteral<"hold">;
215
+ action: z.ZodString;
216
+ value_x: z.ZodOptional<z.ZodNumber>;
217
+ value_y: z.ZodOptional<z.ZodNumber>;
218
+ value_z: z.ZodOptional<z.ZodNumber>;
219
+ duration_ms: z.ZodNumber;
220
+ }, "strip", z.ZodTypeAny, {
221
+ type: "hold";
222
+ action: string;
223
+ delay_ms: number;
224
+ duration_ms: number;
225
+ value_x?: number | undefined;
226
+ value_y?: number | undefined;
227
+ value_z?: number | undefined;
228
+ }, {
229
+ type: "hold";
230
+ action: string;
231
+ delay_ms: number;
232
+ duration_ms: number;
233
+ value_x?: number | undefined;
234
+ value_y?: number | undefined;
235
+ value_z?: number | undefined;
236
+ }>;
237
+ export declare const CaptureStep: z.ZodObject<{
238
+ delay_ms: z.ZodNumber;
239
+ } & {
240
+ type: z.ZodLiteral<"capture">;
241
+ name: z.ZodString;
242
+ }, "strip", z.ZodTypeAny, {
243
+ type: "capture";
244
+ name: string;
245
+ delay_ms: number;
246
+ }, {
247
+ type: "capture";
248
+ name: string;
249
+ delay_ms: number;
250
+ }>;
251
+ export declare const ConsoleStep: z.ZodObject<{
252
+ delay_ms: z.ZodNumber;
253
+ } & {
254
+ type: z.ZodLiteral<"console">;
255
+ command: z.ZodString;
256
+ }, "strip", z.ZodTypeAny, {
257
+ type: "console";
258
+ command: string;
259
+ delay_ms: number;
260
+ }, {
261
+ type: "console";
262
+ command: string;
263
+ delay_ms: number;
264
+ }>;
265
+ export declare const InputTapeStep: z.ZodObject<{
266
+ delay_ms: z.ZodNumber;
267
+ } & {
268
+ type: z.ZodLiteral<"input_tape">;
269
+ action: z.ZodString;
270
+ values: z.ZodArray<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>, "many">;
271
+ }, "strip", z.ZodTypeAny, {
272
+ type: "input_tape";
273
+ values: (number | [number, number] | [number, number, number])[];
274
+ action: string;
275
+ delay_ms: number;
276
+ }, {
277
+ type: "input_tape";
278
+ values: (number | [number, number] | [number, number, number])[];
279
+ action: string;
280
+ delay_ms: number;
281
+ }>;
282
+ export declare const MarkStep: z.ZodObject<{
283
+ delay_ms: z.ZodNumber;
284
+ } & {
285
+ type: z.ZodLiteral<"mark">;
286
+ label: z.ZodString;
287
+ }, "strip", z.ZodTypeAny, {
288
+ type: "mark";
289
+ label: string;
290
+ delay_ms: number;
291
+ }, {
292
+ type: "mark";
293
+ label: string;
294
+ delay_ms: number;
295
+ }>;
296
+ export declare const Step: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
297
+ delay_ms: z.ZodNumber;
298
+ } & {
299
+ type: z.ZodLiteral<"input">;
300
+ action: z.ZodString;
301
+ value_x: z.ZodOptional<z.ZodNumber>;
302
+ value_y: z.ZodOptional<z.ZodNumber>;
303
+ value_z: z.ZodOptional<z.ZodNumber>;
304
+ }, "strip", z.ZodTypeAny, {
305
+ type: "input";
306
+ action: string;
307
+ delay_ms: number;
308
+ value_x?: number | undefined;
309
+ value_y?: number | undefined;
310
+ value_z?: number | undefined;
311
+ }, {
312
+ type: "input";
313
+ action: string;
314
+ delay_ms: number;
315
+ value_x?: number | undefined;
316
+ value_y?: number | undefined;
317
+ value_z?: number | undefined;
318
+ }>, z.ZodObject<{
319
+ delay_ms: z.ZodNumber;
320
+ } & {
321
+ type: z.ZodLiteral<"hold">;
322
+ action: z.ZodString;
323
+ value_x: z.ZodOptional<z.ZodNumber>;
324
+ value_y: z.ZodOptional<z.ZodNumber>;
325
+ value_z: z.ZodOptional<z.ZodNumber>;
326
+ duration_ms: z.ZodNumber;
327
+ }, "strip", z.ZodTypeAny, {
328
+ type: "hold";
329
+ action: string;
330
+ delay_ms: number;
331
+ duration_ms: number;
332
+ value_x?: number | undefined;
333
+ value_y?: number | undefined;
334
+ value_z?: number | undefined;
335
+ }, {
336
+ type: "hold";
337
+ action: string;
338
+ delay_ms: number;
339
+ duration_ms: number;
340
+ value_x?: number | undefined;
341
+ value_y?: number | undefined;
342
+ value_z?: number | undefined;
343
+ }>, z.ZodObject<{
344
+ delay_ms: z.ZodNumber;
345
+ } & {
346
+ type: z.ZodLiteral<"capture">;
347
+ name: z.ZodString;
348
+ }, "strip", z.ZodTypeAny, {
349
+ type: "capture";
350
+ name: string;
351
+ delay_ms: number;
352
+ }, {
353
+ type: "capture";
354
+ name: string;
355
+ delay_ms: number;
356
+ }>, z.ZodObject<{
357
+ delay_ms: z.ZodNumber;
358
+ } & {
359
+ type: z.ZodLiteral<"console">;
360
+ command: z.ZodString;
361
+ }, "strip", z.ZodTypeAny, {
362
+ type: "console";
363
+ command: string;
364
+ delay_ms: number;
365
+ }, {
366
+ type: "console";
367
+ command: string;
368
+ delay_ms: number;
369
+ }>, z.ZodObject<{
370
+ delay_ms: z.ZodNumber;
371
+ } & {
372
+ type: z.ZodLiteral<"input_tape">;
373
+ action: z.ZodString;
374
+ values: z.ZodArray<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>, "many">;
375
+ }, "strip", z.ZodTypeAny, {
376
+ type: "input_tape";
377
+ values: (number | [number, number] | [number, number, number])[];
378
+ action: string;
379
+ delay_ms: number;
380
+ }, {
381
+ type: "input_tape";
382
+ values: (number | [number, number] | [number, number, number])[];
383
+ action: string;
384
+ delay_ms: number;
385
+ }>, z.ZodObject<{
386
+ delay_ms: z.ZodNumber;
387
+ } & {
388
+ type: z.ZodLiteral<"mark">;
389
+ label: z.ZodString;
390
+ }, "strip", z.ZodTypeAny, {
391
+ type: "mark";
392
+ label: string;
393
+ delay_ms: number;
394
+ }, {
395
+ type: "mark";
396
+ label: string;
397
+ delay_ms: number;
398
+ }>]>;
399
+ export type Step = z.infer<typeof Step>;
400
+ export declare const Sequence: z.ZodObject<{
401
+ version: z.ZodLiteral<1>;
402
+ source_recording_id: z.ZodOptional<z.ZodString>;
403
+ settle_ms: z.ZodNumber;
404
+ sample_hz: z.ZodNumber;
405
+ rng_seed: z.ZodNumber;
406
+ steps: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
407
+ delay_ms: z.ZodNumber;
408
+ } & {
409
+ type: z.ZodLiteral<"input">;
410
+ action: z.ZodString;
411
+ value_x: z.ZodOptional<z.ZodNumber>;
412
+ value_y: z.ZodOptional<z.ZodNumber>;
413
+ value_z: z.ZodOptional<z.ZodNumber>;
414
+ }, "strip", z.ZodTypeAny, {
415
+ type: "input";
416
+ action: string;
417
+ delay_ms: number;
418
+ value_x?: number | undefined;
419
+ value_y?: number | undefined;
420
+ value_z?: number | undefined;
421
+ }, {
422
+ type: "input";
423
+ action: string;
424
+ delay_ms: number;
425
+ value_x?: number | undefined;
426
+ value_y?: number | undefined;
427
+ value_z?: number | undefined;
428
+ }>, z.ZodObject<{
429
+ delay_ms: z.ZodNumber;
430
+ } & {
431
+ type: z.ZodLiteral<"hold">;
432
+ action: z.ZodString;
433
+ value_x: z.ZodOptional<z.ZodNumber>;
434
+ value_y: z.ZodOptional<z.ZodNumber>;
435
+ value_z: z.ZodOptional<z.ZodNumber>;
436
+ duration_ms: z.ZodNumber;
437
+ }, "strip", z.ZodTypeAny, {
438
+ type: "hold";
439
+ action: string;
440
+ delay_ms: number;
441
+ duration_ms: number;
442
+ value_x?: number | undefined;
443
+ value_y?: number | undefined;
444
+ value_z?: number | undefined;
445
+ }, {
446
+ type: "hold";
447
+ action: string;
448
+ delay_ms: number;
449
+ duration_ms: number;
450
+ value_x?: number | undefined;
451
+ value_y?: number | undefined;
452
+ value_z?: number | undefined;
453
+ }>, z.ZodObject<{
454
+ delay_ms: z.ZodNumber;
455
+ } & {
456
+ type: z.ZodLiteral<"capture">;
457
+ name: z.ZodString;
458
+ }, "strip", z.ZodTypeAny, {
459
+ type: "capture";
460
+ name: string;
461
+ delay_ms: number;
462
+ }, {
463
+ type: "capture";
464
+ name: string;
465
+ delay_ms: number;
466
+ }>, z.ZodObject<{
467
+ delay_ms: z.ZodNumber;
468
+ } & {
469
+ type: z.ZodLiteral<"console">;
470
+ command: z.ZodString;
471
+ }, "strip", z.ZodTypeAny, {
472
+ type: "console";
473
+ command: string;
474
+ delay_ms: number;
475
+ }, {
476
+ type: "console";
477
+ command: string;
478
+ delay_ms: number;
479
+ }>, z.ZodObject<{
480
+ delay_ms: z.ZodNumber;
481
+ } & {
482
+ type: z.ZodLiteral<"input_tape">;
483
+ action: z.ZodString;
484
+ values: z.ZodArray<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>, "many">;
485
+ }, "strip", z.ZodTypeAny, {
486
+ type: "input_tape";
487
+ values: (number | [number, number] | [number, number, number])[];
488
+ action: string;
489
+ delay_ms: number;
490
+ }, {
491
+ type: "input_tape";
492
+ values: (number | [number, number] | [number, number, number])[];
493
+ action: string;
494
+ delay_ms: number;
495
+ }>, z.ZodObject<{
496
+ delay_ms: z.ZodNumber;
497
+ } & {
498
+ type: z.ZodLiteral<"mark">;
499
+ label: z.ZodString;
500
+ }, "strip", z.ZodTypeAny, {
501
+ type: "mark";
502
+ label: string;
503
+ delay_ms: number;
504
+ }, {
505
+ type: "mark";
506
+ label: string;
507
+ delay_ms: number;
508
+ }>]>, "many">;
509
+ }, "strip", z.ZodTypeAny, {
510
+ version: 1;
511
+ steps: ({
512
+ type: "input";
513
+ action: string;
514
+ delay_ms: number;
515
+ value_x?: number | undefined;
516
+ value_y?: number | undefined;
517
+ value_z?: number | undefined;
518
+ } | {
519
+ type: "hold";
520
+ action: string;
521
+ delay_ms: number;
522
+ duration_ms: number;
523
+ value_x?: number | undefined;
524
+ value_y?: number | undefined;
525
+ value_z?: number | undefined;
526
+ } | {
527
+ type: "capture";
528
+ name: string;
529
+ delay_ms: number;
530
+ } | {
531
+ type: "console";
532
+ command: string;
533
+ delay_ms: number;
534
+ } | {
535
+ type: "input_tape";
536
+ values: (number | [number, number] | [number, number, number])[];
537
+ action: string;
538
+ delay_ms: number;
539
+ } | {
540
+ type: "mark";
541
+ label: string;
542
+ delay_ms: number;
543
+ })[];
544
+ sample_hz: number;
545
+ rng_seed: number;
546
+ settle_ms: number;
547
+ source_recording_id?: string | undefined;
548
+ }, {
549
+ version: 1;
550
+ steps: ({
551
+ type: "input";
552
+ action: string;
553
+ delay_ms: number;
554
+ value_x?: number | undefined;
555
+ value_y?: number | undefined;
556
+ value_z?: number | undefined;
557
+ } | {
558
+ type: "hold";
559
+ action: string;
560
+ delay_ms: number;
561
+ duration_ms: number;
562
+ value_x?: number | undefined;
563
+ value_y?: number | undefined;
564
+ value_z?: number | undefined;
565
+ } | {
566
+ type: "capture";
567
+ name: string;
568
+ delay_ms: number;
569
+ } | {
570
+ type: "console";
571
+ command: string;
572
+ delay_ms: number;
573
+ } | {
574
+ type: "input_tape";
575
+ values: (number | [number, number] | [number, number, number])[];
576
+ action: string;
577
+ delay_ms: number;
578
+ } | {
579
+ type: "mark";
580
+ label: string;
581
+ delay_ms: number;
582
+ })[];
583
+ sample_hz: number;
584
+ rng_seed: number;
585
+ settle_ms: number;
586
+ source_recording_id?: string | undefined;
587
+ }>;
588
+ export type Sequence = z.infer<typeof Sequence>;
589
+ export declare const DriftFrameEntry: z.ZodObject<{
590
+ frame: z.ZodNumber;
591
+ position_delta_cm: z.ZodNumber;
592
+ velocity_delta_cms: z.ZodNumber;
593
+ rotation_delta_deg: z.ZodNumber;
594
+ }, "strip", z.ZodTypeAny, {
595
+ frame: number;
596
+ position_delta_cm: number;
597
+ velocity_delta_cms: number;
598
+ rotation_delta_deg: number;
599
+ }, {
600
+ frame: number;
601
+ position_delta_cm: number;
602
+ velocity_delta_cms: number;
603
+ rotation_delta_deg: number;
604
+ }>;
605
+ export type DriftFrameEntry = z.infer<typeof DriftFrameEntry>;
606
+ export declare const DriftReport: z.ZodObject<{
607
+ version: z.ZodLiteral<1>;
608
+ source_recording_id: z.ZodString;
609
+ replay_started_at: z.ZodString;
610
+ frames_compared: z.ZodNumber;
611
+ frames_missing_in_replay: z.ZodNumber;
612
+ max_position_drift_cm: z.ZodNumber;
613
+ max_position_drift_frame: z.ZodNumber;
614
+ max_velocity_drift_cms: z.ZodNumber;
615
+ max_rotation_drift_deg: z.ZodNumber;
616
+ montage_section_mismatches: z.ZodNumber;
617
+ tracked_value_max_deltas: z.ZodRecord<z.ZodString, z.ZodNumber>;
618
+ frames_over_threshold: z.ZodArray<z.ZodObject<{
619
+ frame: z.ZodNumber;
620
+ position_delta_cm: z.ZodNumber;
621
+ velocity_delta_cms: z.ZodNumber;
622
+ rotation_delta_deg: z.ZodNumber;
623
+ }, "strip", z.ZodTypeAny, {
624
+ frame: number;
625
+ position_delta_cm: number;
626
+ velocity_delta_cms: number;
627
+ rotation_delta_deg: number;
628
+ }, {
629
+ frame: number;
630
+ position_delta_cm: number;
631
+ velocity_delta_cms: number;
632
+ rotation_delta_deg: number;
633
+ }>, "many">;
634
+ }, "strip", z.ZodTypeAny, {
635
+ version: 1;
636
+ source_recording_id: string;
637
+ replay_started_at: string;
638
+ frames_compared: number;
639
+ frames_missing_in_replay: number;
640
+ max_position_drift_cm: number;
641
+ max_position_drift_frame: number;
642
+ max_velocity_drift_cms: number;
643
+ max_rotation_drift_deg: number;
644
+ montage_section_mismatches: number;
645
+ tracked_value_max_deltas: Record<string, number>;
646
+ frames_over_threshold: {
647
+ frame: number;
648
+ position_delta_cm: number;
649
+ velocity_delta_cms: number;
650
+ rotation_delta_deg: number;
651
+ }[];
652
+ }, {
653
+ version: 1;
654
+ source_recording_id: string;
655
+ replay_started_at: string;
656
+ frames_compared: number;
657
+ frames_missing_in_replay: number;
658
+ max_position_drift_cm: number;
659
+ max_position_drift_frame: number;
660
+ max_velocity_drift_cms: number;
661
+ max_rotation_drift_deg: number;
662
+ montage_section_mismatches: number;
663
+ tracked_value_max_deltas: Record<string, number>;
664
+ frames_over_threshold: {
665
+ frame: number;
666
+ position_delta_cm: number;
667
+ velocity_delta_cms: number;
668
+ rotation_delta_deg: number;
669
+ }[];
670
+ }>;
671
+ export type DriftReport = z.infer<typeof DriftReport>;