@metamesh/generator-sdk 0.10.0 → 0.11.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +34 -25
  3. package/dist/authoring.d.ts +1 -52
  4. package/dist/authoring.d.ts.map +1 -1
  5. package/dist/authoring.js +0 -24
  6. package/dist/authoring.js.map +1 -1
  7. package/dist/contracts.d.ts +15 -0
  8. package/dist/contracts.d.ts.map +1 -1
  9. package/dist/execute-generator.d.ts +14 -23
  10. package/dist/execute-generator.d.ts.map +1 -1
  11. package/dist/execute-generator.js +33 -32
  12. package/dist/execute-generator.js.map +1 -1
  13. package/dist/generated-parts.d.ts +16 -0
  14. package/dist/generated-parts.d.ts.map +1 -1
  15. package/dist/generated-parts.js +155 -67
  16. package/dist/generated-parts.js.map +1 -1
  17. package/dist/generator-module.d.ts +20 -17
  18. package/dist/generator-module.d.ts.map +1 -1
  19. package/dist/generator-module.js +3 -4
  20. package/dist/generator-module.js.map +1 -1
  21. package/dist/generator-package/constants.d.ts +2 -2
  22. package/dist/generator-package/constants.js +2 -2
  23. package/dist/generator-package/schemas/manifest.schema.d.ts +1 -1
  24. package/dist/generator-package/validate-manifest.js +2 -2
  25. package/dist/index.d.ts +2 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/parameters/preparation.d.ts +8 -6
  30. package/dist/parameters/preparation.d.ts.map +1 -1
  31. package/dist/parameters/preparation.js +21 -10
  32. package/dist/parameters/preparation.js.map +1 -1
  33. package/dist/parameters.d.ts +1 -1
  34. package/dist/parameters.d.ts.map +1 -1
  35. package/dist/parameters.js +1 -1
  36. package/dist/parameters.js.map +1 -1
  37. package/dist/parse-generator-module.d.ts +5 -27
  38. package/dist/parse-generator-module.d.ts.map +1 -1
  39. package/dist/parse-generator-module.js +29 -96
  40. package/dist/parse-generator-module.js.map +1 -1
  41. package/dist/runtime.d.ts +6 -6
  42. package/dist/runtime.d.ts.map +1 -1
  43. package/dist/runtime.js +3 -3
  44. package/dist/runtime.js.map +1 -1
  45. package/dist/worker-contracts.d.ts +2 -2
  46. package/dist/worker-contracts.d.ts.map +1 -1
  47. package/dist/worker-contracts.js.map +1 -1
  48. package/package.json +4 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @metamesh/generator-sdk
2
2
 
3
+ ## 0.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b5da778: Replace prepare/build with typed generation programs, optional computed values and authoritative
8
+ part placement. Add isolated session caches and deferred geometry with explicit snapshot ownership.
9
+ Expose immutable fluent Solid and Section methods for transforms, subtraction, finishing, and
10
+ Section-to-Solid construction, replacing the corresponding standalone operations and public
11
+ context facade. Generator packages require format 4 and runtime 4; previous executable contracts are unsupported.
12
+
13
+ ### Patch Changes
14
+
15
+ - d69836c: Update the Generator SDK's runtime validation dependency to Zod 4.6.7.
16
+ - bfb7a63: Keep computed dependencies correct after conditional removal and re-registration, and prevent
17
+ caught evaluation failures from returning earlier cached values. Reduce immutable data copying,
18
+ centralize geometry finalization, and validate newly delivered resources once while preserving
19
+ per-revision part and aggregate resource checks.
20
+
21
+ Replace transparent cached typed arrays with explicit immutableBuffer and immutableMesh capture
22
+ helpers. Cached numeric data exposes length, at(), and copy(); uncaptured typed arrays in computed
23
+ results or bindings now reject. Snapshot and Worker output buffers remain ordinary typed arrays.
24
+
3
25
  ## 0.10.0
4
26
 
5
27
  ### Minor Changes
package/README.md CHANGED
@@ -12,7 +12,7 @@ pnpm add @metamesh/generator-sdk
12
12
 
