@forgeax/engine-pack 0.1.24 → 0.1.26
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/README.md +1 -1
- package/dist/build.d.ts +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.mjs +129 -26
- package/dist/build.mjs.map +1 -1
- package/dist/cli-asset.mjs.map +1 -1
- package/dist/evidence/material-cook.d.ts +29 -3
- package/dist/evidence/material-cook.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +123 -24
- package/dist/index.mjs.map +1 -1
- package/dist/material-cook.d.ts +1 -1
- package/dist/material-cook.d.ts.map +1 -1
- package/dist/material-cook.mjs +123 -24
- package/dist/material-cook.mjs.map +1 -1
- package/dist/pack-authoring-node.mjs.map +1 -1
- package/dist/scanner.d.ts +3 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.mjs +7 -3
- package/dist/scanner.mjs.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/material-cook-receipt.unit.test.ts +9 -9
- package/src/__tests__/material-cook-schema.unit.test.ts +172 -21
- package/src/__tests__/material-declaration-boundary.unit.test.ts +35 -0
- package/src/__tests__/material-surface-consumer-census.test.ts +24 -0
- package/src/__tests__/material-surface-publication.unit.test.ts +162 -0
- package/src/__tests__/material-surface-wire.unit.test.ts +30 -0
- package/src/build.ts +2 -0
- package/src/evidence/material-cook.ts +183 -31
- package/src/index.ts +5 -0
- package/src/material-cook.ts +5 -0
- package/src/scanner.ts +7 -3
- package/src/schema/material-cook.schema.json +254 -50
- package/dist/__tests__/ai-recovery.unit.test.d.ts +0 -2
- package/dist/__tests__/ai-recovery.unit.test.d.ts.map +0 -1
- package/dist/__tests__/artifact-path.test.d.ts +0 -2
- package/dist/__tests__/artifact-path.test.d.ts.map +0 -1
- package/dist/__tests__/asset-evidence-error-hints.test.d.ts +0 -2
- package/dist/__tests__/asset-evidence-error-hints.test.d.ts.map +0 -1
- package/dist/__tests__/asset-evidence-lifecycle.test.d.ts +0 -2
- package/dist/__tests__/asset-evidence-lifecycle.test.d.ts.map +0 -1
- package/dist/__tests__/asset-evidence-schema.test.d.ts +0 -2
- package/dist/__tests__/asset-evidence-schema.test.d.ts.map +0 -1
- package/dist/__tests__/atlas-cli-region-mismatch.test.d.ts +0 -2
- package/dist/__tests__/atlas-cli-region-mismatch.test.d.ts.map +0 -1
- package/dist/__tests__/atlas-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/atlas-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/cli-asset-evidence.integration.test.d.ts +0 -2
- package/dist/__tests__/cli-asset-evidence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/cli.unit.test.d.ts +0 -2
- package/dist/__tests__/cli.unit.test.d.ts.map +0 -1
- package/dist/__tests__/evidence-source-inventory.unit.test.d.ts +0 -2
- package/dist/__tests__/evidence-source-inventory.unit.test.d.ts.map +0 -1
- package/dist/__tests__/guid-collision.unit.test.d.ts +0 -2
- package/dist/__tests__/guid-collision.unit.test.d.ts.map +0 -1
- package/dist/__tests__/guid-validator-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/guid-validator-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/inventory-schema.test.d.ts +0 -2
- package/dist/__tests__/inventory-schema.test.d.ts.map +0 -1
- package/dist/__tests__/material-cook-dependencies.unit.test.d.ts +0 -2
- package/dist/__tests__/material-cook-dependencies.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-cook-receipt-layer-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/material-cook-receipt-layer-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-cook-receipt.unit.test.d.ts +0 -2
- package/dist/__tests__/material-cook-receipt.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-cook-schema.unit.test.d.ts +0 -2
- package/dist/__tests__/material-cook-schema.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-bin-consumer-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-bin-consumer-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-bin-contract.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-bin-contract.unit.test.d.ts.map +0 -1
- package/dist/__tests__/meta-schema-optional.test.d.ts +0 -2
- package/dist/__tests__/meta-schema-optional.test.d.ts.map +0 -1
- package/dist/__tests__/meta-source-overrides.unit.test.d.ts +0 -2
- package/dist/__tests__/meta-source-overrides.unit.test.d.ts.map +0 -1
- package/dist/__tests__/native-cooker-registry.test.d.ts +0 -2
- package/dist/__tests__/native-cooker-registry.test.d.ts.map +0 -1
- package/dist/__tests__/offline-evidence-artifact-verification-owner.test-d.d.ts +0 -2
- package/dist/__tests__/offline-evidence-artifact-verification-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/offline-evidence.integration.test.d.ts +0 -2
- package/dist/__tests__/offline-evidence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/owner-chain.integration.test.d.ts +0 -2
- package/dist/__tests__/owner-chain.integration.test.d.ts.map +0 -1
- package/dist/__tests__/pack-authoring-gateway.unit.test.d.ts +0 -2
- package/dist/__tests__/pack-authoring-gateway.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pack-authoring.unit.test.d.ts +0 -2
- package/dist/__tests__/pack-authoring.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pack-scanner.unit.test.d.ts +0 -2
- package/dist/__tests__/pack-scanner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pack-v2-fixture-migration.test.d.ts +0 -2
- package/dist/__tests__/pack-v2-fixture-migration.test.d.ts.map +0 -1
- package/dist/__tests__/pack-v2-schema.test.d.ts +0 -2
- package/dist/__tests__/pack-v2-schema.test.d.ts.map +0 -1
- package/dist/__tests__/pack.unit.test.d.ts +0 -2
- package/dist/__tests__/pack.unit.test.d.ts.map +0 -1
- package/dist/__tests__/package-finalizer.contract.test.d.ts +0 -2
- package/dist/__tests__/package-finalizer.contract.test.d.ts.map +0 -1
- package/dist/__tests__/producer-contract-schema.unit.test.d.ts +0 -2
- package/dist/__tests__/producer-contract-schema.unit.test.d.ts.map +0 -1
- package/dist/__tests__/resolve-asset-source.test.d.ts +0 -2
- package/dist/__tests__/resolve-asset-source.test.d.ts.map +0 -1
- package/dist/__tests__/runtime-projection.unit.test.d.ts +0 -2
- package/dist/__tests__/runtime-projection.unit.test.d.ts.map +0 -1
- package/dist/__tests__/runtime.browser.test.d.ts +0 -2
- package/dist/__tests__/runtime.browser.test.d.ts.map +0 -1
- package/dist/__tests__/scanner-blacklist.test.d.ts +0 -2
- package/dist/__tests__/scanner-blacklist.test.d.ts.map +0 -1
- package/dist/__tests__/scanner-inventory.contract.test.d.ts +0 -2
- package/dist/__tests__/scanner-inventory.contract.test.d.ts.map +0 -1
- package/dist/__tests__/scanner-inventory.test.d.ts +0 -2
- package/dist/__tests__/scanner-inventory.test.d.ts.map +0 -1
- package/dist/__tests__/scanner-mount-cycle.test.d.ts +0 -2
- package/dist/__tests__/scanner-mount-cycle.test.d.ts.map +0 -1
- package/dist/__tests__/scriptable-pack-cli.integration.test.d.ts +0 -2
- package/dist/__tests__/scriptable-pack-cli.integration.test.d.ts.map +0 -1
- package/dist/__tests__/scriptable-pack-ddc-key.unit.test.d.ts +0 -2
- package/dist/__tests__/scriptable-pack-ddc-key.unit.test.d.ts.map +0 -1
- package/dist/__tests__/topology-actions.unit.test.d.ts +0 -2
- package/dist/__tests__/topology-actions.unit.test.d.ts.map +0 -1
- package/dist/__tests__/topology.unit.test.d.ts +0 -2
- package/dist/__tests__/topology.unit.test.d.ts.map +0 -1
|
@@ -11,6 +11,26 @@ export interface MaterialCookArtifact {
|
|
|
11
11
|
readonly digest: string;
|
|
12
12
|
readonly bytes: Uint8Array;
|
|
13
13
|
}
|
|
14
|
+
/** Domain-owned inputs used to compile and select a material program. */
|
|
15
|
+
export interface MaterialCookProgramContext {
|
|
16
|
+
readonly backend: 'webgpu' | 'webgl2' | 'wgpu-native';
|
|
17
|
+
readonly capability: 'storage-buffer' | 'uniform-fallback';
|
|
18
|
+
readonly pipeline: 'forward' | 'deferred';
|
|
19
|
+
readonly geometry: 'mesh' | 'skinned' | 'sprite';
|
|
20
|
+
readonly pass: 'forward' | 'shadow' | 'depth';
|
|
21
|
+
readonly profile: 'forgeax-material-wgsl-v1';
|
|
22
|
+
readonly toolchain: 'naga-oil';
|
|
23
|
+
readonly instrumentation: 'none' | 'validation';
|
|
24
|
+
}
|
|
25
|
+
/** Programs are derived artifacts, never independently authored assets. */
|
|
26
|
+
export interface MaterialCookProgram {
|
|
27
|
+
readonly specializationKey: string;
|
|
28
|
+
readonly artifact: MaterialCookArtifact;
|
|
29
|
+
readonly selections: readonly {
|
|
30
|
+
readonly pass: string;
|
|
31
|
+
readonly context: MaterialCookProgramContext;
|
|
32
|
+
}[];
|
|
33
|
+
}
|
|
14
34
|
export interface MaterialCookWasmProvenance {
|
|
15
35
|
readonly sourceContentKey: string;
|
|
16
36
|
readonly artifactSha256: string;
|
|
@@ -34,7 +54,7 @@ export interface MaterialCookIdentity {
|
|
|
34
54
|
}
|
|
35
55
|
export type MaterialCookIdentityInput = Omit<MaterialCookIdentity, 'cookIdentity'>;
|
|
36
56
|
export interface MaterialCookReceipt {
|
|
37
|
-
readonly schemaVersion: 'material-cook/
|
|
57
|
+
readonly schemaVersion: 'material-cook/4';
|
|
38
58
|
readonly sourceClosure: readonly string[];
|
|
39
59
|
readonly profile: string;
|
|
40
60
|
readonly compilerVersion: string;
|
|
@@ -50,12 +70,14 @@ export interface MaterialParameterContract {
|
|
|
50
70
|
readonly values: Readonly<Record<string, MaterialValue | null>>;
|
|
51
71
|
}
|
|
52
72
|
export interface CookedMaterialRecord {
|
|
53
|
-
readonly schemaVersion: 'material-cook/
|
|
73
|
+
readonly schemaVersion: 'material-cook/4';
|
|
54
74
|
readonly guid: string;
|
|
55
75
|
readonly authored?: MaterialAsset;
|
|
56
76
|
readonly materialGuid?: string;
|
|
57
77
|
readonly publicationGeneration?: number;
|
|
58
78
|
readonly specializationKey?: string;
|
|
79
|
+
readonly programs: readonly MaterialCookProgram[];
|
|
80
|
+
/** Digest of the complete program/Pass/context manifest. */
|
|
59
81
|
readonly artifactDigest?: string;
|
|
60
82
|
readonly sourceClosure?: readonly string[];
|
|
61
83
|
readonly parameterContract?: MaterialParameterContract;
|
|
@@ -65,7 +87,6 @@ export interface CookedMaterialRecord {
|
|
|
65
87
|
readonly values: Readonly<Record<string, MaterialValue | null>>;
|
|
66
88
|
};
|
|
67
89
|
readonly refs: MaterialCookRefs;
|
|
68
|
-
readonly artifact: MaterialCookArtifact;
|
|
69
90
|
readonly receipt: MaterialCookReceipt;
|
|
70
91
|
}
|
|
71
92
|
export interface MaterialCookRecordError {
|
|
@@ -100,4 +121,9 @@ export declare function serializeMaterialCookReceipt(receipt: MaterialCookReceip
|
|
|
100
121
|
export declare function validateMaterialCookReceipt(value: unknown, expected?: MaterialCookIdentityExpectation): Result<MaterialCookReceipt, MaterialCookRecordError>;
|
|
101
122
|
export declare function validateCookedMaterialRecord(value: unknown): Result<CookedMaterialRecord, MaterialCookRecordError>;
|
|
102
123
|
export declare function projectCookedMaterialRecord(record: CookedMaterialRecord): Omit<CookedMaterialRecord, 'guid' | 'authored'>;
|
|
124
|
+
/** Canonical context key shared by publication validation and runtime selection. */
|
|
125
|
+
export declare function materialProgramContextKey(context: MaterialCookProgramContext): string;
|
|
126
|
+
export declare function validateMaterialCookProgramContext(value: unknown): Result<MaterialCookProgramContext, MaterialCookRecordError>;
|
|
127
|
+
/** Covers every selection and artifact while excluding transport copies of the bytes. */
|
|
128
|
+
export declare function createMaterialProgramSetDigest(programs: readonly MaterialCookProgram[], passes: readonly MaterialPass[]): string;
|
|
103
129
|
//# sourceMappingURL=material-cook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-cook.d.ts","sourceRoot":"","sources":["../../src/evidence/material-cook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"material-cook.d.ts","sourceRoot":"","sources":["../../src/evidence/material-cook.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type CookedMaterialRecord, collectMaterialCookRefs, createMaterialArtifactDigest, createMaterialCookIdentity, isStandardMaterialRecord, isStandardRootModule, type MaterialCookArtifact, type MaterialCookIdentity, type MaterialCookIdentityExpectation, type MaterialCookIdentityInput, type MaterialCookReceipt, type MaterialCookRecordError, type MaterialCookRefs, type MaterialCookWasmProvenance, materialLayerPlanIdentity, projectCookedMaterialRecord, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateCookedMaterialRecord, validateMaterialCookReceipt, } from './evidence/material-cook.js';
|
|
1
|
+
export { type CookedMaterialRecord, collectMaterialCookRefs, createMaterialArtifactDigest, createMaterialCookIdentity, createMaterialProgramSetDigest, isStandardMaterialRecord, isStandardRootModule, type MaterialCookArtifact, type MaterialCookIdentity, type MaterialCookIdentityExpectation, type MaterialCookIdentityInput, type MaterialCookProgram, type MaterialCookProgramContext, type MaterialCookReceipt, type MaterialCookRecordError, type MaterialCookRefs, type MaterialCookWasmProvenance, materialLayerPlanIdentity, materialProgramContextKey, projectCookedMaterialRecord, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateCookedMaterialRecord, validateMaterialCookProgramContext, validateMaterialCookReceipt, } from './evidence/material-cook.js';
|
|
2
2
|
export { buildOfflineAssetEvidence, packageVerification } from './evidence/offline-evidence.js';
|
|
3
3
|
export { AssetGuid, isValidAssetGuidString, isValidPackSourceKey, PACK_SOURCE_KEY_RE, PackageId, } from './guid.js';
|
|
4
4
|
export { decodeMeshBinHeader, MESH_BIN_DIGEST_BYTES, MESH_BIN_HEADER_V4_BYTES, MESH_BIN_PROJECTION_VERSION, MESH_BIN_VERSION, type MeshBinContractError, type MeshBinHeaderResult, type MeshBinHeaderV4, writeMeshBinHeader, } from './mesh-bin-contract.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,+BAA+B,EACpC,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EACL,KAAK,WAAW,EAChB,yBAAyB,EACzB,oCAAoC,EACpC,2BAA2B,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAW,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE5F,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI1D,YAAY,EACV,aAAa,EACb,cAAc,EACd,KAAK,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAWvE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,+BAA+B,EACpC,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EACL,KAAK,WAAW,EAChB,yBAAyB,EACzB,oCAAoC,EACpC,2BAA2B,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAW,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE5F,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI1D,YAAY,EACV,aAAa,EACb,cAAc,EACd,KAAK,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAWvE"}
|
package/dist/index.mjs
CHANGED
|
@@ -6918,7 +6918,7 @@ function serializeMaterialCookReceipt(receipt) {
|
|
|
6918
6918
|
function invalid(field, actual) {
|
|
6919
6919
|
return err({
|
|
6920
6920
|
code: "material-cook-record-invalid",
|
|
6921
|
-
expected: "a complete material-cook/
|
|
6921
|
+
expected: "a complete material-cook/4 record with layered identity and provenance",
|
|
6922
6922
|
hint: "re-cook the material and publish its record, artifact, references, and receipt together",
|
|
6923
6923
|
detail: {
|
|
6924
6924
|
field,
|
|
@@ -6927,6 +6927,14 @@ function invalid(field, actual) {
|
|
|
6927
6927
|
}
|
|
6928
6928
|
});
|
|
6929
6929
|
}
|
|
6930
|
+
function normalizeArtifactBytes(value) {
|
|
6931
|
+
if (Array.isArray(value)) {
|
|
6932
|
+
return value.every((byte) => Number.isInteger(byte) && byte >= 0 && byte <= 255) ? Uint8Array.from(value) : void 0;
|
|
6933
|
+
}
|
|
6934
|
+
if (!ArrayBuffer.isView(value)) return void 0;
|
|
6935
|
+
const view = value;
|
|
6936
|
+
return new Uint8Array(view.buffer, view.byteOffset, view.byteLength).slice();
|
|
6937
|
+
}
|
|
6930
6938
|
var IDENTITY_FIELDS = [
|
|
6931
6939
|
"materialContractDigest",
|
|
6932
6940
|
"sourceRevision",
|
|
@@ -6971,7 +6979,7 @@ function validateIdentity(value) {
|
|
|
6971
6979
|
function validateMaterialCookReceipt(value, expected = {}) {
|
|
6972
6980
|
if (value === null || typeof value !== "object") return invalid("receipt");
|
|
6973
6981
|
const candidate = value;
|
|
6974
|
-
if (candidate.schemaVersion !== "material-cook/
|
|
6982
|
+
if (candidate.schemaVersion !== "material-cook/4")
|
|
6975
6983
|
return invalid("receipt.schemaVersion", candidate.schemaVersion);
|
|
6976
6984
|
const identityResult = validateIdentity(candidate.identity);
|
|
6977
6985
|
if (!identityResult.ok) return identityResult;
|
|
@@ -7009,7 +7017,7 @@ function validateMaterialCookReceipt(value, expected = {}) {
|
|
|
7009
7017
|
return invalid("receipt.identity.cookIdentity", identity.cookIdentity);
|
|
7010
7018
|
}
|
|
7011
7019
|
return ok({
|
|
7012
|
-
schemaVersion: "material-cook/
|
|
7020
|
+
schemaVersion: "material-cook/4",
|
|
7013
7021
|
sourceClosure: candidate.sourceClosure,
|
|
7014
7022
|
profile: candidate.profile,
|
|
7015
7023
|
compilerVersion: candidate.compilerVersion,
|
|
@@ -7023,7 +7031,7 @@ function validateMaterialCookReceipt(value, expected = {}) {
|
|
|
7023
7031
|
function validateCookedMaterialRecord(value) {
|
|
7024
7032
|
if (value === null || typeof value !== "object") return invalid("record");
|
|
7025
7033
|
const candidate = value;
|
|
7026
|
-
if (candidate.schemaVersion !== "material-cook/
|
|
7034
|
+
if (candidate.schemaVersion !== "material-cook/4")
|
|
7027
7035
|
return invalid("schemaVersion", candidate.schemaVersion);
|
|
7028
7036
|
if (typeof candidate.guid !== "string" || !candidate.guid) return invalid("guid");
|
|
7029
7037
|
if (candidate.materialGuid !== void 0 && typeof candidate.materialGuid !== "string")
|
|
@@ -7032,6 +7040,8 @@ function validateCookedMaterialRecord(value) {
|
|
|
7032
7040
|
return invalid("publicationGeneration", candidate.publicationGeneration);
|
|
7033
7041
|
if (candidate.specializationKey !== void 0 && typeof candidate.specializationKey !== "string")
|
|
7034
7042
|
return invalid("specializationKey");
|
|
7043
|
+
if ("artifact" in candidate || "variants" in candidate || "variantContext" in candidate)
|
|
7044
|
+
return invalid("programs", "legacy single-artifact publication");
|
|
7035
7045
|
if (candidate.artifactDigest !== void 0 && typeof candidate.artifactDigest !== "string")
|
|
7036
7046
|
return invalid("artifactDigest");
|
|
7037
7047
|
if (candidate.sourceClosure !== void 0 && (!Array.isArray(candidate.sourceClosure) || candidate.sourceClosure.some((path) => typeof path !== "string")))
|
|
@@ -7048,24 +7058,72 @@ function validateCookedMaterialRecord(value) {
|
|
|
7048
7058
|
if (candidate.resolved === null || typeof candidate.resolved !== "object")
|
|
7049
7059
|
return invalid("resolved");
|
|
7050
7060
|
if (candidate.refs === null || typeof candidate.refs !== "object") return invalid("refs");
|
|
7051
|
-
if (candidate.artifact === null || typeof candidate.artifact !== "object")
|
|
7052
|
-
return invalid("artifact");
|
|
7053
7061
|
if (candidate.receipt === null || typeof candidate.receipt !== "object")
|
|
7054
7062
|
return invalid("receipt");
|
|
7055
|
-
const artifact = candidate.artifact;
|
|
7056
|
-
if (typeof artifact.digest !== "string" || !Array.isArray(artifact.bytes) && !ArrayBuffer.isView(artifact.bytes)) {
|
|
7057
|
-
return invalid("artifact");
|
|
7058
|
-
}
|
|
7059
|
-
const receiptResult = validateMaterialCookReceipt(candidate.receipt, {
|
|
7060
|
-
artifactDigest: artifact.digest
|
|
7061
|
-
});
|
|
7062
|
-
if (!receiptResult.ok) return receiptResult;
|
|
7063
7063
|
const resolved = candidate.resolved;
|
|
7064
7064
|
if (!Array.isArray(resolved.passes)) return invalid("resolved.passes", resolved.passes);
|
|
7065
7065
|
if (!Array.isArray(resolved.parameters))
|
|
7066
7066
|
return invalid("resolved.parameters", resolved.parameters);
|
|
7067
7067
|
if (resolved.values === null || typeof resolved.values !== "object" || Array.isArray(resolved.values))
|
|
7068
7068
|
return invalid("resolved.values", resolved.values);
|
|
7069
|
+
const passes = resolved.passes;
|
|
7070
|
+
const passNames = /* @__PURE__ */ new Set();
|
|
7071
|
+
for (const [index, pass] of passes.entries()) {
|
|
7072
|
+
if (pass === null || typeof pass !== "object" || typeof pass.name !== "string" || !pass.name || passNames.has(pass.name) || pass.program === null || typeof pass.program !== "object" || typeof pass.program.module !== "string")
|
|
7073
|
+
return invalid(`resolved.passes[${index}]`);
|
|
7074
|
+
passNames.add(pass.name);
|
|
7075
|
+
}
|
|
7076
|
+
if (!Array.isArray(candidate.programs) || candidate.programs.length === 0)
|
|
7077
|
+
return invalid("programs");
|
|
7078
|
+
const programs = [];
|
|
7079
|
+
const programKeys = /* @__PURE__ */ new Set();
|
|
7080
|
+
const selections = /* @__PURE__ */ new Set();
|
|
7081
|
+
const selectedPasses = /* @__PURE__ */ new Set();
|
|
7082
|
+
for (const [index, entry] of candidate.programs.entries()) {
|
|
7083
|
+
const field = `programs[${index}]`;
|
|
7084
|
+
if (entry === null || typeof entry !== "object") return invalid(field);
|
|
7085
|
+
const program = entry;
|
|
7086
|
+
if (typeof program.specializationKey !== "string" || !program.specializationKey || programKeys.has(program.specializationKey))
|
|
7087
|
+
return invalid(`${field}.specializationKey`);
|
|
7088
|
+
programKeys.add(program.specializationKey);
|
|
7089
|
+
if (program.artifact === null || typeof program.artifact !== "object")
|
|
7090
|
+
return invalid(`${field}.artifact`);
|
|
7091
|
+
const artifact = program.artifact;
|
|
7092
|
+
const bytes = normalizeArtifactBytes(artifact.bytes);
|
|
7093
|
+
if (artifact.mediaType !== "text/wgsl" || typeof artifact.path !== "string" || !artifact.path || typeof artifact.digest !== "string" || !artifact.digest || bytes === void 0)
|
|
7094
|
+
return invalid(`${field}.artifact`);
|
|
7095
|
+
if (!Array.isArray(program.selections) || program.selections.length === 0)
|
|
7096
|
+
return invalid(`${field}.selections`);
|
|
7097
|
+
const programSelections = [];
|
|
7098
|
+
for (const [selectionIndex, selection] of program.selections.entries()) {
|
|
7099
|
+
const selectionField = `${field}.selections[${selectionIndex}]`;
|
|
7100
|
+
if (selection === null || typeof selection !== "object" || !passNames.has(selection.pass))
|
|
7101
|
+
return invalid(selectionField);
|
|
7102
|
+
const context = validateMaterialCookProgramContext(selection.context);
|
|
7103
|
+
if (!context.ok)
|
|
7104
|
+
return invalid(
|
|
7105
|
+
`${selectionField}.${context.error.detail.field}`,
|
|
7106
|
+
context.error.detail.actual
|
|
7107
|
+
);
|
|
7108
|
+
const key = JSON.stringify([selection.pass, materialProgramContextKey(context.value)]);
|
|
7109
|
+
if (selections.has(key)) return invalid(selectionField, "ambiguous Pass/context selection");
|
|
7110
|
+
selections.add(key);
|
|
7111
|
+
selectedPasses.add(selection.pass);
|
|
7112
|
+
programSelections.push({ pass: selection.pass, context: context.value });
|
|
7113
|
+
}
|
|
7114
|
+
programs.push({
|
|
7115
|
+
specializationKey: program.specializationKey,
|
|
7116
|
+
artifact: { mediaType: "text/wgsl", path: artifact.path, digest: artifact.digest, bytes },
|
|
7117
|
+
selections: programSelections
|
|
7118
|
+
});
|
|
7119
|
+
}
|
|
7120
|
+
if ([...passNames].some((pass) => !selectedPasses.has(pass)))
|
|
7121
|
+
return invalid("programs.selections", "unpublished Pass");
|
|
7122
|
+
const manifestDigest = createMaterialProgramSetDigest(programs, passes);
|
|
7123
|
+
const receiptResult = validateMaterialCookReceipt(candidate.receipt, {
|
|
7124
|
+
artifactDigest: manifestDigest
|
|
7125
|
+
});
|
|
7126
|
+
if (!receiptResult.ok) return receiptResult;
|
|
7069
7127
|
let expectedLayerPlanIdentity;
|
|
7070
7128
|
try {
|
|
7071
7129
|
expectedLayerPlanIdentity = materialLayerPlanIdentity({
|
|
@@ -7080,29 +7138,70 @@ function validateCookedMaterialRecord(value) {
|
|
|
7080
7138
|
receiptResult.value.derivedInterface.layerPlanIdentity
|
|
7081
7139
|
);
|
|
7082
7140
|
}
|
|
7083
|
-
if (candidate.artifactDigest !== void 0 && candidate.artifactDigest !==
|
|
7141
|
+
if (candidate.artifactDigest !== void 0 && candidate.artifactDigest !== manifestDigest)
|
|
7084
7142
|
return invalid("artifactDigest", candidate.artifactDigest);
|
|
7085
7143
|
if (candidate.publicationGeneration !== void 0 && receiptResult.value.identity.cookGeneration !== candidate.publicationGeneration)
|
|
7086
7144
|
return invalid("receipt.identity.cookGeneration", receiptResult.value.identity.cookGeneration);
|
|
7087
|
-
|
|
7145
|
+
return ok({
|
|
7088
7146
|
...candidate,
|
|
7089
|
-
|
|
7090
|
-
...artifact,
|
|
7091
|
-
bytes: ArrayBuffer.isView(artifact.bytes) ? Uint8Array.from(artifact.bytes) : Uint8Array.from(artifact.bytes)
|
|
7092
|
-
},
|
|
7147
|
+
programs,
|
|
7093
7148
|
receipt: receiptResult.value
|
|
7094
|
-
};
|
|
7095
|
-
return ok(normalized);
|
|
7149
|
+
});
|
|
7096
7150
|
}
|
|
7097
7151
|
function projectCookedMaterialRecord(record) {
|
|
7098
7152
|
return {
|
|
7099
7153
|
resolved: record.resolved,
|
|
7100
7154
|
refs: record.refs,
|
|
7101
|
-
|
|
7155
|
+
programs: record.programs,
|
|
7102
7156
|
receipt: record.receipt,
|
|
7103
7157
|
schemaVersion: record.schemaVersion
|
|
7104
7158
|
};
|
|
7105
7159
|
}
|
|
7160
|
+
function materialProgramContextKey(context) {
|
|
7161
|
+
return JSON.stringify(jsonValue(context));
|
|
7162
|
+
}
|
|
7163
|
+
function validateMaterialCookProgramContext(value) {
|
|
7164
|
+
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
7165
|
+
return invalid("context", value);
|
|
7166
|
+
const context = value;
|
|
7167
|
+
const fields = {
|
|
7168
|
+
backend: ["webgpu", "webgl2", "wgpu-native"],
|
|
7169
|
+
capability: ["storage-buffer", "uniform-fallback"],
|
|
7170
|
+
pipeline: ["forward", "deferred"],
|
|
7171
|
+
geometry: ["mesh", "skinned", "sprite"],
|
|
7172
|
+
pass: ["forward", "shadow", "depth"],
|
|
7173
|
+
profile: ["forgeax-material-wgsl-v1"],
|
|
7174
|
+
toolchain: ["naga-oil"],
|
|
7175
|
+
instrumentation: ["none", "validation"]
|
|
7176
|
+
};
|
|
7177
|
+
for (const field of Object.keys(context)) {
|
|
7178
|
+
if (!(field in fields)) return invalid(`context.${field}`, context[field]);
|
|
7179
|
+
}
|
|
7180
|
+
for (const [field, allowed] of Object.entries(fields)) {
|
|
7181
|
+
if (!allowed.includes(context[field]))
|
|
7182
|
+
return invalid(`context.${field}`, context[field]);
|
|
7183
|
+
}
|
|
7184
|
+
return ok({ ...context });
|
|
7185
|
+
}
|
|
7186
|
+
function createMaterialProgramSetDigest(programs, passes) {
|
|
7187
|
+
const manifest = {
|
|
7188
|
+
passes,
|
|
7189
|
+
programs: programs.map((program) => ({
|
|
7190
|
+
specializationKey: program.specializationKey,
|
|
7191
|
+
artifact: {
|
|
7192
|
+
path: program.artifact.path,
|
|
7193
|
+
mediaType: program.artifact.mediaType,
|
|
7194
|
+
digest: program.artifact.digest
|
|
7195
|
+
},
|
|
7196
|
+
selections: [...program.selections].sort(
|
|
7197
|
+
(a, b) => JSON.stringify(jsonValue(a)).localeCompare(JSON.stringify(jsonValue(b)))
|
|
7198
|
+
)
|
|
7199
|
+
})).sort((a, b) => a.specializationKey.localeCompare(b.specializationKey))
|
|
7200
|
+
};
|
|
7201
|
+
return createMaterialArtifactDigest(
|
|
7202
|
+
new TextEncoder().encode(JSON.stringify(jsonValue(manifest)))
|
|
7203
|
+
);
|
|
7204
|
+
}
|
|
7106
7205
|
function packageEvidence(input) {
|
|
7107
7206
|
return {
|
|
7108
7207
|
guid: input.guid,
|
|
@@ -9344,6 +9443,6 @@ function parsePackV2(value) {
|
|
|
9344
9443
|
return ok(value);
|
|
9345
9444
|
}
|
|
9346
9445
|
|
|
9347
|
-
export { AssetGuid, MESH_BIN_DIGEST_BYTES, MESH_BIN_HEADER_V4_BYTES, MESH_BIN_PROJECTION_VERSION, MESH_BIN_VERSION, PACK_AUTHORING_OPERATION_DESCRIPTORS, PACK_AUTHORING_OPERATION_IDS, PACK_PARAMETER_TYPES, PACK_SOURCE_KEY_RE, PackageId, SCRIPTABLE_PACK_ASSET_KINDS, buildOfflineAssetEvidence, calculateTopologyDiff, collectMaterialCookRefs, createMaterialArtifactDigest, createMaterialCookIdentity, createPackAuthoringGateway, decodeMeshBinHeader, definePack, definePackageId, diffTopology, hasPackParameters, isScriptablePackAssetKind, isStandardMaterialRecord, isStandardRootModule, isValidAssetGuidString, isValidPackSourceKey, materialLayerPlanIdentity, packageVerification, parsePackSourceJson, parsePackV2, projectCookedMaterialRecord, projectDirectPackJson, projectRuntimePack, projectScriptablePackMeta, projectScriptablePackSceneComponents, resolvePackInheritance, resolvePackParameterInheritance, resolvePackParameterValues, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateArtifactPath, validateCookedMaterialRecord, validateMaterialCookReceipt, validateMeta, validatePack, validatePackDefinition, validatePackV2, validateProducerContract, validateProducerOutputs, writeMaterialArtifact, writeMeshBinHeader };
|
|
9446
|
+
export { AssetGuid, MESH_BIN_DIGEST_BYTES, MESH_BIN_HEADER_V4_BYTES, MESH_BIN_PROJECTION_VERSION, MESH_BIN_VERSION, PACK_AUTHORING_OPERATION_DESCRIPTORS, PACK_AUTHORING_OPERATION_IDS, PACK_PARAMETER_TYPES, PACK_SOURCE_KEY_RE, PackageId, SCRIPTABLE_PACK_ASSET_KINDS, buildOfflineAssetEvidence, calculateTopologyDiff, collectMaterialCookRefs, createMaterialArtifactDigest, createMaterialCookIdentity, createMaterialProgramSetDigest, createPackAuthoringGateway, decodeMeshBinHeader, definePack, definePackageId, diffTopology, hasPackParameters, isScriptablePackAssetKind, isStandardMaterialRecord, isStandardRootModule, isValidAssetGuidString, isValidPackSourceKey, materialLayerPlanIdentity, materialProgramContextKey, packageVerification, parsePackSourceJson, parsePackV2, projectCookedMaterialRecord, projectDirectPackJson, projectRuntimePack, projectScriptablePackMeta, projectScriptablePackSceneComponents, resolvePackInheritance, resolvePackParameterInheritance, resolvePackParameterValues, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateArtifactPath, validateCookedMaterialRecord, validateMaterialCookProgramContext, validateMaterialCookReceipt, validateMeta, validatePack, validatePackDefinition, validatePackV2, validateProducerContract, validateProducerOutputs, writeMaterialArtifact, writeMeshBinHeader };
|
|
9348
9447
|
//# sourceMappingURL=index.mjs.map
|
|
9349
9448
|
//# sourceMappingURL=index.mjs.map
|