@playcraft/common 0.1.23 → 0.1.25

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 (83) hide show
  1. package/dist/agent-tools/index.d.ts +4 -0
  2. package/dist/agent-tools/index.d.ts.map +1 -1
  3. package/dist/agent-tools/index.js +4 -0
  4. package/dist/agent-tools/index.js.map +1 -1
  5. package/dist/agent-tools/replica-recording.d.ts +283 -0
  6. package/dist/agent-tools/replica-recording.d.ts.map +1 -0
  7. package/dist/agent-tools/replica-recording.js +109 -0
  8. package/dist/agent-tools/replica-recording.js.map +1 -0
  9. package/dist/agent-tools/replica-validation.d.ts +972 -0
  10. package/dist/agent-tools/replica-validation.d.ts.map +1 -0
  11. package/dist/agent-tools/replica-validation.js +254 -0
  12. package/dist/agent-tools/replica-validation.js.map +1 -0
  13. package/dist/agent-tools/types.d.ts +9 -1
  14. package/dist/agent-tools/types.d.ts.map +1 -1
  15. package/dist/agent-tools/types.js.map +1 -1
  16. package/dist/agent-tools/video-model-proxy.d.ts +113 -0
  17. package/dist/agent-tools/video-model-proxy.d.ts.map +1 -0
  18. package/dist/agent-tools/video-model-proxy.js +49 -0
  19. package/dist/agent-tools/video-model-proxy.js.map +1 -0
  20. package/dist/agent-tools/video-replication.d.ts +421 -0
  21. package/dist/agent-tools/video-replication.d.ts.map +1 -0
  22. package/dist/agent-tools/video-replication.js +95 -0
  23. package/dist/agent-tools/video-replication.js.map +1 -0
  24. package/dist/cloud-workspace/runtime/agent-background-processes.d.ts +1 -1
  25. package/dist/cloud-workspace/runtime/agent-chat-flush.d.ts +2 -2
  26. package/dist/cloud-workspace/runtime/agent-command.d.ts +3 -3
  27. package/dist/cloud-workspace/runtime/agent-competitor-report.d.ts +1 -1
  28. package/dist/cloud-workspace/runtime/agent-connection.d.ts +3 -3
  29. package/dist/cloud-workspace/runtime/agent-lifecycle.d.ts +1 -1
  30. package/dist/cloud-workspace/runtime/agent-mutation.d.ts +7 -7
  31. package/dist/cloud-workspace/runtime/agent-opencode-gateway.d.ts +12 -12
  32. package/dist/cloud-workspace/runtime/agent-opencode.d.ts +25 -25
  33. package/dist/cloud-workspace/runtime/agent-read.d.ts +12 -12
  34. package/dist/cloud-workspace/runtime/agent-source-project.d.ts +3 -3
  35. package/dist/cloud-workspace/runtime/agent-tool-claim.d.ts +1 -1
  36. package/dist/cloud-workspace/runtime/agent-variant-git.d.ts +2 -2
  37. package/dist/cloud-workspace/runtime/artifacts.d.ts +233 -0
  38. package/dist/cloud-workspace/runtime/artifacts.d.ts.map +1 -0
  39. package/dist/cloud-workspace/runtime/artifacts.js +94 -0
  40. package/dist/cloud-workspace/runtime/artifacts.js.map +1 -0
  41. package/dist/cloud-workspace/runtime/attachments.d.ts +10 -0
  42. package/dist/cloud-workspace/runtime/attachments.d.ts.map +1 -1
  43. package/dist/cloud-workspace/runtime/attachments.js +6 -0
  44. package/dist/cloud-workspace/runtime/attachments.js.map +1 -1
  45. package/dist/cloud-workspace/runtime/batch-generation.d.ts +7 -5
  46. package/dist/cloud-workspace/runtime/batch-generation.d.ts.map +1 -1
  47. package/dist/cloud-workspace/runtime/batch-generation.js +5 -2
  48. package/dist/cloud-workspace/runtime/batch-generation.js.map +1 -1
  49. package/dist/cloud-workspace/runtime/batch-production.d.ts +71 -36
  50. package/dist/cloud-workspace/runtime/batch-production.d.ts.map +1 -1
  51. package/dist/cloud-workspace/runtime/batch-production.js +10 -4
  52. package/dist/cloud-workspace/runtime/batch-production.js.map +1 -1
  53. package/dist/cloud-workspace/runtime/files.d.ts +1 -1
  54. package/dist/cloud-workspace/runtime/git.d.ts +1 -1
  55. package/dist/cloud-workspace/runtime/index.d.ts +3 -2
  56. package/dist/cloud-workspace/runtime/index.d.ts.map +1 -1
  57. package/dist/cloud-workspace/runtime/index.js +3 -2
  58. package/dist/cloud-workspace/runtime/index.js.map +1 -1
  59. package/dist/cloud-workspace/runtime/operations.d.ts +5 -5
  60. package/dist/cloud-workspace/runtime/parameters.d.ts +1 -1
  61. package/dist/cloud-workspace/runtime/previews.d.ts +1 -1
  62. package/dist/cloud-workspace/runtime/skills.d.ts +16 -0
  63. package/dist/cloud-workspace/runtime/skills.d.ts.map +1 -1
  64. package/dist/cloud-workspace/runtime/skills.js +18 -0
  65. package/dist/cloud-workspace/runtime/skills.js.map +1 -1
  66. package/dist/cloud-workspace/runtime/terminals.d.ts +2 -2
  67. package/dist/cloud-workspace/runtime/terminals.js +3 -3
  68. package/dist/cloud-workspace/runtime/terminals.js.map +1 -1
  69. package/dist/cloud-workspace/runtime/variant-workspace.d.ts +6 -6
  70. package/dist/cloud-workspace/runtime/workspace-binding.d.ts +6 -4
  71. package/dist/cloud-workspace/runtime/workspace-binding.d.ts.map +1 -1
  72. package/dist/cloud-workspace/runtime/workspace-binding.js +4 -1
  73. package/dist/cloud-workspace/runtime/workspace-binding.js.map +1 -1
  74. package/dist/cloud-workspace/runtime/workspace-directories.d.ts +2 -2
  75. package/dist/model-proxy/index.d.ts +26 -0
  76. package/dist/model-proxy/index.d.ts.map +1 -0
  77. package/dist/model-proxy/index.js +81 -0
  78. package/dist/model-proxy/index.js.map +1 -0
  79. package/dist/storage/cos.d.ts +1 -0
  80. package/dist/storage/cos.d.ts.map +1 -1
  81. package/dist/storage/cos.js +1 -0
  82. package/dist/storage/cos.js.map +1 -1
  83. package/package.json +5 -1
