@bitmagic/asset-core 0.2.21-dev.7 → 0.2.21-dev.9

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.
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import type { AssetResultBase, GenerateDeps } from '../types.js';
3
+ import { type SmartObjectSpec } from '../smart-object.js';
3
4
  /**
4
5
  * A 3D prop as VOXELS, from a prompt — with no mesh in between.
5
6
  *
@@ -48,12 +49,33 @@ export declare const propVoxelParamsSchema: z.ZodObject<{
48
49
  * remain for a caller that deliberately wants a working-size grid rather than a source.
49
50
  */
50
51
  grid: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<32>, z.ZodLiteral<64>, z.ZodLiteral<128>, z.ZodLiteral<256>, z.ZodLiteral<512>]>>>;
52
+ /**
53
+ * Also analyse the master for moving parts and lights (a windmill's blades, a
54
+ * lamp post's bulb), so the host can bake a smart object. `true`, or
55
+ * `{ hint }` with the designer's intent ("the blades should spin") — the hint
56
+ * is the single biggest quality lever, pass it whenever the request says what
57
+ * should move. The analysis is a vision call on top of the forge; a static
58
+ * prop answers with no parts and costs nothing further downstream.
59
+ */
60
+ smart: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
61
+ hint: z.ZodOptional<z.ZodString>;
62
+ }, "strict", z.ZodTypeAny, {
63
+ hint?: string | undefined;
64
+ }, {
65
+ hint?: string | undefined;
66
+ }>]>>;
51
67
  }, "strict", z.ZodTypeAny, {
52
68
  prompt: string;
53
69
  grid: 0 | 64 | 32 | 256 | 512 | 128;
70
+ smart?: boolean | {
71
+ hint?: string | undefined;
72
+ } | undefined;
54
73
  }, {
55
74
  prompt: string;
56
75
  grid?: 0 | 64 | 32 | 256 | 512 | 128 | undefined;
76
+ smart?: boolean | {
77
+ hint?: string | undefined;
78
+ } | undefined;
57
79
  }>;
58
80
  export type PropVoxelParams = z.input<typeof propVoxelParamsSchema>;
