@bitmagic/asset-core 0.2.21 → 0.2.22-dev.1
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/generators/smart-object.d.ts +46 -0
- package/dist/generators/smart-object.d.ts.map +1 -0
- package/dist/generators/smart-object.js +77 -0
- package/dist/generators/smart-object.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/smart-object.d.ts +261 -0
- package/dist/smart-object.d.ts.map +1 -1
- package/dist/smart-object.js +94 -0
- package/dist/smart-object.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { AssetResultBase, GenerateDeps } from '../types.js';
|
|
3
|
+
import { type SmartObjectSpec } from '../smart-object.js';
|
|
4
|
+
/**
|
|
5
|
+
* The smart-object ANALYSIS on its own: find the moving parts and lights of a
|
|
6
|
+
* voxel master that already exists.
|
|
7
|
+
*
|
|
8
|
+
* `prop-voxel` bundles the analysis with the forge (`smart`); this is the
|
|
9
|
+
* other half of the same Forger, for the two cases where the master and the
|
|
10
|
+
* analysis are bought at different times — a job that forged locally and has
|
|
11
|
+
* no Forger call to hang `smart` on, and a prop that was forged before it was
|
|
12
|
+
* asked to move. Same output as the bundled form: a grid-space
|
|
13
|
+
* `SmartObjectSpec` the host bakes into the `.vxl` part channel.
|
|
14
|
+
*
|
|
15
|
+
* `masterUrl` must be the raw HFVX master (`<assetId>/master-g<grid>.bin` or
|
|
16
|
+
* an asset's `sourceHfvxUrl`), not the compiled `.vxl` the bake stores; the
|
|
17
|
+
* Forger refuses the latter with a message rather than a traceback.
|
|
18
|
+
*/
|
|
19
|
+
export declare const smartObjectAnalysisParamsSchema: z.ZodObject<{
|
|
20
|
+
masterUrl: z.ZodString;
|
|
21
|
+
/** The prompt the object was generated from — the model's first clue to what should move. */
|
|
22
|
+
prompt: z.ZodString;
|
|
23
|
+
/** Designer intent ("the blades should spin"), passed through verbatim. */
|
|
24
|
+
hint: z.ZodOptional<z.ZodString>;
|
|
25
|
+
/** GCS prefix for the stored spec and views; defaults to a random one. */
|
|
26
|
+
assetId: z.ZodOptional<z.ZodString>;
|
|
27
|
+
}, "strict", z.ZodTypeAny, {
|
|
28
|
+
prompt: string;
|
|
29
|
+
masterUrl: string;
|
|
30
|
+
assetId?: string | undefined;
|
|
31
|
+
hint?: string | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
prompt: string;
|
|
34
|
+
masterUrl: string;
|
|
35
|
+
assetId?: string | undefined;
|
|
36
|
+
hint?: string | undefined;
|
|
37
|
+
}>;
|
|
38
|
+
export type SmartObjectAnalysisParams = z.input<typeof smartObjectAnalysisParamsSchema>;
|
|
39
|
+
export type SmartObjectAnalysisResult = AssetResultBase & {
|
|
40
|
+
smartObject?: SmartObjectSpec;
|
|
41
|
+
specUrl?: string;
|
|
42
|
+
/** The contact sheet the vision model saw — the first thing to look at when a verdict is wrong. */
|
|
43
|
+
viewsUrl?: string;
|
|
44
|
+
};
|
|
45
|
+
export declare function analyzeSmartObject(params: SmartObjectAnalysisParams, deps: GenerateDeps): Promise<SmartObjectAnalysisResult>;
|
|
46
|
+
//# sourceMappingURL=smart-object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-object.d.ts","sourceRoot":"","sources":["../../src/generators/smart-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEpG;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,+BAA+B;;IAE1C,6FAA6F;;IAE7F,2EAA2E;;IAE3E,0EAA0E;;;;;;;;;;;;EAEjE,CAAC;AAEZ,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG;IACxD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAQF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,yBAAyB,CAAC,CAyDpC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { fail, ok } from '../result.js';
|
|
3
|
+
import { formatZodIssues } from '../validation.js';
|
|
4
|
+
import { isSmartSpecUseful, smartObjectSpecSchema } from '../smart-object.js';
|
|
5
|
+
/**
|
|
6
|
+
* The smart-object ANALYSIS on its own: find the moving parts and lights of a
|
|
7
|
+
* voxel master that already exists.
|
|
8
|
+
*
|
|
9
|
+
* `prop-voxel` bundles the analysis with the forge (`smart`); this is the
|
|
10
|
+
* other half of the same Forger, for the two cases where the master and the
|
|
11
|
+
* analysis are bought at different times — a job that forged locally and has
|
|
12
|
+
* no Forger call to hang `smart` on, and a prop that was forged before it was
|
|
13
|
+
* asked to move. Same output as the bundled form: a grid-space
|
|
14
|
+
* `SmartObjectSpec` the host bakes into the `.vxl` part channel.
|
|
15
|
+
*
|
|
16
|
+
* `masterUrl` must be the raw HFVX master (`<assetId>/master-g<grid>.bin` or
|
|
17
|
+
* an asset's `sourceHfvxUrl`), not the compiled `.vxl` the bake stores; the
|
|
18
|
+
* Forger refuses the latter with a message rather than a traceback.
|
|
19
|
+
*/
|
|
20
|
+
export const smartObjectAnalysisParamsSchema = z.object({
|
|
21
|
+
masterUrl: z.string().url(),
|
|
22
|
+
/** The prompt the object was generated from — the model's first clue to what should move. */
|
|
23
|
+
prompt: z.string().min(1).max(2000),
|
|
24
|
+
/** Designer intent ("the blades should spin"), passed through verbatim. */
|
|
25
|
+
hint: z.string().max(500).optional(),
|
|
26
|
+
/** GCS prefix for the stored spec and views; defaults to a random one. */
|
|
27
|
+
assetId: z.string().regex(/^[A-Za-z0-9_-]{1,64}$/).optional(),
|
|
28
|
+
}).strict();
|
|
29
|
+
const ENDPOINT = '/ai/v1/voxel-smart-object/jobs';
|
|
30
|
+
export async function analyzeSmartObject(params, deps) {
|
|
31
|
+
const { forger, logger, onProgress } = deps;
|
|
32
|
+
const parsed = smartObjectAnalysisParamsSchema.safeParse(params);
|
|
33
|
+
if (!parsed.success) {
|
|
34
|
+
logger.warn({ err: parsed.error }, '[smart-object] Invalid parameters');
|
|
35
|
+
return fail(formatZodIssues(parsed.error));
|
|
36
|
+
}
|
|
37
|
+
const input = parsed.data;
|
|
38
|
+
if (!forger.hasCredentials()) {
|
|
39
|
+
logger.error('[smart-object] Missing Asset Forger credentials');
|
|
40
|
+
return fail(forger.getMissingCredentialsMessage());
|
|
41
|
+
}
|
|
42
|
+
onProgress(`Finding moving parts and lights for: ${input.prompt}`);
|
|
43
|
+
let response;
|
|
44
|
+
try {
|
|
45
|
+
response = await forger.postJobAndWait(ENDPOINT, {
|
|
46
|
+
masterUrl: input.masterUrl,
|
|
47
|
+
prompt: input.prompt,
|
|
48
|
+
...(input.hint ? { hint: input.hint } : {}),
|
|
49
|
+
...(input.assetId ? { assetId: input.assetId } : {}),
|
|
50
|
+
}, 'smart-object');
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const message = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
54
|
+
logger.error({ err: error }, '[smart-object] Error during analysis');
|
|
55
|
+
return fail(message);
|
|
56
|
+
}
|
|
57
|
+
const spec = smartObjectSpecSchema.safeParse(response.data?.spec);
|
|
58
|
+
if (!spec.success) {
|
|
59
|
+
logger.warn(`[smart-object] Spec did not validate: ${formatZodIssues(spec.error)}`);
|
|
60
|
+
return fail('Asset Forger returned no usable smart-object spec');
|
|
61
|
+
}
|
|
62
|
+
if (!isSmartSpecUseful(spec.data)) {
|
|
63
|
+
// Not an error: the model looked and found a static object. The caller
|
|
64
|
+
// bakes it static, and this message says why.
|
|
65
|
+
return fail('The analysis found no moving parts and no lights');
|
|
66
|
+
}
|
|
67
|
+
const { specUrl, viewsUrl } = response.data ?? {};
|
|
68
|
+
logger.info(`[smart-object] ${spec.data.parts.length} part(s), ${spec.data.lights.length} light(s)`);
|
|
69
|
+
return ok(`Smart object: ${spec.data.parts.map((part) => part.name).join(', ') || 'lights only'}`,
|
|
70
|
+
// No patches: the spec is baked by the host, which writes the record.
|
|
71
|
+
[], {
|
|
72
|
+
smartObject: spec.data,
|
|
73
|
+
...(specUrl ? { specUrl } : {}),
|
|
74
|
+
...(viewsUrl ? { viewsUrl } : {}),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=smart-object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-object.js","sourceRoot":"","sources":["../../src/generators/smart-object.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,8 +31,10 @@ 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
|
|
34
|
+
export { smartObjectSpecSchema, smartObjectMotionSchema, smartRequestSchema, smartRequestFrom, isSmartSpecUseful, smartPropSpecSchema, describeSmartBehaviour, } from './smart-object.js';
|
|
35
|
+
export { analyzeSmartObject, smartObjectAnalysisParamsSchema } from './generators/smart-object.js';
|
|
36
|
+
export type { SmartObjectAnalysisParams, SmartObjectAnalysisResult } from './generators/smart-object.js';
|
|
37
|
+
export type { SmartObjectSpec, SmartObjectMotion, SmartRequest, SmartPropSpec, SmartBehaviourPart, SmartBehaviourLight, } from './smart-object.js';
|
|
36
38
|
export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationModel, ANIMATION_MODEL_TEXT_TO_MOTION_3, ANIMATION_MODEL_TEXT_TO_MOTION_2, ANIMATION_MODEL_OLDER, } from './generators/animation.js';
|
|
37
39
|
export type { AnimationParams, AnimationResult } from './generators/animation.js';
|
|
38
40
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -16,7 +16,8 @@ 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
|
+
export { smartObjectSpecSchema, smartObjectMotionSchema, smartRequestSchema, smartRequestFrom, isSmartSpecUseful, smartPropSpecSchema, describeSmartBehaviour, } from './smart-object.js';
|
|
20
|
+
export { analyzeSmartObject, smartObjectAnalysisParamsSchema } from './generators/smart-object.js';
|
|
20
21
|
export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationModel, ANIMATION_MODEL_TEXT_TO_MOTION_3, ANIMATION_MODEL_TEXT_TO_MOTION_2, ANIMATION_MODEL_OLDER, } from './generators/animation.js';
|
|
21
22
|
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';
|
|
22
23
|
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":"AAUA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5F,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEpI,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAW3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvG,OAAO,EACL,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/smart-object.d.ts
CHANGED
|
@@ -311,6 +311,267 @@ export declare const smartObjectSpecSchema: z.ZodObject<{
|
|
|
311
311
|
}>;
|
|
312
312
|
export type SmartObjectMotion = z.infer<typeof smartObjectMotionSchema>;
|
|
313
313
|
export type SmartObjectSpec = z.infer<typeof smartObjectSpecSchema>;
|
|
314
|
+
/**
|
|
315
|
+
* What a PLACEHOLDER declares about itself, in its own authored frame — the
|
|
316
|
+
* World-Forger's primitive props and the agent's `create-voxel-asset` boxes.
|
|
317
|
+
*
|
|
318
|
+
* Unlike `SmartObjectSpec` there are no boxes here: the authoring lane already
|
|
319
|
+
* knows which primitives make up a part (they carry a `part` name), so the
|
|
320
|
+
* bake decides voxel ownership from geometry it has and this only says how
|
|
321
|
+
* the named parts MOVE and where the lights are. One definition, read by the
|
|
322
|
+
* designer schema, the agent tool and the engine's bake.
|
|
323
|
+
*/
|
|
324
|
+
export declare const smartPropSpecSchema: z.ZodObject<{
|
|
325
|
+
parts: z.ZodArray<z.ZodObject<{
|
|
326
|
+
/** The `part` name the primitives carry. */
|
|
327
|
+
name: z.ZodString;
|
|
328
|
+
/** Another part's name; absent means the static body. */
|
|
329
|
+
parent: z.ZodOptional<z.ZodString>;
|
|
330
|
+
motion: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
331
|
+
kind: z.ZodLiteral<"spin">;
|
|
332
|
+
axis: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
333
|
+
rpm: z.ZodNumber;
|
|
334
|
+
}, "strip", z.ZodTypeAny, {
|
|
335
|
+
kind: "spin";
|
|
336
|
+
axis: [number, number, number];
|
|
337
|
+
rpm: number;
|
|
338
|
+
}, {
|
|
339
|
+
kind: "spin";
|
|
340
|
+
axis: [number, number, number];
|
|
341
|
+
rpm: number;
|
|
342
|
+
}>, z.ZodObject<{
|
|
343
|
+
kind: z.ZodLiteral<"upright">;
|
|
344
|
+
}, "strip", z.ZodTypeAny, {
|
|
345
|
+
kind: "upright";
|
|
346
|
+
}, {
|
|
347
|
+
kind: "upright";
|
|
348
|
+
}>, z.ZodObject<{
|
|
349
|
+
kind: z.ZodLiteral<"pendulum">;
|
|
350
|
+
axis: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
351
|
+
amplitudeDeg: z.ZodNumber;
|
|
352
|
+
periodS: z.ZodNumber;
|
|
353
|
+
}, "strip", z.ZodTypeAny, {
|
|
354
|
+
kind: "pendulum";
|
|
355
|
+
axis: [number, number, number];
|
|
356
|
+
amplitudeDeg: number;
|
|
357
|
+
periodS: number;
|
|
358
|
+
}, {
|
|
359
|
+
kind: "pendulum";
|
|
360
|
+
axis: [number, number, number];
|
|
361
|
+
amplitudeDeg: number;
|
|
362
|
+
periodS: number;
|
|
363
|
+
}>, z.ZodObject<{
|
|
364
|
+
kind: z.ZodLiteral<"none">;
|
|
365
|
+
}, "strip", z.ZodTypeAny, {
|
|
366
|
+
kind: "none";
|
|
367
|
+
}, {
|
|
368
|
+
kind: "none";
|
|
369
|
+
}>]>;
|
|
370
|
+
/** Authored frame. Default: the part's box centre (top centre for upright/pendulum). */
|
|
371
|
+
pivot: z.ZodOptional<z.ZodObject<{
|
|
372
|
+
x: z.ZodNumber;
|
|
373
|
+
y: z.ZodNumber;
|
|
374
|
+
z: z.ZodNumber;
|
|
375
|
+
}, "strip", z.ZodTypeAny, {
|
|
376
|
+
x: number;
|
|
377
|
+
y: number;
|
|
378
|
+
z: number;
|
|
379
|
+
}, {
|
|
380
|
+
x: number;
|
|
381
|
+
y: number;
|
|
382
|
+
z: number;
|
|
383
|
+
}>>;
|
|
384
|
+
}, "strip", z.ZodTypeAny, {
|
|
385
|
+
name: string;
|
|
386
|
+
motion: {
|
|
387
|
+
kind: "spin";
|
|
388
|
+
axis: [number, number, number];
|
|
389
|
+
rpm: number;
|
|
390
|
+
} | {
|
|
391
|
+
kind: "upright";
|
|
392
|
+
} | {
|
|
393
|
+
kind: "pendulum";
|
|
394
|
+
axis: [number, number, number];
|
|
395
|
+
amplitudeDeg: number;
|
|
396
|
+
periodS: number;
|
|
397
|
+
} | {
|
|
398
|
+
kind: "none";
|
|
399
|
+
};
|
|
400
|
+
parent?: string | undefined;
|
|
401
|
+
pivot?: {
|
|
402
|
+
x: number;
|
|
403
|
+
y: number;
|
|
404
|
+
z: number;
|
|
405
|
+
} | undefined;
|
|
406
|
+
}, {
|
|
407
|
+
name: string;
|
|
408
|
+
motion: {
|
|
409
|
+
kind: "spin";
|
|
410
|
+
axis: [number, number, number];
|
|
411
|
+
rpm: number;
|
|
412
|
+
} | {
|
|
413
|
+
kind: "upright";
|
|
414
|
+
} | {
|
|
415
|
+
kind: "pendulum";
|
|
416
|
+
axis: [number, number, number];
|
|
417
|
+
amplitudeDeg: number;
|
|
418
|
+
periodS: number;
|
|
419
|
+
} | {
|
|
420
|
+
kind: "none";
|
|
421
|
+
};
|
|
422
|
+
parent?: string | undefined;
|
|
423
|
+
pivot?: {
|
|
424
|
+
x: number;
|
|
425
|
+
y: number;
|
|
426
|
+
z: number;
|
|
427
|
+
} | undefined;
|
|
428
|
+
}>, "many">;
|
|
429
|
+
lights: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
430
|
+
name: z.ZodString;
|
|
431
|
+
/** Placed at this part's pivot when no `position` is given. */
|
|
432
|
+
part: z.ZodOptional<z.ZodString>;
|
|
433
|
+
position: z.ZodOptional<z.ZodObject<{
|
|
434
|
+
x: z.ZodNumber;
|
|
435
|
+
y: z.ZodNumber;
|
|
436
|
+
z: z.ZodNumber;
|
|
437
|
+
}, "strip", z.ZodTypeAny, {
|
|
438
|
+
x: number;
|
|
439
|
+
y: number;
|
|
440
|
+
z: number;
|
|
441
|
+
}, {
|
|
442
|
+
x: number;
|
|
443
|
+
y: number;
|
|
444
|
+
z: number;
|
|
445
|
+
}>>;
|
|
446
|
+
/** `#rrggbb` */
|
|
447
|
+
color: z.ZodString;
|
|
448
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
449
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
450
|
+
flicker: z.ZodOptional<z.ZodBoolean>;
|
|
451
|
+
}, "strip", z.ZodTypeAny, {
|
|
452
|
+
name: string;
|
|
453
|
+
color: string;
|
|
454
|
+
position?: {
|
|
455
|
+
x: number;
|
|
456
|
+
y: number;
|
|
457
|
+
z: number;
|
|
458
|
+
} | undefined;
|
|
459
|
+
intensity?: number | undefined;
|
|
460
|
+
distance?: number | undefined;
|
|
461
|
+
flicker?: boolean | undefined;
|
|
462
|
+
part?: string | undefined;
|
|
463
|
+
}, {
|
|
464
|
+
name: string;
|
|
465
|
+
color: string;
|
|
466
|
+
position?: {
|
|
467
|
+
x: number;
|
|
468
|
+
y: number;
|
|
469
|
+
z: number;
|
|
470
|
+
} | undefined;
|
|
471
|
+
intensity?: number | undefined;
|
|
472
|
+
distance?: number | undefined;
|
|
473
|
+
flicker?: boolean | undefined;
|
|
474
|
+
part?: string | undefined;
|
|
475
|
+
}>, "many">>;
|
|
476
|
+
}, "strict", z.ZodTypeAny, {
|
|
477
|
+
parts: {
|
|
478
|
+
name: string;
|
|
479
|
+
motion: {
|
|
480
|
+
kind: "spin";
|
|
481
|
+
axis: [number, number, number];
|
|
482
|
+
rpm: number;
|
|
483
|
+
} | {
|
|
484
|
+
kind: "upright";
|
|
485
|
+
} | {
|
|
486
|
+
kind: "pendulum";
|
|
487
|
+
axis: [number, number, number];
|
|
488
|
+
amplitudeDeg: number;
|
|
489
|
+
periodS: number;
|
|
490
|
+
} | {
|
|
491
|
+
kind: "none";
|
|
492
|
+
};
|
|
493
|
+
parent?: string | undefined;
|
|
494
|
+
pivot?: {
|
|
495
|
+
x: number;
|
|
496
|
+
y: number;
|
|
497
|
+
z: number;
|
|
498
|
+
} | undefined;
|
|
499
|
+
}[];
|
|
500
|
+
lights?: {
|
|
501
|
+
name: string;
|
|
502
|
+
color: string;
|
|
503
|
+
position?: {
|
|
504
|
+
x: number;
|
|
505
|
+
y: number;
|
|
506
|
+
z: number;
|
|
507
|
+
} | undefined;
|
|
508
|
+
intensity?: number | undefined;
|
|
509
|
+
distance?: number | undefined;
|
|
510
|
+
flicker?: boolean | undefined;
|
|
511
|
+
part?: string | undefined;
|
|
512
|
+
}[] | undefined;
|
|
513
|
+
}, {
|
|
514
|
+
parts: {
|
|
515
|
+
name: string;
|
|
516
|
+
motion: {
|
|
517
|
+
kind: "spin";
|
|
518
|
+
axis: [number, number, number];
|
|
519
|
+
rpm: number;
|
|
520
|
+
} | {
|
|
521
|
+
kind: "upright";
|
|
522
|
+
} | {
|
|
523
|
+
kind: "pendulum";
|
|
524
|
+
axis: [number, number, number];
|
|
525
|
+
amplitudeDeg: number;
|
|
526
|
+
periodS: number;
|
|
527
|
+
} | {
|
|
528
|
+
kind: "none";
|
|
529
|
+
};
|
|
530
|
+
parent?: string | undefined;
|
|
531
|
+
pivot?: {
|
|
532
|
+
x: number;
|
|
533
|
+
y: number;
|
|
534
|
+
z: number;
|
|
535
|
+
} | undefined;
|
|
536
|
+
}[];
|
|
537
|
+
lights?: {
|
|
538
|
+
name: string;
|
|
539
|
+
color: string;
|
|
540
|
+
position?: {
|
|
541
|
+
x: number;
|
|
542
|
+
y: number;
|
|
543
|
+
z: number;
|
|
544
|
+
} | undefined;
|
|
545
|
+
intensity?: number | undefined;
|
|
546
|
+
distance?: number | undefined;
|
|
547
|
+
flicker?: boolean | undefined;
|
|
548
|
+
part?: string | undefined;
|
|
549
|
+
}[] | undefined;
|
|
550
|
+
}>;
|
|
551
|
+
export type SmartPropSpec = z.infer<typeof smartPropSpecSchema>;
|
|
552
|
+
/** The subset a hint can be written from — fitment parts and spec parts both have it. */
|
|
553
|
+
export interface SmartBehaviourPart {
|
|
554
|
+
name: string;
|
|
555
|
+
parent?: string;
|
|
556
|
+
motion: SmartObjectMotion;
|
|
557
|
+
}
|
|
558
|
+
export interface SmartBehaviourLight {
|
|
559
|
+
name?: string;
|
|
560
|
+
color?: string;
|
|
561
|
+
flicker?: boolean;
|
|
562
|
+
part?: string;
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* A prop's declared behaviour as one sentence — the HINT a regeneration hands
|
|
566
|
+
* the Forger's analysis so the new geometry is searched with the right
|
|
567
|
+
* vocabulary: "Moving parts: blades spins about the z axis at 12 rpm; 8 cabins
|
|
568
|
+
* hang upright from wheel. Lights: lamp_head (#ffd27a, flickers)."
|
|
569
|
+
*
|
|
570
|
+
* Repeated `upright` children of one parent collapse to a count, because a
|
|
571
|
+
* ferris wheel with twelve cabins would otherwise spend the whole hint budget
|
|
572
|
+
* on its cabins. Empty when there is nothing to say.
|
|
573
|
+
*/
|
|
574
|
+
export declare function describeSmartBehaviour(parts: readonly SmartBehaviourPart[], lights?: readonly SmartBehaviourLight[]): string;
|
|
314
575
|
/**
|
|
315
576
|
* The `smart` request field: `true` for analysis with no designer hint, or the
|
|
316
577
|
* hint itself ("the blades should spin"). Shared by every generator that can
|
|
@@ -1 +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;
|
|
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;AAIpE;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB;;QAE5B,4CAA4C;;QAE5C,yDAAyD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGzD,wFAAwF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKxF,+DAA+D;;;;;;;;;;;;;;;QAG/D,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMT,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,kBAAkB,EAAE,EACpC,MAAM,GAAE,SAAS,mBAAmB,EAAO,GAC1C,MAAM,CAmCR;AAUD;;;;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"}
|
package/dist/smart-object.js
CHANGED
|
@@ -57,6 +57,100 @@ export const smartObjectSpecSchema = z.object({
|
|
|
57
57
|
notes: z.string().optional(),
|
|
58
58
|
model: z.string().optional(),
|
|
59
59
|
});
|
|
60
|
+
const authoredVec3 = z.object({ x: z.number(), y: z.number(), z: z.number() });
|
|
61
|
+
/**
|
|
62
|
+
* What a PLACEHOLDER declares about itself, in its own authored frame — the
|
|
63
|
+
* World-Forger's primitive props and the agent's `create-voxel-asset` boxes.
|
|
64
|
+
*
|
|
65
|
+
* Unlike `SmartObjectSpec` there are no boxes here: the authoring lane already
|
|
66
|
+
* knows which primitives make up a part (they carry a `part` name), so the
|
|
67
|
+
* bake decides voxel ownership from geometry it has and this only says how
|
|
68
|
+
* the named parts MOVE and where the lights are. One definition, read by the
|
|
69
|
+
* designer schema, the agent tool and the engine's bake.
|
|
70
|
+
*/
|
|
71
|
+
export const smartPropSpecSchema = z.object({
|
|
72
|
+
parts: z.array(z.object({
|
|
73
|
+
/** The `part` name the primitives carry. */
|
|
74
|
+
name: z.string().min(1).max(32).regex(/^[A-Za-z][A-Za-z0-9_]*$/),
|
|
75
|
+
/** Another part's name; absent means the static body. */
|
|
76
|
+
parent: z.string().optional(),
|
|
77
|
+
motion: smartObjectMotionSchema,
|
|
78
|
+
/** Authored frame. Default: the part's box centre (top centre for upright/pendulum). */
|
|
79
|
+
pivot: authoredVec3.optional(),
|
|
80
|
+
})).max(24),
|
|
81
|
+
lights: z.array(z.object({
|
|
82
|
+
name: z.string().min(1).max(32),
|
|
83
|
+
/** Placed at this part's pivot when no `position` is given. */
|
|
84
|
+
part: z.string().optional(),
|
|
85
|
+
position: authoredVec3.optional(),
|
|
86
|
+
/** `#rrggbb` */
|
|
87
|
+
color: z.string(),
|
|
88
|
+
intensity: z.number().positive().optional(),
|
|
89
|
+
distance: z.number().positive().optional(),
|
|
90
|
+
flicker: z.boolean().optional(),
|
|
91
|
+
})).max(8).optional(),
|
|
92
|
+
}).strict();
|
|
93
|
+
function dominantAxisName(axis) {
|
|
94
|
+
const [x = 0, y = 0, z = 0] = axis;
|
|
95
|
+
const ax = Math.abs(x), ay = Math.abs(y), az = Math.abs(z);
|
|
96
|
+
return ax >= ay && ax >= az ? 'x' : ay >= az ? 'y' : 'z';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* A prop's declared behaviour as one sentence — the HINT a regeneration hands
|
|
100
|
+
* the Forger's analysis so the new geometry is searched with the right
|
|
101
|
+
* vocabulary: "Moving parts: blades spins about the z axis at 12 rpm; 8 cabins
|
|
102
|
+
* hang upright from wheel. Lights: lamp_head (#ffd27a, flickers)."
|
|
103
|
+
*
|
|
104
|
+
* Repeated `upright` children of one parent collapse to a count, because a
|
|
105
|
+
* ferris wheel with twelve cabins would otherwise spend the whole hint budget
|
|
106
|
+
* on its cabins. Empty when there is nothing to say.
|
|
107
|
+
*/
|
|
108
|
+
export function describeSmartBehaviour(parts, lights = []) {
|
|
109
|
+
const phrases = [];
|
|
110
|
+
const uprightByParent = new Map();
|
|
111
|
+
for (const part of parts) {
|
|
112
|
+
const { motion } = part;
|
|
113
|
+
switch (motion.kind) {
|
|
114
|
+
case 'spin':
|
|
115
|
+
phrases.push(`${part.name} spins about the ${dominantAxisName(motion.axis)} axis at ${motion.rpm} rpm`);
|
|
116
|
+
break;
|
|
117
|
+
case 'pendulum':
|
|
118
|
+
phrases.push(`${part.name} swings ${motion.amplitudeDeg} degrees either way every ${motion.periodS} s`);
|
|
119
|
+
break;
|
|
120
|
+
case 'upright': {
|
|
121
|
+
const parent = part.parent ?? 'the body';
|
|
122
|
+
uprightByParent.set(parent, [...(uprightByParent.get(parent) ?? []), part.name]);
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
default:
|
|
126
|
+
phrases.push(`${part.name} is a separate, non-moving part`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
for (const [parent, names] of uprightByParent) {
|
|
130
|
+
phrases.push(names.length === 1
|
|
131
|
+
? `${names[0]} hangs upright from ${parent}`
|
|
132
|
+
: `${names.length} ${commonStem(names)} hang upright from ${parent}`);
|
|
133
|
+
}
|
|
134
|
+
const lightPhrases = lights.map((light, index) => {
|
|
135
|
+
const details = [light.color, light.flicker ? 'flickers' : '', light.part ? `on ${light.part}` : '']
|
|
136
|
+
.filter(Boolean).join(', ');
|
|
137
|
+
return `${light.name ?? `light ${index + 1}`}${details ? ` (${details})` : ''}`;
|
|
138
|
+
});
|
|
139
|
+
const sentences = [];
|
|
140
|
+
if (phrases.length > 0)
|
|
141
|
+
sentences.push(`Moving parts: ${phrases.join('; ')}.`);
|
|
142
|
+
if (lightPhrases.length > 0)
|
|
143
|
+
sentences.push(`Lights: ${lightPhrases.join(', ')}.`);
|
|
144
|
+
return sentences.join(' ');
|
|
145
|
+
}
|
|
146
|
+
/** "cabin_1", "cabin_2" → "cabins"; unrelated names → "parts". */
|
|
147
|
+
function commonStem(names) {
|
|
148
|
+
const stems = new Set(names.map((name) => name.replace(/[_-]?\d+$/, '')));
|
|
149
|
+
if (stems.size !== 1)
|
|
150
|
+
return 'parts';
|
|
151
|
+
const stem = [...stems][0];
|
|
152
|
+
return stem.endsWith('s') ? stem : `${stem}s`;
|
|
153
|
+
}
|
|
60
154
|
/**
|
|
61
155
|
* The `smart` request field: `true` for analysis with no designer hint, or the
|
|
62
156
|
* hint itself ("the blades should spin"). Shared by every generator that can
|
package/dist/smart-object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-object.js","sourceRoot":"","sources":["../src/smart-object.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smart-object.js","sourceRoot":"","sources":["../src/smart-object.ts"],"names":[],"mappings":"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"}
|