@forgeax/engine-pack 0.1.3 → 0.1.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.
Files changed (95) hide show
  1. package/README.md +51 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/owner-chain.integration.test.d.ts +2 -0
  4. package/dist/__tests__/owner-chain.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/package-finalizer.contract.test.d.ts +2 -0
  6. package/dist/__tests__/package-finalizer.contract.test.d.ts.map +1 -0
  7. package/dist/__tests__/runtime.browser.test.d.ts +2 -0
  8. package/dist/__tests__/runtime.browser.test.d.ts.map +1 -0
  9. package/dist/__tests__/scanner-inventory.contract.test.d.ts +2 -0
  10. package/dist/__tests__/scanner-inventory.contract.test.d.ts.map +1 -0
  11. package/dist/artifact-path.mjs +53 -0
  12. package/dist/artifact-path.mjs.map +1 -0
  13. package/dist/atlas/shelf-pack.d.ts.map +1 -1
  14. package/dist/build.d.ts +17 -0
  15. package/dist/build.d.ts.map +1 -0
  16. package/dist/build.mjs +10168 -0
  17. package/dist/build.mjs.map +1 -0
  18. package/dist/builtin.d.ts +20 -0
  19. package/dist/builtin.d.ts.map +1 -1
  20. package/dist/builtin.mjs +141 -0
  21. package/dist/builtin.mjs.map +1 -0
  22. package/dist/catalog-builder.d.ts +43 -0
  23. package/dist/catalog-builder.d.ts.map +1 -0
  24. package/dist/catalog-delta.d.ts +11 -0
  25. package/dist/catalog-delta.d.ts.map +1 -0
  26. package/dist/catalog-projection.d.ts +91 -0
  27. package/dist/catalog-projection.d.ts.map +1 -0
  28. package/dist/cli-asset.mjs +231 -484
  29. package/dist/cli-asset.mjs.map +1 -1
  30. package/dist/index.mjs +83 -1
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/material-cook.d.ts +2 -0
  33. package/dist/material-cook.d.ts.map +1 -0
  34. package/dist/material-cook.mjs +193 -0
  35. package/dist/material-cook.mjs.map +1 -0
  36. package/dist/mesh-bin-contract.mjs +96 -0
  37. package/dist/mesh-bin-contract.mjs.map +1 -0
  38. package/dist/native-cooker-registry.d.ts +19 -0
  39. package/dist/native-cooker-registry.d.ts.map +1 -1
  40. package/dist/native-cooker.mjs +37 -0
  41. package/dist/native-cooker.mjs.map +1 -1
  42. package/dist/package-finalizer.d.ts +121 -0
  43. package/dist/package-finalizer.d.ts.map +1 -0
  44. package/dist/resolve-asset-source.d.ts.map +1 -1
  45. package/dist/resolve-asset-source.mjs +16 -6
  46. package/dist/resolve-asset-source.mjs.map +1 -1
  47. package/dist/runtime-publication.d.ts +44 -0
  48. package/dist/runtime-publication.d.ts.map +1 -0
  49. package/dist/runtime.d.ts +8 -0
  50. package/dist/runtime.d.ts.map +1 -0
  51. package/dist/runtime.mjs +7261 -0
  52. package/dist/runtime.mjs.map +1 -0
  53. package/dist/scanner.d.ts +87 -54
  54. package/dist/scanner.d.ts.map +1 -1
  55. package/dist/scanner.mjs +258 -454
  56. package/dist/scanner.mjs.map +1 -1
  57. package/dist/scriptable-pack-node.d.ts +3 -8
  58. package/dist/scriptable-pack-node.d.ts.map +1 -1
  59. package/dist/scriptable-pack-node.mjs +93 -9
  60. package/dist/scriptable-pack-node.mjs.map +1 -1
  61. package/dist/scriptable-pack-worker.mjs +1 -0
  62. package/dist/scriptable-pack-worker.mjs.map +1 -1
  63. package/dist/scriptable-pack.d.ts +33 -0
  64. package/dist/scriptable-pack.d.ts.map +1 -1
  65. package/dist/scriptable-pack.mjs +91 -2
  66. package/dist/scriptable-pack.mjs.map +1 -1
  67. package/dist/topology.d.ts +1 -1
  68. package/dist/topology.d.ts.map +1 -1
  69. package/package.json +27 -2
  70. package/src/__tests__/mesh-bin-consumer-surface.unit.test.ts +2 -1
  71. package/src/__tests__/owner-chain.integration.test.ts +78 -0
  72. package/src/__tests__/package-finalizer.contract.test.ts +105 -0
  73. package/src/__tests__/runtime.browser.test.ts +15 -0
  74. package/src/__tests__/scanner-inventory.contract.test.ts +167 -0
  75. package/src/__tests__/scanner-inventory.test.ts +16 -12
  76. package/src/__tests__/scriptable-pack.unit.test.ts +42 -0
  77. package/src/atlas/shelf-pack.ts +20 -24
  78. package/src/build.ts +137 -0
  79. package/src/builtin.ts +38 -0
  80. package/src/catalog-builder.ts +313 -0
  81. package/src/catalog-delta.ts +189 -0
  82. package/src/catalog-projection.ts +344 -0
  83. package/src/cli-asset.ts +1 -5
  84. package/src/index.ts +2 -2
  85. package/src/material-cook.ts +13 -0
  86. package/src/native-cooker-registry.ts +72 -0
  87. package/src/package-finalizer.ts +394 -0
  88. package/src/resolve-asset-source.ts +2 -7
  89. package/src/runtime-publication.ts +190 -0
  90. package/src/runtime.ts +23 -0
  91. package/src/scanner.ts +289 -290
  92. package/src/scriptable-pack-node.ts +27 -23
  93. package/src/scriptable-pack-worker.ts +2 -0
  94. package/src/scriptable-pack.ts +123 -1
  95. package/src/topology.ts +2 -1