13
13
  | Import | Use it for |
14
14
  | ------------- | ---------------------------------------------------------- |
15
- | Package root | Definitions, presets, and preparation/module authoring |
15
+ | Package root | Definitions, presets, and module authoring |
16
16
  | `/parameters` | Defaults, recovering saved values, and strict codecs |
17
17
  | `/runtime` | Module execution, generated mesh data, and Worker messages |
18
18
  | `/packages` | Package, catalog, and installation parsing |
@@ -55,36 +55,45 @@ Generator and package parsing uses the same rules. The package also ships
55
55
  `@metamesh/generator-sdk/parameters.schema.json` for offline editor completion and structural
56
56
  validation; the SDK additionally checks references, defaults, and cross-field invariants.
57
57
 
58
- ## Prepare and build
58
+ ## Generate a model
59
59
 
60
- With [Modeling](https://github.com/JasonKoolman/metamesh/blob/main/packages/modeling/README.md)
61
- installed, validate related dimensions and pass the prepared result into construction:
60
+ A Generator exports one format-4 default envelope containing its definition-bound program:
62
61
 
63
62
  ```ts
64
- import { defineGeneratorModule, definePreparation, prepared } from "@metamesh/generator-sdk";
65
- import { tube } from "@metamesh/modeling";
66
-
67
- const prepareSleeve = definePreparation(definition, (parameters, { invalid }) => {
68
- if (parameters.boreDiameter >= parameters.outerDiameter)
69
- return invalid("boreDiameter", "The bore must be smaller than the outside diameter.");
70
- return prepared({
71
- outerRadius: parameters.outerDiameter / 2,
72
- innerRadius: parameters.boreDiameter / 2,
73
- });
63
+ import { defineGeneratorModule, type GeneratorParams } from "@metamesh/generator-sdk";
64
+ import { generate, tube } from "@metamesh/modeling";
65
+
66
+ const model = generate<GeneratorParams<typeof definition>>(({ params, assert, part }) => {
67
+ assert(
68
+ params.boreDiameter < params.outerDiameter,
69
+ "The bore must be smaller than the outside diameter.",
70
+ { parameterId: "boreDiameter" }
71
+ );
72
+ return [
73
+ part(
74
+ "body",
75
+ tube({
76
+ outerRadius: params.outerDiameter / 2,
77
+ innerRadius: params.boreDiameter / 2,
78
+ height: 20,
79
+ })
80
+ ),
81
+ ];
74
82
  });
75
- const runtime = defineGeneratorModule({
76
- definition,
77
- prepare: prepareSleeve,
78
- build: (dimensions) => tube({ ...dimensions, height: 20 }),
79
- });
80
-
81
- export const { formatVersion, generatorId, version, prepare, build } = runtime;
83
+ export default defineGeneratorModule({ definition, generate: model });
82
84
  ```
83
85
 
84
- Both callbacks are synchronous. Load assets beforehand; preparation computes ordinary data, and
85
- build runs inside the host's Modeling engine. Prepared values stay local to one execution and
86
- are never persisted or transferred. Studio owns persistence and Worker lifecycle; Modeling owns
87
- geometry, finalization, and resource cleanup.
86
+ The host normalizes parameters and resolves assets before synchronous generation. Modeling owns
87
+ optional computed caches, deferred recipes, sessions and immutable snapshots; the SDK stays
88
+ renderer-neutral and imports no engine. The [generation contract](https://github.com/JasonKoolman/metamesh/blob/main/docs/model-generation.md)
89
+ owns dependencies, assertions, placement and lifecycle. `/runtime` strictly checks the new default
90
+ envelope and maps engine diagnostics to definition-owned issues. Unsupported package formats are
91
+ rejected before executable bytes are evaluated.
92
+
93
+ For incremental Worker deliveries, `/runtime` provides `GeneratedPartsDecoder`. It validates new
94
+ geometry buffers once and hydrates later resource references, while checking part metadata and
95
+ aggregate limits on every delivery. The receiving host keeps admitted buffers immutable and
96
+ attached, and calls `clear()` when replacing the delivery source.
88
97
 
89
98
  ## Documentation
90
99
 
@@ -1,57 +1,6 @@
1
- import type { GeneratorDefinition, GeneratorIssue, GeneratorParams, GeneratorPreset, ParameterIssue } from "./contracts.js";
2
- import type { Preparation } from "./generator-module.js";
3
- import { type GeneratorServices } from "./generator-services.js";
1
+ import type { GeneratorDefinition, GeneratorPreset } from "./contracts.js";
4
2
  /** Captures literal IDs and options; the host validates serializable metadata. */
5
3
  export declare function defineGenerator<const D extends GeneratorDefinition>(definition: D): D;
6
4
  /** Contextually types complete presets from the same definition as the controls. */
7
5
  export declare function definePresets<const D extends GeneratorDefinition, const Presets extends readonly GeneratorPreset<NoInfer<D>>[]>(_definition: D, presets: Presets): Presets;
8
- /** Successful worker-local preparation. The value is never cloned or inspected. */
9
- export declare function prepared<P>(value: P): {
10
- readonly ok: true;
11
- readonly value: P;
12
- readonly issues: readonly [];
13
- };
14
- /** Failed preparation attributed to a literal parameter ID or an existing error issue. */
15
- export declare function invalid<const Id extends string>(parameterId: Id, message: string): {
16
- readonly ok: false;
17
- readonly issues: readonly [
18
- {
19
- readonly severity: "error";
20
- readonly parameterId: Id;
21
- readonly message: string;
22
- }
23
- ];
24
- };
25
- export declare function invalid<const Issue extends ParameterIssue & {
26
- readonly severity: "error";
27
- }>(issue: Issue): {
28
- readonly ok: false;
29
- readonly issues: readonly [Issue];
30
- };
31
- /** Definition-bound error reporting plus the host's unchanged text service. */
32
- export interface PreparationServices<D extends GeneratorDefinition> extends GeneratorServices {
33
- /** Reports one error using a declared parameter ID or an existing definition-bound issue. */
34
- readonly invalid: {
35
- <const Id extends D["parameters"][number]["id"]>(parameterId: Id, message: string): {
36
- readonly ok: false;
37
- readonly issues: readonly [
38
- {
39
- readonly severity: "error";
40
- readonly parameterId: Id;
41
- readonly message: string;
42
- }
43
- ];
44
- };
45
- <const Issue extends GeneratorIssue<D> & {
46
- readonly severity: "error";
47
- }>(issue: Issue): {
48
- readonly ok: false;
49
- readonly issues: readonly [Issue];
50
- };
51
- };
52
- }
53
- /** Wraps preparation with definition-bound services while preserving its exact result and value. */
54
- export declare function definePreparation<const D extends GeneratorDefinition, Result extends Preparation<NoInfer<D>, unknown>>(_definition: D, callback: (parameters: GeneratorParams<NoInfer<D>>, services: PreparationServices<NoInfer<D>>) => Result): (parameters: GeneratorParams<D>, services?: GeneratorServices) => Result;
55
- /** Parameter-only preparation is useful for models with no derived dimensions. */
56
- export declare function prepareIdentity<const D extends GeneratorDefinition>(_definition: D): (parameters: GeneratorParams<D>) => ReturnType<typeof prepared<GeneratorParams<D>>>;
57
6
  //# sourceMappingURL=authoring.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE3E,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAErF;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAC3B,KAAK,CAAC,CAAC,SAAS,mBAAmB,EACnC,KAAK,CAAC,OAAO,SAAS,SAAS,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5D,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAE3C"}
package/dist/authoring.js CHANGED
@@ -1,4 +1,3 @@
1
- import { UNPREPARED_GENERATOR_SERVICES } from "./generator-services.js";
2
1
  /** Captures literal IDs and options; the host validates serializable metadata. */
3
2
  export function defineGenerator(definition) {
4
3
  return definition;
@@ -7,27 +6,4 @@ export function defineGenerator(definition) {
7
6
  export function definePresets(_definition, presets) {
8
7
  return presets;
9
8
  }
10
- /** Successful worker-local preparation. The value is never cloned or inspected. */
11
- export function prepared(value) {
12
- return { ok: true, value, issues: [] };
13
- }
14
- export function invalid(issueOrId, message) {
15
- if (typeof issueOrId === "string") {
16
- if (typeof message !== "string")
17
- throw new TypeError("Invalid preparation needs an error message.");
18
- return { ok: false, issues: [{ severity: "error", parameterId: issueOrId, message }] };
19
- }
20
- if (issueOrId === null || typeof issueOrId !== "object" || issueOrId.severity !== "error")
21
- throw new TypeError("Invalid preparation requires an error issue.");
22
- return { ok: false, issues: [issueOrId] };
23
- }
24
- /** Wraps preparation with definition-bound services while preserving its exact result and value. */
25
- export function definePreparation(_definition, callback) {
26
- return (parameters, services = UNPREPARED_GENERATOR_SERVICES) => callback(parameters, { ...services, invalid });
27
- }
28
- /** Parameter-only preparation is useful for models with no derived dimensions. */
29
- export function prepareIdentity(_definition) {
30
- void _definition;
31
- return prepared;
32
- }
33
9
  //# sourceMappingURL=authoring.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,6BAA6B,EAA0B,MAAM,yBAAyB,CAAC;AAEhG,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAsC,UAAa;IAChF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAG3B,WAAc,EAAE,OAAgB;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,QAAQ,CAAI,KAAQ;IAKlC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACzC,CAAC;AAkBD,MAAM,UAAU,OAAO,CACrB,SAAqE,EACrE,OAAgB;IAKhB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ;YAC7B,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACrE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO;QACvF,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5C,CAAC;AAwBD,oGAAoG;AACpG,MAAM,UAAU,iBAAiB,CAI/B,WAAc,EACd,QAGW;IAEX,OAAO,CAAC,UAAU,EAAE,QAAQ,GAAG,6BAA6B,EAAE,EAAE,CAC9D,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAC7B,WAAc;IAEd,KAAK,WAAW,CAAC;IACjB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAsC,UAAa;IAChF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAG3B,WAAc,EAAE,OAAgB;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -100,6 +100,12 @@ export interface ModelTimings {
100
100
  /** Selects whether Studio preserves or locally improves final planar triangle connectivity. */
101
101
  export type MeshTopologyMode = "original" | "optimized";
102
102
  export interface GeneratedPart {
103
+ /** Session-scoped immutable local mesh resource identity. */
104
+ readonly geometryId: string;
105
+ readonly geometryRevision: number;
106
+ /** Authoritative translation in mm and fixed global X, Y, Z rotations in degrees. */
107
+ readonly position: Vec3;
108
+ readonly rotation: Vec3;
103
109
  readonly id: string;
104
110
  readonly positions: Float32Array;
105
111
  readonly indices: Uint32Array;
@@ -114,4 +120,13 @@ export interface GeneratedModel {
114
120
  readonly stats?: ModelStats | undefined;
115
121
  readonly warnings: readonly ParameterIssue[];
116
122
  }
123
+ /** A subsequent delivery may reference a mesh already owned by the receiving session. */
124
+ export type GeneratedPartDelivery = GeneratedPart | (Omit<GeneratedPart, "positions" | "indices"> & {
125
+ readonly positions?: never;
126
+ readonly indices?: never;
127
+ });
128
+ /** Worker delivery; receiving hosts hydrate references before strict full-model parsing. */
129
+ export type GeneratedModelDelivery = Omit<GeneratedModel, "parts"> & {
130
+ readonly parts: readonly GeneratedPartDelivery[];
131
+ };
117
132
  //# sourceMappingURL=contracts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
@@ -1,40 +1,31 @@
1
- import type { GeneratorDefinition, GeneratorParams, ParameterValidationResult } from "./contracts.js";
2
- import type { GeneratorModule } from "./generator-module.js";
1
+ import type { GeneratorDefinition, GeneratorIssue, GeneratorParams, ParameterValidationResult } from "./contracts.js";
2
+ import type { GeneratorModule, GeneratorProgram } from "./generator-module.js";
3
3
  import type { GeneratorServices } from "./generator-services.js";
4
4
  import type { PreparedParameters } from "./parameters.js";
5
- import { type ParsedGeneratorModule } from "./parse-generator-module.js";
6
- export interface PrepareGeneratorOptions<D extends GeneratorDefinition, P, Context, Output> {
5
+ export interface ExecuteGeneratorOptions<D extends GeneratorDefinition, Program extends GeneratorProgram, Output> {
7
6
  readonly definition: D;
8
7
  readonly parameters: Readonly<Record<string, unknown>>;
9
- /** Host-owned normalization reused after asynchronous service preparation. */
8
+ /** Reuses host normalization performed before asynchronous asset preparation. */
10
9
  readonly parameterState?: PreparedParameters<D>;
11
- readonly module: Pick<GeneratorModule<D, P, Context, Output>, "prepare" | "build"> | ParsedGeneratorModule<D, Context, Output>;
10
+ readonly module: GeneratorModule<D, Program>;
12
11
  readonly services: GeneratorServices;
13
- }
14
- export interface ExecuteGeneratorOptions<D extends GeneratorDefinition, P, Context, Output> extends PrepareGeneratorOptions<D, P, Context, Output> {
15
- readonly context: Context;
12
+ /** The owning host runs its session; the SDK never initializes Modeling. */
13
+ readonly execute: (program: Program, parameters: GeneratorParams<D>, services: GeneratorServices) => Output;
16
14
  }
17
15
  export interface GeneratorExecutionInvalid<D extends GeneratorDefinition = GeneratorDefinition> {
18
16
  readonly type: "invalid";
19
17
  readonly parameters: GeneratorParams<D>;
20
18
  readonly validation: ParameterValidationResult;
21
19
  }
22
- export interface GeneratorExecutionPrepared<D extends GeneratorDefinition, Context, Output> {
23
- readonly type: "prepared";
24
- readonly parameters: GeneratorParams<D>;
25
- readonly validation: ParameterValidationResult;
26
- readonly build: (context: Context) => Output;
27
- }
28
- export interface GeneratorExecutionBuilt<D extends GeneratorDefinition, Output> {
29
- readonly type: "built";
20
+ export interface GeneratorExecutionGenerated<D extends GeneratorDefinition, Output> {
21
+ readonly type: "generated";
30
22
  readonly parameters: GeneratorParams<D>;
31
23
  readonly validation: ParameterValidationResult;
32
24
  readonly output: Output;
33
25
  }
34
- export type GeneratorPreparationResult<D extends GeneratorDefinition, Context, Output> = GeneratorExecutionInvalid<D> | GeneratorExecutionPrepared<D, Context, Output>;
35
- export type GeneratorExecutionResult<D extends GeneratorDefinition, Output> = GeneratorExecutionInvalid<D> | GeneratorExecutionBuilt<D, Output>;
36
- /** Normalizes once, checks preparation, and captures its exact value in a one-use build closure. */
37
- export declare function prepareGenerator<const D extends GeneratorDefinition, P, Context, Output>(options: PrepareGeneratorOptions<D, P, Context, Output>): GeneratorPreparationResult<D, Context, Output>;
38
- /** Executes the callback pair; geometry finalization belongs to the owning host engine. */
39
- export declare function executeGenerator<const D extends GeneratorDefinition, P, Context, Output>(options: ExecuteGeneratorOptions<D, P, Context, Output>): GeneratorExecutionResult<D, Output>;
26
+ export type GeneratorExecutionResult<D extends GeneratorDefinition, Output> = GeneratorExecutionInvalid<D> | GeneratorExecutionGenerated<D, Output>;
27
+ /** Converts engine diagnostics at the SDK boundary, checking severity and parameter ownership. */
28
+ export declare function generationIssues<D extends GeneratorDefinition>(definition: D, value: unknown): readonly GeneratorIssue<D>[] | undefined;
29
+ /** Normalizes once and executes the host's synchronous session, preserving structured diagnostics. */
30
+ export declare function executeGenerator<const D extends GeneratorDefinition, Program extends GeneratorProgram, Output>(options: ExecuteGeneratorOptions<D, Program, Output>): GeneratorExecutionResult<D, Output>;
40
31
  //# sourceMappingURL=execute-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute-generator.d.ts","sourceRoot":"","sources":["../src/execute-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute-generator.d.ts","sourceRoot":"","sources":["../src/execute-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,WAAW,uBAAuB,CACtC,CAAC,SAAS,mBAAmB,EAC7B,OAAO,SAAS,gBAAgB,EAChC,MAAM;IAEN,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,iFAAiF;IACjF,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,CAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE,iBAAiB,KACxB,MAAM,CAAC;CACb;AAED,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAC5F,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;CAChD;AAED,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,EAAE,MAAM;IAChF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,mBAAmB,EAAE,MAAM,IACxE,yBAAyB,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAExE,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,mBAAmB,EAC5D,UAAU,EAAE,CAAC,EACb,KAAK,EAAE,OAAO,GACb,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAO1C;AAED,sGAAsG;AACtG,wBAAgB,gBAAgB,CAC9B,KAAK,CAAC,CAAC,SAAS,mBAAmB,EACnC,OAAO,SAAS,gBAAgB,EAChC,MAAM,EACN,OAAO,EAAE,uBAAuB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC,CAmB3F"}
@@ -1,36 +1,37 @@
1
- import { aggregateParameterIssues, prepareParameters } from "./parameters.js";
2
- import { capturePreparation } from "./parse-generator-module.js";
3
- /** Normalizes once, checks preparation, and captures its exact value in a one-use build closure. */
4
- export function prepareGenerator(options) {
5
- const { definition, module, services } = options;
6
- const parameters = options.parameterState ?? prepareParameters(definition, options.parameters);
7
- if (!parameters.validation.isValid) {
8
- return Object.freeze({ type: "invalid", ...parameters });
9
- }
10
- const prepared = "build" in module
11
- ? capturePreparation(definition, module.prepare(parameters.parameters, services), module.build)
12
- : module.prepare(parameters.parameters, services);
13
- const validation = aggregateParameterIssues(parameters.validation.issues, prepared.issues);
14
- if (!prepared.ok || !validation.isValid) {
15
- return Object.freeze({ type: "invalid", parameters: parameters.parameters, validation });
16
- }
17
- return Object.freeze({
18
- type: "prepared",
19
- parameters: parameters.parameters,
20
- validation,
21
- build: prepared.build,
22
- });
1
+ import { aggregateParameterIssues, parseParameterIssues, prepareParameters } from "./parameters.js";
2
+ /** Converts engine diagnostics at the SDK boundary, checking severity and parameter ownership. */
3
+ export function generationIssues(definition, value) {
4
+ if (typeof value !== "object" || value === null)
5
+ return undefined;
6
+ const descriptor = Object.getOwnPropertyDescriptor(value, "diagnostics");
7
+ if (descriptor === undefined)
8
+ return undefined;
9
+ if (!("value" in descriptor))
10
+ throw new TypeError("Generation diagnostics must be an own data field.");
11
+ return parseParameterIssues(definition, descriptor.value);
23
12
  }
24
- /** Executes the callback pair; geometry finalization belongs to the owning host engine. */
13
+ /** Normalizes once and executes the host's synchronous session, preserving structured diagnostics. */
25
14
  export function executeGenerator(options) {
26
- const prepared = prepareGenerator(options);
27
- if (prepared.type === "invalid")
28
- return prepared;
29
- return Object.freeze({
30
- type: "built",
31
- parameters: prepared.parameters,
32
- validation: prepared.validation,
33
- output: prepared.build(options.context),
34
- });
15
+ const state = options.parameterState ?? prepareParameters(options.definition, options.parameters);
16
+ if (!state.validation.isValid)
17
+ return Object.freeze({ type: "invalid", ...state });
18
+ try {
19
+ const output = options.execute(options.module.generate, state.parameters, options.services);
20
+ const issues = generationIssues(options.definition, output) ?? [];
21
+ const validation = aggregateParameterIssues(state.validation.issues, issues);
22
+ if (!validation.isValid)
23
+ return Object.freeze({ type: "invalid", parameters: state.parameters, validation });
24
+ return Object.freeze({ type: "generated", parameters: state.parameters, validation, output });
25
+ }
26
+ catch (error) {
27
+ const issues = generationIssues(options.definition, error);
28
+ if (issues === undefined || !issues.some(({ severity }) => severity === "error"))
29
+ throw error;
30
+ return Object.freeze({
31
+ type: "invalid",
32
+ parameters: state.parameters,
33
+ validation: aggregateParameterIssues(state.validation.issues, issues),
34
+ });
35
+ }
35
36
  }
36
37
  //# sourceMappingURL=execute-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute-generator.js","sourceRoot":"","sources":["../src/execute-generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAA8B,MAAM,6BAA6B,CAAC;AAgD7F,oGAAoG;AACpG,MAAM,UAAU,gBAAgB,CAC9B,OAAuD;IAEvD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/F,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,QAAQ,GACZ,OAAO,IAAI,MAAM;QACf,CAAC,CAAC,kBAAkB,CAChB,UAAU,EACV,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,EAC/C,MAAM,CAAC,KAAK,CACb;QACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,wBAAwB,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3F,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,UAAU;QACV,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,CAAC,CAAC;AACL,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAC9B,OAAuD;IAEvD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;KACxC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"execute-generator.js","sourceRoot":"","sources":["../src/execute-generator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAsCpG,kGAAkG;AAClG,MAAM,UAAU,gBAAgB,CAC9B,UAAa,EACb,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACzE,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC3E,OAAO,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAiC,CAAC;AAC5F,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,gBAAgB,CAI9B,OAAoD;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,CAAC,OAAO;YACrB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QACtF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC;YAAE,MAAM,KAAK,CAAC;QAC9F,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;SACtE,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -13,4 +13,20 @@ export interface GeneratedPartsLimits {
13
13
  * validity, such as non-degenerate or closed topology, remains a Geometry concern.
14
14
  */
15
15
  export declare function parseGeneratedParts(value: unknown, limitOverrides: GeneratedPartsLimits): readonly GeneratedPart[];
16
+ /**
17
+ * Admits each delivered geometry resource once and hydrates later references without rescanning it.
18
+ *
19
+ * The receiving host owns admitted buffers and must keep them immutable and attached. Every
20
+ * delivery still validates part metadata and aggregate limits. Only a successful delivery replaces
21
+ * the bounded resource map; captured parts retain their own buffers after clear or later deliveries.
22
+ */
23
+ export declare class GeneratedPartsDecoder {
24
+ #private;
25
+ /** Fixes the receiving host's aggregate resource limits for this decoder's lifetime. */
26
+ constructor(limits: GeneratedPartsLimits);
27
+ /** Validates a complete delivery and commits resource ownership only after every part succeeds. */
28
+ decode(value: unknown): readonly GeneratedPart[];
29
+ /** Forgets admitted resources; previously returned parts remain valid and retain their buffers. */
30
+ clear(): void;
31
+ }
16
32
  //# sourceMappingURL=generated-parts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-parts.d.ts","sourceRoot":"","sources":["../src/generated-parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAOpD,wFAAwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAwJD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,oBAAoB,GACnC,SAAS,aAAa,EAAE,CA0C1B"}
1
+ {"version":3,"file":"generated-parts.d.ts","sourceRoot":"","sources":["../src/generated-parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAgBpD,wFAAwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAqQD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,oBAAoB,GACnC,SAAS,aAAa,EAAE,CAE1B;AAED;;;;;;GAMG;AACH,qBAAa,qBAAqB;;IAIhC,wFAAwF;gBAC5E,MAAM,EAAE,oBAAoB;IAIxC,mGAAmG;IACnG,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,aAAa,EAAE;IAMhD,mGAAmG;IACnG,KAAK,IAAI,IAAI;CAGd"}