@playcraft/common 0.1.48-beta → 0.1.50-beta

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 (85) hide show
  1. package/dist/cloud-workspace/runtime/animation-editor.d.ts +766 -0
  2. package/dist/cloud-workspace/runtime/animation-editor.d.ts.map +1 -0
  3. package/dist/cloud-workspace/runtime/animation-editor.js +84 -0
  4. package/dist/cloud-workspace/runtime/animation-editor.js.map +1 -0
  5. package/dist/cloud-workspace/runtime/animation-quality.d.ts +33 -0
  6. package/dist/cloud-workspace/runtime/animation-quality.d.ts.map +1 -0
  7. package/dist/cloud-workspace/runtime/animation-quality.js +14 -0
  8. package/dist/cloud-workspace/runtime/animation-quality.js.map +1 -0
  9. package/dist/cloud-workspace/runtime/asset-generation-bundle.d.ts +61 -0
  10. package/dist/cloud-workspace/runtime/asset-generation-bundle.d.ts.map +1 -0
  11. package/dist/cloud-workspace/runtime/asset-generation-bundle.js +59 -0
  12. package/dist/cloud-workspace/runtime/asset-generation-bundle.js.map +1 -0
  13. package/dist/cloud-workspace/runtime/asset-generation-video-validator.d.ts +15 -0
  14. package/dist/cloud-workspace/runtime/asset-generation-video-validator.d.ts.map +1 -0
  15. package/dist/cloud-workspace/runtime/asset-generation-video-validator.js +63 -0
  16. package/dist/cloud-workspace/runtime/asset-generation-video-validator.js.map +1 -0
  17. package/dist/cloud-workspace/runtime/asset-generation-video.d.ts +92 -0
  18. package/dist/cloud-workspace/runtime/asset-generation-video.d.ts.map +1 -0
  19. package/dist/cloud-workspace/runtime/asset-generation-video.js +63 -0
  20. package/dist/cloud-workspace/runtime/asset-generation-video.js.map +1 -0
  21. package/dist/cloud-workspace/runtime/asset-generation.d.ts +344 -0
  22. package/dist/cloud-workspace/runtime/asset-generation.d.ts.map +1 -1
  23. package/dist/cloud-workspace/runtime/asset-generation.js +60 -3
  24. package/dist/cloud-workspace/runtime/asset-generation.js.map +1 -1
  25. package/dist/cloud-workspace/runtime/asset-library-import.d.ts +23 -0
  26. package/dist/cloud-workspace/runtime/asset-library-import.d.ts.map +1 -1
  27. package/dist/cloud-workspace/runtime/asset-library-import.js +11 -2
  28. package/dist/cloud-workspace/runtime/asset-library-import.js.map +1 -1
  29. package/dist/cloud-workspace/runtime/asset-transfers.d.ts +92 -0
  30. package/dist/cloud-workspace/runtime/asset-transfers.d.ts.map +1 -0
  31. package/dist/cloud-workspace/runtime/asset-transfers.js +119 -0
  32. package/dist/cloud-workspace/runtime/asset-transfers.js.map +1 -0
  33. package/dist/cloud-workspace/runtime/batch-runs.d.ts +16 -4
  34. package/dist/cloud-workspace/runtime/batch-runs.d.ts.map +1 -1
  35. package/dist/cloud-workspace/runtime/batch-runs.js +2 -0
  36. package/dist/cloud-workspace/runtime/batch-runs.js.map +1 -1
  37. package/dist/cloud-workspace/runtime/delivery.d.ts +1042 -0
  38. package/dist/cloud-workspace/runtime/delivery.d.ts.map +1 -0
  39. package/dist/cloud-workspace/runtime/delivery.js +208 -0
  40. package/dist/cloud-workspace/runtime/delivery.js.map +1 -0
  41. package/dist/cloud-workspace/runtime/directories.d.ts +32 -0
  42. package/dist/cloud-workspace/runtime/directories.d.ts.map +1 -0
  43. package/dist/cloud-workspace/runtime/directories.js +44 -0
  44. package/dist/cloud-workspace/runtime/directories.js.map +1 -0
  45. package/dist/cloud-workspace/runtime/execution-admission.d.ts +5 -3
  46. package/dist/cloud-workspace/runtime/execution-admission.d.ts.map +1 -1
  47. package/dist/cloud-workspace/runtime/execution-admission.js +7 -3
  48. package/dist/cloud-workspace/runtime/execution-admission.js.map +1 -1
  49. package/dist/cloud-workspace/runtime/files.d.ts +1 -0
  50. package/dist/cloud-workspace/runtime/files.d.ts.map +1 -1
  51. package/dist/cloud-workspace/runtime/files.js +1 -0
  52. package/dist/cloud-workspace/runtime/files.js.map +1 -1
  53. package/dist/cloud-workspace/runtime/index.d.ts +13 -2
  54. package/dist/cloud-workspace/runtime/index.d.ts.map +1 -1
  55. package/dist/cloud-workspace/runtime/index.js +13 -2
  56. package/dist/cloud-workspace/runtime/index.js.map +1 -1
  57. package/dist/cloud-workspace/runtime/operations.d.ts +134 -4
  58. package/dist/cloud-workspace/runtime/operations.d.ts.map +1 -1
  59. package/dist/cloud-workspace/runtime/operations.js +17 -1
  60. package/dist/cloud-workspace/runtime/operations.js.map +1 -1
  61. package/dist/cloud-workspace/runtime/parameter-agent.d.ts +255 -0
  62. package/dist/cloud-workspace/runtime/parameter-agent.d.ts.map +1 -0
  63. package/dist/cloud-workspace/runtime/parameter-agent.js +82 -0
  64. package/dist/cloud-workspace/runtime/parameter-agent.js.map +1 -0
  65. package/dist/cloud-workspace/runtime/parameter-catalog.d.ts +28 -0
  66. package/dist/cloud-workspace/runtime/parameter-catalog.d.ts.map +1 -0
  67. package/dist/cloud-workspace/runtime/parameter-catalog.js +223 -0
  68. package/dist/cloud-workspace/runtime/parameter-catalog.js.map +1 -0
  69. package/dist/cloud-workspace/runtime/parameters.d.ts +30 -2
  70. package/dist/cloud-workspace/runtime/parameters.d.ts.map +1 -1
  71. package/dist/cloud-workspace/runtime/parameters.js +45 -2
  72. package/dist/cloud-workspace/runtime/parameters.js.map +1 -1
  73. package/dist/cloud-workspace/runtime/preview-runtime.d.ts +33 -0
  74. package/dist/cloud-workspace/runtime/preview-runtime.d.ts.map +1 -0
  75. package/dist/cloud-workspace/runtime/preview-runtime.js +51 -0
  76. package/dist/cloud-workspace/runtime/preview-runtime.js.map +1 -0
  77. package/dist/cloud-workspace/runtime/previews.d.ts +50 -0
  78. package/dist/cloud-workspace/runtime/previews.d.ts.map +1 -1
  79. package/dist/cloud-workspace/runtime/previews.js +3 -0
  80. package/dist/cloud-workspace/runtime/previews.js.map +1 -1
  81. package/dist/cloud-workspace/runtime/workspace-ui.d.ts +101 -0
  82. package/dist/cloud-workspace/runtime/workspace-ui.d.ts.map +1 -1
  83. package/dist/cloud-workspace/runtime/workspace-ui.js +14 -0
  84. package/dist/cloud-workspace/runtime/workspace-ui.js.map +1 -1
  85. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-editor.d.ts","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/animation-editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { z } from 'zod';
