@aura3d/cli 1.0.10 → 1.3.0
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/animation-asset-profiles.d.ts +15 -0
- package/dist/animation-asset-profiles.d.ts.map +1 -0
- package/dist/animation-asset-profiles.js +46 -0
- package/dist/animation-asset-profiles.js.map +1 -0
- package/dist/animation-asset-validator.d.ts +22 -0
- package/dist/animation-asset-validator.d.ts.map +1 -0
- package/dist/animation-asset-validator.js +49 -0
- package/dist/animation-asset-validator.js.map +1 -0
- package/dist/cartoon-asset-profiles.d.ts +1 -0
- package/dist/cartoon-asset-profiles.d.ts.map +1 -1
- package/dist/cartoon-asset-profiles.js +8 -4
- package/dist/cartoon-asset-profiles.js.map +1 -1
- package/dist/cli.js +78 -9
- package/dist/cli.js.map +1 -1
- package/dist/game-asset-validator.d.ts +4 -4
- package/dist/game-asset-validator.d.ts.map +1 -1
- package/dist/game-asset-validator.js +2 -2
- package/dist/game-asset-validator.js.map +1 -1
- package/dist/index.d.ts +69 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +261 -17
- package/dist/index.js.map +1 -1
- package/dist/pull-bridge.d.ts +30 -4
- package/dist/pull-bridge.d.ts.map +1 -1
- package/dist/pull-bridge.js +320 -51
- package/dist/pull-bridge.js.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export
|
|
1
|
+
export { animationCliAssetProfiles, getAnimationAssetProfileDefinition } from "./animation-asset-profiles.js";
|
|
2
|
+
export { validateAnimationAssets, parseAnimationClipMap, DEFAULT_ANIMATION_ACTIONS } from "./animation-asset-validator.js";
|
|
3
|
+
export type { AnimationAssetValidationOptions, AnimationAssetValidationReport } from "./animation-asset-validator.js";
|
|
4
|
+
export type { AuraCliAnimationAssetProfile, AuraCliAnimationAssetProfileDefinition } from "./animation-asset-profiles.js";
|
|
3
5
|
export type AuraCliAssetType = "model" | "texture" | "environment" | "audio";
|
|
4
6
|
export type AuraCliHumanoidStatus = "humanoid" | "non-humanoid" | "unknown";
|
|
5
7
|
export type AuraCliHumanoidConfidence = "high" | "medium" | "low";
|
|
@@ -79,6 +81,10 @@ export interface AuraCliAssetProvenance {
|
|
|
79
81
|
readonly author?: string;
|
|
80
82
|
readonly sourceFamily?: string;
|
|
81
83
|
readonly attribution?: string;
|
|
84
|
+
/** sha256 of the downloaded bytes (provenance for pulled catalog assets). */
|
|
85
|
+
readonly sha256?: string;
|
|
86
|
+
/** ISO timestamp the asset was retrieved from its source (injectable). */
|
|
87
|
+
readonly retrievedAt?: string;
|
|
82
88
|
readonly evidence?: readonly string[];
|
|
83
89
|
readonly checkedAt: string;
|
|
84
90
|
}
|
|
@@ -129,6 +135,13 @@ export interface AddAssetOptions {
|
|
|
129
135
|
readonly author?: string;
|
|
130
136
|
readonly sourceFamily?: string;
|
|
131
137
|
readonly attribution?: string;
|
|
138
|
+
/** sha256 of the retrieved bytes, captured by the pull/resolve flow. */
|
|
139
|
+
readonly sha256?: string;
|
|
140
|
+
/**
|
|
141
|
+
* ISO timestamp the asset was retrieved. Injectable so deterministic builds can
|
|
142
|
+
* pin it; when omitted, provenance falls back to wall-clock `checkedAt`.
|
|
143
|
+
*/
|
|
144
|
+
readonly retrievedAt?: string;
|
|
132
145
|
}
|
|
133
146
|
export interface AssetCliResult {
|
|
134
147
|
readonly ok: boolean;
|
|
@@ -147,13 +160,14 @@ export interface AssetValidationOptions {
|
|
|
147
160
|
readonly provenanceFile?: string;
|
|
148
161
|
readonly assetIds?: readonly string[];
|
|
149
162
|
}
|
|
150
|
-
export type AuraAssetReadinessProfile = "game" | "
|
|
163
|
+
export type AuraAssetReadinessProfile = "game" | "animation";
|
|
151
164
|
export type AuraGameAssetReadinessProfile = "fighting-character";
|
|
152
165
|
export type AuraAssetReadinessStatus = "passed" | "failed";
|
|
153
166
|
export interface AssetReadinessOptions {
|
|
154
167
|
readonly projectDir?: string;
|
|
155
168
|
readonly output?: string;
|
|
156
169
|
readonly gameProfile?: AuraGameAssetReadinessProfile;
|
|
170
|
+
readonly episode?: boolean;
|
|
157
171
|
readonly noPlaceholders?: boolean;
|
|
158
172
|
readonly requireLicense?: boolean;
|
|
159
173
|
readonly provenanceFile?: string;
|
|
@@ -170,6 +184,7 @@ export interface AssetReadinessReport {
|
|
|
170
184
|
readonly manifestPath: string;
|
|
171
185
|
readonly artifacts: AssetReadinessArtifacts;
|
|
172
186
|
readonly contracts: readonly AssetReadinessValidationContract[];
|
|
187
|
+
readonly animationEpisode?: AnimationEpisodeReadinessReport;
|
|
173
188
|
readonly summary: {
|
|
174
189
|
readonly totalAssets: number;
|
|
175
190
|
readonly modelAssets: number;
|
|
@@ -179,6 +194,12 @@ export interface AssetReadinessReport {
|
|
|
179
194
|
readonly environmentAssets: number;
|
|
180
195
|
readonly animationClips: number;
|
|
181
196
|
readonly humanoidModels: number;
|
|
197
|
+
readonly animationCharacters?: number;
|
|
198
|
+
readonly animationSets?: number;
|
|
199
|
+
readonly animationProps?: number;
|
|
200
|
+
readonly episodeReadyCharacters?: number;
|
|
201
|
+
readonly mouthReadyCharacters?: number;
|
|
202
|
+
readonly animationReadyCharacters?: number;
|
|
182
203
|
readonly profileTargetAssets?: number;
|
|
183
204
|
readonly profileReadyAssets?: number;
|
|
184
205
|
readonly profileSkippedAssets?: number;
|
|
@@ -188,9 +209,48 @@ export interface AssetReadinessReport {
|
|
|
188
209
|
readonly warnings: readonly string[];
|
|
189
210
|
readonly messages: readonly string[];
|
|
190
211
|
}
|
|
212
|
+
export type AnimationEpisodeAssetRole = "character" | "set" | "prop" | "environment" | "audio" | "texture" | "unknown";
|
|
213
|
+
export type AnimationEpisodeMouthReadinessMode = "blendshape-lip-sync" | "primitive-mouth-card" | "amplitude-only" | "missing-mouth-motion";
|
|
214
|
+
export interface AnimationEpisodeAssetReadiness {
|
|
215
|
+
readonly id: string;
|
|
216
|
+
readonly role: AnimationEpisodeAssetRole;
|
|
217
|
+
readonly episodeReady: boolean;
|
|
218
|
+
readonly distinctHash?: string;
|
|
219
|
+
readonly licenseVerified: boolean;
|
|
220
|
+
readonly provenanceReady: boolean;
|
|
221
|
+
readonly placeholderFree: boolean;
|
|
222
|
+
readonly animationReady: boolean;
|
|
223
|
+
readonly mouthReady: boolean;
|
|
224
|
+
readonly mouthMode?: AnimationEpisodeMouthReadinessMode;
|
|
225
|
+
readonly setReady?: boolean;
|
|
226
|
+
readonly warnings: readonly string[];
|
|
227
|
+
readonly failures: readonly string[];
|
|
228
|
+
}
|
|
229
|
+
export interface AnimationEpisodeReadinessReport {
|
|
230
|
+
readonly enabled: boolean;
|
|
231
|
+
readonly ok: boolean;
|
|
232
|
+
readonly mode: "episode-ready";
|
|
233
|
+
readonly requirements: {
|
|
234
|
+
readonly minDistinctCharacters: number;
|
|
235
|
+
readonly minSets: number;
|
|
236
|
+
readonly requireLicense: boolean;
|
|
237
|
+
readonly noPlaceholders: boolean;
|
|
238
|
+
readonly requireAnimation: boolean;
|
|
239
|
+
readonly requireMouthMotion: boolean;
|
|
240
|
+
readonly requireSetScale: boolean;
|
|
241
|
+
};
|
|
242
|
+
readonly selectedCharacters: readonly string[];
|
|
243
|
+
readonly selectedSets: readonly string[];
|
|
244
|
+
readonly selectedProps: readonly string[];
|
|
245
|
+
readonly selectedAudio: readonly string[];
|
|
246
|
+
readonly readiness: readonly AnimationEpisodeAssetReadiness[];
|
|
247
|
+
readonly assetProvenanceArtifact: string;
|
|
248
|
+
readonly failures: readonly string[];
|
|
249
|
+
readonly warnings: readonly string[];
|
|
250
|
+
}
|
|
191
251
|
export interface AssetReadinessValidatorEvidence {
|
|
192
|
-
readonly id: "aura-clash-game-assets" | "aura-voice-
|
|
193
|
-
readonly command: "assets validate-game" | "assets validate-
|
|
252
|
+
readonly id: "aura-clash-game-assets" | "aura-voice-animation-assets";
|
|
253
|
+
readonly command: "assets validate-game" | "assets validate-animation";
|
|
194
254
|
readonly label: string;
|
|
195
255
|
}
|
|
196
256
|
export interface AssetReadinessValidationContract {
|
|
@@ -198,7 +258,7 @@ export interface AssetReadinessValidationContract {
|
|
|
198
258
|
readonly label: string;
|
|
199
259
|
readonly profile: AuraAssetReadinessProfile;
|
|
200
260
|
readonly sourceFamily?: "Quaternius" | "AuraVoice" | "custom";
|
|
201
|
-
readonly intendedUse?: "fighter" | "
|
|
261
|
+
readonly intendedUse?: "fighter" | "animation-character" | "set" | "prop";
|
|
202
262
|
readonly sourceOnly: boolean;
|
|
203
263
|
readonly requiredChecks: readonly string[];
|
|
204
264
|
readonly requiredAnimationClips?: readonly string[];
|
|
@@ -236,6 +296,7 @@ export interface AssetReadinessAssetReport {
|
|
|
236
296
|
readonly source: string;
|
|
237
297
|
readonly outputPath: string;
|
|
238
298
|
readonly url: string;
|
|
299
|
+
readonly hash: string;
|
|
239
300
|
readonly sizeBytes: number;
|
|
240
301
|
readonly bounds?: readonly [number, number, number];
|
|
241
302
|
readonly boundsMetadata?: AuraCliAssetBoundsInspection;
|
|
@@ -255,7 +316,7 @@ export interface AssetReadinessAssetReport {
|
|
|
255
316
|
readonly nodeNames?: readonly string[];
|
|
256
317
|
readonly artifactPaths: AssetReadinessAssetArtifacts;
|
|
257
318
|
readonly gameReady: boolean;
|
|
258
|
-
readonly
|
|
319
|
+
readonly animationReady: boolean;
|
|
259
320
|
readonly profileTarget?: boolean;
|
|
260
321
|
readonly profileReady?: boolean;
|
|
261
322
|
readonly profileSkippedReason?: string;
|
|
@@ -355,7 +416,7 @@ export declare function checkDeploy(options?: {
|
|
|
355
416
|
readonly distDir?: string;
|
|
356
417
|
}): AssetValidationResult;
|
|
357
418
|
export declare function validateGameAssets(options?: AssetReadinessOptions): AssetReadinessReport;
|
|
358
|
-
export declare function
|
|
419
|
+
export declare function validateAnimationStudioAssets(options?: AssetReadinessOptions): AssetReadinessReport;
|
|
359
420
|
export declare function createCharacterAssemblyPlan(options: CharacterAssemblyPlanOptions): CharacterAssemblyPlanResult;
|
|
360
421
|
export declare function initAgentFiles(options: {
|
|
361
422
|
readonly projectDir?: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/aura3d-cli/src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/aura3d-cli/src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EACnC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3H,YAAY,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AACtH,YAAY,EACV,4BAA4B,EAC5B,sCAAsC,EACvC,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;AAC7E,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;AAC5E,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACjE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,WAAW,CAAC;AAC7D,MAAM,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AACjE,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,6BAA6B,CAAC;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,6BAA6B,CAAC;IACrD,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,+BAA+B,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAChE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,+BAA+B,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;QACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;QACvC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;KACxC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,yBAAyB,GACjC,WAAW,GACX,KAAK,GACL,MAAM,GACN,aAAa,GACb,OAAO,GACP,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,kCAAkC,GAC1C,qBAAqB,GACrB,sBAAsB,GACtB,gBAAgB,GAChB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,kCAAkC,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;QACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;QACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;QACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;QACrC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAC9D,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,EAAE,EAAE,wBAAwB,GAAG,6BAA6B,CAAC;IACtE,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,2BAA2B,CAAC;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,qBAAqB,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,mCAAmC,EAAE,CAAC;CAChE;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,+BAA+B,CAAC;IACpD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACjE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACjE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,+BAA+B,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAC9D,eAAO,MAAM,6BAA6B,uBAAuB,CAAC;AAClE,eAAO,MAAM,8BAA8B,kBAAkB,CAAC;AAC9D,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA0EjE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAmBhH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,qBAAqB,CAgChF;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,sBAA2B,GAAG,qBAAqB,CAqD1F;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,uBAAgC,GAAG,MAAM,CAiDrG;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,iBAAiB,EAAE,CAEvG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,cAAc,CAgBpG;AAED,wBAAgB,MAAM,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,qBAAqB,CAW5F;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,qBAAqB,CAyB5H;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CAE5F;AAED,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CAEvG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,4BAA4B,GAAG,2BAA2B,CAiF9G;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,CAAA;CAAE,GAAG,SAAS,MAAM,EAAE,CAWhK;AA4vBD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAc1E;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAE3F"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { dirname, extname, join, relative, resolve } from "node:path";
|
|
4
|
-
export {
|
|
4
|
+
export { animationCliAssetProfiles, getAnimationAssetProfileDefinition } from "./animation-asset-profiles.js";
|
|
5
|
+
export { validateAnimationAssets, parseAnimationClipMap, DEFAULT_ANIMATION_ACTIONS } from "./animation-asset-validator.js";
|
|
5
6
|
export const DEFAULT_AURA_ASSET_MANIFEST = "aura.assets.json";
|
|
6
7
|
export const DEFAULT_AURA_ASSET_OUTPUT_DIR = "public/aura-assets";
|
|
7
8
|
export const DEFAULT_AURA_ASSET_PUBLIC_PATH = "/aura-assets/";
|
|
@@ -14,6 +15,9 @@ export function addAsset(options) {
|
|
|
14
15
|
}
|
|
15
16
|
const manifestPath = resolve(projectDir, DEFAULT_AURA_ASSET_MANIFEST);
|
|
16
17
|
const current = readAssetManifest(projectDir);
|
|
18
|
+
// Re-adding (e.g. resolve overwriting) must not silently drop hand-authored
|
|
19
|
+
// provenance the new add does not re-supply (license/attribution/author/etc.).
|
|
20
|
+
const existing = current.assets.find((asset) => asset.id === options.name);
|
|
17
21
|
const outputDir = normalizeRelativePath(options.outputDir ?? current.outputDir ?? DEFAULT_AURA_ASSET_OUTPUT_DIR);
|
|
18
22
|
const publicPath = normalizePublicPath(options.publicPath ?? current.assetBasePath ?? DEFAULT_AURA_ASSET_PUBLIC_PATH);
|
|
19
23
|
const typegen = normalizeRelativePath(options.typegen ?? current.typegen ?? DEFAULT_AURA_ASSET_TYPEGEN);
|
|
@@ -47,7 +51,7 @@ export function addAsset(options) {
|
|
|
47
51
|
humanoid: inspection.humanoid,
|
|
48
52
|
skeleton: inspection.skeleton,
|
|
49
53
|
morphTargets: inspection.morphTargets,
|
|
50
|
-
provenance: createAssetProvenance(projectDir, sourcePath, options, inspection.provenance),
|
|
54
|
+
provenance: createAssetProvenance(projectDir, sourcePath, options, mergeDetectedProvenance(existing?.provenance, inspection.provenance)),
|
|
51
55
|
textures: inspection.textures,
|
|
52
56
|
dependencies: inspection.dependencies,
|
|
53
57
|
orientation: inspection.orientation,
|
|
@@ -305,8 +309,8 @@ export function checkDeploy(options = {}) {
|
|
|
305
309
|
export function validateGameAssets(options = {}) {
|
|
306
310
|
return validateAssetReadiness("game", options);
|
|
307
311
|
}
|
|
308
|
-
export function
|
|
309
|
-
return validateAssetReadiness("
|
|
312
|
+
export function validateAnimationStudioAssets(options = {}) {
|
|
313
|
+
return validateAssetReadiness("animation", options);
|
|
310
314
|
}
|
|
311
315
|
export function createCharacterAssemblyPlan(options) {
|
|
312
316
|
const projectDir = resolve(options.projectDir ?? process.cwd());
|
|
@@ -468,7 +472,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
468
472
|
pushUnique(warnings, [...readinessIssues.warnings, ...profileIssues.warnings]);
|
|
469
473
|
const gameReady = asset.type === "model" && Boolean(asset.bounds) && asset.materials.length > 0 && asset.sizeBytes <= 50 * 1024 * 1024 && readinessIssues.failures.length === 0 && profileIssues.failures.length === 0;
|
|
470
474
|
const profileReady = profileTarget && gameReady;
|
|
471
|
-
const
|
|
475
|
+
const animationReady = asset.type === "model"
|
|
472
476
|
? Boolean(asset.bounds) && (asset.animations.length > 0 || /prop|set|stage|background|environment/i.test(asset.id))
|
|
473
477
|
: asset.type === "audio" || asset.type === "texture";
|
|
474
478
|
const artifactPaths = artifacts.assetFiles.find((entry) => entry.id === asset.id) ?? createReadinessAssetArtifacts(projectDir, manifest, asset);
|
|
@@ -479,6 +483,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
479
483
|
source: asset.source,
|
|
480
484
|
outputPath: asset.outputPath,
|
|
481
485
|
url: asset.url,
|
|
486
|
+
hash: asset.hash,
|
|
482
487
|
sizeBytes: asset.sizeBytes,
|
|
483
488
|
bounds: asset.bounds,
|
|
484
489
|
boundsMetadata: asset.boundsMetadata,
|
|
@@ -498,7 +503,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
498
503
|
nodeNames: asset.nodeNames,
|
|
499
504
|
artifactPaths,
|
|
500
505
|
gameReady,
|
|
501
|
-
|
|
506
|
+
animationReady,
|
|
502
507
|
...(gameProfile === "fighting-character" ? { profileTarget, profileReady, ...(profileSkippedReason ? { profileSkippedReason } : {}) } : {}),
|
|
503
508
|
warnings: assetWarnings
|
|
504
509
|
};
|
|
@@ -543,18 +548,25 @@ function validateAssetReadiness(profile, options) {
|
|
|
543
548
|
}
|
|
544
549
|
else {
|
|
545
550
|
if (modelAssets.length === 0)
|
|
546
|
-
failures.push("
|
|
551
|
+
failures.push("Animation readiness requires at least one typed model/set/prop GLB or GLTF.");
|
|
547
552
|
if (animatedModels.length === 0)
|
|
548
553
|
warnings.push("No animated character clips detected. Prompt-to-episode output can use transform animation, but character acting needs skeletal or pose clips.");
|
|
549
554
|
if (animatedModels.length > 0 && humanoidModels === 0)
|
|
550
|
-
warnings.push("No humanoid model metadata detected. Acting-heavy
|
|
555
|
+
warnings.push("No humanoid model metadata detected. Acting-heavy animation routes should confirm character rigs with assets inspect --humanoid.");
|
|
551
556
|
const audioAssets = manifest.assets.filter((asset) => asset.type === "audio");
|
|
552
557
|
if (audioAssets.length === 0)
|
|
553
558
|
warnings.push("No audio assets detected. AuraVoice bridge can still reference external narration manifests, but local episode proof is stronger with audio registered.");
|
|
554
559
|
}
|
|
560
|
+
const animationEpisode = profile === "animation"
|
|
561
|
+
? createAnimationEpisodeReadinessReport(manifest, assets, options)
|
|
562
|
+
: undefined;
|
|
563
|
+
if (animationEpisode && options.episode) {
|
|
564
|
+
pushUnique(failures, animationEpisode.failures);
|
|
565
|
+
pushUnique(warnings, animationEpisode.warnings);
|
|
566
|
+
}
|
|
555
567
|
const ok = failures.length === 0;
|
|
556
568
|
const baseMessage = ok
|
|
557
|
-
? `${profile === "game" ? "Game" : "
|
|
569
|
+
? `${profile === "game" ? "Game" : "Animation"} asset readiness report completed.`
|
|
558
570
|
: failures;
|
|
559
571
|
const messages = [
|
|
560
572
|
...(Array.isArray(baseMessage) ? baseMessage : [baseMessage]),
|
|
@@ -571,6 +583,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
571
583
|
manifestPath,
|
|
572
584
|
artifacts,
|
|
573
585
|
contracts: createReadinessValidationContracts(profile),
|
|
586
|
+
...(animationEpisode ? { animationEpisode } : {}),
|
|
574
587
|
summary: {
|
|
575
588
|
totalAssets: manifest.assets.length,
|
|
576
589
|
modelAssets: modelAssets.length,
|
|
@@ -580,6 +593,16 @@ function validateAssetReadiness(profile, options) {
|
|
|
580
593
|
environmentAssets: manifest.assets.filter((asset) => asset.type === "environment").length,
|
|
581
594
|
animationClips,
|
|
582
595
|
humanoidModels,
|
|
596
|
+
...(animationEpisode
|
|
597
|
+
? {
|
|
598
|
+
animationCharacters: animationEpisode.selectedCharacters.length,
|
|
599
|
+
animationSets: animationEpisode.selectedSets.length,
|
|
600
|
+
animationProps: animationEpisode.selectedProps.length,
|
|
601
|
+
episodeReadyCharacters: animationEpisode.readiness.filter((entry) => entry.role === "character" && entry.episodeReady).length,
|
|
602
|
+
mouthReadyCharacters: animationEpisode.readiness.filter((entry) => entry.role === "character" && entry.mouthReady).length,
|
|
603
|
+
animationReadyCharacters: animationEpisode.readiness.filter((entry) => entry.role === "character" && entry.animationReady).length
|
|
604
|
+
}
|
|
605
|
+
: {}),
|
|
583
606
|
...(gameProfile === "fighting-character"
|
|
584
607
|
? {
|
|
585
608
|
profileTargetAssets: profileTargetAssets.length,
|
|
@@ -641,9 +664,9 @@ function createReadinessValidatorEvidence(profile) {
|
|
|
641
664
|
label: "AuraClash game asset validator"
|
|
642
665
|
}
|
|
643
666
|
: {
|
|
644
|
-
id: "aura-voice-
|
|
645
|
-
command: "assets validate-
|
|
646
|
-
label: "AuraVoice
|
|
667
|
+
id: "aura-voice-animation-assets",
|
|
668
|
+
command: "assets validate-animation",
|
|
669
|
+
label: "AuraVoice animation asset validator"
|
|
647
670
|
};
|
|
648
671
|
}
|
|
649
672
|
function createReadinessValidationContracts(profile) {
|
|
@@ -675,11 +698,11 @@ function createReadinessValidationContracts(profile) {
|
|
|
675
698
|
}
|
|
676
699
|
return [
|
|
677
700
|
{
|
|
678
|
-
id: "auravoice-
|
|
679
|
-
label: "AuraVoice
|
|
680
|
-
profile: "
|
|
701
|
+
id: "auravoice-animation-character-asset-validation-contract",
|
|
702
|
+
label: "AuraVoice animation asset validation contract",
|
|
703
|
+
profile: "animation",
|
|
681
704
|
sourceFamily: "AuraVoice",
|
|
682
|
-
intendedUse: "
|
|
705
|
+
intendedUse: "animation-character",
|
|
683
706
|
sourceOnly: true,
|
|
684
707
|
requiredChecks: [
|
|
685
708
|
"typed Aura model, texture, audio, or environment asset entry",
|
|
@@ -687,7 +710,7 @@ function createReadinessValidationContracts(profile) {
|
|
|
687
710
|
"animation or transform-ready character metadata",
|
|
688
711
|
"audio or external AuraVoice manifest references for stronger episode proof"
|
|
689
712
|
],
|
|
690
|
-
evidenceBoundary: "This CLI contract is source-only. It does not prove
|
|
713
|
+
evidenceBoundary: "This CLI contract is source-only. It does not prove animation route readiness until validate-animation output, rendered frames, timing proof, and AuraVoice evidence are archived."
|
|
691
714
|
}
|
|
692
715
|
];
|
|
693
716
|
}
|
|
@@ -725,6 +748,198 @@ function createReadinessAnimationMetadata(animations) {
|
|
|
725
748
|
clips: animations.map((name, index) => ({ index, name }))
|
|
726
749
|
};
|
|
727
750
|
}
|
|
751
|
+
function createAnimationEpisodeReadinessReport(manifest, assets, options) {
|
|
752
|
+
const readiness = assets.map(createAnimationEpisodeAssetReadiness);
|
|
753
|
+
const characters = readiness.filter((entry) => entry.role === "character");
|
|
754
|
+
const sets = readiness.filter((entry) => entry.role === "set");
|
|
755
|
+
const props = readiness.filter((entry) => entry.role === "prop");
|
|
756
|
+
const audio = readiness.filter((entry) => entry.role === "audio");
|
|
757
|
+
const failures = [];
|
|
758
|
+
const warnings = [];
|
|
759
|
+
const distinctCharacterHashes = new Set(characters.map((entry) => entry.distinctHash).filter(Boolean));
|
|
760
|
+
const readyCharacters = characters.filter((entry) => entry.episodeReady);
|
|
761
|
+
const readySets = sets.filter((entry) => entry.episodeReady);
|
|
762
|
+
if (characters.length < 2) {
|
|
763
|
+
failures.push(`animation episode validation requires at least 2 typed animation character assets; found ${characters.length}${characters.length ? `: ${characters.map((entry) => entry.id).join(", ")}` : ""}.`);
|
|
764
|
+
}
|
|
765
|
+
if (characters.length >= 2 && distinctCharacterHashes.size < characters.length) {
|
|
766
|
+
failures.push("animation episode validation requires distinct character files/hashes; duplicated character assets cannot prove a two-character episode cast.");
|
|
767
|
+
}
|
|
768
|
+
if (readyCharacters.length < 2) {
|
|
769
|
+
failures.push(`animation episode validation found only ${readyCharacters.length} episode-ready character asset${readyCharacters.length === 1 ? "" : "s"}; required 2 with license, provenance, animation, and mouth readiness.`);
|
|
770
|
+
}
|
|
771
|
+
if (sets.length < 1) {
|
|
772
|
+
failures.push("animation episode validation requires at least 1 typed animation set/location asset.");
|
|
773
|
+
}
|
|
774
|
+
if (readySets.length < 1) {
|
|
775
|
+
failures.push("animation episode validation requires at least 1 episode-ready set with license, provenance, bounds, readable materials, and walkable scale.");
|
|
776
|
+
}
|
|
777
|
+
for (const entry of readiness) {
|
|
778
|
+
pushUnique(failures, entry.failures);
|
|
779
|
+
pushUnique(warnings, entry.warnings);
|
|
780
|
+
}
|
|
781
|
+
if (audio.length === 0) {
|
|
782
|
+
warnings.push("animation episode validation found no typed audio assets; publish-ready dialogue/audio proof will need registered dialogue, music, or SFX stems.");
|
|
783
|
+
}
|
|
784
|
+
const evidenceDirectory = options.output ? dirname(normalizeRelativePath(options.output)) : "artifacts/aura3d";
|
|
785
|
+
return {
|
|
786
|
+
enabled: Boolean(options.episode),
|
|
787
|
+
ok: failures.length === 0,
|
|
788
|
+
mode: "episode-ready",
|
|
789
|
+
requirements: {
|
|
790
|
+
minDistinctCharacters: 2,
|
|
791
|
+
minSets: 1,
|
|
792
|
+
requireLicense: true,
|
|
793
|
+
noPlaceholders: true,
|
|
794
|
+
requireAnimation: true,
|
|
795
|
+
requireMouthMotion: true,
|
|
796
|
+
requireSetScale: true
|
|
797
|
+
},
|
|
798
|
+
selectedCharacters: characters.map((entry) => entry.id),
|
|
799
|
+
selectedSets: sets.map((entry) => entry.id),
|
|
800
|
+
selectedProps: props.map((entry) => entry.id),
|
|
801
|
+
selectedAudio: audio.map((entry) => entry.id),
|
|
802
|
+
readiness,
|
|
803
|
+
assetProvenanceArtifact: normalizeRelativePath(join(evidenceDirectory, "asset-provenance.json")),
|
|
804
|
+
failures,
|
|
805
|
+
warnings
|
|
806
|
+
};
|
|
807
|
+
}
|
|
808
|
+
function createAnimationEpisodeAssetReadiness(asset) {
|
|
809
|
+
const role = inferAnimationEpisodeAssetRole(asset);
|
|
810
|
+
const failures = [];
|
|
811
|
+
const warnings = [];
|
|
812
|
+
const provenanceReady = Boolean(asset.provenance?.sourceUrl || asset.provenance?.sourceFamily || asset.provenance?.sourcePath);
|
|
813
|
+
const animationReady = role === "character" ? isAnimationCharacterAnimationReady(asset) : asset.animations.length > 0;
|
|
814
|
+
const mouthMode = role === "character" ? inferAnimationMouthMode(asset) : undefined;
|
|
815
|
+
const mouthReady = role === "character" ? mouthMode !== "missing-mouth-motion" : false;
|
|
816
|
+
const setReady = role === "set" ? isAnimationSetReady(asset) : undefined;
|
|
817
|
+
if (role === "character") {
|
|
818
|
+
if (asset.type !== "model")
|
|
819
|
+
failures.push(`${asset.id}: animation character must be a typed model asset, found ${asset.type}.`);
|
|
820
|
+
if (!asset.licenseVerified)
|
|
821
|
+
failures.push(`${asset.id}: animation character requires verified redistributable license evidence.`);
|
|
822
|
+
if (!provenanceReady)
|
|
823
|
+
failures.push(`${asset.id}: animation character requires source provenance for episode packaging.`);
|
|
824
|
+
if (!asset.placeholderFree)
|
|
825
|
+
failures.push(`${asset.id}: animation character is placeholder-tagged and cannot satisfy episode-ready validation.`);
|
|
826
|
+
if (!asset.boundsMetadata && !asset.bounds)
|
|
827
|
+
failures.push(`${asset.id}: animation character requires bounds metadata for framing and motion analysis.`);
|
|
828
|
+
if (!animationReady)
|
|
829
|
+
failures.push(`${asset.id}: animation character requires embedded animation clips or explicit segmented-rig metadata.`);
|
|
830
|
+
if (!mouthReady)
|
|
831
|
+
failures.push(`${asset.id}: animation character requires blendshape, mouth-card, viseme, talk, face, or primitive mouth fallback metadata.`);
|
|
832
|
+
if (asset.materials.length === 0)
|
|
833
|
+
failures.push(`${asset.id}: animation character requires at least one readable material.`);
|
|
834
|
+
if (asset.sizeBytes > 45 * 1024 * 1024)
|
|
835
|
+
failures.push(`${asset.id}: animation character payload is ${asset.sizeBytes} bytes; expected <= 47185920 for browser episode playback.`);
|
|
836
|
+
if (mouthMode === "amplitude-only")
|
|
837
|
+
warnings.push(`${asset.id}: mouth readiness is amplitude-only; add blendshape or mouth-card metadata for stronger lip-sync proof.`);
|
|
838
|
+
}
|
|
839
|
+
else if (role === "set") {
|
|
840
|
+
if (asset.type !== "model")
|
|
841
|
+
failures.push(`${asset.id}: animation set must be a typed model asset, found ${asset.type}.`);
|
|
842
|
+
if (!asset.licenseVerified)
|
|
843
|
+
failures.push(`${asset.id}: animation set requires verified redistributable license evidence.`);
|
|
844
|
+
if (!provenanceReady)
|
|
845
|
+
failures.push(`${asset.id}: animation set requires source provenance for episode packaging.`);
|
|
846
|
+
if (!asset.placeholderFree)
|
|
847
|
+
failures.push(`${asset.id}: animation set is placeholder-tagged and cannot satisfy episode-ready validation.`);
|
|
848
|
+
if (!setReady)
|
|
849
|
+
failures.push(`${asset.id}: animation set requires bounds, readable materials, and at least 1.5m walkable/framing scale.`);
|
|
850
|
+
if (asset.sizeBytes > 90 * 1024 * 1024)
|
|
851
|
+
failures.push(`${asset.id}: animation set payload is ${asset.sizeBytes} bytes; expected <= 94371840 for browser episode playback.`);
|
|
852
|
+
}
|
|
853
|
+
else if (role === "prop" || role === "environment") {
|
|
854
|
+
if (!asset.licenseVerified)
|
|
855
|
+
warnings.push(`${asset.id}: optional animation ${role} lacks verified license evidence; publish packages should include provenance for every visible asset.`);
|
|
856
|
+
if (!provenanceReady)
|
|
857
|
+
warnings.push(`${asset.id}: optional animation ${role} lacks source provenance.`);
|
|
858
|
+
}
|
|
859
|
+
return {
|
|
860
|
+
id: asset.id,
|
|
861
|
+
role,
|
|
862
|
+
episodeReady: role === "character"
|
|
863
|
+
? failures.length === 0 && animationReady && mouthReady
|
|
864
|
+
: role === "set"
|
|
865
|
+
? failures.length === 0 && Boolean(setReady)
|
|
866
|
+
: failures.length === 0,
|
|
867
|
+
distinctHash: role === "character" ? asset.hash : undefined,
|
|
868
|
+
licenseVerified: asset.licenseVerified,
|
|
869
|
+
provenanceReady,
|
|
870
|
+
placeholderFree: asset.placeholderFree,
|
|
871
|
+
animationReady,
|
|
872
|
+
mouthReady,
|
|
873
|
+
...(mouthMode ? { mouthMode } : {}),
|
|
874
|
+
...(typeof setReady === "boolean" ? { setReady } : {}),
|
|
875
|
+
warnings,
|
|
876
|
+
failures
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
function inferAnimationEpisodeAssetRole(asset) {
|
|
880
|
+
if (asset.type === "audio")
|
|
881
|
+
return "audio";
|
|
882
|
+
if (asset.type === "texture")
|
|
883
|
+
return "texture";
|
|
884
|
+
const text = animationAssetText(asset);
|
|
885
|
+
if (asset.type === "environment" || /\b(environment|skybox|backdrop|background|world|terrain|horizon)\b/i.test(text))
|
|
886
|
+
return "environment";
|
|
887
|
+
if (/\b(set|stage|room|garden|park|school|street|house|classroom|moon garden|walkable|floor|location)\b/i.test(text))
|
|
888
|
+
return "set";
|
|
889
|
+
if (/\b(character|humanoid|kid|child|hero|sidekick|villain|narrator|avatar|actor|miko|luma|robot|mascot|npc)\b/i.test(text))
|
|
890
|
+
return "character";
|
|
891
|
+
if (asset.humanoid?.humanoid || (asset.skeleton?.jointCount ?? 0) >= 6)
|
|
892
|
+
return "character";
|
|
893
|
+
if (asset.animations.length > 0 && asset.boundsMetadata && asset.boundsMetadata.size[1] >= 0.45 && asset.boundsMetadata.size[1] <= 4.5)
|
|
894
|
+
return "character";
|
|
895
|
+
if (asset.boundsMetadata && Math.max(...asset.boundsMetadata.size) >= 1.5 && asset.animations.length === 0)
|
|
896
|
+
return "set";
|
|
897
|
+
if (asset.type === "model")
|
|
898
|
+
return "prop";
|
|
899
|
+
return "unknown";
|
|
900
|
+
}
|
|
901
|
+
function isAnimationCharacterAnimationReady(asset) {
|
|
902
|
+
if (asset.animations.length > 0)
|
|
903
|
+
return true;
|
|
904
|
+
return /\b(segmented rig|segmented-rig|puppet rig|body parts|armature|skinned|skeleton)\b/i.test(animationAssetText(asset));
|
|
905
|
+
}
|
|
906
|
+
function inferAnimationMouthMode(asset) {
|
|
907
|
+
const morphNames = asset.morphTargets?.targetNames ?? [];
|
|
908
|
+
if (morphNames.some((name) => /\b(aa|oh|ee|mouth|lip|jaw|viseme|smile|frown|blink|expression)\b/i.test(name))) {
|
|
909
|
+
return "blendshape-lip-sync";
|
|
910
|
+
}
|
|
911
|
+
const text = animationAssetText(asset);
|
|
912
|
+
if (/\b(primitive mouth|mouth card|mouth-card|mouth sprite|face card|viseme card|2d mouth)\b/i.test(text)) {
|
|
913
|
+
return "primitive-mouth-card";
|
|
914
|
+
}
|
|
915
|
+
if (/\b(mouth|lip sync|lipsync|viseme|jaw|talk|speak|facial|face|expression|blendshape|blend shape|morph)\b/i.test(text)) {
|
|
916
|
+
return asset.morphTargets && asset.morphTargets.targetCount > 0 ? "blendshape-lip-sync" : "amplitude-only";
|
|
917
|
+
}
|
|
918
|
+
return "missing-mouth-motion";
|
|
919
|
+
}
|
|
920
|
+
function isAnimationSetReady(asset) {
|
|
921
|
+
const size = asset.boundsMetadata?.size ?? asset.bounds;
|
|
922
|
+
if (!size)
|
|
923
|
+
return false;
|
|
924
|
+
const largest = Math.max(...size);
|
|
925
|
+
return largest >= 1.5 && asset.materials.length > 0;
|
|
926
|
+
}
|
|
927
|
+
function animationAssetText(asset) {
|
|
928
|
+
return [
|
|
929
|
+
asset.id,
|
|
930
|
+
asset.source,
|
|
931
|
+
asset.url,
|
|
932
|
+
asset.outputPath,
|
|
933
|
+
asset.provenance?.sourceUrl ?? "",
|
|
934
|
+
asset.provenance?.sourceFamily ?? "",
|
|
935
|
+
asset.provenance?.author ?? "",
|
|
936
|
+
asset.provenance?.attribution ?? "",
|
|
937
|
+
...(asset.provenance?.evidence ?? []),
|
|
938
|
+
...(asset.nodeNames ?? []),
|
|
939
|
+
...asset.materials,
|
|
940
|
+
...asset.animations,
|
|
941
|
+
].join(" ").toLowerCase();
|
|
942
|
+
}
|
|
728
943
|
function createAssetReadinessIssues(profile, asset) {
|
|
729
944
|
if (asset.type !== "model")
|
|
730
945
|
return { failures: [], warnings: [] };
|
|
@@ -1342,10 +1557,35 @@ function createAssetProvenance(projectDir, sourcePath, options, detected) {
|
|
|
1342
1557
|
...(options.author ?? detected?.author ? { author: options.author ?? detected?.author } : {}),
|
|
1343
1558
|
...(options.sourceFamily ?? detected?.sourceFamily ? { sourceFamily: options.sourceFamily ?? detected?.sourceFamily } : {}),
|
|
1344
1559
|
...(options.attribution ?? detected?.attribution ? { attribution: options.attribution ?? detected?.attribution } : {}),
|
|
1560
|
+
...(options.sha256 ?? detected?.sha256 ? { sha256: options.sha256 ?? detected?.sha256 } : {}),
|
|
1561
|
+
...(options.retrievedAt ?? detected?.retrievedAt ? { retrievedAt: options.retrievedAt ?? detected?.retrievedAt } : {}),
|
|
1345
1562
|
...(detected?.evidence && detected.evidence.length > 0 ? { evidence: detected.evidence } : {}),
|
|
1346
1563
|
checkedAt: new Date().toISOString()
|
|
1347
1564
|
};
|
|
1348
1565
|
}
|
|
1566
|
+
/**
|
|
1567
|
+
* Merge a freshly inspected asset's auto-detected provenance over the entry that
|
|
1568
|
+
* already exists in the manifest, so a re-add/re-resolve preserves hand-authored
|
|
1569
|
+
* fields (license, attribution, author, sourceUrl, sourceFamily, evidence,
|
|
1570
|
+
* sha256) that the new pass did not re-detect. Freshly detected values win over
|
|
1571
|
+
* the prior entry; explicit `addAsset` options still win over both (applied in
|
|
1572
|
+
* {@link createAssetProvenance}). (#26)
|
|
1573
|
+
*/
|
|
1574
|
+
function mergeDetectedProvenance(existing, detected) {
|
|
1575
|
+
if (!existing)
|
|
1576
|
+
return detected;
|
|
1577
|
+
const evidence = [...(detected?.evidence ?? []), ...(existing.evidence ?? [])];
|
|
1578
|
+
return {
|
|
1579
|
+
sourceUrl: detected?.sourceUrl ?? existing.sourceUrl,
|
|
1580
|
+
license: detected?.license ?? existing.license,
|
|
1581
|
+
author: detected?.author ?? existing.author,
|
|
1582
|
+
sourceFamily: detected?.sourceFamily ?? existing.sourceFamily,
|
|
1583
|
+
attribution: detected?.attribution ?? existing.attribution,
|
|
1584
|
+
sha256: detected?.sha256 ?? existing.sha256,
|
|
1585
|
+
retrievedAt: detected?.retrievedAt ?? existing.retrievedAt,
|
|
1586
|
+
...(evidence.length > 0 ? { evidence: [...new Set(evidence)] } : {})
|
|
1587
|
+
};
|
|
1588
|
+
}
|
|
1349
1589
|
function readExternalProvenance(projectDir, provenanceFile) {
|
|
1350
1590
|
if (!provenanceFile)
|
|
1351
1591
|
return new Map();
|
|
@@ -1375,6 +1615,8 @@ function readExternalProvenance(projectDir, provenanceFile) {
|
|
|
1375
1615
|
const sourceFamily = stringValue(record.sourceFamily ?? nestedProvenance?.sourceFamily ?? nestedProvenance?.sourcePack);
|
|
1376
1616
|
const author = stringValue(record.author ?? nestedProvenance?.author);
|
|
1377
1617
|
const attribution = stringValue(record.attribution ?? record.credit ?? nestedProvenance?.attribution);
|
|
1618
|
+
const sha256 = stringValue(record.sha256 ?? nestedProvenance?.sha256);
|
|
1619
|
+
const retrievedAt = stringValue(record.retrievedAt ?? nestedProvenance?.retrievedAt);
|
|
1378
1620
|
const evidence = [
|
|
1379
1621
|
...stringArrayValue(record.evidence),
|
|
1380
1622
|
...stringArrayValue(record.intendedRouteUsage),
|
|
@@ -1387,6 +1629,8 @@ function readExternalProvenance(projectDir, provenanceFile) {
|
|
|
1387
1629
|
...(author ? { author } : {}),
|
|
1388
1630
|
...(sourceFamily ? { sourceFamily } : {}),
|
|
1389
1631
|
...(attribution ? { attribution } : {}),
|
|
1632
|
+
...(sha256 ? { sha256 } : {}),
|
|
1633
|
+
...(retrievedAt ? { retrievedAt } : {}),
|
|
1390
1634
|
...(evidence.length > 0 ? { evidence } : {}),
|
|
1391
1635
|
checkedAt
|
|
1392
1636
|
});
|