@aura3d/cli 2.0.3 → 2.0.4
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/LICENSE +21 -0
- package/README.md +20 -0
- package/dist/asset-core-types.d.ts +19 -0
- package/dist/asset-core-types.d.ts.map +1 -1
- package/dist/asset-manifest.d.ts.map +1 -1
- package/dist/asset-manifest.js +2 -1
- package/dist/asset-manifest.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +2 -0
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.js +24 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/meshy/admission.d.ts +40 -0
- package/dist/meshy/admission.d.ts.map +1 -0
- package/dist/meshy/admission.js +126 -0
- package/dist/meshy/admission.js.map +1 -0
- package/dist/meshy/evidence.d.ts +12 -0
- package/dist/meshy/evidence.d.ts.map +1 -0
- package/dist/meshy/evidence.js +37 -0
- package/dist/meshy/evidence.js.map +1 -0
- package/dist/meshy/import.d.ts +25 -0
- package/dist/meshy/import.d.ts.map +1 -0
- package/dist/meshy/import.js +104 -0
- package/dist/meshy/import.js.map +1 -0
- package/dist/meshy/index.d.ts +10 -0
- package/dist/meshy/index.d.ts.map +1 -0
- package/dist/meshy/index.js +6 -0
- package/dist/meshy/index.js.map +1 -0
- package/dist/meshy/metadata.d.ts +22 -0
- package/dist/meshy/metadata.d.ts.map +1 -0
- package/dist/meshy/metadata.js +176 -0
- package/dist/meshy/metadata.js.map +1 -0
- package/dist/meshy/provenance.d.ts +4 -0
- package/dist/meshy/provenance.d.ts.map +1 -0
- package/dist/meshy/provenance.js +21 -0
- package/dist/meshy/provenance.js.map +1 -0
- package/dist/meshy/thumbnail.d.ts +19 -0
- package/dist/meshy/thumbnail.d.ts.map +1 -0
- package/dist/meshy/thumbnail.js +59 -0
- package/dist/meshy/thumbnail.js.map +1 -0
- package/dist/meshy/validation.d.ts +5 -0
- package/dist/meshy/validation.d.ts.map +1 -0
- package/dist/meshy/validation.js +64 -0
- package/dist/meshy/validation.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AssetInspectionReport } from "../asset-inspection-types.js";
|
|
2
|
+
import type { AuraCliAssetRole } from "../asset-core-types.js";
|
|
3
|
+
import type { AssetGeometryFacts } from "../asset-role-admission.js";
|
|
4
|
+
export type MeshyAssetProfile = "prop" | "environment" | "vehicle" | "humanoid";
|
|
5
|
+
export type MeshyAdmissionVerdict = "pass" | "fail" | "unproven" | "advisory";
|
|
6
|
+
export interface MeshyAdmissionCheck {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly verdict: MeshyAdmissionVerdict;
|
|
9
|
+
readonly detail: string;
|
|
10
|
+
readonly measured?: number | string | boolean;
|
|
11
|
+
readonly limit?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface MeshyAdmissionReport {
|
|
14
|
+
readonly schema: "aura3d.meshy-admission/1.0";
|
|
15
|
+
readonly profile: MeshyAssetProfile;
|
|
16
|
+
readonly candidateQuality: true;
|
|
17
|
+
readonly routeReady: boolean;
|
|
18
|
+
readonly checks: readonly MeshyAdmissionCheck[];
|
|
19
|
+
readonly blockers: readonly string[];
|
|
20
|
+
readonly unproven: readonly string[];
|
|
21
|
+
readonly nextActions: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
export declare function inferMeshyAssetProfile(role: AuraCliAssetRole | undefined): MeshyAssetProfile;
|
|
24
|
+
export declare function inspectMeshyTextureDimensions(file: string): readonly {
|
|
25
|
+
readonly label: string;
|
|
26
|
+
readonly width: number;
|
|
27
|
+
readonly height: number;
|
|
28
|
+
}[];
|
|
29
|
+
export declare function createMeshyAdmissionReport(options: {
|
|
30
|
+
readonly profile: MeshyAssetProfile;
|
|
31
|
+
readonly inspection: AssetInspectionReport;
|
|
32
|
+
readonly geometry: AssetGeometryFacts;
|
|
33
|
+
readonly textureDimensions?: readonly {
|
|
34
|
+
readonly label: string;
|
|
35
|
+
readonly width: number;
|
|
36
|
+
readonly height: number;
|
|
37
|
+
}[];
|
|
38
|
+
readonly hasThumbnailEvidence?: boolean;
|
|
39
|
+
}): MeshyAdmissionReport;
|
|
40
|
+
//# sourceMappingURL=admission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/admission.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC;AAChF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAgBD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,iBAAiB,CAK5F;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CA0BlJ;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC,GAAG,oBAAoB,CAsDvB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
const PROFILE_LIMITS = {
|
|
3
|
+
prop: { maxTriangles: 100_000, maxTextures: 8, maxTextureDimension: 4_096 },
|
|
4
|
+
environment: { maxTriangles: 500_000, maxTextures: 16, maxTextureDimension: 8_192 },
|
|
5
|
+
vehicle: { maxTriangles: 250_000, maxTextures: 12, maxTextureDimension: 4_096, minTriangles: 1_000 },
|
|
6
|
+
humanoid: { maxTriangles: 150_000, maxTextures: 12, maxTextureDimension: 4_096, minTriangles: 3_000 }
|
|
7
|
+
};
|
|
8
|
+
export function inferMeshyAssetProfile(role) {
|
|
9
|
+
if (role === "vehicle")
|
|
10
|
+
return "vehicle";
|
|
11
|
+
if (role === "character")
|
|
12
|
+
return "humanoid";
|
|
13
|
+
if (role === "environment" || role === "world" || role === "track")
|
|
14
|
+
return "environment";
|
|
15
|
+
return "prop";
|
|
16
|
+
}
|
|
17
|
+
export function inspectMeshyTextureDimensions(file) {
|
|
18
|
+
const bytes = readFileSync(file);
|
|
19
|
+
if (bytes.length < 20 || bytes.toString("ascii", 0, 4) !== "glTF")
|
|
20
|
+
return [];
|
|
21
|
+
const jsonLength = bytes.readUInt32LE(12);
|
|
22
|
+
const json = JSON.parse(bytes.subarray(20, 20 + jsonLength).toString("utf8").trim());
|
|
23
|
+
const binOffset = align4(20 + jsonLength);
|
|
24
|
+
const hasBin = binOffset + 8 <= bytes.length && bytes.toString("ascii", binOffset + 4, binOffset + 8) === "BIN\0";
|
|
25
|
+
const binDataOffset = hasBin ? binOffset + 8 : -1;
|
|
26
|
+
return (json.images ?? []).flatMap((image, index) => {
|
|
27
|
+
let imageBytes;
|
|
28
|
+
if (typeof image.uri === "string" && image.uri.startsWith("data:")) {
|
|
29
|
+
const comma = image.uri.indexOf(",");
|
|
30
|
+
if (comma >= 0 && /;base64$/i.test(image.uri.slice(0, comma)))
|
|
31
|
+
imageBytes = Buffer.from(image.uri.slice(comma + 1), "base64");
|
|
32
|
+
}
|
|
33
|
+
else if (binDataOffset >= 0 && typeof image.bufferView === "number") {
|
|
34
|
+
const view = json.bufferViews?.[image.bufferView];
|
|
35
|
+
if (view && (view.buffer ?? 0) === 0 && typeof view.byteLength === "number") {
|
|
36
|
+
const start = binDataOffset + (view.byteOffset ?? 0);
|
|
37
|
+
imageBytes = bytes.subarray(start, start + view.byteLength);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const dimensions = imageBytes ? readImageDimensions(imageBytes) : undefined;
|
|
41
|
+
return dimensions ? [{ label: image.name ?? image.uri ?? "image-" + index, ...dimensions }] : [];
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export function createMeshyAdmissionReport(options) {
|
|
45
|
+
const { profile, inspection, geometry } = options;
|
|
46
|
+
const limits = PROFILE_LIMITS[profile];
|
|
47
|
+
const checks = [];
|
|
48
|
+
const bounds = inspection.bounds ?? geometry.bounds;
|
|
49
|
+
const boundsMeasured = bounds.length === 3 && bounds.every((value) => Number.isFinite(value) && value > 0);
|
|
50
|
+
checks.push({ id: "bounds", verdict: boundsMeasured ? "pass" : "unproven", detail: boundsMeasured ? "measured bounds " + bounds.map(formatNumber).join(" x ") : "no positive finite bounds were measurable; inspect scale, origin, and framing before route use", measured: boundsMeasured ? bounds.map(formatNumber).join("x") : false });
|
|
51
|
+
if (boundsMeasured) {
|
|
52
|
+
const longest = Math.max(...bounds);
|
|
53
|
+
const shortest = Math.min(...bounds);
|
|
54
|
+
const ratio = longest / shortest;
|
|
55
|
+
checks.push({ id: "bounds-degeneracy", verdict: ratio <= 1_000 ? "pass" : "fail", detail: ratio <= 1_000 ? "bounds aspect ratio " + formatNumber(ratio) + " is bounded" : "bounds aspect ratio " + formatNumber(ratio) + " is degenerate; check export scale and stray geometry", measured: formatNumber(ratio), limit: 1_000 });
|
|
56
|
+
checks.push({ id: "scale-normalization", verdict: longest > 12 || longest < 0.08 ? "advisory" : "pass", detail: longest > 12 || longest < 0.08 ? "longest axis is " + formatNumber(longest) + " units; use manifest bounds to fit and ground the candidate rather than raw units" : "longest axis is " + formatNumber(longest) + " units and already near scene scale", measured: formatNumber(longest) });
|
|
57
|
+
}
|
|
58
|
+
const triangles = geometry.triangles;
|
|
59
|
+
checks.push({ id: "triangle-budget", verdict: triangles <= 0 ? "unproven" : triangles <= limits.maxTriangles ? "pass" : "fail", detail: triangles <= 0 ? "triangle count was not measurable (for example, non-indexed geometry); measure it before route use" : triangles <= limits.maxTriangles ? triangles + " triangles are within the " + profile + " candidate budget of " + limits.maxTriangles : triangles + " triangles exceed the " + profile + " candidate budget of " + limits.maxTriangles, measured: triangles, limit: limits.maxTriangles });
|
|
60
|
+
if (limits.minTriangles !== undefined && triangles > 0) {
|
|
61
|
+
checks.push({ id: "triangle-floor", verdict: triangles >= limits.minTriangles ? "pass" : "fail", detail: triangles >= limits.minTriangles ? triangles + " triangles meet the " + profile + " structural floor of " + limits.minTriangles : triangles + " triangles are below the " + profile + " structural floor of " + limits.minTriangles + "; inspect silhouette and topology", measured: triangles, limit: limits.minTriangles });
|
|
62
|
+
}
|
|
63
|
+
const textureCount = inspection.textures.length;
|
|
64
|
+
checks.push({ id: "texture-count", verdict: textureCount <= limits.maxTextures ? "pass" : "fail", detail: textureCount <= limits.maxTextures ? textureCount + " texture(s) are within the " + profile + " candidate limit of " + limits.maxTextures : textureCount + " textures exceed the " + profile + " candidate limit of " + limits.maxTextures, measured: textureCount, limit: limits.maxTextures });
|
|
65
|
+
const dimensions = options.textureDimensions ?? [];
|
|
66
|
+
const largestTexture = dimensions.reduce((largest, item) => Math.max(largest, item.width, item.height), 0);
|
|
67
|
+
checks.push({ id: "texture-dimensions", verdict: textureCount === 0 ? "advisory" : dimensions.length === 0 ? "unproven" : largestTexture <= limits.maxTextureDimension ? "pass" : "fail", detail: textureCount === 0 ? "no texture images were declared; confirm flat materials are intentional and readable" : dimensions.length === 0 ? "texture dimensions were not available from embedded PNG/JPEG/WebP inspection; verify them before route use" : largestTexture <= limits.maxTextureDimension ? "largest inspected texture dimension is " + largestTexture + "px, within the " + limits.maxTextureDimension + "px limit" : "largest inspected texture dimension is " + largestTexture + "px, exceeding the " + limits.maxTextureDimension + "px limit", measured: largestTexture, limit: limits.maxTextureDimension });
|
|
68
|
+
const readableMaterials = inspection.materialMetadata?.filter((material) => material.visible && material.readable).length ?? inspection.materials.length;
|
|
69
|
+
checks.push({ id: "readable-material", verdict: readableMaterials > 0 ? "pass" : "unproven", detail: readableMaterials > 0 ? readableMaterials + " readable material(s) detected" : "no readable material was detected; visually inspect the retained thumbnail or route render", measured: readableMaterials });
|
|
70
|
+
if (profile === "vehicle") {
|
|
71
|
+
const corners = geometry.distinctWheelCorners;
|
|
72
|
+
checks.push({ id: "vehicle-parts", verdict: corners === undefined ? "unproven" : corners >= 3 ? "pass" : "fail", detail: corners === undefined ? "wheel/body separation was not measurable" : corners >= 3 ? "wheel-like geometry reaches " + corners + " corners" : "wheel-like geometry reaches only " + corners + " corners; inspect wheel/body separation and collider plan", measured: corners ?? false });
|
|
73
|
+
checks.push({ id: "vehicle-orientation", verdict: inspection.orientation?.source === "unknown" ? "unproven" : "pass", detail: inspection.orientation?.source === "unknown" ? "no forward/up orientation evidence is declared" : "orientation evidence source: " + (inspection.orientation?.source ?? "unknown"), measured: inspection.orientation?.source ?? "unknown" });
|
|
74
|
+
}
|
|
75
|
+
else if (profile === "humanoid") {
|
|
76
|
+
checks.push({ id: "humanoid-structure", verdict: inspection.humanoid?.humanoid ? "pass" : inspection.humanoid?.status === "non-humanoid" ? "fail" : "unproven", detail: inspection.humanoid?.humanoid ? "humanoid structure detected with " + inspection.humanoid.jointCount + " joints" : inspection.humanoid?.messages.join(" ") ?? "humanoid structure was not inspected", measured: inspection.humanoid?.jointCount ?? 0 });
|
|
77
|
+
checks.push({ id: "skin-skeleton", verdict: (inspection.skeleton?.skinCount ?? 0) > 0 ? "pass" : "unproven", detail: (inspection.skeleton?.skinCount ?? 0) > 0 ? inspection.skeleton.skinCount + " skin(s), " + inspection.skeleton.jointCount + " joints" : "no skin/skeleton evidence; deformation and animation readiness are unproven", measured: inspection.skeleton?.skinCount ?? 0 });
|
|
78
|
+
}
|
|
79
|
+
else if (profile === "environment") {
|
|
80
|
+
checks.push({ id: "environment-plan", verdict: "unproven", detail: "modular seams, walkable scale, repeated-instance cost, collision, and navigation require route-specific evidence", measured: false });
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
checks.push({ id: "collision-plan", verdict: "unproven", detail: "collision shape and pickup/prop origin require route-specific evidence", measured: false });
|
|
84
|
+
}
|
|
85
|
+
checks.push({ id: "rendered-candidate-evidence", verdict: options.hasThumbnailEvidence ? "pass" : "unproven", detail: options.hasThumbnailEvidence ? "a local Meshy thumbnail was retained as candidate-only rendered evidence" : "no local Meshy thumbnail was retained; provider success is not rendered route evidence", measured: options.hasThumbnailEvidence ?? false });
|
|
86
|
+
const blockers = checks.filter((check) => check.verdict === "fail").map((check) => check.id + ":" + check.detail);
|
|
87
|
+
const unproven = checks.filter((check) => check.verdict === "unproven").map((check) => check.id + ":" + check.detail);
|
|
88
|
+
const nextActions = profile === "humanoid"
|
|
89
|
+
? ["Inspect humanoid pose/topology/deformation and verify animation clips in a real route.", "Retain route renders and independent human review before release quality."]
|
|
90
|
+
: profile === "vehicle"
|
|
91
|
+
? ["Verify vehicle orientation, wheel/body separation, collider plan, and gameplay-camera readability.", "Retain route renders and independent human review before release quality."]
|
|
92
|
+
: profile === "environment"
|
|
93
|
+
? ["Verify environment modular seams, walkable scale, repeated-instance cost, collision, navigation, and occlusion in route.", "Retain route renders and independent human review before release quality."]
|
|
94
|
+
: ["Verify prop origin/grounding, collision plan, material readability, and gameplay-camera silhouette.", "Retain route renders and independent human review before release quality."];
|
|
95
|
+
return { schema: "aura3d.meshy-admission/1.0", profile, candidateQuality: true, routeReady: blockers.length === 0 && unproven.length === 0, checks, blockers, unproven, nextActions };
|
|
96
|
+
}
|
|
97
|
+
function readImageDimensions(bytes) {
|
|
98
|
+
if (bytes.length >= 24 && bytes.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10])))
|
|
99
|
+
return { width: bytes.readUInt32BE(16), height: bytes.readUInt32BE(20) };
|
|
100
|
+
if (bytes.length >= 30 && bytes.toString("ascii", 0, 4) === "RIFF" && bytes.toString("ascii", 8, 12) === "WEBP" && bytes.toString("ascii", 12, 16) === "VP8X")
|
|
101
|
+
return { width: 1 + bytes.readUIntLE(24, 3), height: 1 + bytes.readUIntLE(27, 3) };
|
|
102
|
+
if (bytes.length >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8) {
|
|
103
|
+
let offset = 2;
|
|
104
|
+
while (offset + 9 < bytes.length) {
|
|
105
|
+
if (bytes[offset] !== 0xff) {
|
|
106
|
+
offset += 1;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const marker = bytes[offset + 1];
|
|
110
|
+
if (marker === 0xd8 || marker === 0xd9) {
|
|
111
|
+
offset += 2;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const length = bytes.readUInt16BE(offset + 2);
|
|
115
|
+
if (length < 2 || offset + 2 + length > bytes.length)
|
|
116
|
+
break;
|
|
117
|
+
if ((marker >= 0xc0 && marker <= 0xc3) || (marker >= 0xc5 && marker <= 0xc7) || (marker >= 0xc9 && marker <= 0xcb) || (marker >= 0xcd && marker <= 0xcf))
|
|
118
|
+
return { width: bytes.readUInt16BE(offset + 7), height: bytes.readUInt16BE(offset + 5) };
|
|
119
|
+
offset += 2 + length;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
function align4(value) { return (value + 3) & ~3; }
|
|
125
|
+
function formatNumber(value) { return Number(value.toFixed(4)).toString(); }
|
|
126
|
+
//# sourceMappingURL=admission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SanitizedMeshyMetadata, SanitizedMeshyRightsEvidence } from "./metadata.js";
|
|
2
|
+
export interface RetainedMeshyEvidence {
|
|
3
|
+
readonly metadataPath: string;
|
|
4
|
+
readonly rightsPath: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function retainMeshyEvidence(options: {
|
|
7
|
+
readonly projectDir: string;
|
|
8
|
+
readonly assetName: string;
|
|
9
|
+
readonly metadata: SanitizedMeshyMetadata;
|
|
10
|
+
readonly rights: SanitizedMeshyRightsEvidence;
|
|
11
|
+
}): RetainedMeshyEvidence;
|
|
12
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/evidence.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAE1F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C,GAAG,qBAAqB,CAexB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { relative, resolve } from "node:path";
|
|
4
|
+
export function retainMeshyEvidence(options) {
|
|
5
|
+
const directory = resolve(options.projectDir, "aura-evidence", "meshy");
|
|
6
|
+
mkdirSync(directory, { recursive: true });
|
|
7
|
+
const metadataPath = writeHashedJson(directory, options.assetName + ".metadata", {
|
|
8
|
+
schema: "aura3d.meshy-metadata/1.0",
|
|
9
|
+
metadata: options.metadata
|
|
10
|
+
});
|
|
11
|
+
const rightsPath = writeHashedJson(directory, options.assetName + ".rights", {
|
|
12
|
+
schema: "aura3d.meshy-rights/1.0",
|
|
13
|
+
rights: options.rights
|
|
14
|
+
});
|
|
15
|
+
return {
|
|
16
|
+
metadataPath: normalized(relative(options.projectDir, metadataPath)),
|
|
17
|
+
rightsPath: normalized(relative(options.projectDir, rightsPath))
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function writeHashedJson(directory, stem, value) {
|
|
21
|
+
const content = JSON.stringify(value, null, 2) + "\n";
|
|
22
|
+
const hash = createHash("sha256").update(content).digest("hex");
|
|
23
|
+
const path = resolve(directory, stem + "." + hash.slice(0, 12) + ".json");
|
|
24
|
+
try {
|
|
25
|
+
const existing = readFileSync(path, "utf8");
|
|
26
|
+
if (existing !== content)
|
|
27
|
+
throw new Error("Meshy evidence hash collision at " + path);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error.code !== "ENOENT")
|
|
31
|
+
throw error;
|
|
32
|
+
writeFileSync(path, content, { encoding: "utf8", mode: 0o644, flag: "wx" });
|
|
33
|
+
}
|
|
34
|
+
return path;
|
|
35
|
+
}
|
|
36
|
+
function normalized(path) { return path.replaceAll("\\", "/"); }
|
|
37
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQ9C,MAAM,UAAU,mBAAmB,CAAC,OAKnC;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IACxE,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,GAAG,WAAW,EAAE;QAC/E,MAAM,EAAE,2BAA2B;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,GAAG,SAAS,EAAE;QAC3E,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,OAAO;QACL,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACpE,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB,EAAE,IAAY,EAAE,KAAc;IACtE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,IAAI,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;QACpE,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,IAAY,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AssetCliResult, AuraAssetQuality, AuraCliAssetRole } from "../asset-core-types.js";
|
|
2
|
+
import { type MeshyAdmissionReport, type MeshyAssetProfile } from "./admission.js";
|
|
3
|
+
export interface ImportMeshyOptions {
|
|
4
|
+
readonly projectDir?: string;
|
|
5
|
+
readonly input: string;
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly file?: string;
|
|
8
|
+
readonly thumbnail?: string;
|
|
9
|
+
readonly allowedRoot?: string;
|
|
10
|
+
readonly rightsEvidence: string;
|
|
11
|
+
readonly quality?: AuraAssetQuality;
|
|
12
|
+
readonly role?: AuraCliAssetRole;
|
|
13
|
+
readonly profile?: MeshyAssetProfile;
|
|
14
|
+
}
|
|
15
|
+
export interface ImportMeshyResult extends AssetCliResult {
|
|
16
|
+
readonly typedKey: string;
|
|
17
|
+
readonly sourceFile: string;
|
|
18
|
+
readonly metadataFile: string;
|
|
19
|
+
readonly rightsEvidence: string;
|
|
20
|
+
readonly thumbnailEvidence?: string;
|
|
21
|
+
readonly admission: MeshyAdmissionReport;
|
|
22
|
+
readonly nextCommands: readonly string[];
|
|
23
|
+
}
|
|
24
|
+
export declare function importMeshyAsset(options: ImportMeshyOptions): ImportMeshyResult;
|
|
25
|
+
//# sourceMappingURL=import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/import.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGjG,OAAO,EAAqF,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAOtK,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CACtC;AACD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA2E/E"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { readdirSync, realpathSync } from "node:fs";
|
|
2
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
3
|
+
import { addAsset, inspectAsset } from "../index.js";
|
|
4
|
+
import { DEFAULT_AURA_ASSET_OUTPUT_DIR, DEFAULT_AURA_ASSET_PUBLIC_PATH } from "../asset-constants.js";
|
|
5
|
+
import { readAssetManifest } from "../asset-manifest.js";
|
|
6
|
+
import { inspectGlbGeometry } from "../asset-screening-effects.js";
|
|
7
|
+
import { createMeshyAdmissionReport, inferMeshyAssetProfile, inspectMeshyTextureDimensions } from "./admission.js";
|
|
8
|
+
import { retainMeshyEvidence } from "./evidence.js";
|
|
9
|
+
import { readMeshyMetadata, validateMeshyEvidenceJson } from "./metadata.js";
|
|
10
|
+
import { createMeshyProvenance } from "./provenance.js";
|
|
11
|
+
import { retainMeshyThumbnail } from "./thumbnail.js";
|
|
12
|
+
import { resolveConfinedPath, selectMeshyGlb } from "./validation.js";
|
|
13
|
+
const METADATA_NAMES = new Set(["meta.json", "metadata.json", "task.json"]);
|
|
14
|
+
export function importMeshyAsset(options) {
|
|
15
|
+
const projectDir = realpathSync(resolve(options.projectDir ?? process.cwd()));
|
|
16
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(options.name))
|
|
17
|
+
throw new Error("Meshy asset name must be a safe TypeScript key: " + options.name);
|
|
18
|
+
if (options.quality === "release")
|
|
19
|
+
throw new Error("Meshy imports cannot certify release quality. Import as candidate, then complete route evidence and independent human review.");
|
|
20
|
+
const allowedRoot = resolve(projectDir, options.allowedRoot ?? "artifacts/meshy");
|
|
21
|
+
const input = resolveConfinedPath(allowedRoot, isAbsolute(options.input) ? options.input : resolve(projectDir, options.input), "input");
|
|
22
|
+
const sourceFile = selectMeshyGlb(input, options.file);
|
|
23
|
+
const metadataFiles = readdirSync(input, { withFileTypes: true }).filter((entry) => entry.isFile() && METADATA_NAMES.has(entry.name.toLowerCase()));
|
|
24
|
+
if (metadataFiles.length === 0)
|
|
25
|
+
throw new Error("Meshy output is missing metadata (expected meta.json, metadata.json, or task.json).");
|
|
26
|
+
if (metadataFiles.length > 1)
|
|
27
|
+
throw new Error("Meshy output contains multiple metadata files; retain exactly one canonical metadata file.");
|
|
28
|
+
const metadataFile = resolveConfinedPath(input, metadataFiles[0].name, "metadata");
|
|
29
|
+
const rightsCandidate = isAbsolute(options.rightsEvidence) ? options.rightsEvidence : resolve(projectDir, options.rightsEvidence);
|
|
30
|
+
const rightsEvidence = resolveConfinedPath(allowedRoot, rightsCandidate, "rights evidence");
|
|
31
|
+
const rights = validateMeshyEvidenceJson(rightsEvidence);
|
|
32
|
+
const metadata = readMeshyMetadata(metadataFile);
|
|
33
|
+
const retainedEvidence = retainMeshyEvidence({ projectDir, assetName: options.name, metadata, rights });
|
|
34
|
+
const generation = createMeshyProvenance(projectDir, resolve(projectDir, retainedEvidence.metadataPath), resolve(projectDir, retainedEvidence.rightsPath), metadata);
|
|
35
|
+
const inspection = inspectAsset({ projectDir, file: relative(projectDir, sourceFile), animation: true, humanoid: true, skeleton: true, morphs: true });
|
|
36
|
+
const geometry = inspectGlbGeometry(sourceFile);
|
|
37
|
+
const manifest = readAssetManifest(projectDir);
|
|
38
|
+
const thumbnail = retainMeshyThumbnail({
|
|
39
|
+
projectDir,
|
|
40
|
+
inputDir: input,
|
|
41
|
+
requested: options.thumbnail,
|
|
42
|
+
assetName: options.name,
|
|
43
|
+
outputDir: manifest.outputDir ?? DEFAULT_AURA_ASSET_OUTPUT_DIR,
|
|
44
|
+
publicPath: manifest.assetBasePath ?? DEFAULT_AURA_ASSET_PUBLIC_PATH
|
|
45
|
+
});
|
|
46
|
+
const profile = options.profile ?? inferMeshyAssetProfile(options.role);
|
|
47
|
+
const admission = createMeshyAdmissionReport({
|
|
48
|
+
profile,
|
|
49
|
+
inspection,
|
|
50
|
+
geometry,
|
|
51
|
+
textureDimensions: inspectMeshyTextureDimensions(sourceFile),
|
|
52
|
+
hasThumbnailEvidence: Boolean(thumbnail)
|
|
53
|
+
});
|
|
54
|
+
const provenanceEvidence = [generation.rightsEvidence, generation.localMetadata, ...(thumbnail ? [thumbnail.outputPath] : [])];
|
|
55
|
+
const result = addAsset({
|
|
56
|
+
projectDir,
|
|
57
|
+
file: relative(projectDir, sourceFile),
|
|
58
|
+
name: options.name,
|
|
59
|
+
type: "model",
|
|
60
|
+
quality: options.quality ?? "candidate",
|
|
61
|
+
role: options.role ?? roleForProfile(profile),
|
|
62
|
+
sourceFamily: "meshy",
|
|
63
|
+
...(rights.licenseName ? { license: rights.licenseName, licenseName: rights.licenseName } : {}),
|
|
64
|
+
...(rights.licenseUrl ? { licenseUrl: rights.licenseUrl } : {}),
|
|
65
|
+
...(rights.licenseRaw ? { licenseRaw: rights.licenseRaw } : {}),
|
|
66
|
+
provenanceEvidence,
|
|
67
|
+
replaceProvenanceEvidence: true,
|
|
68
|
+
retrievedAt: metadata.finishedAt ?? metadata.createdAt,
|
|
69
|
+
generation,
|
|
70
|
+
...(thumbnail ? { renderedProbe: thumbnail.renderedProbe } : {})
|
|
71
|
+
});
|
|
72
|
+
const nextCommands = [
|
|
73
|
+
"npx @aura3d/cli assets validate --asset " + options.name + " --require-license",
|
|
74
|
+
"npx @aura3d/cli assets validate --asset " + options.name + " --release --require-license"
|
|
75
|
+
];
|
|
76
|
+
const admissionMessages = [
|
|
77
|
+
"Meshy " + profile + " admission: " + (admission.routeReady ? "checks complete" : admission.blockers.length > 0 ? "candidate blockers found" : "candidate evidence remains unproven") + ".",
|
|
78
|
+
...admission.blockers.map((message) => "Admission blocker: " + message),
|
|
79
|
+
...admission.unproven.map((message) => "Admission unproven: " + message),
|
|
80
|
+
...admission.nextActions.map((message) => "Admission next: " + message)
|
|
81
|
+
];
|
|
82
|
+
return {
|
|
83
|
+
...result,
|
|
84
|
+
typedKey: "assets." + options.name,
|
|
85
|
+
sourceFile: normalized(relative(projectDir, sourceFile)),
|
|
86
|
+
metadataFile: generation.localMetadata,
|
|
87
|
+
rightsEvidence: generation.rightsEvidence,
|
|
88
|
+
...(thumbnail ? { thumbnailEvidence: thumbnail.outputPath } : {}),
|
|
89
|
+
admission,
|
|
90
|
+
nextCommands,
|
|
91
|
+
messages: [...result.messages, "Typed key: assets." + options.name, ...admissionMessages, ...nextCommands.map((command) => "Next: " + command)]
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function roleForProfile(profile) {
|
|
95
|
+
if (profile === "humanoid")
|
|
96
|
+
return "character";
|
|
97
|
+
if (profile === "vehicle")
|
|
98
|
+
return "vehicle";
|
|
99
|
+
if (profile === "environment")
|
|
100
|
+
return "environment";
|
|
101
|
+
return "prop";
|
|
102
|
+
}
|
|
103
|
+
function normalized(path) { return path.replaceAll("\\", "/"); }
|
|
104
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { importMeshyAsset } from "./import.js";
|
|
2
|
+
export { createMeshyAdmissionReport, inferMeshyAssetProfile, inspectMeshyTextureDimensions } from "./admission.js";
|
|
3
|
+
export { readMeshyMetadata, stripSignedUrl, validateMeshyEvidenceJson, MAX_MESHY_METADATA_BYTES } from "./metadata.js";
|
|
4
|
+
export { findMeshyThumbnail, retainMeshyThumbnail, MAX_MESHY_THUMBNAIL_BYTES } from "./thumbnail.js";
|
|
5
|
+
export { MAX_MESHY_GLB_BYTES, resolveConfinedPath, selectMeshyGlb, validateMeshyGlb } from "./validation.js";
|
|
6
|
+
export type { MeshyAdmissionCheck, MeshyAdmissionReport, MeshyAdmissionVerdict, MeshyAssetProfile } from "./admission.js";
|
|
7
|
+
export type { ImportMeshyOptions, ImportMeshyResult } from "./import.js";
|
|
8
|
+
export type { SanitizedMeshyMetadata, SanitizedMeshyRightsEvidence } from "./metadata.js";
|
|
9
|
+
export type { RetainedMeshyThumbnail } from "./thumbnail.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACnH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACvH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7G,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1H,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { importMeshyAsset } from "./import.js";
|
|
2
|
+
export { createMeshyAdmissionReport, inferMeshyAssetProfile, inspectMeshyTextureDimensions } from "./admission.js";
|
|
3
|
+
export { readMeshyMetadata, stripSignedUrl, validateMeshyEvidenceJson, MAX_MESHY_METADATA_BYTES } from "./metadata.js";
|
|
4
|
+
export { findMeshyThumbnail, retainMeshyThumbnail, MAX_MESHY_THUMBNAIL_BYTES } from "./thumbnail.js";
|
|
5
|
+
export { MAX_MESHY_GLB_BYTES, resolveConfinedPath, selectMeshyGlb, validateMeshyGlb } from "./validation.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACnH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACvH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const MAX_MESHY_METADATA_BYTES: number;
|
|
2
|
+
export interface SanitizedMeshyRightsEvidence {
|
|
3
|
+
readonly licenseName?: string;
|
|
4
|
+
readonly licenseUrl?: string;
|
|
5
|
+
readonly licenseRaw?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SanitizedMeshyMetadata {
|
|
8
|
+
readonly providerCli?: string;
|
|
9
|
+
readonly taskId?: string;
|
|
10
|
+
readonly parentTaskIds?: readonly string[];
|
|
11
|
+
readonly operation?: string;
|
|
12
|
+
readonly promptHash?: string;
|
|
13
|
+
readonly model?: string;
|
|
14
|
+
readonly settings?: Readonly<Record<string, unknown>>;
|
|
15
|
+
readonly createdAt?: string;
|
|
16
|
+
readonly finishedAt?: string;
|
|
17
|
+
readonly consumedCredits?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function readMeshyMetadata(path: string): SanitizedMeshyMetadata;
|
|
20
|
+
export declare function validateMeshyEvidenceJson(path: string): SanitizedMeshyRightsEvidence;
|
|
21
|
+
export declare function stripSignedUrl(value: string): string;
|
|
22
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/meshy/metadata.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,QAAc,CAAC;AAIpD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CA6BtE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,4BAA4B,CAYpF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD"}
|