59
81
  export type PropVoxelResult = AssetResultBase & {
@@ -63,6 +85,12 @@ export type PropVoxelResult = AssetResultBase & {
63
85
  resolution?: number;
64
86
  voxelCount?: number;
65
87
  billable?: boolean;
88
+ /**
89
+ * The smart-object analysis, when `smart` was asked for and the Forger
90
+ * produced one. Passed to the host's bake as-is. Absent when the analysis
91
+ * failed — the master is still good, and the host bakes it static.
92
+ */
93
+ smartObject?: SmartObjectSpec;
66
94
  };
67
95
  export declare function generatePropVoxels(params: PropVoxelParams, deps: GenerateDeps): Promise<PropVoxelResult>;
68
96
  //# sourceMappingURL=prop-voxel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prop-voxel.d.ts","sourceRoot":"","sources":["../../src/generators/prop-voxel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIjE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAElE,eAAO,MAAM,qBAAqB;;IAIhC;;;;;;;;;;;OAWG;;;;;;;;EAKM,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAiBF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CAoD1B"}
1
+ {"version":3,"file":"prop-voxel.d.ts","sourceRoot":"","sources":["../../src/generators/prop-voxel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErG;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAElE,eAAO,MAAM,qBAAqB;;IAIhC;;;;;;;;;;;OAWG;;IAKH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;EAEM,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,CAAC;AAkBF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CAyE1B"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { fail, ok } from '../result.js';
3
3
  import { formatZodIssues } from '../validation.js';
4
+ import { smartObjectSpecSchema, smartRequestSchema } from '../smart-object.js';
4
5
  /**
5
6
  * A 3D prop as VOXELS, from a prompt — with no mesh in between.
6
7
  *
@@ -54,6 +55,15 @@ export const propVoxelParamsSchema = z.object({
54
55
  z.literal(0), z.literal(32), z.literal(64),
55
56
  z.literal(128), z.literal(256), z.literal(512),
56
57
  ]).optional().default(512),
58
+ /**
59
+ * Also analyse the master for moving parts and lights (a windmill's blades, a
60
+ * lamp post's bulb), so the host can bake a smart object. `true`, or
61
+ * `{ hint }` with the designer's intent ("the blades should spin") — the hint
62
+ * is the single biggest quality lever, pass it whenever the request says what
63
+ * should move. The analysis is a vision call on top of the forge; a static
64
+ * prop answers with no parts and costs nothing further downstream.
65
+ */
66
+ smart: smartRequestSchema.optional(),
57
67
  }).strict();
58
68
  /**
59
69
  * The async job route, not the synchronous one. A cold GPU container compiles CUDA kernels and
@@ -77,7 +87,7 @@ export async function generatePropVoxels(params, deps) {
77
87
  logger.info(`[prop-voxel] Starting forge-voxels for "${input.prompt}" at grid ${input.grid}`);
78
88
  let response;
79
89
  try {
80
- response = await forger.postJobAndWait(ENDPOINT, { prompt: input.prompt, grid: input.grid }, 'prop-voxel');
90
+ response = await forger.postJobAndWait(ENDPOINT, { prompt: input.prompt, grid: input.grid, ...(input.smart ? { smart: input.smart } : {}) }, 'prop-voxel');
81
91
  }
82
92
  catch (error) {
83
93
  const message = error instanceof Error ? error.message : 'Unknown error occurred';
@@ -91,6 +101,27 @@ export async function generatePropVoxels(params, deps) {
91
101
  }
92
102
  const { resolution, voxelCount } = response.data ?? {};
93
103
  logger.info(`[prop-voxel] Generated ${masterUrl} (${voxelCount ?? '?'} voxels)`);
104
+ // The analysis rides beside the master and is validated here because it crosses
105
+ // a service boundary and then drives a bake. A failed or malformed analysis is
106
+ // logged and dropped: the master is good and bakes static, which is what the
107
+ // caller would have got without `smart`.
108
+ let smartObject;
109
+ const smart = response.data?.smartObject;
110
+ if (input.smart && smart) {
111
+ if (smart.error) {
112
+ logger.warn(`[prop-voxel] Smart-object analysis failed: ${smart.error}`);
113
+ }
114
+ else {
115
+ const parsed = smartObjectSpecSchema.safeParse(smart.spec);
116
+ if (parsed.success) {
117
+ smartObject = parsed.data;
118
+ logger.info(`[prop-voxel] Smart object: ${parsed.data.parts.length} part(s), ${parsed.data.lights.length} light(s)`);
119
+ }
120
+ else {
121
+ logger.warn(`[prop-voxel] Smart-object spec did not validate: ${formatZodIssues(parsed.error)}`);
122
+ }
123
+ }
124
+ }
94
125
  return ok(`Voxels generated: ${masterUrl}`,
95
126
  // Deliberately empty — see the file header. The asset does not exist until the host has baked
96
127
  // this master, and writing a half-made entry would leave world.json describing an asset the
@@ -99,6 +130,7 @@ export async function generatePropVoxels(params, deps) {
99
130
  masterUrl,
100
131
  ...(resolution === undefined ? {} : { resolution }),
101
132
  ...(voxelCount === undefined ? {} : { voxelCount }),
133
+ ...(smartObject === undefined ? {} : { smartObject }),
102
134
  billable: true,
103
135
  });
104
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prop-voxel.js","sourceRoot":"","sources":["../../src/generators/prop-voxel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prop-voxel.js","sourceRoot":"","sources":["../../src/generators/prop-voxel.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,19 @@ import type { AssetResultBase, GenerateDeps } from '../types.js';
7
7
  export declare const SPEECH_MAX_CHARS = 10000;
8
8
  /** The alias table the Forger resolves; a raw Eleven Labs voice_id also works. */
9
9
  export declare const SPEECH_VOICES: readonly ["narrator", "male", "female"];
10
+ /**
11
+ * Roughly how many seconds of audio a line of text becomes, for when the real
12
+ * length is not known: the CLI's pre-generation floor price, and the agent tool's
13
+ * charge for a line the Forger could not probe.
14
+ *
15
+ * 15 characters per second, measured against the real endpoint (2026-09): a
16
+ * 35-character sentence came back as 2.28 s on `eleven_multilingual_v2`, i.e.
17
+ * 15.4 char/s, which matches the docs' "~1,000 characters is 60-75 seconds".
18
+ * Rate varies with `speed`, language and punctuation, so this is an estimate by
19
+ * construction — the measured `lengthSeconds` is what prices a line whenever
20
+ * there is one.
21
+ */
22
+ export declare function estimateSpeechSeconds(text: string): number;
10
23
  export declare const speechParamsSchema: z.ZodObject<{
11
24
  text: z.ZodString;
12
25
  voice: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"speech.d.ts","sourceRoot":"","sources":["../../src/generators/speech.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,kFAAkF;AAClF,eAAO,MAAM,aAAa,yCAA0C,CAAC;AAErE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAapB,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,0GAA0G;AAC1G,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG;IAC3C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAsBF,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,YAAY,CAAC,CA0EvB"}
1
+ {"version":3,"file":"speech.d.ts","sourceRoot":"","sources":["../../src/generators/speech.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,kFAAkF;AAClF,eAAO,MAAM,aAAa,yCAA0C,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAapB,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,0GAA0G;AAC1G,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG;IAC3C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAsBF,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,YAAY,CAAC,CA0EvB"}
@@ -9,6 +9,21 @@ import { formatZodIssues } from '../validation.js';
9
9
  export const SPEECH_MAX_CHARS = 10000;
10
10
  /** The alias table the Forger resolves; a raw Eleven Labs voice_id also works. */
11
11
  export const SPEECH_VOICES = ['narrator', 'male', 'female'];
12
+ /**
13
+ * Roughly how many seconds of audio a line of text becomes, for when the real
14
+ * length is not known: the CLI's pre-generation floor price, and the agent tool's
15
+ * charge for a line the Forger could not probe.
16
+ *
17
+ * 15 characters per second, measured against the real endpoint (2026-09): a
18
+ * 35-character sentence came back as 2.28 s on `eleven_multilingual_v2`, i.e.
19
+ * 15.4 char/s, which matches the docs' "~1,000 characters is 60-75 seconds".
20
+ * Rate varies with `speed`, language and punctuation, so this is an estimate by
21
+ * construction — the measured `lengthSeconds` is what prices a line whenever
22
+ * there is one.
23
+ */
24
+ export function estimateSpeechSeconds(text) {
25
+ return Math.max(1, Math.ceil(text.length / 15));
26
+ }
12
27
  export const speechParamsSchema = z.object({
13
28
  text: z.string().min(1).max(SPEECH_MAX_CHARS)
14
29
  .describe('The line to speak; billed by the length of the audio it produces'),
@@ -1 +1 @@
1
- {"version":3,"file":"speech.js","sourceRoot":"","sources":["../../src/generators/speech.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speech.js","sourceRoot":"","sources":["../../src/generators/speech.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,7 +13,7 @@ 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 { generateSpeech, speechParamsSchema, SPEECH_MAX_CHARS, SPEECH_VOICES } from './generators/speech.js';
16
+ export { generateSpeech, speechParamsSchema, estimateSpeechSeconds, SPEECH_MAX_CHARS, SPEECH_VOICES } from './generators/speech.js';
17
17
  export type { SpeechParams, SpeechResult, SpeechUrls } from './generators/speech.js';
18
18
  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';
19
19
  export type { VideoParams, VideoResult, VideoUrls, VideoJobResult, VideoJobRequest } from './generators/video.js';
@@ -31,6 +31,8 @@ export { generateProp, propParamsSchema } from './generators/prop.js';
31
31
  export type { PropParams, PropResult } from './generators/prop.js';
32
32
  export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './generators/prop-voxel.js';
33
33
  export type { PropVoxelParams, PropVoxelResult } from './generators/prop-voxel.js';
34
+ export { smartObjectSpecSchema, smartObjectMotionSchema, smartRequestSchema, smartRequestFrom, isSmartSpecUseful, } from './smart-object.js';
35
+ export type { SmartObjectSpec, SmartObjectMotion, SmartRequest } from './smart-object.js';
34
36
  export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationModel, ANIMATION_MODEL_TEXT_TO_MOTION_3, ANIMATION_MODEL_TEXT_TO_MOTION_2, ANIMATION_MODEL_OLDER, } from './generators/animation.js';
35
37
  export type { AnimationParams, AnimationResult } from './generators/animation.js';
36
38
  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';
@@ -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,7 +6,7 @@ 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 { generateSpeech, speechParamsSchema, SPEECH_MAX_CHARS, SPEECH_VOICES } from './generators/speech.js';
9
+ export { generateSpeech, speechParamsSchema, estimateSpeechSeconds, SPEECH_MAX_CHARS, SPEECH_VOICES } from './generators/speech.js';
10
10
  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';
11
11
  export { formatZodIssues } from './validation.js';
12
12
  export { generateImageAsset, imageAssetParamsSchema } from './generators/image.js';
@@ -16,6 +16,7 @@ export { findLibraryCharacter, searchLibraryCharacters, getCharacterLibraryMode,
16
16
  export { isManagedAssetHost, isManagedAssetUrl, MANAGED_HOST_SUFFIXES } from './managed-hosts.js';
17
17
  export { generateProp, propParamsSchema } from './generators/prop.js';
18
18
  export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './generators/prop-voxel.js';
19
+ export { smartObjectSpecSchema, smartObjectMotionSchema, smartRequestSchema, smartRequestFrom, isSmartSpecUseful, } from './smart-object.js';
19
20
  export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationModel, ANIMATION_MODEL_TEXT_TO_MOTION_3, ANIMATION_MODEL_TEXT_TO_MOTION_2, ANIMATION_MODEL_OLDER, } from './generators/animation.js';
20
21
  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';
21
22
  export { fetchContentLength } from './http.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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"}
@@ -0,0 +1,331 @@
1
+ import { z } from 'zod';
2
+ export declare const smartObjectMotionSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
3
+ kind: z.ZodLiteral<"spin">;
4
+ axis: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
5
+ rpm: z.ZodNumber;
6
+ }, "strip", z.ZodTypeAny, {
7
+ kind: "spin";
8
+ axis: [number, number, number];
9
+ rpm: number;
10
+ }, {
11
+ kind: "spin";
12
+ axis: [number, number, number];
13
+ rpm: number;
14
+ }>, z.ZodObject<{
15
+ kind: z.ZodLiteral<"upright">;
16
+ }, "strip", z.ZodTypeAny, {
17
+ kind: "upright";
18
+ }, {
19
+ kind: "upright";
20
+ }>, z.ZodObject<{
21
+ kind: z.ZodLiteral<"pendulum">;
22
+ axis: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
23
+ amplitudeDeg: z.ZodNumber;
24
+ periodS: z.ZodNumber;
25
+ }, "strip", z.ZodTypeAny, {
26
+ kind: "pendulum";
27
+ axis: [number, number, number];
28
+ amplitudeDeg: number;
29
+ periodS: number;
30
+ }, {
31
+ kind: "pendulum";
32
+ axis: [number, number, number];
33
+ amplitudeDeg: number;
34
+ periodS: number;
35
+ }>, z.ZodObject<{
36
+ kind: z.ZodLiteral<"none">;
37
+ }, "strip", z.ZodTypeAny, {
38
+ kind: "none";
39
+ }, {
40
+ kind: "none";
41
+ }>]>;
42
+ export declare const smartObjectSpecSchema: z.ZodObject<{
43
+ version: z.ZodLiteral<1>;
44
+ grid: z.ZodNumber;
45
+ bounds: z.ZodOptional<z.ZodObject<{
46
+ min: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
47
+ max: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ min: [number, number, number];
50
+ max: [number, number, number];
51
+ }, {
52
+ min: [number, number, number];
53
+ max: [number, number, number];
54
+ }>>;
55
+ object: z.ZodOptional<z.ZodString>;
56
+ parts: z.ZodArray<z.ZodObject<{
57
+ name: z.ZodString;
58
+ /** Another part's name; absent means the static body. */
59
+ parent: z.ZodOptional<z.ZodString>;
60
+ box: z.ZodObject<{
61
+ min: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
62
+ max: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ min: [number, number, number];
65
+ max: [number, number, number];
66
+ }, {
67
+ min: [number, number, number];
68
+ max: [number, number, number];
69
+ }>;
70
+ exclude: z.ZodOptional<z.ZodArray<z.ZodObject<{
71
+ min: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
72
+ max: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
73
+ }, "strip", z.ZodTypeAny, {
74
+ min: [number, number, number];
75
+ max: [number, number, number];
76
+ }, {
77
+ min: [number, number, number];
78
+ max: [number, number, number];
79
+ }>, "many">>;
80
+ /** Grid coordinates, may be fractional (cell centres are at +0.5). */
81
+ pivot: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
82
+ motion: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
83
+ kind: z.ZodLiteral<"spin">;
84
+ axis: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
85
+ rpm: z.ZodNumber;
86
+ }, "strip", z.ZodTypeAny, {
87
+ kind: "spin";
88
+ axis: [number, number, number];
89
+ rpm: number;
90
+ }, {
91
+ kind: "spin";
92
+ axis: [number, number, number];
93
+ rpm: number;
94
+ }>, z.ZodObject<{
95
+ kind: z.ZodLiteral<"upright">;
96
+ }, "strip", z.ZodTypeAny, {
97
+ kind: "upright";
98
+ }, {
99
+ kind: "upright";
100
+ }>, z.ZodObject<{
101
+ kind: z.ZodLiteral<"pendulum">;
102
+ axis: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
103
+ amplitudeDeg: z.ZodNumber;
104
+ periodS: z.ZodNumber;
105
+ }, "strip", z.ZodTypeAny, {
106
+ kind: "pendulum";
107
+ axis: [number, number, number];
108
+ amplitudeDeg: number;
109
+ periodS: number;
110
+ }, {
111
+ kind: "pendulum";
112
+ axis: [number, number, number];
113
+ amplitudeDeg: number;
114
+ periodS: number;
115
+ }>, z.ZodObject<{
116
+ kind: z.ZodLiteral<"none">;
117
+ }, "strip", z.ZodTypeAny, {
118
+ kind: "none";
119
+ }, {
120
+ kind: "none";
121
+ }>]>;
122
+ voxelCount: z.ZodOptional<z.ZodNumber>;
123
+ }, "strip", z.ZodTypeAny, {
124
+ name: string;
125
+ box: {
126
+ min: [number, number, number];
127
+ max: [number, number, number];
128
+ };
129
+ pivot: [number, number, number];
130
+ motion: {
131
+ kind: "spin";
132
+ axis: [number, number, number];
133
+ rpm: number;
134
+ } | {
135
+ kind: "upright";
136
+ } | {
137
+ kind: "pendulum";
138
+ axis: [number, number, number];
139
+ amplitudeDeg: number;
140
+ periodS: number;
141
+ } | {
142
+ kind: "none";
143
+ };
144
+ parent?: string | undefined;
145
+ exclude?: {
146
+ min: [number, number, number];
147
+ max: [number, number, number];
148
+ }[] | undefined;
149
+ voxelCount?: number | undefined;
150
+ }, {
151
+ name: string;
152
+ box: {
153
+ min: [number, number, number];
154
+ max: [number, number, number];
155
+ };
156
+ pivot: [number, number, number];
157
+ motion: {
158
+ kind: "spin";
159
+ axis: [number, number, number];
160
+ rpm: number;
161
+ } | {
162
+ kind: "upright";
163
+ } | {
164
+ kind: "pendulum";
165
+ axis: [number, number, number];
166
+ amplitudeDeg: number;
167
+ periodS: number;
168
+ } | {
169
+ kind: "none";
170
+ };
171
+ parent?: string | undefined;
172
+ exclude?: {
173
+ min: [number, number, number];
174
+ max: [number, number, number];
175
+ }[] | undefined;
176
+ voxelCount?: number | undefined;
177
+ }>, "many">;
178
+ lights: z.ZodArray<z.ZodObject<{
179
+ name: z.ZodString;
180
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
181
+ /** `#rrggbb` */
182
+ color: z.ZodString;
183
+ intensity: z.ZodOptional<z.ZodNumber>;
184
+ distance: z.ZodOptional<z.ZodNumber>;
185
+ flicker: z.ZodOptional<z.ZodBoolean>;
186
+ /** When set, the light rides this part. */
187
+ part: z.ZodOptional<z.ZodString>;
188
+ }, "strip", z.ZodTypeAny, {
189
+ name: string;
190
+ position: [number, number, number];
191
+ color: string;
192
+ intensity?: number | undefined;
193
+ distance?: number | undefined;
194
+ flicker?: boolean | undefined;
195
+ part?: string | undefined;
196
+ }, {
197
+ name: string;
198
+ position: [number, number, number];
199
+ color: string;
200
+ intensity?: number | undefined;
201
+ distance?: number | undefined;
202
+ flicker?: boolean | undefined;
203
+ part?: string | undefined;
204
+ }>, "many">;
205
+ /** Inside a part's box, components smaller than this fraction of the largest are body slivers. */
206
+ minComponentFraction: z.ZodOptional<z.ZodNumber>;
207
+ bodyVoxelCount: z.ZodOptional<z.ZodNumber>;
208
+ warnings: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
209
+ notes: z.ZodOptional<z.ZodString>;
210
+ model: z.ZodOptional<z.ZodString>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ version: 1;
213
+ grid: number;
214
+ parts: {
215
+ name: string;
216
+ box: {
217
+ min: [number, number, number];
218
+ max: [number, number, number];
219
+ };
220
+ pivot: [number, number, number];
221
+ motion: {
222
+ kind: "spin";
223
+ axis: [number, number, number];
224
+ rpm: number;
225
+ } | {
226
+ kind: "upright";
227
+ } | {
228
+ kind: "pendulum";
229
+ axis: [number, number, number];
230
+ amplitudeDeg: number;
231
+ periodS: number;
232
+ } | {
233
+ kind: "none";
234
+ };
235
+ parent?: string | undefined;
236
+ exclude?: {
237
+ min: [number, number, number];
238
+ max: [number, number, number];
239
+ }[] | undefined;
240
+ voxelCount?: number | undefined;
241
+ }[];
242
+ lights: {
243
+ name: string;
244
+ position: [number, number, number];
245
+ color: string;
246
+ intensity?: number | undefined;
247
+ distance?: number | undefined;
248
+ flicker?: boolean | undefined;
249
+ part?: string | undefined;
250
+ }[];
251
+ object?: string | undefined;
252
+ model?: string | undefined;
253
+ bounds?: {
254
+ min: [number, number, number];
255
+ max: [number, number, number];
256
+ } | undefined;
257
+ minComponentFraction?: number | undefined;
258
+ bodyVoxelCount?: number | undefined;
259
+ warnings?: string[] | undefined;
260
+ notes?: string | undefined;
261
+ }, {
262
+ version: 1;
263
+ grid: number;
264
+ parts: {
265
+ name: string;
266
+ box: {
267
+ min: [number, number, number];
268
+ max: [number, number, number];
269
+ };
270
+ pivot: [number, number, number];
271
+ motion: {
272
+ kind: "spin";
273
+ axis: [number, number, number];
274
+ rpm: number;
275
+ } | {
276
+ kind: "upright";
277
+ } | {
278
+ kind: "pendulum";
279
+ axis: [number, number, number];
280
+ amplitudeDeg: number;
281
+ periodS: number;
282
+ } | {
283
+ kind: "none";
284
+ };
285
+ parent?: string | undefined;
286
+ exclude?: {
287
+ min: [number, number, number];
288
+ max: [number, number, number];
289
+ }[] | undefined;
290
+ voxelCount?: number | undefined;
291
+ }[];
292
+ lights: {
293
+ name: string;
294
+ position: [number, number, number];
295
+ color: string;
296
+ intensity?: number | undefined;
297
+ distance?: number | undefined;
298
+ flicker?: boolean | undefined;
299
+ part?: string | undefined;
300
+ }[];
301
+ object?: string | undefined;
302
+ model?: string | undefined;
303
+ bounds?: {
304
+ min: [number, number, number];
305
+ max: [number, number, number];
306
+ } | undefined;
307
+ minComponentFraction?: number | undefined;
308
+ bodyVoxelCount?: number | undefined;
309
+ warnings?: string[] | undefined;
310
+ notes?: string | undefined;
311
+ }>;
312
+ export type SmartObjectMotion = z.infer<typeof smartObjectMotionSchema>;
313
+ export type SmartObjectSpec = z.infer<typeof smartObjectSpecSchema>;
314
+ /**
315
+ * The `smart` request field: `true` for analysis with no designer hint, or the
316
+ * hint itself ("the blades should spin"). Shared by every generator that can
317
+ * ask for it, so the CLI, the agent and the api-server accept one shape.
318
+ */
319
+ export declare const smartRequestSchema: z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
320
+ hint: z.ZodOptional<z.ZodString>;
321
+ }, "strict", z.ZodTypeAny, {
322
+ hint?: string | undefined;
323
+ }, {
324
+ hint?: string | undefined;
325
+ }>]>;
326
+ export type SmartRequest = z.infer<typeof smartRequestSchema>;
327
+ /** Normalise the ways a caller says "smart" into what the Forger takes. */
328
+ export declare function smartRequestFrom(value: boolean | string | SmartRequest | undefined): SmartRequest | undefined;
329
+ /** True when a spec declares anything at all — a static prop with no parts and no lights is not smart. */
330
+ export declare function isSmartSpecUseful(spec: SmartObjectSpec): boolean;
331
+ //# sourceMappingURL=smart-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-object.d.ts","sourceRoot":"","sources":["../src/smart-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMlC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;QAO9B,yDAAyD;;;;;;;;;;;;;;;;;;;;;;QAIzD,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAQtE,gBAAgB;;;;;QAKhB,2CAA2C;;;;;;;;;;;;;;;;;;;IAG7C,kGAAkG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMlG,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;IAG7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAK7G;AAED,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAEhE"}
@@ -0,0 +1,83 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * SmartObjectSpec — the Asset Forger's verdict on what parts of a voxel prop
4
+ * MOVE and where it emits LIGHT, in the master's grid space.
5
+ *
6
+ * Produced by `/ai/v1/voxel-smart-object` (or by `/ai/v1/forge-voxels` with
7
+ * `smart`), stored beside the master, and baked by the engine into the `.vxl`
8
+ * part channel. The engine's own copy of this shape is
9
+ * `game/src/types/smartObject.ts`; the Forger's is `src/lib/smart-object.ts`.
10
+ * This one is the wire contract the generators hand to the host, validated
11
+ * because it crosses a service boundary and then drives a bake.
12
+ *
13
+ * Grid space rather than metres because the bake is what decides the metre
14
+ * scale, and a re-voxelize at another size must re-split the same voxels
15
+ * without a second vision call.
16
+ */
17
+ const vec3 = z.tuple([z.number(), z.number(), z.number()]);
18
+ const gridBoxSchema = z.object({ min: vec3, max: vec3 });
19
+ export const smartObjectMotionSchema = z.discriminatedUnion('kind', [
20
+ z.object({ kind: z.literal('spin'), axis: vec3, rpm: z.number() }),
21
+ /** Hangs from a hinge on its parent and stays level while the parent turns. */
22
+ z.object({ kind: z.literal('upright') }),
23
+ z.object({ kind: z.literal('pendulum'), axis: vec3, amplitudeDeg: z.number(), periodS: z.number() }),
24
+ z.object({ kind: z.literal('none') }),
25
+ ]);
26
+ export const smartObjectSpecSchema = z.object({
27
+ version: z.literal(1),
28
+ grid: z.number().int().positive(),
29
+ bounds: gridBoxSchema.optional(),
30
+ object: z.string().optional(),
31
+ parts: z.array(z.object({
32
+ name: z.string().min(1),
33
+ /** Another part's name; absent means the static body. */
34
+ parent: z.string().optional(),
35
+ box: gridBoxSchema,
36
+ exclude: z.array(gridBoxSchema).optional(),
37
+ /** Grid coordinates, may be fractional (cell centres are at +0.5). */
38
+ pivot: vec3,
39
+ motion: smartObjectMotionSchema,
40
+ voxelCount: z.number().optional(),
41
+ })),
42
+ lights: z.array(z.object({
43
+ name: z.string().min(1),
44
+ position: vec3,
45
+ /** `#rrggbb` */
46
+ color: z.string(),
47
+ intensity: z.number().optional(),
48
+ distance: z.number().optional(),
49
+ flicker: z.boolean().optional(),
50
+ /** When set, the light rides this part. */
51
+ part: z.string().optional(),
52
+ })),
53
+ /** Inside a part's box, components smaller than this fraction of the largest are body slivers. */
54
+ minComponentFraction: z.number().optional(),
55
+ bodyVoxelCount: z.number().optional(),
56
+ warnings: z.array(z.string()).optional(),
57
+ notes: z.string().optional(),
58
+ model: z.string().optional(),
59
+ });
60
+ /**
61
+ * The `smart` request field: `true` for analysis with no designer hint, or the
62
+ * hint itself ("the blades should spin"). Shared by every generator that can
63
+ * ask for it, so the CLI, the agent and the api-server accept one shape.
64
+ */
65
+ export const smartRequestSchema = z.union([
66
+ z.boolean(),
67
+ z.object({ hint: z.string().max(500).optional() }).strict(),
68
+ ]);
69
+ /** Normalise the ways a caller says "smart" into what the Forger takes. */
70
+ export function smartRequestFrom(value) {
71
+ if (value === undefined || value === false)
72
+ return undefined;
73
+ if (value === true)
74
+ return true;
75
+ if (typeof value === 'string')
76
+ return value.trim() ? { hint: value.trim() } : true;
77
+ return value;
78
+ }
79
+ /** True when a spec declares anything at all — a static prop with no parts and no lights is not smart. */
80
+ export function isSmartSpecUseful(spec) {
81
+ return spec.parts.length > 0 || spec.lights.length > 0;
82
+ }
83
+ //# sourceMappingURL=smart-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-object.js","sourceRoot":"","sources":["../src/smart-object.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/asset-core",
3
- "version": "0.2.21-dev.7",
3
+ "version": "0.2.21-dev.9",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "author": "Bitmagic Oy",
6
6
  "type": "module",