package/dist/scanner.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import type { CatalogDiagnostic, ProviderProvenance, ResourceRevision, SourceOverrideDescriptor } from '@forgeax/engine-types';
1
2
  import { PackError } from './errors.js';
2
- import { type ScriptablePackMetaJson } from './scriptable-pack.js';
3
- import { type LoadScriptablePackOptions, type ScriptablePackSourceClosureEntry } from './scriptable-pack-node.js';
3
+ import { type ScriptablePackDefinition, type ScriptablePackMetaJson, type ScriptablePackSourceClosureEntry } from './scriptable-pack.js';
4
+ import { type ScriptablePackModuleExecutor } from './scriptable-pack-node.js';
4
5
  export type ScanResult<T, E> = {
5
6
  readonly ok: true;
6
7
  readonly value: T;
@@ -11,70 +12,102 @@ export type ScanResult<T, E> = {
11
12
  /** Host-owned source paths that should not enter the Pack catalog. */
12
13
  export interface ScanOptions {
13
14
  readonly ignorePath?: (path: string) => boolean;
14
- /** Timeout/executor owner for ScriptablePack metadata loading. */
15
- readonly scriptablePackLoad?: LoadScriptablePackOptions;
15
+ readonly scriptablePack?: ScriptablePackScanOptions;
16
16
  }
17
- export type AssetInventoryProducerKind = 'direct-pack' | 'source-meta' | 'scriptable-pack';
18
- export interface AssetInventoryOutput {
17
+ /** One bounded executor policy shared by ScriptablePack inventory and production. */
18
+ export interface ScriptablePackScanOptions {
19
+ readonly timeoutMs?: number;
20
+ readonly buildTimeoutMs?: number;
21
+ readonly executor?: ScriptablePackModuleExecutor;
22
+ /** Path-only scans must release the isolated loader before returning. */
23
+ readonly metadataOnly?: boolean;
24
+ }
25
+ /** Stable default policy shared by inventory and production owners. */
26
+ export declare const STANDARD_SCRIPTABLE_PACK_SCAN_OPTIONS: Readonly<{}>;
27
+ export interface InventoryDeclaration {
19
28
  readonly guid: string;
29
+ readonly kind: string;
30
+ readonly sourcePath: string;
31
+ readonly sourceRevision: string;
20
32
  readonly sourceKey?: string;
21
33
  readonly sourceIndex?: number;
22
- readonly kind: string;
23
- readonly name?: string;
24
- readonly execution?: 'direct' | 'cooked';
25
- readonly refs: readonly string[];
26
34
  }
27
- export interface AssetInventoryProjectedMeta {
28
- readonly schemaVersion?: string;
35
+ export interface ScanInventory {
36
+ readonly paths: readonly string[];
37
+ readonly inventory: readonly InventoryDeclaration[];
38
+ /** Complete parsed source declarations captured by the validated scan pass. */
39
+ readonly declarations: ReadonlyMap<string, ScanSourceDeclaration>;
40
+ }
41
+ export interface ScriptablePackInventoryDeclaration {
42
+ readonly sourcePath: string;
43
+ readonly sourceRevision: string;
44
+ readonly meta: ScriptablePackMetaJson;
45
+ readonly definition: Readonly<ScriptablePackDefinition>;
46
+ readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];
47
+ }
48
+ export interface MetaInventoryDocument {
49
+ readonly schemaVersion: string | number;
50
+ readonly kind: 'external-asset-package';
29
51
  readonly packageId?: string;
30
- readonly importer?: string;
31
- readonly source?: string;
32
52
  readonly name?: string;
33
- readonly outputs: readonly AssetInventoryOutput[];
34
- readonly externalGuids: readonly string[];
53
+ readonly provenance?: ProviderProvenance;
54
+ readonly revision?: ResourceRevision;
55
+ readonly diagnostics?: readonly CatalogDiagnostic[];
56
+ readonly importer: string;
57
+ readonly source?: string;
58
+ readonly importSettings: Readonly<Record<string, unknown>>;
59
+ readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
60
+ readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];
61
+ readonly paramSchema?: readonly Readonly<Record<string, unknown>>[];
62
+ readonly subAssets: readonly MetaInventorySubAsset[];
35
63
  }
36
- export interface AssetInventoryDiagnostic {
37
- readonly code: string;
38
- readonly message: string;
64
+ export interface MetaInventorySubAsset {
65
+ readonly guid: string;
66
+ readonly sourceIndex: number;
67
+ readonly sourceKey?: string;
68
+ readonly name?: string;
69
+ readonly kind: string;
39
70
  }
40
- export interface AssetInventoryDeclaration {
41
- readonly sourcePath: string;
42
- readonly canonicalSourcePath: string;
43
- readonly producer: AssetInventoryProducerKind;
71
+ export interface PackInventoryDocument {
72
+ readonly schemaVersion: '1.0.0' | '2.0.0';
73
+ readonly kind: 'internal-text-package';
44
74
  readonly packageId?: string;
45
- readonly projectedMeta: AssetInventoryProjectedMeta;
46
- readonly outputs: readonly AssetInventoryOutput[];
47
- readonly externalGuids: readonly string[];
48
- readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];
49
- readonly diagnostics: readonly AssetInventoryDiagnostic[];
75
+ readonly provenance?: ProviderProvenance;
76
+ readonly revision?: ResourceRevision;
77
+ readonly diagnostics?: readonly CatalogDiagnostic[];
78
+ readonly assets: readonly PackInventoryAsset[];
50
79
  }
51
- export interface AssetInventory {
52
- readonly paths: readonly string[];
53
- readonly scriptablePackMeta: ReadonlyMap<string, ScriptablePackMetaJson>;
54
- /** One declaration record per authored package/source, keyed by source path. */
55
- readonly declarations: readonly AssetInventoryDeclaration[];
56
- readonly declarationsByPath: ReadonlyMap<string, AssetInventoryDeclaration>;
57
- /** Producer ownership map used by Catalog, watcher, and demand cook. */
58
- readonly sourceByGuid: ReadonlyMap<string, string>;
59
- readonly metaByGuid: ReadonlyMap<string, string>;
80
+ export interface PackInventoryAsset {
81
+ readonly guid: string;
82
+ readonly kind: string;
83
+ readonly name?: string;
84
+ readonly execution?: 'direct' | 'cooked';
85
+ readonly sourceKey?: string;
86
+ readonly sourceIndex?: number;
87
+ readonly payload: Readonly<Record<string, unknown>>;
88
+ readonly refs: readonly string[];
89
+ readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
60
90
  }
91
+ export type ScanSourceDeclaration = {
92
+ readonly format: 'meta.json';
93
+ readonly sourcePath: string;
94
+ readonly sourceRevision: string;
95
+ readonly value: MetaInventoryDocument;
96
+ } | {
97
+ readonly format: 'pack.json';
98
+ readonly sourcePath: string;
99
+ readonly sourceRevision: string;
100
+ readonly sourceText: string;
101
+ readonly value: PackInventoryDocument;
102
+ } | ({
103
+ readonly format: 'pack.ts';
104
+ readonly sourcePath: string;
105
+ readonly sourceRevision: string;
106
+ readonly value: ScriptablePackMetaJson;
107
+ } & ScriptablePackInventoryDeclaration);
61
108
  export declare const SCANNER_BLACKLIST: ReadonlySet<string>;
62
- /**
63
- * Scan one or more root directories for `.meta.json`, `.pack.json`, and `.pack.ts` files.
64
- * Runs a 7-step fail-fast validation chain (w17 + M7-T01):
65
- * Step 1 - collect all .meta.json + .pack.json + .pack.ts paths (blacklist skipped)
66
- * Step 2 - schema validation (ajv strict)
67
- * Step 3 - GUID string format validation
68
- * Step 4 - GUID collision detection
69
- * Step 5 - orphan .meta.json detection
70
- * Step 6 - cyclic reference detection (hand-written DFS)
71
- * Step 7 - complete pack and source closure validation
72
- *
73
- * Returns one reusable `AssetInventory` or `Err(PackError)` on the first violation.
74
- *
75
- * NOTE: source files without a .meta.json are logged but not fatal (requirements §5).
76
- */
77
- export declare function scanInventory(roots: readonly string[], opts?: ScanOptions): Promise<ScanResult<AssetInventory, PackError>>;
78
- /** Compatibility projection for callers that only need discovered paths. */
109
+ /** Scan one complete Pack inventory while preserving the public path-only API. */
79
110
  export declare function scan(roots: readonly string[], opts?: ScanOptions): Promise<ScanResult<string[], PackError>>;
111
+ /** Return the validated source inventory without interpreting producer output kinds. */
112
+ export declare function scanInventory(roots: readonly string[], opts?: ScanOptions): Promise<ScanResult<ScanInventory, PackError>>;
80
113
  //# sourceMappingURL=scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}