@@ -1,3 +1,7 @@
1
1
  export * from './types.js';
2
2
  export * from './operation-protocol.js';
3
+ export * from './video-replication.js';
4
+ export * from './video-model-proxy.js';
5
+ export * from './replica-recording.js';
6
+ export * from './replica-validation.js';
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
@@ -1,3 +1,7 @@
1
1
  export * from './types.js';
2
2
  export * from './operation-protocol.js';
3
+ export * from './video-replication.js';
4
+ export * from './video-model-proxy.js';
5
+ export * from './replica-recording.js';
6
+ export * from './replica-validation.js';
3
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,283 @@
1
+ import { z } from 'zod';
2
+ export declare const replicaScenarioSchema: z.ZodObject<{
3
+ schemaVersion: z.ZodLiteral<"playcraft.replica-scenario.v1">;
4
+ draft: z.ZodLiteral<false>;
5
+ referenceEventIds: z.ZodArray<z.ZodString>;
6
+ requiredEffects: z.ZodArray<z.ZodObject<{
7
+ stepId: z.ZodString;
8
+ eventId: z.ZodString;
9
+ }, z.core.$strict>>;
10
+ controls: z.ZodObject<{
11
+ noInput: z.ZodDefault<z.ZodBoolean>;
12
+ omitRequiredSteps: z.ZodDefault<z.ZodBoolean>;
13
+ }, z.core.$strict>;
14
+ viewport: z.ZodObject<{
15
+ width: z.ZodNumber;
16
+ height: z.ZodNumber;
17
+ deviceScaleFactor: z.ZodDefault<z.ZodLiteral<1>>;
18
+ }, z.core.$strict>;
19
+ contentRect: z.ZodObject<{
20
+ x: z.ZodNumber;
21
+ y: z.ZodNumber;
22
+ width: z.ZodNumber;
23
+ height: z.ZodNumber;
24
+ }, z.core.$strict>;
25
+ pointer: z.ZodEnum<{
26
+ mouse: "mouse";
27
+ touch: "touch";
28
+ }>;
29
+ reset: z.ZodObject<{
30
+ kind: z.ZodLiteral<"fresh-context">;
31
+ storage: z.ZodLiteral<"empty">;
32
+ }, z.core.$strict>;
33
+ seed: z.ZodOptional<z.ZodObject<{
34
+ value: z.ZodNumber;
35
+ mode: z.ZodLiteral<"best-effort">;
36
+ }, z.core.$strict>>;
37
+ durationMs: z.ZodNumber;
38
+ steps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
39
+ id: z.ZodString;
40
+ atMs: z.ZodNumber;
41
+ type: z.ZodLiteral<"tap">;
42
+ x: z.ZodNumber;
43
+ y: z.ZodNumber;
44
+ }, z.core.$strict>, z.ZodObject<{
45
+ id: z.ZodString;
46
+ atMs: z.ZodNumber;
47
+ type: z.ZodLiteral<"drag">;
48
+ path: z.ZodArray<z.ZodObject<{
49
+ offsetMs: z.ZodNumber;
50
+ x: z.ZodNumber;
51
+ y: z.ZodNumber;
52
+ }, z.core.$strict>>;
53
+ }, z.core.$strict>], "type">>;
54
+ }, z.core.$strict>;
55
+ export declare const replicaRecordedArtifactSchema: z.ZodObject<{
56
+ id: z.ZodString;
57
+ kind: z.ZodEnum<{
58
+ candidate: "candidate";
59
+ "no-input": "no-input";
60
+ "omit-step": "omit-step";
61
+ }>;
62
+ omittedStepIds: z.ZodArray<z.ZodString>;
63
+ video: z.ZodObject<{
64
+ path: z.ZodString;
65
+ source: z.ZodObject<{
66
+ sha256: z.ZodString;
67
+ sizeBytes: z.ZodNumber;
68
+ mimeType: z.ZodEnum<{
69
+ "video/mp4": "video/mp4";
70
+ "video/webm": "video/webm";
71
+ "video/quicktime": "video/quicktime";
72
+ }>;
73
+ durationMs: z.ZodNumber;
74
+ width: z.ZodNumber;
75
+ height: z.ZodNumber;
76
+ }, z.core.$strict>;
77
+ fps: z.ZodNumber;
78
+ }, z.core.$strict>;
79
+ events: z.ZodObject<{
80
+ path: z.ZodString;
81
+ sha256: z.ZodString;
82
+ }, z.core.$strict>;
83
+ console: z.ZodObject<{
84
+ path: z.ZodString;
85
+ sha256: z.ZodString;
86
+ }, z.core.$strict>;
87
+ timing: z.ZodObject<{
88
+ inputOriginMs: z.ZodNumber;
89
+ videoOriginMs: z.ZodNumber;
90
+ uncertaintyMs: z.ZodNumber;
91
+ }, z.core.$strict>;
92
+ runtime: z.ZodObject<{
93
+ pageErrors: z.ZodNumber;
94
+ consoleErrors: z.ZodNumber;
95
+ failedRequests: z.ZodNumber;
96
+ }, z.core.$strict>;
97
+ screenshots: z.ZodOptional<z.ZodArray<z.ZodObject<{
98
+ path: z.ZodString;
99
+ sha256: z.ZodString;
100
+ atMs: z.ZodNumber;
101
+ }, z.core.$strict>>>;
102
+ }, z.core.$strict>;
103
+ export declare const replicaRecordingMetadataSchema: z.ZodObject<{
104
+ schemaVersion: z.ZodLiteral<"playcraft.replica-recording.v1">;
105
+ runId: z.ZodUUID;
106
+ state: z.ZodLiteral<"completed">;
107
+ scenario: z.ZodObject<{
108
+ schemaVersion: z.ZodLiteral<"playcraft.replica-scenario.v1">;
109
+ draft: z.ZodLiteral<false>;
110
+ referenceEventIds: z.ZodArray<z.ZodString>;
111
+ requiredEffects: z.ZodArray<z.ZodObject<{
112
+ stepId: z.ZodString;
113
+ eventId: z.ZodString;
114
+ }, z.core.$strict>>;
115
+ controls: z.ZodObject<{
116
+ noInput: z.ZodDefault<z.ZodBoolean>;
117
+ omitRequiredSteps: z.ZodDefault<z.ZodBoolean>;
118
+ }, z.core.$strict>;
119
+ viewport: z.ZodObject<{
120
+ width: z.ZodNumber;
121
+ height: z.ZodNumber;
122
+ deviceScaleFactor: z.ZodDefault<z.ZodLiteral<1>>;
123
+ }, z.core.$strict>;
124
+ contentRect: z.ZodObject<{
125
+ x: z.ZodNumber;
126
+ y: z.ZodNumber;
127
+ width: z.ZodNumber;
128
+ height: z.ZodNumber;
129
+ }, z.core.$strict>;
130
+ pointer: z.ZodEnum<{
131
+ mouse: "mouse";
132
+ touch: "touch";
133
+ }>;
134
+ reset: z.ZodObject<{
135
+ kind: z.ZodLiteral<"fresh-context">;
136
+ storage: z.ZodLiteral<"empty">;
137
+ }, z.core.$strict>;
138
+ seed: z.ZodOptional<z.ZodObject<{
139
+ value: z.ZodNumber;
140
+ mode: z.ZodLiteral<"best-effort">;
141
+ }, z.core.$strict>>;
142
+ durationMs: z.ZodNumber;
143
+ steps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
144
+ id: z.ZodString;
145
+ atMs: z.ZodNumber;
146
+ type: z.ZodLiteral<"tap">;
147
+ x: z.ZodNumber;
148
+ y: z.ZodNumber;
149
+ }, z.core.$strict>, z.ZodObject<{
150
+ id: z.ZodString;
151
+ atMs: z.ZodNumber;
152
+ type: z.ZodLiteral<"drag">;
153
+ path: z.ZodArray<z.ZodObject<{
154
+ offsetMs: z.ZodNumber;
155
+ x: z.ZodNumber;
156
+ y: z.ZodNumber;
157
+ }, z.core.$strict>>;
158
+ }, z.core.$strict>], "type">>;
159
+ }, z.core.$strict>;
160
+ scenarioSha256: z.ZodString;
161
+ project: z.ZodObject<{
162
+ root: z.ZodString;
163
+ gitCommit: z.ZodNullable<z.ZodString>;
164
+ sha256: z.ZodString;
165
+ fileCount: z.ZodNumber;
166
+ }, z.core.$strict>;
167
+ toolVersions: z.ZodObject<{
168
+ cli: z.ZodString;
169
+ playwright: z.ZodString;
170
+ browser: z.ZodString;
171
+ ffmpeg: z.ZodString;
172
+ }, z.core.$strict>;
173
+ conditions: z.ZodObject<{
174
+ audio: z.ZodLiteral<"muted">;
175
+ seedSupport: z.ZodEnum<{
176
+ "best-effort": "best-effort";
177
+ "not-requested": "not-requested";
178
+ }>;
179
+ serverStateReset: z.ZodLiteral<"not-guaranteed">;
180
+ }, z.core.$strict>;
181
+ candidate: z.ZodObject<{
182
+ id: z.ZodString;
183
+ kind: z.ZodEnum<{
184
+ candidate: "candidate";
185
+ "no-input": "no-input";
186
+ "omit-step": "omit-step";
187
+ }>;
188
+ omittedStepIds: z.ZodArray<z.ZodString>;
189
+ video: z.ZodObject<{
190
+ path: z.ZodString;
191
+ source: z.ZodObject<{
192
+ sha256: z.ZodString;
193
+ sizeBytes: z.ZodNumber;
194
+ mimeType: z.ZodEnum<{
195
+ "video/mp4": "video/mp4";
196
+ "video/webm": "video/webm";
197
+ "video/quicktime": "video/quicktime";
198
+ }>;
199
+ durationMs: z.ZodNumber;
200
+ width: z.ZodNumber;
201
+ height: z.ZodNumber;
202
+ }, z.core.$strict>;
203
+ fps: z.ZodNumber;
204
+ }, z.core.$strict>;
205
+ events: z.ZodObject<{
206
+ path: z.ZodString;
207
+ sha256: z.ZodString;
208
+ }, z.core.$strict>;
209
+ console: z.ZodObject<{
210
+ path: z.ZodString;
211
+ sha256: z.ZodString;
212
+ }, z.core.$strict>;
213
+ timing: z.ZodObject<{
214
+ inputOriginMs: z.ZodNumber;
215
+ videoOriginMs: z.ZodNumber;
216
+ uncertaintyMs: z.ZodNumber;
217
+ }, z.core.$strict>;
218
+ runtime: z.ZodObject<{
219
+ pageErrors: z.ZodNumber;
220
+ consoleErrors: z.ZodNumber;
221
+ failedRequests: z.ZodNumber;
222
+ }, z.core.$strict>;
223
+ screenshots: z.ZodOptional<z.ZodArray<z.ZodObject<{
224
+ path: z.ZodString;
225
+ sha256: z.ZodString;
226
+ atMs: z.ZodNumber;
227
+ }, z.core.$strict>>>;
228
+ }, z.core.$strict>;
229
+ controls: z.ZodArray<z.ZodObject<{
230
+ id: z.ZodString;
231
+ kind: z.ZodEnum<{
232
+ candidate: "candidate";
233
+ "no-input": "no-input";
234
+ "omit-step": "omit-step";
235
+ }>;
236
+ omittedStepIds: z.ZodArray<z.ZodString>;
237
+ video: z.ZodObject<{
238
+ path: z.ZodString;
239
+ source: z.ZodObject<{
240
+ sha256: z.ZodString;
241
+ sizeBytes: z.ZodNumber;
242
+ mimeType: z.ZodEnum<{
243
+ "video/mp4": "video/mp4";
244
+ "video/webm": "video/webm";
245
+ "video/quicktime": "video/quicktime";
246
+ }>;
247
+ durationMs: z.ZodNumber;
248
+ width: z.ZodNumber;
249
+ height: z.ZodNumber;
250
+ }, z.core.$strict>;
251
+ fps: z.ZodNumber;
252
+ }, z.core.$strict>;
253
+ events: z.ZodObject<{
254
+ path: z.ZodString;
255
+ sha256: z.ZodString;
256
+ }, z.core.$strict>;
257
+ console: z.ZodObject<{
258
+ path: z.ZodString;
259
+ sha256: z.ZodString;
260
+ }, z.core.$strict>;
261
+ timing: z.ZodObject<{
262
+ inputOriginMs: z.ZodNumber;
263
+ videoOriginMs: z.ZodNumber;
264
+ uncertaintyMs: z.ZodNumber;
265
+ }, z.core.$strict>;
266
+ runtime: z.ZodObject<{
267
+ pageErrors: z.ZodNumber;
268
+ consoleErrors: z.ZodNumber;
269
+ failedRequests: z.ZodNumber;
270
+ }, z.core.$strict>;
271
+ screenshots: z.ZodOptional<z.ZodArray<z.ZodObject<{
272
+ path: z.ZodString;
273
+ sha256: z.ZodString;
274
+ atMs: z.ZodNumber;
275
+ }, z.core.$strict>>>;
276
+ }, z.core.$strict>>;
277
+ }, z.core.$strict>;
278
+ export type ReplicaScenario = z.infer<typeof replicaScenarioSchema>;
279
+ export type ReplicaRecordedArtifact = z.infer<typeof replicaRecordedArtifactSchema>;
280
+ export type ReplicaRecordingMetadata = z.infer<typeof replicaRecordingMetadataSchema>;
281
+ /** Stable JSON (JavaScript Object Notation,JavaScript 对象表示法) for artifact identities. */
282
+ export declare function canonicalReplicaJson(value: unknown): string;
283
+ //# sourceMappingURL=replica-recording.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replica-recording.d.ts","sourceRoot":"","sources":["../../src/agent-tools/replica-recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiChC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAO/B,CAAC;AACZ,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmBzC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI3D"}
@@ -0,0 +1,109 @@
1
+ import { z } from 'zod';
2
+ import { videoSourceSchema } from './video-replication.js';
3
+ const identifier = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,127}$/);
4
+ const hash = z.string().regex(/^[a-f0-9]{64}$/);
5
+ const coordinate = z.number().min(0).max(1);
6
+ const time = z.number().int().nonnegative();
7
+ const relativePath = z.string().min(1).max(2048).refine(value => !value.startsWith('/') && !value.includes('\\') && !value.split('/').some(part => part === '..' || part === '.' || !part));
8
+ const point = z.object({ offsetMs: time, x: coordinate, y: coordinate }).strict();
9
+ const step = z.discriminatedUnion('type', [
10
+ z.object({ id: identifier, atMs: time, type: z.literal('tap'), x: coordinate, y: coordinate }).strict(),
11
+ z.object({ id: identifier, atMs: time, type: z.literal('drag'), path: z.array(point).min(2).max(512) }).strict(),
12
+ ]);
13
+ export const replicaScenarioSchema = z.object({
14
+ schemaVersion: z.literal('playcraft.replica-scenario.v1'), draft: z.literal(false),
15
+ referenceEventIds: z.array(identifier).min(1).max(128),
16
+ requiredEffects: z.array(z.object({ stepId: identifier, eventId: identifier }).strict()).max(16),
17
+ controls: z.object({ noInput: z.boolean().default(true), omitRequiredSteps: z.boolean().default(true) }).strict(),
18
+ viewport: z.object({ width: z.number().int().min(64).max(4096), height: z.number().int().min(64).max(4096), deviceScaleFactor: z.literal(1).default(1) }).strict(),
19
+ contentRect: z.object({ x: coordinate, y: coordinate, width: z.number().positive().max(1), height: z.number().positive().max(1) }).strict(),
20
+ pointer: z.enum(['mouse', 'touch']), reset: z.object({ kind: z.literal('fresh-context'), storage: z.literal('empty') }).strict(),
21
+ seed: z.object({ value: z.number().int(), mode: z.literal('best-effort') }).strict().optional(),
22
+ durationMs: z.number().int().min(1000).max(180_000), steps: z.array(step).max(128),
23
+ }).strict().superRefine((value, ctx) => {
24
+ const invalid = () => ctx.addIssue({ code: 'custom', message: 'video.scenarioInvalid' });
25
+ if (value.contentRect.x + value.contentRect.width > 1 || value.contentRect.y + value.contentRect.height > 1)
26
+ invalid();
27
+ if (new Set(value.referenceEventIds).size !== value.referenceEventIds.length)
28
+ invalid();
29
+ const ids = new Set();
30
+ let previousEnd = -1;
31
+ for (const item of value.steps) {
32
+ if (ids.has(item.id) || item.atMs < previousEnd || item.atMs >= value.durationMs)
33
+ invalid();
34
+ ids.add(item.id);
35
+ let end = item.atMs;
36
+ if (item.type === 'drag') {
37
+ if (item.path[0]?.offsetMs !== 0)
38
+ invalid();
39
+ let offset = -1;
40
+ for (const position of item.path) {
41
+ if (position.offsetMs <= offset)
42
+ invalid();
43
+ offset = position.offsetMs;
44
+ }
45
+ end += offset;
46
+ }
47
+ if (end >= value.durationMs)
48
+ invalid();
49
+ previousEnd = end;
50
+ }
51
+ const effects = new Set();
52
+ const effectSteps = new Set();
53
+ for (const effect of value.requiredEffects) {
54
+ const key = `${effect.stepId}:${effect.eventId}`;
55
+ if (!ids.has(effect.stepId) || !value.referenceEventIds.includes(effect.eventId) || effects.has(key) || effect.stepId.length > 110)
56
+ invalid();
57
+ effects.add(key);
58
+ effectSteps.add(effect.stepId);
59
+ }
60
+ if (effectSteps.size > 3)
61
+ invalid();
62
+ });
63
+ const artifactFile = z.object({ path: relativePath, sha256: hash }).strict();
64
+ export const replicaRecordedArtifactSchema = z.object({
65
+ id: identifier, kind: z.enum(['candidate', 'no-input', 'omit-step']), omittedStepIds: z.array(identifier).max(128),
66
+ video: z.object({ path: relativePath, source: videoSourceSchema, fps: z.number().positive().max(240) }).strict(),
67
+ events: artifactFile, console: artifactFile,
68
+ timing: z.object({ inputOriginMs: z.number().nonnegative(), videoOriginMs: z.number().nonnegative(), uncertaintyMs: z.number().nonnegative().max(180_000) }).strict(),
69
+ runtime: z.object({ pageErrors: z.number().int().nonnegative(), consoleErrors: z.number().int().nonnegative(), failedRequests: z.number().int().nonnegative() }).strict(),
70
+ screenshots: z.array(artifactFile.extend({ atMs: time })).max(128).optional(),
71
+ }).strict();
72
+ export const replicaRecordingMetadataSchema = z.object({
73
+ schemaVersion: z.literal('playcraft.replica-recording.v1'), runId: z.uuid(), state: z.literal('completed'),
74
+ scenario: replicaScenarioSchema, scenarioSha256: hash,
75
+ project: z.object({ root: z.string().min(1).max(4096), gitCommit: z.string().max(128).nullable(), sha256: hash, fileCount: z.number().int().nonnegative() }).strict(),
76
+ toolVersions: z.object({ cli: z.string(), playwright: z.string(), browser: z.string(), ffmpeg: z.string() }).strict(),
77
+ conditions: z.object({ audio: z.literal('muted'), seedSupport: z.enum(['best-effort', 'not-requested']), serverStateReset: z.literal('not-guaranteed') }).strict(),
78
+ candidate: replicaRecordedArtifactSchema, controls: z.array(replicaRecordedArtifactSchema).max(4),
79
+ }).strict().superRefine((value, ctx) => {
80
+ const invalid = () => ctx.addIssue({ code: 'custom', message: 'video.recordingInvalid' });
81
+ if (value.candidate.id !== 'candidate' || value.candidate.kind !== 'candidate' || value.candidate.omittedStepIds.length)
82
+ invalid();
83
+ const ids = new Set(['candidate']);
84
+ const steps = value.scenario.steps.map(item => item.id);
85
+ for (const control of value.controls) {
86
+ if (ids.has(control.id) || control.kind === 'candidate')
87
+ invalid();
88
+ ids.add(control.id);
89
+ if (new Set(control.omittedStepIds).size !== control.omittedStepIds.length || control.omittedStepIds.some(id => !steps.includes(id)))
90
+ invalid();
91
+ if (control.kind === 'no-input' && (control.id !== 'control-no-input' || control.omittedStepIds.length !== steps.length))
92
+ invalid();
93
+ if (control.kind === 'omit-step' && (control.omittedStepIds.length !== 1 || control.id !== `control-omit-${control.omittedStepIds[0]}`))
94
+ invalid();
95
+ }
96
+ if (value.scenario.controls.noInput && !value.controls.some(item => item.kind === 'no-input'))
97
+ invalid();
98
+ if (value.scenario.controls.omitRequiredSteps && value.scenario.requiredEffects.some(effect => !value.controls.some(item => item.kind === 'omit-step' && item.omittedStepIds.includes(effect.stepId))))
99
+ invalid();
100
+ });
101
+ /** Stable JSON (JavaScript Object Notation,JavaScript 对象表示法) for artifact identities. */
102
+ export function canonicalReplicaJson(value) {
103
+ if (Array.isArray(value))
104
+ return `[${value.map(canonicalReplicaJson).join(',')}]`;
105
+ if (value !== null && typeof value === 'object')
106
+ return `{${Object.entries(value).filter(([, item]) => item !== undefined).sort(([a], [b]) => a.localeCompare(b, 'en')).map(([key, item]) => `${JSON.stringify(key)}:${canonicalReplicaJson(item)}`).join(',')}}`;
107
+ return JSON.stringify(value);
108
+ }
109
+ //# sourceMappingURL=replica-recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replica-recording.js","sourceRoot":"","sources":["../../src/agent-tools/replica-recording.ts"],"names":[],"mappings":"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"}