@bitmagic/asset-core 0.2.19-dev.0 → 0.2.19-dev.10

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 (40) hide show
  1. package/dist/art-style.d.ts +32 -0
  2. package/dist/art-style.d.ts.map +1 -0
  3. package/dist/art-style.js +42 -0
  4. package/dist/art-style.js.map +1 -0
  5. package/dist/cover-prompt.d.ts +26 -2
  6. package/dist/cover-prompt.d.ts.map +1 -1
  7. package/dist/cover-prompt.js +40 -4
  8. package/dist/cover-prompt.js.map +1 -1
  9. package/dist/forger-client.d.ts +14 -0
  10. package/dist/forger-client.d.ts.map +1 -1
  11. package/dist/forger-client.js +14 -1
  12. package/dist/forger-client.js.map +1 -1
  13. package/dist/generators/animation-from-video.d.ts +26 -0
  14. package/dist/generators/animation-from-video.d.ts.map +1 -1
  15. package/dist/generators/animation-from-video.js +32 -0
  16. package/dist/generators/animation-from-video.js.map +1 -1
  17. package/dist/generators/animation.d.ts +2 -2
  18. package/dist/generators/character.d.ts +33 -0
  19. package/dist/generators/character.d.ts.map +1 -1
  20. package/dist/generators/character.js +69 -8
  21. package/dist/generators/character.js.map +1 -1
  22. package/dist/generators/video.d.ts +112 -0
  23. package/dist/generators/video.d.ts.map +1 -0
  24. package/dist/generators/video.js +157 -0
  25. package/dist/generators/video.js.map +1 -0
  26. package/dist/index.d.ts +8 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +6 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/reference-prompt.d.ts +24 -2
  31. package/dist/reference-prompt.d.ts.map +1 -1
  32. package/dist/reference-prompt.js +10 -6
  33. package/dist/reference-prompt.js.map +1 -1
  34. package/dist/terminal-failure.d.ts +31 -7
  35. package/dist/terminal-failure.d.ts.map +1 -1
  36. package/dist/terminal-failure.js +11 -19
  37. package/dist/terminal-failure.js.map +1 -1
  38. package/dist/types.d.ts +3 -2
  39. package/dist/types.d.ts.map +1 -1
  40. package/package.json +5 -1
@@ -45,8 +45,44 @@ export const characterParamsSchema = z.object({
45
45
  .optional()
46
46
  .default(true)
47
47
  .describe('Search the ready-made rigged-character library first and use a close match instead of forging a new one (default). Set false to always forge. Ignored when headScale is not the default 150 — a library body has its head scale baked in.'),
48
+ voxelize: z.boolean()
49
+ .optional()
50
+ .default(true)
51
+ .describe('Voxelize the rigged body (default — the voxel house style). false keeps the textured low-poly rig the forger makes first, for a game whose artStyle is low-poly; the voxel-only library is skipped.'),
52
+ meshModel: z.string()
53
+ .min(1)
54
+ .optional()
55
+ .describe("Asset Forger image-to-mesh model; the Forger default (unified-trellis) when absent. 'runware-meshy-6' forges a true low-poly body — an even remesh in an enforced A-pose rather than a decimated reconstruction — for ~$0.80 and ~5 minutes, so it is for hero characters, not bulk."),
48
56
  }).strict();
49
57
  const ENDPOINT = '/ai/v1/generate-rigged-character/jobs';