2
+ import { assetGenerationBundleSchema, ANIMATION_EDITOR_MAX_FRAMES, ASSET_GENERATION_BUNDLE_FILE_MAX_BYTES } from './asset-generation-bundle.js';
3
+ import { animationLoopModeSchema } from './animation-quality.js';
4
+ import { assetGenerationTaskSavedSchema } from './asset-generation.js';
5
+ import { workspaceRelativePathSchema } from './files.js';
6
+ import { isAttachmentBase64 } from './attachment-base64.js';
7
+ export const ANIMATION_EDITOR_MAX_VERSIONS = 50;
8
+ export const ANIMATION_EDITOR_MAX_REPLACEMENTS = 100;
9
+ export const ANIMATION_EDITOR_UPLOAD_MAX_BYTES = 10 * 1024 * 1024;
10
+ export const ANIMATION_EDITOR_UPLOAD_BODY_MAX_BYTES = 4 * Math.ceil(ANIMATION_EDITOR_UPLOAD_MAX_BYTES / 3) + 64 * 1024;
11
+ const revision = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
12
+ const requestId = z.string().trim().min(1).max(128);
13
+ const fileId = z.string().regex(/^[a-z0-9][a-z0-9._-]{0,127}$/);
14
+ const hash = z.string().regex(/^[a-f0-9]{64}$/);
15
+ export const animationEditorFrameSchema = z.object({ id: z.string().uuid(), fileId, durationMs: z.number().int().min(10).max(60000) }).strict();
16
+ export const animationEditorDraftSchema = z.object({
17
+ frames: z.array(animationEditorFrameSchema).min(1).max(ANIMATION_EDITOR_MAX_FRAMES),
18
+ columns: z.number().int().min(1).max(8), loopMode: animationLoopModeSchema,
19
+ }).strict().superRefine((value, context) => {
20
+ if (new Set(value.frames.map(frame => frame.id)).size !== value.frames.length)
21
+ context.addIssue({ code: 'custom', message: 'duplicate_animation_frame' });
22
+ if (value.columns > value.frames.length)
23
+ context.addIssue({ code: 'custom', message: 'invalid_animation_columns', path: ['columns'] });
24
+ });
25
+ export const animationEditorReplacementSchema = z.object({ fileId, mimeType: z.literal('image/png'),
26
+ size: z.number().int().positive().max(ASSET_GENERATION_BUNDLE_FILE_MAX_BYTES), contentHash: hash }).strict();
27
+ export const animationEditorOutputSchema = z.object({ name: z.string().min(1).max(256), mimeType: z.literal('image/png'),
28
+ size: z.number().int().positive().max(ASSET_GENERATION_BUNDLE_FILE_MAX_BYTES), contentHash: hash }).strict();
29
+ export const animationEditorSavedSchema = z.object({ operationId: z.string().min(1).max(128), path: workspaceRelativePathSchema,
30
+ savedAt: z.string().datetime() }).strict();
31
+ export const animationEditorVersionSchema = z.object({
32
+ versionId: z.string().uuid(), versionNumber: z.number().int().min(1).max(ANIMATION_EDITOR_MAX_VERSIONS),
33
+ sourceRevision: revision, clientRequestId: requestId, createdAt: z.string().datetime(),
34
+ draft: animationEditorDraftSchema, bundle: assetGenerationBundleSchema, output: animationEditorOutputSchema,
35
+ saved: animationEditorSavedSchema.optional(),
36
+ }).strict().superRefine((version, context) => {
37
+ const bundle = version.bundle, animation = bundle.animation, entry = bundle.files.find(file => file.path === bundle.entryPath);
38
+ if (!entry || version.output.name !== entry.path.split('/').at(-1) || version.output.size !== entry.size
39
+ || version.output.contentHash !== entry.contentHash || version.output.mimeType !== entry.mimeType)
40
+ context.addIssue({ code: 'custom', message: 'animation_version_output_mismatch' });
41
+ if (!bundle.qualityReport || animation.loopMode !== version.draft.loopMode || animation.columns !== version.draft.columns
42
+ || animation.framePaths.length !== version.draft.frames.length
43
+ || !animation.frameDurationsMs || animation.frameDurationsMs.some((duration, index) => duration !== version.draft.frames[index]?.durationMs))
44
+ context.addIssue({ code: 'custom', message: 'animation_version_draft_mismatch' });
45
+ });
46
+ export const animationEditorBuildSchema = z.object({ versionId: z.string().uuid(), clientRequestId: requestId,
47
+ sourceRevision: revision, startedAt: z.string().datetime(), error: z.string().min(1).max(256).optional() }).strict();
48
+ export const animationEditorStateSchema = z.object({ taskId: z.string().uuid(), revision, updatedAt: z.string().datetime(),
49
+ draft: animationEditorDraftSchema, originalBundle: assetGenerationBundleSchema,
50
+ replacements: z.array(animationEditorReplacementSchema).max(ANIMATION_EDITOR_MAX_REPLACEMENTS),
51
+ versions: z.array(animationEditorVersionSchema).max(ANIMATION_EDITOR_MAX_VERSIONS), building: animationEditorBuildSchema.optional(),
52
+ }).strict().superRefine((state, context) => {
53
+ const originalFrames = new Set(state.originalBundle.animation.framePaths);
54
+ const allowed = new Set([...state.originalBundle.files.filter(file => originalFrames.has(file.path)).map(file => file.fileId),
55
+ ...state.replacements.map(file => file.fileId)]);
56
+ if (state.draft.frames.some(frame => !allowed.has(frame.fileId))
57
+ || state.versions.some(version => version.draft.frames.some(frame => !allowed.has(frame.fileId))))
58
+ context.addIssue({ code: 'custom', message: 'animation_frame_unavailable' });
59
+ if (new Set(state.replacements.map(file => file.fileId)).size !== state.replacements.length
60
+ || new Set(state.versions.map(version => version.versionId)).size !== state.versions.length
61
+ || new Set(state.versions.map(version => version.versionNumber)).size !== state.versions.length
62
+ || new Set(state.versions.map(version => version.clientRequestId)).size !== state.versions.length)
63
+ context.addIssue({ code: 'custom', message: 'duplicate_animation_editor_member' });
64
+ const { frameWidth, frameHeight } = state.originalBundle.animation;
65
+ if (state.versions.some(version => version.sourceRevision > state.revision
66
+ || version.bundle.animation.frameWidth !== frameWidth || version.bundle.animation.frameHeight !== frameHeight))
67
+ context.addIssue({ code: 'custom', message: 'animation_version_source_mismatch' });
68
+ if ([state.draft, ...state.versions.map(version => version.draft)].some(draft => frameWidth * draft.columns > 4096
69
+ || frameHeight * Math.ceil(draft.frames.length / draft.columns) > 4096))
70
+ context.addIssue({ code: 'custom', message: 'animation_sheet_too_large' });
71
+ });
72
+ export const animationEditorDraftUpdateSchema = z.object({ expectedRevision: revision, draft: animationEditorDraftSchema }).strict();
73
+ export const animationEditorFrameUploadSchema = z.object({ clientRequestId: requestId, mimeType: z.enum(['image/png', 'image/jpeg', 'image/webp']),
74
+ contentBase64: z.string().min(1).max(4 * Math.ceil(ANIMATION_EDITOR_UPLOAD_MAX_BYTES / 3)).refine(isAttachmentBase64, 'invalid_animation_image')
75
+ .refine(value => value.length / 4 * 3 - (value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0) <= ANIMATION_EDITOR_UPLOAD_MAX_BYTES, 'animation_image_too_large'),
76
+ }).strict();
77
+ export const animationEditorVersionCreateSchema = z.object({ clientRequestId: requestId, expectedRevision: revision }).strict();
78
+ export const animationEditorFrameUploadResultSchema = z.object({ state: animationEditorStateSchema, frame: animationEditorReplacementSchema }).strict()
79
+ .refine(value => value.state.replacements.some(frame => frame.fileId === value.frame.fileId && frame.size === value.frame.size
80
+ && frame.contentHash === value.frame.contentHash), 'animation_replacement_state_mismatch');
81
+ export const animationEditorVersionResultSchema = z.object({ state: animationEditorStateSchema, version: animationEditorVersionSchema }).strict()
82
+ .refine(value => value.state.versions.some(version => JSON.stringify(version) === JSON.stringify(value.version)), 'animation_version_state_mismatch');
83
+ export const animationEditorVersionSavedSchema = assetGenerationTaskSavedSchema;
84
+ //# sourceMappingURL=animation-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-editor.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/animation-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,sCAAsC,EAAE,MAAM,8BAA8B,CAAC;AAChJ,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AACrD,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iCAAiC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvH,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC7E,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAChE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAChJ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACnF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,uBAAuB;CAC3E,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACzC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM;QAC3E,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACzI,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACjG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAC/G,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACtH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAC/G,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,2BAA2B;IAC7H,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACvG,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtF,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,2BAA2B;IAC3G,KAAK,EAAE,0BAA0B,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/H,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACnG,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;QACjG,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO;WACpH,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;WAC3D,CAAC,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;QAC5I,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;AACtF,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,SAAS;IAC3G,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACvH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxH,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,2BAA2B;IAC9E,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,GAAG,CAAC,iCAAiC,CAAC;IAC9F,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,QAAQ,EAAE,0BAA0B,CAAC,QAAQ,EAAE;CACpI,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACzC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3H,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;WAC3D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,MAAM;WACtF,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM;WACxF,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM;WAC5F,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM;QACjG,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACrF,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;IACnE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ;WACrE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,KAAK,WAAW,CAAC;QAC9G,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI;WAC7G,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QACvE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACrI,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAChJ,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;SAC7I,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,iCAAiC,EAAE,2BAA2B,CAAC;CACtK,CAAC,CAAC,MAAM,EAAE,CAAC;AACZ,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAChI,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC,MAAM,EAAE;KACpJ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI;OACzH,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,sCAAsC,CAAC,CAAC;AAC/F,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE;KAC9I,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;AACxJ,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAA8B,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ export declare const animationQualityReportSchema: z.ZodObject<{
3
+ status: z.ZodEnum<{
4
+ error: "error";
5
+ ok: "ok";
6
+ warning: "warning";
7
+ }>;
8
+ issues: z.ZodArray<z.ZodObject<{
9
+ code: z.ZodString;
10
+ severity: z.ZodEnum<{
11
+ error: "error";
12
+ ok: "ok";
13
+ warning: "warning";
14
+ }>;
15
+ message: z.ZodString;
16
+ }, z.core.$strict>>;
17
+ metrics: z.ZodObject<{
18
+ frameCount: z.ZodNumber;
19
+ frameSizeConsistent: z.ZodBoolean;
20
+ transparentPixelRatio: z.ZodNumber;
21
+ averageContentJitterPx: z.ZodNumber;
22
+ loopDelta: z.ZodNumber;
23
+ coordinatesComplete: z.ZodBoolean;
24
+ }, z.core.$strict>;
25
+ }, z.core.$strict>;
26
+ export declare const animationLoopModeSchema: z.ZodEnum<{
27
+ pingpong: "pingpong";
28
+ loop: "loop";
29
+ once: "once";
30
+ }>;
31
+ export type AnimationQualityReport = z.infer<typeof animationQualityReportSchema>;
32
+ export type AnimationLoopMode = z.infer<typeof animationLoopModeSchema>;
33
+ //# sourceMappingURL=animation-quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-quality.d.ts","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/animation-quality.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;kBAU9B,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;EAAuC,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ export const animationQualityReportSchema = z.object({
3
+ status: z.enum(['ok', 'warning', 'error']),
4
+ issues: z.array(z.object({
5
+ code: z.string().min(1).max(128), severity: z.enum(['ok', 'warning', 'error']), message: z.string().min(1).max(1000),
6
+ }).strict()).max(64),
7
+ metrics: z.object({
8
+ frameCount: z.number().int().min(1).max(48), frameSizeConsistent: z.boolean(),
9
+ transparentPixelRatio: z.number().finite().min(0).max(1), averageContentJitterPx: z.number().finite().nonnegative(),
10
+ loopDelta: z.number().finite().nonnegative(), coordinatesComplete: z.boolean(),
11
+ }).strict(),
12
+ }).strict();
13
+ export const animationLoopModeSchema = z.enum(['once', 'loop', 'pingpong']);
14
+ //# sourceMappingURL=animation-quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-quality.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/animation-quality.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;KACrH,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC7E,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;QACnH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;KAC/E,CAAC,CAAC,MAAM,EAAE;CACZ,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ export declare const ASSET_GENERATION_BUNDLE_FILE_MAX_BYTES: number;
3
+ export declare const ASSET_GENERATION_BUNDLE_MAX_BYTES: number;
4
+ export declare const ASSET_GENERATION_BUNDLE_MAX_FILES = 64;
5
+ export declare const ANIMATION_EDITOR_MAX_FRAMES = 48;
6
+ export declare const assetGenerationFrameCountSchema: z.ZodUnion<readonly [z.ZodLiteral<6>, z.ZodLiteral<8>, z.ZodLiteral<12>, z.ZodLiteral<16>]>;
7
+ export declare const assetGenerationFrameSizeSchema: z.ZodUnion<readonly [z.ZodLiteral<128>, z.ZodLiteral<256>, z.ZodLiteral<512>]>;
8
+ export declare const assetGenerationBundleSchema: z.ZodObject<{
9
+ files: z.ZodArray<z.ZodObject<{
10
+ fileId: z.ZodString;
11
+ path: z.ZodString;
12
+ mimeType: z.ZodEnum<{
13
+ "application/json": "application/json";
14
+ "image/png": "image/png";
15
+ "image/webp": "image/webp";
16
+ }>;
17
+ size: z.ZodNumber;
18
+ contentHash: z.ZodString;
19
+ }, z.core.$strict>>;
20
+ entryPath: z.ZodString;
21
+ previewPath: z.ZodOptional<z.ZodString>;
22
+ animation: z.ZodObject<{
23
+ framePaths: z.ZodArray<z.ZodString>;
24
+ frameDurationsMs: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
25
+ loopMode: z.ZodOptional<z.ZodEnum<{
26
+ pingpong: "pingpong";
27
+ loop: "loop";
28
+ once: "once";
29
+ }>>;
30
+ fps: z.ZodNumber;
31
+ frameWidth: z.ZodUnion<readonly [z.ZodLiteral<128>, z.ZodLiteral<256>, z.ZodLiteral<512>]>;
32
+ frameHeight: z.ZodUnion<readonly [z.ZodLiteral<128>, z.ZodLiteral<256>, z.ZodLiteral<512>]>;
33
+ columns: z.ZodNumber;
34
+ }, z.core.$strict>;
35
+ qualityReport: z.ZodOptional<z.ZodObject<{
36
+ status: z.ZodEnum<{
37
+ error: "error";
38
+ ok: "ok";
39
+ warning: "warning";
40
+ }>;
41
+ issues: z.ZodArray<z.ZodObject<{
42
+ code: z.ZodString;
43
+ severity: z.ZodEnum<{
44
+ error: "error";
45
+ ok: "ok";
46
+ warning: "warning";
47
+ }>;
48
+ message: z.ZodString;
49
+ }, z.core.$strict>>;
50
+ metrics: z.ZodObject<{
51
+ frameCount: z.ZodNumber;
52
+ frameSizeConsistent: z.ZodBoolean;
53
+ transparentPixelRatio: z.ZodNumber;
54
+ averageContentJitterPx: z.ZodNumber;
55
+ loopDelta: z.ZodNumber;
56
+ coordinatesComplete: z.ZodBoolean;
57
+ }, z.core.$strict>;
58
+ }, z.core.$strict>>;
59
+ }, z.core.$strict>;
60
+ export type AssetGenerationBundle = z.infer<typeof assetGenerationBundleSchema>;
61
+ //# sourceMappingURL=asset-generation-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-generation-bundle.d.ts","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/asset-generation-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,sCAAsC,QAAmB,CAAC;AACvE,eAAO,MAAM,iCAAiC,QAAoB,CAAC;AACnE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,+BAA+B,6FAAsE,CAAC;AACnH,eAAO,MAAM,8BAA8B,gFAA4D,CAAC;AAKxG,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2CtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { z } from 'zod';
2
+ import { workspaceRelativePathSchema } from './files.js';
3
+ import { animationLoopModeSchema, animationQualityReportSchema } from './animation-quality.js';
4
+ export const ASSET_GENERATION_BUNDLE_FILE_MAX_BYTES = 32 * 1024 * 1024;
5
+ export const ASSET_GENERATION_BUNDLE_MAX_BYTES = 100 * 1024 * 1024;
6
+ export const ASSET_GENERATION_BUNDLE_MAX_FILES = 64;
7
+ export const ANIMATION_EDITOR_MAX_FRAMES = 48;
8
+ export const assetGenerationFrameCountSchema = z.union([z.literal(6), z.literal(8), z.literal(12), z.literal(16)]);
9
+ export const assetGenerationFrameSizeSchema = z.union([z.literal(128), z.literal(256), z.literal(512)]);
10
+ const packagePath = workspaceRelativePathSchema.refine(path => !path.split('/').some(segment => ['.git', '.playcraft', '.playcraft-temp', 'node_modules'].includes(segment.toLowerCase())), 'reserved_bundle_path');
11
+ export const assetGenerationBundleSchema = z.object({
12
+ files: z.array(z.object({
13
+ fileId: z.string().regex(/^[a-z0-9][a-z0-9._-]{0,127}$/),
14
+ path: packagePath,
15
+ mimeType: z.enum(['image/png', 'image/webp', 'application/json']),
16
+ size: z.number().int().positive().max(ASSET_GENERATION_BUNDLE_FILE_MAX_BYTES),
17
+ contentHash: z.string().regex(/^[a-f0-9]{64}$/),
18
+ }).strict()).min(1).max(ASSET_GENERATION_BUNDLE_MAX_FILES),
19
+ entryPath: packagePath,
20
+ previewPath: packagePath.optional(),
21
+ animation: z.object({
22
+ framePaths: z.array(packagePath).min(1).max(ANIMATION_EDITOR_MAX_FRAMES),
23
+ frameDurationsMs: z.array(z.number().int().min(10).max(60000)).min(1).max(ANIMATION_EDITOR_MAX_FRAMES).optional(),
24
+ loopMode: animationLoopModeSchema.optional(),
25
+ fps: z.number().int().min(1).max(60),
26
+ frameWidth: assetGenerationFrameSizeSchema,
27
+ frameHeight: assetGenerationFrameSizeSchema,
28
+ columns: z.number().int().min(1).max(8),
29
+ }).strict(),
30
+ qualityReport: animationQualityReportSchema.optional(),
31
+ }).strict().superRefine((bundle, context) => {
32
+ const issue = (message) => context.addIssue({ code: 'custom', message });
33
+ const paths = new Map(bundle.files.map(file => [file.path, file]));
34
+ if (paths.size !== bundle.files.length || new Set(bundle.files.map(file => file.fileId)).size !== bundle.files.length)
35
+ issue('duplicate_bundle_file');
36
+ if (bundle.files.some(file => file.path.split('/').slice(0, -1).some((_, index, segments) => paths.has(segments.slice(0, index + 1).join('/')))))
37
+ issue('bundle_file_directory_conflict');
38
+ if (bundle.files.reduce((total, file) => total + file.size, 0) > ASSET_GENERATION_BUNDLE_MAX_BYTES)
39
+ issue('generation_bundle_too_large');
40
+ if (paths.get(bundle.entryPath)?.mimeType !== 'image/png')
41
+ issue('bundle_entry_required');
42
+ if (!bundle.files.some(file => file.mimeType === 'application/json'))
43
+ issue('bundle_description_required');
44
+ if (bundle.previewPath && !paths.get(bundle.previewPath)?.mimeType.startsWith('image/'))
45
+ issue('bundle_preview_required');
46
+ const frames = bundle.animation.framePaths;
47
+ if (new Set(frames).size !== frames.length
48
+ || frames.some(path => paths.get(path)?.mimeType !== 'image/png' || path === bundle.entryPath))
49
+ issue('invalid_bundle_frames');
50
+ if (bundle.animation.frameDurationsMs && bundle.animation.frameDurationsMs.length !== frames.length)
51
+ issue('invalid_bundle_frame_durations');
52
+ if (bundle.qualityReport && bundle.qualityReport.metrics.frameCount !== frames.length)
53
+ issue('invalid_bundle_quality_report');
54
+ if (bundle.animation.columns > frames.length
55
+ || bundle.animation.frameWidth * bundle.animation.columns > 4096
56
+ || bundle.animation.frameHeight * Math.ceil(frames.length / bundle.animation.columns) > 4096)
57
+ issue('generation_sheet_too_large');
58
+ });
59
+ //# sourceMappingURL=asset-generation-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-generation-bundle.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/asset-generation-bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Bounded container framing checks; decoding and codec support remain the player's responsibility. */
2
+ export declare class AssetGenerationVideoValidator {
3
+ private readonly header;
4
+ private headerBytes;
5
+ private headerLength;
6
+ private remaining;
7
+ private received;
8
+ private boxes;
9
+ private movie;
10
+ private media;
11
+ private ended;
12
+ update(bytes: Uint8Array): void;
13
+ finish(): void;
14
+ }
15
+ //# sourceMappingURL=asset-generation-video-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-generation-video-validator.d.ts","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/asset-generation-video-validator.ts"],"names":[],"mappings":"AAEA,uGAAuG;AACvG,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IAEtB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAiC/B,MAAM,IAAI,IAAI;CAMf"}
@@ -0,0 +1,63 @@
1
+ import { ASSET_GENERATION_VIDEO_MAX_BYTES } from './asset-generation-video.js';
2
+ /** Bounded container framing checks; decoding and codec support remain the player's responsibility. */
3
+ export class AssetGenerationVideoValidator {
4
+ header = new Uint8Array(16);
5
+ headerBytes = 0;
6
+ headerLength = 8;
7
+ remaining = 0;
8
+ received = 0;
9
+ boxes = 0;
10
+ movie = false;
11
+ media = false;
12
+ ended = false;
13
+ update(bytes) {
14
+ if (this.ended)
15
+ throw new Error('asset_generation_invalid_result');
16
+ this.received += bytes.byteLength;
17
+ if (this.received > ASSET_GENERATION_VIDEO_MAX_BYTES)
18
+ throw new Error('asset_generation_video_too_large');
19
+ let offset = 0;
20
+ while (offset < bytes.byteLength) {
21
+ if (this.remaining > 0) {
22
+ const size = Math.min(this.remaining, bytes.byteLength - offset);
23
+ offset += size;
24
+ if (this.remaining !== Infinity)
25
+ this.remaining -= size;
26
+ continue;
27
+ }
28
+ const count = Math.min(this.headerLength - this.headerBytes, bytes.byteLength - offset);
29
+ this.header.set(bytes.subarray(offset, offset + count), this.headerBytes);
30
+ this.headerBytes += count;
31
+ offset += count;
32
+ if (this.headerBytes !== this.headerLength)
33
+ continue;
34
+ const view = new DataView(this.header.buffer), shortSize = view.getUint32(0);
35
+ if (shortSize === 1 && this.headerLength === 8) {
36
+ this.headerLength = 16;
37
+ continue;
38
+ }
39
+ const type = String.fromCharCode(...this.header.subarray(4, 8));
40
+ const size = shortSize === 1 ? view.getUint32(8) * 2 ** 32 + view.getUint32(12) : shortSize;
41
+ if (++this.boxes > 65_536 || this.boxes === 1 && type !== 'ftyp'
42
+ || this.boxes > 1 && type === 'ftyp'
43
+ || size !== 0 && (size < this.headerLength || size > ASSET_GENERATION_VIDEO_MAX_BYTES)
44
+ || type === 'ftyp' && size < this.headerLength + 8
45
+ || (type === 'moov' || type === 'mdat') && size !== 0 && size <= this.headerLength)
46
+ throw new Error('asset_generation_invalid_result');
47
+ if (type === 'moov')
48
+ this.movie = true;
49
+ if (type === 'mdat')
50
+ this.media = true;
51
+ this.remaining = size === 0 ? Infinity : size - this.headerLength;
52
+ this.headerBytes = 0;
53
+ this.headerLength = 8;
54
+ }
55
+ }
56
+ finish() {
57
+ if (this.ended || !this.received || !this.movie || !this.media || this.headerBytes
58
+ || this.remaining !== 0 && this.remaining !== Infinity)
59
+ throw new Error('asset_generation_invalid_result');
60
+ this.ended = true;
61
+ }
62
+ }
63
+ //# sourceMappingURL=asset-generation-video-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-generation-video-validator.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/asset-generation-video-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { z } from 'zod';
2
+ export declare const ASSET_GENERATION_VIDEO_MAX_BYTES: number;
3
+ export declare const ASSET_GENERATION_VIDEO_CHUNK_BYTES: number;
4
+ export declare const ASSET_GENERATION_VIDEO_MODELS: readonly [{
5
+ readonly ref: "mulerouter/wan2.6-t2v";
6
+ readonly mode: "text";
7
+ readonly durations: readonly [5, 10, 15];
8
+ readonly resolutions: readonly ["720P", "1080P"];
9
+ readonly supportsAudio: true;
10
+ readonly aspectRatioFromImage: false;
11
+ }, {
12
+ readonly ref: "mulerouter/wan2.6-i2v";
13
+ readonly mode: "reference";
14
+ readonly durations: readonly [5, 10, 15];
15
+ readonly resolutions: readonly ["720P", "1080P"];
16
+ readonly supportsAudio: true;
17
+ readonly aspectRatioFromImage: true;
18
+ }, {
19
+ readonly ref: "mulerouter/kling-v3-t2v";
20
+ readonly mode: "text";
21
+ readonly durations: readonly [5, 10];
22
+ readonly resolutions: readonly ["720P", "1080P"];
23
+ readonly supportsAudio: true;
24
+ readonly aspectRatioFromImage: false;
25
+ }, {
26
+ readonly ref: "mulerouter/kling-v3-i2v";
27
+ readonly mode: "reference";
28
+ readonly durations: readonly [5, 10];
29
+ readonly resolutions: readonly ["720P", "1080P"];
30
+ readonly supportsAudio: true;
31
+ readonly aspectRatioFromImage: true;
32
+ }];
33
+ export declare const assetGenerationVideoOptions: {
34
+ mode: z.ZodEnum<{
35
+ text: "text";
36
+ reference: "reference";
37
+ }>;
38
+ videoModelRef: z.ZodOptional<z.ZodString>;
39
+ duration: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<5>, z.ZodLiteral<10>, z.ZodLiteral<15>]>>;
40
+ aspectRatio: z.ZodDefault<z.ZodEnum<{
41
+ "1:1": "1:1";
42
+ "9:16": "9:16";
43
+ "16:9": "16:9";
44
+ }>>;
45
+ resolution: z.ZodDefault<z.ZodEnum<{
46
+ "720P": "720P";
47
+ "1080P": "1080P";
48
+ }>>;
49
+ audio: z.ZodDefault<z.ZodBoolean>;
50
+ };
51
+ type VideoOptions = z.infer<z.ZodObject<typeof assetGenerationVideoOptions>>;
52
+ export declare function validateAssetGenerationVideoOptions(value: VideoOptions, context: z.RefinementCtx): void;
53
+ export declare const assetGenerationVideoJobSchema: z.ZodObject<{
54
+ provider: z.ZodLiteral<"mulerouter">;
55
+ model: z.ZodEnum<{
56
+ "wan2.6-t2v": "wan2.6-t2v";
57
+ "wan2.6-i2v": "wan2.6-i2v";
58
+ "kling-v3-t2v": "kling-v3-t2v";
59
+ "kling-v3-i2v": "kling-v3-i2v";
60
+ }>;
61
+ configId: z.ZodString;
62
+ jobId: z.ZodString;
63
+ submittedAt: z.ZodString;
64
+ duration: z.ZodUnion<readonly [z.ZodLiteral<5>, z.ZodLiteral<10>, z.ZodLiteral<15>]>;
65
+ aspectRatio: z.ZodEnum<{
66
+ "1:1": "1:1";
67
+ "9:16": "9:16";
68
+ "16:9": "16:9";
69
+ }>;
70
+ resolution: z.ZodEnum<{
71
+ "720P": "720P";
72
+ "1080P": "1080P";
73
+ }>;
74
+ audio: z.ZodBoolean;
75
+ }, z.core.$strict>;
76
+ export declare const assetGenerationVideoResultSchema: z.ZodObject<{
77
+ mimeType: z.ZodLiteral<"video/mp4">;
78
+ size: z.ZodNumber;
79
+ contentHash: z.ZodString;
80
+ chunkSize: z.ZodLiteral<number>;
81
+ totalChunks: z.ZodNumber;
82
+ chunkHashes: z.ZodArray<z.ZodString>;
83
+ }, z.core.$strict>;
84
+ export declare const assetGenerationVideoChunkSchema: z.ZodObject<{
85
+ chunkIndex: z.ZodNumber;
86
+ contentBase64: z.ZodString;
87
+ }, z.core.$strict>;
88
+ export type AssetGenerationVideoJob = z.infer<typeof assetGenerationVideoJobSchema>;
89
+ export type AssetGenerationVideoResult = z.infer<typeof assetGenerationVideoResultSchema>;
90
+ export type AssetGenerationVideoChunk = z.infer<typeof assetGenerationVideoChunkSchema>;
91
+ export {};
92
+ //# sourceMappingURL=asset-generation-video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-generation-video.d.ts","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/asset-generation-video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gCAAgC,QAAoB,CAAC;AAClE,eAAO,MAAM,kCAAkC,QAAc,CAAC;AAC9D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKhC,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;CAOvC,CAAC;AACF,KAAK,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC;AAC7E,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,aAAa,GAAG,IAAI,CASvG;AAED,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;kBAcxC,CAAC;AAGH,eAAO,MAAM,gCAAgC;;;;;;;kBAU3C,CAAC;AACH,eAAO,MAAM,+BAA+B;;;kBAMjC,CAAC;AAEZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { isAttachmentBase64 } from './attachment-base64.js';
3
+ export const ASSET_GENERATION_VIDEO_MAX_BYTES = 512 * 1024 * 1024;
4
+ export const ASSET_GENERATION_VIDEO_CHUNK_BYTES = 1024 * 1024;
5
+ export const ASSET_GENERATION_VIDEO_MODELS = [
6
+ { ref: 'mulerouter/wan2.6-t2v', mode: 'text', durations: [5, 10, 15], resolutions: ['720P', '1080P'], supportsAudio: true, aspectRatioFromImage: false },
7
+ { ref: 'mulerouter/wan2.6-i2v', mode: 'reference', durations: [5, 10, 15], resolutions: ['720P', '1080P'], supportsAudio: true, aspectRatioFromImage: true },
8
+ { ref: 'mulerouter/kling-v3-t2v', mode: 'text', durations: [5, 10], resolutions: ['720P', '1080P'], supportsAudio: true, aspectRatioFromImage: false },
9
+ { ref: 'mulerouter/kling-v3-i2v', mode: 'reference', durations: [5, 10], resolutions: ['720P', '1080P'], supportsAudio: true, aspectRatioFromImage: true },
10
+ ];
11
+ export const assetGenerationVideoOptions = {
12
+ mode: z.enum(['text', 'reference']),
13
+ videoModelRef: z.string().trim().min(1).max(256).optional(),
14
+ duration: z.union([z.literal(5), z.literal(10), z.literal(15)]).default(5),
15
+ aspectRatio: z.enum(['16:9', '9:16', '1:1']).default('16:9'),
16
+ resolution: z.enum(['720P', '1080P']).default('720P'),
17
+ audio: z.boolean().default(false),
18
+ };
19
+ export function validateAssetGenerationVideoOptions(value, context) {
20
+ if (!value.videoModelRef)
21
+ return;
22
+ const capability = ASSET_GENERATION_VIDEO_MODELS.find(model => model.ref === value.videoModelRef);
23
+ if (!capability || capability.mode !== value.mode) {
24
+ context.addIssue({ code: 'custom', message: 'asset_generation_invalid_video_model', path: ['videoModelRef'] });
25
+ return;
26
+ }
27
+ if (!capability.durations.includes(value.duration))
28
+ context.addIssue({ code: 'custom', message: 'asset_generation_invalid_video_duration', path: ['duration'] });
29
+ }
30
+ export const assetGenerationVideoJobSchema = z.object({
31
+ provider: z.literal('mulerouter'),
32
+ model: z.enum(['wan2.6-t2v', 'wan2.6-i2v', 'kling-v3-t2v', 'kling-v3-i2v']),
33
+ configId: z.string().min(1).max(128),
34
+ jobId: z.string().regex(/^[A-Za-z0-9_.:-]{1,256}$/),
35
+ submittedAt: z.string().datetime(),
36
+ duration: assetGenerationVideoOptions.duration.removeDefault(),
37
+ aspectRatio: assetGenerationVideoOptions.aspectRatio.removeDefault(),
38
+ resolution: assetGenerationVideoOptions.resolution.removeDefault(),
39
+ audio: assetGenerationVideoOptions.audio.removeDefault(),
40
+ }).strict().superRefine((job, context) => {
41
+ const capability = ASSET_GENERATION_VIDEO_MODELS.find(model => model.ref === `${job.provider}/${job.model}`);
42
+ if (!capability.durations.includes(job.duration))
43
+ context.addIssue({ code: 'custom', message: 'asset_generation_invalid_video_duration', path: ['duration'] });
44
+ });
45
+ const sha256 = z.string().regex(/^[a-f0-9]{64}$/);
46
+ export const assetGenerationVideoResultSchema = z.object({
47
+ mimeType: z.literal('video/mp4'),
48
+ size: z.number().int().positive().max(ASSET_GENERATION_VIDEO_MAX_BYTES),
49
+ contentHash: sha256,
50
+ chunkSize: z.literal(ASSET_GENERATION_VIDEO_CHUNK_BYTES),
51
+ totalChunks: z.number().int().positive().max(ASSET_GENERATION_VIDEO_MAX_BYTES / ASSET_GENERATION_VIDEO_CHUNK_BYTES),
52
+ chunkHashes: z.array(sha256).min(1).max(ASSET_GENERATION_VIDEO_MAX_BYTES / ASSET_GENERATION_VIDEO_CHUNK_BYTES),
53
+ }).strict().superRefine((result, context) => {
54
+ if (result.totalChunks !== Math.ceil(result.size / result.chunkSize) || result.chunkHashes.length !== result.totalChunks)
55
+ context.addIssue({ code: 'custom', message: 'asset_generation_video_chunk_count' });
56
+ });
57
+ export const assetGenerationVideoChunkSchema = z.object({
58
+ chunkIndex: z.number().int().min(0).max(ASSET_GENERATION_VIDEO_MAX_BYTES / ASSET_GENERATION_VIDEO_CHUNK_BYTES - 1),
59
+ contentBase64: z.string().min(1).max(4 * Math.ceil(ASSET_GENERATION_VIDEO_CHUNK_BYTES / 3))
60
+ .refine(isAttachmentBase64, 'asset_generation_invalid_video_chunk')
61
+ .refine(value => value.length / 4 * 3 - (value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0) <= ASSET_GENERATION_VIDEO_CHUNK_BYTES, 'asset_generation_video_chunk_too_large'),
62
+ }).strict();
63
+ //# sourceMappingURL=asset-generation-video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-generation-video.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/asset-generation-video.ts"],"names":[],"mappings":"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"}