@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.
- package/dist/cloud-workspace/runtime/animation-editor.d.ts +766 -0
- package/dist/cloud-workspace/runtime/animation-editor.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/animation-editor.js +84 -0
- package/dist/cloud-workspace/runtime/animation-editor.js.map +1 -0
- package/dist/cloud-workspace/runtime/animation-quality.d.ts +33 -0
- package/dist/cloud-workspace/runtime/animation-quality.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/animation-quality.js +14 -0
- package/dist/cloud-workspace/runtime/animation-quality.js.map +1 -0
- package/dist/cloud-workspace/runtime/asset-generation-bundle.d.ts +61 -0
- package/dist/cloud-workspace/runtime/asset-generation-bundle.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/asset-generation-bundle.js +59 -0
- package/dist/cloud-workspace/runtime/asset-generation-bundle.js.map +1 -0
- package/dist/cloud-workspace/runtime/asset-generation-video-validator.d.ts +15 -0
- package/dist/cloud-workspace/runtime/asset-generation-video-validator.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/asset-generation-video-validator.js +63 -0
- package/dist/cloud-workspace/runtime/asset-generation-video-validator.js.map +1 -0
- package/dist/cloud-workspace/runtime/asset-generation-video.d.ts +92 -0
- package/dist/cloud-workspace/runtime/asset-generation-video.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/asset-generation-video.js +63 -0
- package/dist/cloud-workspace/runtime/asset-generation-video.js.map +1 -0
- package/dist/cloud-workspace/runtime/asset-generation.d.ts +344 -0
- package/dist/cloud-workspace/runtime/asset-generation.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/asset-generation.js +60 -3
- package/dist/cloud-workspace/runtime/asset-generation.js.map +1 -1
- package/dist/cloud-workspace/runtime/asset-library-import.d.ts +23 -0
- package/dist/cloud-workspace/runtime/asset-library-import.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/asset-library-import.js +11 -2
- package/dist/cloud-workspace/runtime/asset-library-import.js.map +1 -1
- package/dist/cloud-workspace/runtime/asset-transfers.d.ts +92 -0
- package/dist/cloud-workspace/runtime/asset-transfers.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/asset-transfers.js +119 -0
- package/dist/cloud-workspace/runtime/asset-transfers.js.map +1 -0
- package/dist/cloud-workspace/runtime/batch-runs.d.ts +16 -4
- package/dist/cloud-workspace/runtime/batch-runs.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/batch-runs.js +2 -0
- package/dist/cloud-workspace/runtime/batch-runs.js.map +1 -1
- package/dist/cloud-workspace/runtime/delivery.d.ts +1042 -0
- package/dist/cloud-workspace/runtime/delivery.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/delivery.js +208 -0
- package/dist/cloud-workspace/runtime/delivery.js.map +1 -0
- package/dist/cloud-workspace/runtime/directories.d.ts +32 -0
- package/dist/cloud-workspace/runtime/directories.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/directories.js +44 -0
- package/dist/cloud-workspace/runtime/directories.js.map +1 -0
- package/dist/cloud-workspace/runtime/execution-admission.d.ts +5 -3
- package/dist/cloud-workspace/runtime/execution-admission.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/execution-admission.js +7 -3
- package/dist/cloud-workspace/runtime/execution-admission.js.map +1 -1
- package/dist/cloud-workspace/runtime/files.d.ts +1 -0
- package/dist/cloud-workspace/runtime/files.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/files.js +1 -0
- package/dist/cloud-workspace/runtime/files.js.map +1 -1
- package/dist/cloud-workspace/runtime/index.d.ts +13 -2
- package/dist/cloud-workspace/runtime/index.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/index.js +13 -2
- package/dist/cloud-workspace/runtime/index.js.map +1 -1
- package/dist/cloud-workspace/runtime/operations.d.ts +134 -4
- package/dist/cloud-workspace/runtime/operations.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/operations.js +17 -1
- package/dist/cloud-workspace/runtime/operations.js.map +1 -1
- package/dist/cloud-workspace/runtime/parameter-agent.d.ts +255 -0
- package/dist/cloud-workspace/runtime/parameter-agent.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/parameter-agent.js +82 -0
- package/dist/cloud-workspace/runtime/parameter-agent.js.map +1 -0
- package/dist/cloud-workspace/runtime/parameter-catalog.d.ts +28 -0
- package/dist/cloud-workspace/runtime/parameter-catalog.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/parameter-catalog.js +223 -0
- package/dist/cloud-workspace/runtime/parameter-catalog.js.map +1 -0
- package/dist/cloud-workspace/runtime/parameters.d.ts +30 -2
- package/dist/cloud-workspace/runtime/parameters.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/parameters.js +45 -2
- package/dist/cloud-workspace/runtime/parameters.js.map +1 -1
- package/dist/cloud-workspace/runtime/preview-runtime.d.ts +33 -0
- package/dist/cloud-workspace/runtime/preview-runtime.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/preview-runtime.js +51 -0
- package/dist/cloud-workspace/runtime/preview-runtime.js.map +1 -0
- package/dist/cloud-workspace/runtime/previews.d.ts +50 -0
- package/dist/cloud-workspace/runtime/previews.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/previews.js +3 -0
- package/dist/cloud-workspace/runtime/previews.js.map +1 -1
- package/dist/cloud-workspace/runtime/workspace-ui.d.ts +101 -0
- package/dist/cloud-workspace/runtime/workspace-ui.d.ts.map +1 -1
- package/dist/cloud-workspace/runtime/workspace-ui.js +14 -0
- package/dist/cloud-workspace/runtime/workspace-ui.js.map +1 -1
- 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":"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"}
|
|
@@ -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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"}
|