58
+ /**
59
+ * The Asset Forger mesh model that forges a true low-poly body: an even remesh in
60
+ * an enforced A-pose rather than a decimated photoreal reconstruction.
61
+ *
62
+ * This is the DEFAULT for a low-poly character (`voxelize: false`) — see
63
+ * {@link meshModelFor}. It is deliberately not the default for a voxel one:
64
+ * there the body is rebuilt out of cubes, so the remesh, the A-pose and the
65
+ * texture are all discarded, and the money buys nothing.
66
+ */
67
+ export const MESHY_MESH_MODEL = 'runware-meshy-6';
68
+ /**
69
+ * Which mesh model forges this character.
70
+ *
71
+ * A low-poly game ships the textured rig itself, so the geometry is the product
72
+ * and Meshy is worth its price: an even remesh in an enforced A-pose, against a
73
+ * TRELLIS reconstruction that is only as low-poly as its concept image happened
74
+ * to be. A voxel game re-voxelizes the body, which throws all of that away.
75
+ *
76
+ * The cost is real and worth stating plainly: ~$0.80 and ~6 minutes per low-poly
77
+ * character, against fractions of a cent and ~40 s on the Forger default. An
78
+ * explicit `meshModel` overrides this in both directions — pass
79
+ * `unified-trellis` to opt a low-poly character back onto the cheap lane.
80
+ */
81
+ export function meshModelFor(input) {
82
+ if (input.meshModel)
83
+ return input.meshModel;
84
+ return input.voxelize ? undefined : MESHY_MESH_MODEL;
85
+ }
50
86
  export async function generateCharacter(params, deps) {
51
87
  const { forger, logger, onProgress } = deps;
52
88
  const parsed = characterParamsSchema.safeParse(params);
@@ -68,8 +104,23 @@ export async function generateCharacter(params, deps) {
68
104
  // its head scale baked in, and silently ignoring a parameter the caller set is
69
105
  // worse than forging. (zod fills the default, so "explicitly 150" and
70
106
  // "omitted" are indistinguishable here — and identical in effect.)
107
+ //
108
+ // An unvoxelized request skips it too: every stored body is a voxel one, so the
109
+ // closest match would be in the wrong medium.
110
+ //
111
+ // An explicit meshModel suppresses it for the same reason a non-default
112
+ // headScale does: a library body was forged by whatever model made it, so
113
+ // handing one back would silently ignore the model the caller asked for --
114
+ // and on the Meshy lane that is the entire point of the request.
71
115
  const libraryMode = getCharacterLibraryMode();
72
- const librarySearchable = libraryMode !== 'off' && input.useLibrary && input.headScale === DEFAULT_HEAD_SCALE;
116
+ const librarySearchable = libraryMode !== 'off'
117
+ && input.useLibrary
118
+ && input.headScale === DEFAULT_HEAD_SCALE
119
+ && input.voxelize
120
+ && input.meshModel === undefined;
121
+ if (!input.voxelize && libraryMode !== 'off' && input.useLibrary) {
122
+ logger.info('[character] Library skipped: it holds voxel bodies only and this request keeps the low-poly rig');
123
+ }
73
124
  if (librarySearchable) {
74
125
  onProgress('Searching the character library…');
75
126
  const outcome = await findLibraryCharacter(input.prompt, { forger, logger });
@@ -93,15 +144,20 @@ export async function generateCharacter(params, deps) {
93
144
  // Proven recipe for an engine-ready character: rerigTarget 'default' => Mixamo
94
145
  // Y-up rig the engine retarget drives correctly (NEVER 'ue5' — that rig renders
95
146
  // mangled), voxelize => returns the rigged voxel GLB directly (no browser
96
- // voxelization needed).
147
+ // voxelization needed). A low-poly game asks for voxelize:false and takes the
148
+ // textured rig the forger makes before voxelizing.
149
+ const meshModel = meshModelFor(input);
150
+ if (meshModel)
151
+ logger.info({ meshModel }, '[character] Forging with a non-default mesh model');
97
152
  let forgeResult;
98
153
  try {
99
154
  forgeResult = await forger.postJobAndWait(ENDPOINT, {
100
155
  prompt: input.prompt,
101
156
  rerigTarget: 'default',
102
- voxelize: true,
103
- voxelsTall: 80,
104
- voxelMode: 'blended',
157
+ ...(input.voxelize
158
+ ? { voxelize: true, voxelsTall: 80, voxelMode: 'blended' }
159
+ : { voxelize: false }),
160
+ ...(meshModel ? { meshModel } : {}),
105
161
  headScale: input.headScale,
106
162
  ...(characterMaterialClassesEnabled() ? { materialClasses: true } : {}),
107
163
  }, 'CharacterGeneration');
@@ -120,9 +176,14 @@ export async function generateCharacter(params, deps) {
120
176
  // variant sitting alongside it in the same bucket dir but not listed in the
121
177
  // response. So: prefer an explicit variant URL; otherwise derive it from the
122
178
  // returned URL's directory and probe `output-variant-N.glb`.
179
+ //
180
+ // Unvoxelized, the textured rig IS the deliverable: `output-low.glb` when the
181
+ // forger lists it, else whatever it returned — and never a voxel variant probe.
123
182
  const outputs = forgeResult.data?.additionalOutputFileUrls ?? [];
124
- let characterUrl = outputs.find((u) => /output-variant-\d+\.glb/i.test(u));
125
183
  const baseUrl = outputs[0] ?? forgeResult.data?.fileUrl;
184
+ let characterUrl = input.voxelize
185
+ ? outputs.find((u) => /output-variant-\d+\.glb/i.test(u))
186
+ : outputs.find((u) => /output-low\.glb/i.test(u)) ?? baseUrl;
126
187
  if (!characterUrl && baseUrl) {
127
188
  const dir = baseUrl.replace(/[^/]+$/, '');
128
189
  const probes = await Promise.all([1, 2, 3, 4].map(async (n) => {
@@ -142,11 +203,11 @@ export async function generateCharacter(params, deps) {
142
203
  }
143
204
  if (!characterUrl) {
144
205
  return {
145
- ...fail('Asset Forger returned no character URL. Ensure rerigTarget:"default" + voxelize:true are supported by the configured ASSET_FORGER_URL.'),
206
+ ...fail(`Asset Forger returned no character URL. Ensure rerigTarget:"default" + voxelize:${input.voxelize} are supported by the configured ASSET_FORGER_URL.`),
146
207
  billable,
147
208
  };
148
209
  }
149
- logger.info({ characterUrl, outputs }, '[character] Resolved voxel character URL');
210
+ logger.info({ characterUrl, outputs, voxelize: input.voxelize }, '[character] Resolved character URL');
150
211
  // Classify + rename the mechanical colour groups the flag asked for, when
151
212
  // the host can (model + storage — see `GenerateDeps.refineCharacterGlb`).
152
213
  // Fail-soft: a refusal or failure serves the unclassified file, which
@@ -1 +1 @@
1
- {"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { z } from 'zod';
2
+ import type { AssetResultBase, GenerateDeps, WorldPatch } from '../types.js';
3
+ /**
4
+ * Runware video: a prompt (and optionally a first frame) becomes a short 720p
5
+ * clip — a cutscene stinger, an animated cover, a background loop.
6
+ *
7
+ * The asset row this writes is `type: 'video'`, which the engine already knows
8
+ * how to play: `engine.playVideo(assetId)` mounts a fullscreen overlay and
9
+ * resolves the URL out of `assets[]`. That API shipped with no way to produce
10
+ * anything for it; this is the producer.
11
+ *
12
+ * ALWAYS a job. asset-forger's route has no synchronous sibling because Runware
13
+ * video has none — `deliveryMethod` accepts nothing but `async` — and a run
14
+ * takes 40 s to several minutes. Same shape as video-to-motion, for the same
15
+ * reason.
16
+ */
17
+ /** The Forger route's own bounds (asset-forger `src/routes/video.ts`), restated so a bad ask fails here. */
18
+ export declare const VIDEO_MIN_SECONDS = 1;
19
+ export declare const VIDEO_MAX_SECONDS = 10;
20
+ export declare const VIDEO_DEFAULT_SECONDS = 5;
21
+ export declare const VIDEO_JOBS_ENDPOINT = "/ai/v1/generate-video/jobs";
22
+ /**
23
+ * Measured 2026-09 against the live Forger: 37-44 s for text-to-video, ~200 s
24
+ * with a first frame. Ten minutes is far past both while staying under the
25
+ * video-to-motion lane's twenty, so a wedged job is given up on rather than
26
+ * held open for a third of an hour.
27
+ */
28
+ export declare const VIDEO_TIMEOUT_MS: number;
29
+ export declare const videoParamsSchema: z.ZodObject<{
30
+ prompt: z.ZodString;
31
+ durationSeconds: z.ZodDefault<z.ZodNumber>;
32
+ name: z.ZodOptional<z.ZodString>;
33
+ imageUrl: z.ZodOptional<z.ZodString>;
34
+ seed: z.ZodOptional<z.ZodNumber>;
35
+ assetId: z.ZodOptional<z.ZodString>;
36
+ }, "strict", z.ZodTypeAny, {
37
+ prompt: string;
38
+ durationSeconds: number;
39
+ name?: string | undefined;
40
+ assetId?: string | undefined;
41
+ imageUrl?: string | undefined;
42
+ seed?: number | undefined;
43
+ }, {
44
+ prompt: string;
45
+ name?: string | undefined;
46
+ durationSeconds?: number | undefined;
47
+ assetId?: string | undefined;
48
+ imageUrl?: string | undefined;
49
+ seed?: number | undefined;
50
+ }>;
51
+ export type VideoParams = z.input<typeof videoParamsSchema>;
52
+ /** Where the clip landed, carried on the result so a caller that never writes world.json still has it. */
53
+ export interface VideoUrls {
54
+ /** The MP4 — H.264, faststart-remuxed, and what the engine plays. */
55
+ videoUrl: string;
56
+ /** The VP9 sibling, ~4x smaller. Absent if the Forger did not make one. */
57
+ webmUrl?: string;
58
+ videoId: string;
59
+ durationSeconds: number;
60
+ width?: number;
61
+ height?: number;
62
+ }
63
+ export type VideoResult = AssetResultBase & {
64
+ /**
65
+ * The clip's length, and what per-second billing reads (api-server's cli-assets.ts prices
66
+ * `lengthSeconds ?? 1`). Always set on success: the Forger's probed length, or the requested
67
+ * length when the Forger did not report one — never left for the biller to default to a second.
68
+ */
69
+ lengthSeconds?: number;
70
+ video?: VideoUrls;
71
+ sizeBytes?: number;
72
+ /** True once the Forger reported a stored video URL. Unset on any failure. */
73
+ billable?: boolean;
74
+ };
75
+ /** What asset-forger's job status carries in `result` once it succeeds. */
76
+ export interface VideoJobResult {
77
+ videoUrl: string;
78
+ webmUrl?: string;
79
+ videoId: string;
80
+ format: string;
81
+ durationSeconds: number;
82
+ width?: number;
83
+ height?: number;
84
+ model?: string;
85
+ cost?: number;
86
+ seed?: number;
87
+ }
88
+ /** Wire body of the asset-forger job POST. */
89
+ export interface VideoJobRequest {
90
+ prompt: string;
91
+ durationSeconds: number;
92
+ imageUrl?: string;
93
+ seed?: number;
94
+ }
95
+ export declare function buildVideoJobRequest(input: z.output<typeof videoParamsSchema>): VideoJobRequest;
96
+ /**
97
+ * The world.json row a finished job produces. Exported on its own so a host
98
+ * that polls the Forger job itself builds the same asset row as the in-process
99
+ * path — the same split `buildAnimationFromVideoPatch` exists for.
100
+ *
101
+ * `id` is what game code passes to `engine.playVideo()`, so a pre-minted
102
+ * `assetId` makes `engine.playVideo('intro')` resolve.
103
+ */
104
+ export declare function buildVideoPatch(input: z.output<typeof videoParamsSchema>, result: VideoJobResult, sizeBytes?: number): WorldPatch;
105
+ /**
106
+ * Turn the Forger's failure into copy the creator can act on. The job's
107
+ * `error.kind` travels inside the thrown message (postJobAndWait stringifies
108
+ * it), so match on that rather than parsing the JSON back out.
109
+ */
110
+ export declare function describeVideoFailure(error: Error): string;
111
+ export declare function generateVideo(params: VideoParams, deps: GenerateDeps): Promise<VideoResult>;
112
+ //# sourceMappingURL=video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/generators/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK7E;;;;;;;;;;;;;GAaG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAE/C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAanB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,0GAA0G;AAC1G,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG;IAC1C;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,GAAG,eAAe,CAO/F;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,EACzC,MAAM,EAAE,cAAc,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,UAAU,CAmBZ;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAiBzD;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CAqEtB"}
@@ -0,0 +1,157 @@
1
+ import { z } from 'zod';
2
+ import { fail, ok } from '../result.js';
3
+ import { fetchContentLength } from '../http.js';
4
+ import { formatZodIssues } from '../validation.js';
5
+ /**
6
+ * Runware video: a prompt (and optionally a first frame) becomes a short 720p
7
+ * clip — a cutscene stinger, an animated cover, a background loop.
8
+ *
9
+ * The asset row this writes is `type: 'video'`, which the engine already knows
10
+ * how to play: `engine.playVideo(assetId)` mounts a fullscreen overlay and
11
+ * resolves the URL out of `assets[]`. That API shipped with no way to produce
12
+ * anything for it; this is the producer.
13
+ *
14
+ * ALWAYS a job. asset-forger's route has no synchronous sibling because Runware
15
+ * video has none — `deliveryMethod` accepts nothing but `async` — and a run
16
+ * takes 40 s to several minutes. Same shape as video-to-motion, for the same
17
+ * reason.
18
+ */
19
+ /** The Forger route's own bounds (asset-forger `src/routes/video.ts`), restated so a bad ask fails here. */
20
+ export const VIDEO_MIN_SECONDS = 1;
21
+ export const VIDEO_MAX_SECONDS = 10;
22
+ export const VIDEO_DEFAULT_SECONDS = 5;
23
+ export const VIDEO_JOBS_ENDPOINT = '/ai/v1/generate-video/jobs';
24
+ /**
25
+ * Measured 2026-09 against the live Forger: 37-44 s for text-to-video, ~200 s
26
+ * with a first frame. Ten minutes is far past both while staying under the
27
+ * video-to-motion lane's twenty, so a wedged job is given up on rather than
28
+ * held open for a third of an hour.
29
+ */
30
+ export const VIDEO_TIMEOUT_MS = 10 * 60 * 1000;
31
+ export const videoParamsSchema = z.object({
32
+ prompt: z.string().min(1)
33
+ .describe('What happens in the clip (subject, motion, camera, mood)'),
34
+ durationSeconds: z.number().min(VIDEO_MIN_SECONDS).max(VIDEO_MAX_SECONDS).default(VIDEO_DEFAULT_SECONDS)
35
+ .describe('Clip length in seconds; billed per second'),
36
+ name: z.string().min(1).max(80).optional()
37
+ .describe('Display name of the asset, and what game code passes to engine.playVideo(). Defaults to the prompt.'),
38
+ imageUrl: z.string().url().optional()
39
+ .describe('Public URL of a first frame (image-to-video). Much slower than text-to-video, and the output aspect ratio follows the image rather than the 16:9 default.'),
40
+ seed: z.number().int().optional()
41
+ .describe('Fixed seed, to re-roll the same clip'),
42
+ assetId: z.string().min(1).optional()
43
+ .describe('Pre-generated asset id; the generator id is used when absent'),
44
+ }).strict();
45
+ export function buildVideoJobRequest(input) {
46
+ return {
47
+ prompt: input.prompt,
48
+ durationSeconds: input.durationSeconds,
49
+ ...(input.imageUrl !== undefined && { imageUrl: input.imageUrl }),
50
+ ...(input.seed !== undefined && { seed: input.seed }),
51
+ };
52
+ }
53
+ /**
54
+ * The world.json row a finished job produces. Exported on its own so a host
55
+ * that polls the Forger job itself builds the same asset row as the in-process
56
+ * path — the same split `buildAnimationFromVideoPatch` exists for.
57
+ *
58
+ * `id` is what game code passes to `engine.playVideo()`, so a pre-minted
59
+ * `assetId` makes `engine.playVideo('intro')` resolve.
60
+ */
61
+ export function buildVideoPatch(input, result, sizeBytes) {
62
+ return {
63
+ type: 'pushRoot',
64
+ path: ['assets'],
65
+ value: {
66
+ id: input.assetId ?? result.videoId,
67
+ name: input.name ?? input.prompt,
68
+ url: result.videoUrl,
69
+ type: 'video',
70
+ format: result.format,
71
+ prompt: input.prompt,
72
+ source: 'generated',
73
+ size: sizeBytes ?? 0,
74
+ durationSeconds: result.durationSeconds,
75
+ ...(result.webmUrl !== undefined && { webmUrl: result.webmUrl }),
76
+ ...(result.width !== undefined && { width: result.width }),
77
+ ...(result.height !== undefined && { height: result.height }),
78
+ },
79
+ };
80
+ }
81
+ /**
82
+ * Turn the Forger's failure into copy the creator can act on. The job's
83
+ * `error.kind` travels inside the thrown message (postJobAndWait stringifies
84
+ * it), so match on that rather than parsing the JSON back out.
85
+ */
86
+ export function describeVideoFailure(error) {
87
+ const text = error.message;
88
+ // Runware's own moderation, seen live on a bland test prompt: worth naming,
89
+ // because the creator's instinct is otherwise to retry the same words.
90
+ if (text.includes('invalidProviderContent')) {
91
+ return 'The video provider\'s content filter rejected this prompt. Rephrase it — describing a '
92
+ + 'scene and its motion works better than naming people, brands or styles.';
93
+ }
94
+ if (text.includes('invalid-request')) {
95
+ const detail = text.match(/"message":"([^"]*)"/)?.[1];
96
+ return detail ? `The video could not be generated: ${detail}` : 'The video request was refused as invalid.';
97
+ }
98
+ if (text.includes('exceeded client timeout') || text.includes('timeout')) {
99
+ return 'Video generation timed out. A first frame (--image) is much slower than a prompt alone; '
100
+ + 'try a shorter clip, or the same prompt without an image.';
101
+ }
102
+ return text;
103
+ }
104
+ export async function generateVideo(params, deps) {
105
+ const { forger, logger, onProgress } = deps;
106
+ const parsed = videoParamsSchema.safeParse(params);
107
+ if (!parsed.success) {
108
+ logger.warn({ err: parsed.error }, '[video] Invalid parameters');
109
+ return fail(formatZodIssues(parsed.error));
110
+ }
111
+ const input = parsed.data;
112
+ if (!forger.hasCredentials()) {
113
+ logger.error('[video] Missing Asset Forger credentials');
114
+ return fail(forger.getMissingCredentialsMessage());
115
+ }
116
+ onProgress(input.imageUrl
117
+ ? `Animating the image into ${input.durationSeconds}s of video (this takes a few minutes): ${input.prompt}`
118
+ : `Generating ${input.durationSeconds}s of video: ${input.prompt}`);
119
+ const request = buildVideoJobRequest(input);
120
+ logger.info({ payload: request }, '[video] Submitting job');
121
+ let result;
122
+ try {
123
+ result = await forger.postJobAndWait(VIDEO_JOBS_ENDPOINT, request, 'Video', { overallTimeoutMs: VIDEO_TIMEOUT_MS });
124
+ }
125
+ catch (error) {
126
+ const err = error instanceof Error ? error : new Error(String(error));
127
+ logger.error({ err }, '[video] Job failed');
128
+ return fail(describeVideoFailure(err));
129
+ }
130
+ if (!result?.videoUrl || !result.videoId) {
131
+ logger.error({ result }, '[video] Job succeeded without a video URL');
132
+ return fail('Video generation finished but returned no clip');
133
+ }
134
+ const sizeBytes = await fetchContentLength(result.videoUrl, logger);
135
+ // The Forger probes the finished file, so this is the real length rather than
136
+ // the requested one — and it is what the per-second charge is priced off.
137
+ const durationSeconds = typeof result.durationSeconds === 'number' && result.durationSeconds > 0
138
+ ? result.durationSeconds
139
+ : input.durationSeconds;
140
+ const patch = buildVideoPatch(input, { ...result, durationSeconds }, sizeBytes);
141
+ const assetId = patch.value.id;
142
+ logger.info({ videoUrl: result.videoUrl, assetId, cost: result.cost }, '[video] Video stored');
143
+ return ok(`Video generated: ${result.videoUrl}`, [patch], {
144
+ lengthSeconds: durationSeconds,
145
+ video: {
146
+ videoUrl: result.videoUrl,
147
+ ...(result.webmUrl !== undefined && { webmUrl: result.webmUrl }),
148
+ videoId: assetId,
149
+ durationSeconds,
150
+ ...(result.width !== undefined && { width: result.width }),
151
+ ...(result.height !== undefined && { height: result.height }),
152
+ },
153
+ sizeBytes,
154
+ billable: true,
155
+ });
156
+ }
157
+ //# sourceMappingURL=video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/generators/video.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,9 @@ export { generateSoundEffect, soundEffectParamsSchema } from './generators/sound
13
13
  export type { SoundEffectParams, SoundEffectResult } from './generators/sound-effect.js';
14
14
  export { generateMusic, musicParamsSchema, MUSIC_MIN_SECONDS, MUSIC_MAX_SECONDS, MUSIC_DEFAULT_SECONDS, } from './generators/music.js';
15
15
  export type { MusicParams, MusicResult, MusicUrls } from './generators/music.js';
16
+ export { generateVideo, videoParamsSchema, buildVideoJobRequest, buildVideoPatch, describeVideoFailure, VIDEO_MIN_SECONDS, VIDEO_MAX_SECONDS, VIDEO_DEFAULT_SECONDS, VIDEO_JOBS_ENDPOINT, VIDEO_TIMEOUT_MS, } from './generators/video.js';
17
+ export type { VideoParams, VideoResult, VideoUrls, VideoJobResult, VideoJobRequest } from './generators/video.js';
18
+ export { formatZodIssues } from './validation.js';
16
19
  export { generateImageAsset, imageAssetParamsSchema } from './generators/image.js';
17
20
  export type { ImageAssetParams, ImageAssetResult } from './generators/image.js';
18
21
  export { generateReferenceImage, referenceImageParamsSchema, REFERENCE_IMAGE_WIDTH, REFERENCE_IMAGE_HEIGHT, } from './generators/reference.js';
@@ -27,10 +30,12 @@ export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './gen
27
30
  export type { PropVoxelParams, PropVoxelResult } from './generators/prop-voxel.js';
28
31
  export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationModel, ANIMATION_MODEL_TEXT_TO_MOTION_3, ANIMATION_MODEL_TEXT_TO_MOTION_2, ANIMATION_MODEL_OLDER, } from './generators/animation.js';
29
32
  export type { AnimationParams, AnimationResult } from './generators/animation.js';
30
- export { generateAnimationFromVideoAsset, animationFromVideoParamsSchema, buildAnimationFromVideoPatch, buildAnimationFromVideoJobRequest, describeAnimationFromVideoFailure, describeAutoTrim, EDITING_ONLY_ASSET_FIELDS, stripEditingOnlyAssetFields, ANIMATION_FROM_VIDEO_JOBS_ENDPOINT, ANIMATION_TRIM_ANALYSIS_JOBS_ENDPOINT, ANIMATION_FROM_VIDEO_TIMEOUT_MS, MIN_TRIM_KEPT_SECONDS, VIDEO_TO_MOTION_MODELS, LOCOMOTION_STATES, } from './generators/animation-from-video.js';
33
+ export { generateAnimationFromVideoAsset, animationFromVideoParamsSchema, buildAnimationFromVideoPatch, buildAnimationFromVideoJobRequest, describeAnimationFromVideoFailure, describeAutoTrim, EDITING_ONLY_ASSET_FIELDS, stripEditingOnlyAssetFields, ANIMATION_FROM_VIDEO_JOBS_ENDPOINT, ANIMATION_TRIM_ANALYSIS_JOBS_ENDPOINT, ANIMATION_FROM_VIDEO_TIMEOUT_MS, MIN_TRIM_KEPT_SECONDS, VIDEO_TO_MOTION_MODELS, LOCOMOTION_STATES, MOTION_SOURCE_FRAMING, MOTION_SOURCE_MIN_SECONDS, MOTION_SOURCE_DEFAULT_SECONDS, buildMotionSourcePrompt, } from './generators/animation-from-video.js';
31
34
  export type { AnimationFromVideoParams, AnimationFromVideoResult, AnimationFromVideoJobResult, AnimationFromVideoJobRequest, TrimAnalysisJobResult, VideoToMotionModel, LocomotionState, } from './generators/animation-from-video.js';
32
35
  export { fetchContentLength } from './http.js';
33
- export { PIXAR_VOXEL_STYLE, VOXEL_STYLE_LEAD, MAX_COVER_DESIGN_CHARS, buildCoverArtPrompt } from './cover-prompt.js';
36
+ export { LOW_POLY_STYLE_LEAD, PIXAR_LOW_POLY_STYLE, PIXAR_VOXEL_STYLE, VOXEL_STYLE_LEAD, MAX_COVER_DESIGN_CHARS, buildCoverArtPrompt, styleLead, styleTail, } from './cover-prompt.js';
37
+ export { ART_STYLES, DEFAULT_ART_STYLE, describeArtStyle, parseArtStyle } from './art-style.js';
38
+ export type { ArtStyle } from './art-style.js';
34
39
  export { VOXEL_ART_IMAGE_MODEL } from './image-models.js';
35
40
  export { MAX_REFERENCE_DESIGN_CHARS, buildReferenceImagePrompt } from './reference-prompt.js';
36
41
  export { JUDGE_DIMENSIONS, deriveOverall, judgeModelResponseSchema, judgeScorecardSchema, } from './judge-scorecard.js';
@@ -42,5 +47,5 @@ export type { MaterialClassifierInput, MaterialVerdict, VoxelMaterialClassName,
42
47
  export { TRIM_LABEL_MIN_FRACTION, formatTrimmedEnds, trimBadgeAt, trimNote, trimSegmentAt, trimSegments, } from './trim-layout.js';
43
48
  export type { TrimInput, TrimSegment, TrimSegmentKind, } from './trim-layout.js';
44
49
  export { TERMINAL_FAILURE_CODES, TERMINAL_FAILURE_VERSION, buildTerminalFailure, isTerminalFailureCode, legacyErrorTypeFor, parseTerminalFailure, } from './terminal-failure.js';
45
- export type { BuildTerminalFailureInput, LegacyErrorType, TerminalFailure, TerminalFailureCode, TerminalFailureDetail, } from './terminal-failure.js';
50
+ export type { BuildTerminalFailureInput, LegacyErrorType, ProviderErrorFacts, TerminalFailure, TerminalFailureCode, TerminalFailureDetail, } from './terminal-failure.js';
46
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ export { generateBackground, backgroundParamsSchema } from './generators/backgro
6
6
  export { generateBlockType, blockTypeParamsSchema } from './generators/block-type.js';
7
7
  export { generateSoundEffect, soundEffectParamsSchema } from './generators/sound-effect.js';
8
8
  export { generateMusic, musicParamsSchema, MUSIC_MIN_SECONDS, MUSIC_MAX_SECONDS, MUSIC_DEFAULT_SECONDS, } from './generators/music.js';
9
+ export { generateVideo, videoParamsSchema, buildVideoJobRequest, buildVideoPatch, describeVideoFailure, VIDEO_MIN_SECONDS, VIDEO_MAX_SECONDS, VIDEO_DEFAULT_SECONDS, VIDEO_JOBS_ENDPOINT, VIDEO_TIMEOUT_MS, } from './generators/video.js';
10
+ export { formatZodIssues } from './validation.js';
9
11
  export { generateImageAsset, imageAssetParamsSchema } from './generators/image.js';
10
12
  export { generateReferenceImage, referenceImageParamsSchema, REFERENCE_IMAGE_WIDTH, REFERENCE_IMAGE_HEIGHT, } from './generators/reference.js';
11
13
  export { generateCharacter, characterParamsSchema } from './generators/character.js';
@@ -13,9 +15,11 @@ export { findLibraryCharacter, getCharacterLibraryMode, getCharacterLibraryThres
13
15
  export { generateProp, propParamsSchema } from './generators/prop.js';
14
16
  export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './generators/prop-voxel.js';
15
17
  export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationModel, ANIMATION_MODEL_TEXT_TO_MOTION_3, ANIMATION_MODEL_TEXT_TO_MOTION_2, ANIMATION_MODEL_OLDER, } from './generators/animation.js';
16
- export { generateAnimationFromVideoAsset, animationFromVideoParamsSchema, buildAnimationFromVideoPatch, buildAnimationFromVideoJobRequest, describeAnimationFromVideoFailure, describeAutoTrim, EDITING_ONLY_ASSET_FIELDS, stripEditingOnlyAssetFields, ANIMATION_FROM_VIDEO_JOBS_ENDPOINT, ANIMATION_TRIM_ANALYSIS_JOBS_ENDPOINT, ANIMATION_FROM_VIDEO_TIMEOUT_MS, MIN_TRIM_KEPT_SECONDS, VIDEO_TO_MOTION_MODELS, LOCOMOTION_STATES, } from './generators/animation-from-video.js';
18
+ export { generateAnimationFromVideoAsset, animationFromVideoParamsSchema, buildAnimationFromVideoPatch, buildAnimationFromVideoJobRequest, describeAnimationFromVideoFailure, describeAutoTrim, EDITING_ONLY_ASSET_FIELDS, stripEditingOnlyAssetFields, ANIMATION_FROM_VIDEO_JOBS_ENDPOINT, ANIMATION_TRIM_ANALYSIS_JOBS_ENDPOINT, ANIMATION_FROM_VIDEO_TIMEOUT_MS, MIN_TRIM_KEPT_SECONDS, VIDEO_TO_MOTION_MODELS, LOCOMOTION_STATES, MOTION_SOURCE_FRAMING, MOTION_SOURCE_MIN_SECONDS, MOTION_SOURCE_DEFAULT_SECONDS, buildMotionSourcePrompt, } from './generators/animation-from-video.js';
17
19
  export { fetchContentLength } from './http.js';
18
- export { PIXAR_VOXEL_STYLE, VOXEL_STYLE_LEAD, MAX_COVER_DESIGN_CHARS, buildCoverArtPrompt } from './cover-prompt.js';
20
+ export { LOW_POLY_STYLE_LEAD, PIXAR_LOW_POLY_STYLE, PIXAR_VOXEL_STYLE, VOXEL_STYLE_LEAD, MAX_COVER_DESIGN_CHARS, buildCoverArtPrompt, styleLead, styleTail, } from './cover-prompt.js';
21
+ // Also published as the `@bitmagic/asset-core/art-style` subpath for browser consumers.
22
+ export { ART_STYLES, DEFAULT_ART_STYLE, describeArtStyle, parseArtStyle } from './art-style.js';
19
23
  export { VOXEL_ART_IMAGE_MODEL } from './image-models.js';
20
24
  export { MAX_REFERENCE_DESIGN_CHARS, buildReferenceImagePrompt } from './reference-prompt.js';
21
25
  export { JUDGE_DIMENSIONS, deriveOverall, judgeModelResponseSchema, judgeScorecardSchema, } from './judge-scorecard.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,34 @@
1
+ /**
2
+ * Reference-image prompt composition — the concept shot of a game's WORLD that
3
+ * `bitmagic reference make` generates and, once the creator accepts one, every
4
+ * later image generation and world forge takes as its visual reference.
5
+ *
6
+ * Beside `cover-prompt.ts` on purpose: a reference and a cover are the two
7
+ * pictures a game is judged by, and they must read as the same product. Both
8
+ * therefore open with the style's lead and end in its tail (`VOXEL_STYLE_LEAD` /
9
+ * `PIXAR_VOXEL_STYLE` for a voxel game, the low-poly pair for a low-poly one), which
10
+ * also carries the no-text directive — a reference with a caption baked in would teach every skybox
11
+ * and block texture downstream to render letters.
12
+ *
13
+ * What differs is the framing. A cover is a composed illustration of the game
14
+ * (a hero, a moment, a mood). A reference is an ESTABLISHING SHOT of the place
15
+ * — the terrain, landmarks, vegetation, architecture, palette and weather —
16
+ * because that is what a skybox, a block texture and the world-forger's
17
+ * designer can actually take from it. Characters in focus would pull the
18
+ * img2img generators towards figures the assets do not want.
19
+ *
20
+ * No network, no credentials: this module composes strings.
21
+ */
22
+ import { type ArtStyle } from './art-style.js';
1
23
  /** How much of the design text reaches the image model; the rest is dropped. Same cap as covers. */
2
24
  export declare const MAX_REFERENCE_DESIGN_CHARS = 1500;
3
25
  /**
4
26
  * Compose the image prompt for a reference image from a game's design text
5
27
  * (GAME-DESIGN.md content or a one-off `--prompt`). Falls back to a generic
6
- * voxel world when none is present.
28
+ * world in the style when none is present.
7
29
  *
8
30
  * As with covers, the game NAME is never injected: image models render a name
9
31
  * as on-image text.
10
32
  */
11
- export declare function buildReferenceImagePrompt(gameDesign: string): string;
33
+ export declare function buildReferenceImagePrompt(gameDesign: string, artStyle?: ArtStyle): string;
12
34
  //# sourceMappingURL=reference-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-prompt.d.ts","sourceRoot":"","sources":["../src/reference-prompt.ts"],"names":[],"mappings":"AAsBA,oGAAoG;AACpG,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAO/C;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQpE"}
1
+ {"version":3,"file":"reference-prompt.d.ts","sourceRoot":"","sources":["../src/reference-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGlE,oGAAoG;AACpG,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAO/C;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,QAA4B,GAAG,MAAM,CAU5G"}