@metamesh/generator-sdk 0.9.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 (120) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +71 -336
  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/contours.d.ts +36 -0
  8. package/dist/contours.d.ts.map +1 -0
  9. package/dist/{cross-sections.js → contours.js} +19 -61
  10. package/dist/contours.js.map +1 -0
  11. package/dist/contracts.d.ts +30 -11
  12. package/dist/contracts.d.ts.map +1 -1
  13. package/dist/curve-data.d.ts +11 -0
  14. package/dist/curve-data.d.ts.map +1 -0
  15. package/dist/curve-data.js +53 -0
  16. package/dist/curve-data.js.map +1 -0
  17. package/dist/execute-generator.d.ts +14 -23
  18. package/dist/execute-generator.d.ts.map +1 -1
  19. package/dist/execute-generator.js +33 -32
  20. package/dist/execute-generator.js.map +1 -1
  21. package/dist/generated-parts.d.ts +16 -0
  22. package/dist/generated-parts.d.ts.map +1 -1
  23. package/dist/generated-parts.js +155 -67
  24. package/dist/generated-parts.js.map +1 -1
  25. package/dist/generator-module.d.ts +20 -17
  26. package/dist/generator-module.d.ts.map +1 -1
  27. package/dist/generator-module.js +3 -4
  28. package/dist/generator-module.js.map +1 -1
  29. package/dist/generator-package/constants.d.ts +2 -2
  30. package/dist/generator-package/constants.js +2 -2
  31. package/dist/generator-package/errors.d.ts +19 -1
  32. package/dist/generator-package/errors.d.ts.map +1 -1
  33. package/dist/generator-package/errors.js +58 -11
  34. package/dist/generator-package/errors.js.map +1 -1
  35. package/dist/generator-package/index.d.ts +7 -2
  36. package/dist/generator-package/index.d.ts.map +1 -1
  37. package/dist/generator-package/index.js +52 -9
  38. package/dist/generator-package/index.js.map +1 -1
  39. package/dist/generator-package/portable-data.d.ts +12 -0
  40. package/dist/generator-package/portable-data.d.ts.map +1 -0
  41. package/dist/generator-package/portable-data.js +102 -0
  42. package/dist/generator-package/portable-data.js.map +1 -0
  43. package/dist/generator-package/schemas/common.schema.d.ts.map +1 -1
  44. package/dist/generator-package/schemas/common.schema.js +4 -2
  45. package/dist/generator-package/schemas/common.schema.js.map +1 -1
  46. package/dist/generator-package/schemas/definition.schema.d.ts +451 -57
  47. package/dist/generator-package/schemas/definition.schema.d.ts.map +1 -1
  48. package/dist/generator-package/schemas/definition.schema.js +5 -2
  49. package/dist/generator-package/schemas/definition.schema.js.map +1 -1
  50. package/dist/generator-package/schemas/manifest.schema.d.ts +178 -62
  51. package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -1
  52. package/dist/generator-package/schemas/manifest.schema.js.map +1 -1
  53. package/dist/generator-package/schemas/parameter-document-json-schema.d.ts +4 -0
  54. package/dist/generator-package/schemas/parameter-document-json-schema.d.ts.map +1 -0
  55. package/dist/generator-package/schemas/parameter-document-json-schema.js +17 -0
  56. package/dist/generator-package/schemas/parameter-document-json-schema.js.map +1 -0
  57. package/dist/generator-package/schemas/parameter.schema.d.ts +173 -275
  58. package/dist/generator-package/schemas/parameter.schema.d.ts.map +1 -1
  59. package/dist/generator-package/schemas/parameter.schema.js +169 -79
  60. package/dist/generator-package/schemas/parameter.schema.js.map +1 -1
  61. package/dist/generator-package/schemas/preset.schema.d.ts.map +1 -1
  62. package/dist/generator-package/schemas/preset.schema.js +4 -4
  63. package/dist/generator-package/schemas/preset.schema.js.map +1 -1
  64. package/dist/generator-package/validate-definition.d.ts +4 -7
  65. package/dist/generator-package/validate-definition.d.ts.map +1 -1
  66. package/dist/generator-package/validate-definition.js +210 -272
  67. package/dist/generator-package/validate-definition.js.map +1 -1
  68. package/dist/generator-package/validate-manifest.d.ts.map +1 -1
  69. package/dist/generator-package/validate-manifest.js +5 -10
  70. package/dist/generator-package/validate-manifest.js.map +1 -1
  71. package/dist/index.d.ts +7 -8
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +3 -3
  74. package/dist/index.js.map +1 -1
  75. package/dist/parameter-contracts.d.ts +62 -39
  76. package/dist/parameter-contracts.d.ts.map +1 -1
  77. package/dist/parameters/issues.d.ts.map +1 -1
  78. package/dist/parameters/issues.js +9 -10
  79. package/dist/parameters/issues.js.map +1 -1
  80. package/dist/parameters/preparation.d.ts +8 -6
  81. package/dist/parameters/preparation.d.ts.map +1 -1
  82. package/dist/parameters/preparation.js +21 -10
  83. package/dist/parameters/preparation.js.map +1 -1
  84. package/dist/parameters/recovery.d.ts.map +1 -1
  85. package/dist/parameters/recovery.js +11 -12
  86. package/dist/parameters/recovery.js.map +1 -1
  87. package/dist/parameters/strict.d.ts.map +1 -1
  88. package/dist/parameters/strict.js +7 -10
  89. package/dist/parameters/strict.js.map +1 -1
  90. package/dist/parameters/values.d.ts +1 -0
  91. package/dist/parameters/values.d.ts.map +1 -1
  92. package/dist/parameters/values.js +7 -6
  93. package/dist/parameters/values.js.map +1 -1
  94. package/dist/parameters.d.ts +1 -1
  95. package/dist/parameters.d.ts.map +1 -1
  96. package/dist/parameters.js +1 -1
  97. package/dist/parameters.js.map +1 -1
  98. package/dist/parameters.schema.json +1757 -0
  99. package/dist/parse-generator-module.d.ts +5 -27
  100. package/dist/parse-generator-module.d.ts.map +1 -1
  101. package/dist/parse-generator-module.js +29 -96
  102. package/dist/parse-generator-module.js.map +1 -1
  103. package/dist/runtime.d.ts +6 -6
  104. package/dist/runtime.d.ts.map +1 -1
  105. package/dist/runtime.js +3 -3
  106. package/dist/runtime.js.map +1 -1
  107. package/dist/side-profiles.d.ts +36 -0
  108. package/dist/side-profiles.d.ts.map +1 -0
  109. package/dist/{profiles.js → side-profiles.js} +21 -66
  110. package/dist/side-profiles.js.map +1 -0
  111. package/dist/worker-contracts.d.ts +2 -2
  112. package/dist/worker-contracts.d.ts.map +1 -1
  113. package/dist/worker-contracts.js.map +1 -1
  114. package/package.json +7 -7
  115. package/dist/cross-sections.d.ts +0 -41
  116. package/dist/cross-sections.d.ts.map +0 -1
  117. package/dist/cross-sections.js.map +0 -1
  118. package/dist/profiles.d.ts +0 -41
  119. package/dist/profiles.d.ts.map +0 -1
  120. package/dist/profiles.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contours.d.ts","sourceRoot":"","sources":["../src/contours.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,wFAAwF;AACxF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iGAAiG;AACjG,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACpC;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;CAAE,GACtD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEN,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAmGD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAMjF;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CA0BnE;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CA4BtF"}
@@ -1,30 +1,8 @@
1
+ import { curveDataObject, curveSegmentCount, } from "./curve-data.js";
1
2
  /** Maximum number of straight or cubic segments in an editable closed cross section. */
2
- export const MAX_CROSS_SECTION_SEGMENTS = 32;
3
- function dataObject(value, expectedKeys, path, fail) {
4
- if (typeof value !== "object" || value === null || Array.isArray(value))
5
- return fail(path, "type");
6
- const prototype = Object.getPrototypeOf(value);
7
- if (prototype !== Object.prototype && prototype !== null)
8
- return fail(path, "structure");
9
- const unknown = Reflect.ownKeys(value).find((key) => typeof key !== "string" || !expectedKeys.includes(key));
10
- if (unknown !== undefined) {
11
- return fail(typeof unknown === "string" && unknown.length > 0 && unknown.length <= 120
12
- ? [...path, unknown]
13
- : path, "unknown");
14
- }
15
- const entries = [];
16
- for (const key of expectedKeys) {
17
- const descriptor = Object.getOwnPropertyDescriptor(value, key);
18
- if (descriptor === undefined)
19
- return fail([...path, key], "missing");
20
- if (!("value" in descriptor) || !descriptor.enumerable)
21
- return fail([...path, key], "structure");
22
- entries.push([key, descriptor.value]);
23
- }
24
- return Object.fromEntries(entries);
25
- }
3
+ export const MAX_CONTOUR_SEGMENTS = 32;
26
4
  function point(value, anchor, path, fail) {
27
- const fields = dataObject(value, anchor ? ["x", "y", "mode"] : ["x", "y"], path, fail);
5
+ const fields = curveDataObject(value, anchor ? ["x", "y", "mode"] : ["x", "y"], path, fail);
28
6
  if (fields === undefined)
29
7
  return undefined;
30
8
  for (const coordinate of ["x", "y"]) {
@@ -43,13 +21,13 @@ function point(value, anchor, path, fail) {
43
21
  return fail([...path, "mode"], "choice");
44
22
  return { ...coordinates, mode: fields.mode };
45
23
  }
46
- function readCrossSectionValue(value, report) {
24
+ function readContourValue(value, report) {
47
25
  const fail = (path, code) => {
48
26
  report?.({ path, code });
49
27
  return undefined;
50
28
  };
51
29
  try {
52
- const fields = dataObject(value, ["version", "start", "segments"], [], fail);
30
+ const fields = curveDataObject(value, ["version", "start", "segments"], [], fail);
53
31
  if (fields === undefined)
54
32
  return undefined;
55
33
  if (fields.version !== 1)
@@ -60,29 +38,9 @@ function readCrossSectionValue(value, report) {
60
38
  if (!Array.isArray(fields.segments))
61
39
  return fail(["segments"], "type");
62
40
  const segments = fields.segments;
63
- if (Object.getPrototypeOf(segments) !== Array.prototype)
64
- return fail(["segments"], "structure");
65
- const lengthDescriptor = Object.getOwnPropertyDescriptor(segments, "length");
66
- if (lengthDescriptor === undefined || !("value" in lengthDescriptor))
67
- return fail(["segments"], "structure");
68
- const length = lengthDescriptor.value;
69
- if (typeof length !== "number" ||
70
- !Number.isInteger(length) ||
71
- length < 2 ||
72
- length > MAX_CROSS_SECTION_SEGMENTS)
73
- return fail(["segments"], "length");
74
- const keys = Reflect.ownKeys(segments);
75
- if (keys.length !== length + 1 ||
76
- !keys.every((key) => key === "length"
77
- ? true
78
- : typeof key === "string" &&
79
- Number.isSafeInteger(Number(key)) &&
80
- Number(key) >= 0 &&
81
- Number(key) < length &&
82
- String(Number(key)) === key)) {
83
- const missingIndex = Array.from({ length }, (_, index) => index).find((index) => !Object.hasOwn(segments, String(index)));
84
- return fail(missingIndex === undefined ? ["segments"] : ["segments", missingIndex], missingIndex === undefined ? "structure" : "missing");
85
- }
41
+ const length = curveSegmentCount(segments, 2, MAX_CONTOUR_SEGMENTS, fail);
42
+ if (length === undefined)
43
+ return undefined;
86
44
  const parsedSegments = [];
87
45
  for (let index = 0; index < length; index += 1) {
88
46
  const segmentPath = ["segments", index];
@@ -100,7 +58,7 @@ function readCrossSectionValue(value, report) {
100
58
  const type = typeDescriptor.value;
101
59
  if (type !== "line" && type !== "cubic")
102
60
  return fail([...segmentPath, "type"], "choice");
103
- const segmentFields = dataObject(segment, type === "line" ? ["type", "end"] : ["type", "end", "control1", "control2"], segmentPath, fail);
61
+ const segmentFields = curveDataObject(segment, type === "line" ? ["type", "end"] : ["type", "end", "control1", "control2"], segmentPath, fail);
104
62
  if (segmentFields === undefined)
105
63
  return undefined;
106
64
  if (segmentFields.type !== type)
@@ -134,20 +92,20 @@ function readCrossSectionValue(value, report) {
134
92
  }
135
93
  }
136
94
  /** Internal diagnostics share the accessor-safe reader used by predicates and cloning. */
137
- export function crossSectionValueProblem(value) {
95
+ export function contourValueProblem(value) {
138
96
  let problem;
139
- const parsed = readCrossSectionValue(value, (entry) => {
97
+ const parsed = readContourValue(value, (entry) => {
140
98
  problem = entry;
141
99
  });
142
100
  return parsed === undefined ? (problem ?? { code: "structure", path: [] }) : undefined;
143
101
  }
144
102
  /** Checks portable data and explicit closure without evaluating getters or inspecting topology. */
145
- export function isCrossSectionValue(value) {
146
- return readCrossSectionValue(value) !== undefined;
103
+ export function isContourValue(value) {
104
+ return readContourValue(value) !== undefined;
147
105
  }
148
106
  /** Returns a fresh, deeply frozen closed contour, including its editing intent. */
149
- export function cloneCrossSectionValue(value) {
150
- const canonical = readCrossSectionValue(value);
107
+ export function cloneContourValue(value) {
108
+ const canonical = readContourValue(value);
151
109
  if (canonical === undefined)
152
110
  throw new TypeError("Cross section must be a bounded, normalized closed contour.");
153
111
  const clonePoint = (entry) => Object.freeze({ x: entry.x, y: entry.y });
@@ -166,11 +124,11 @@ export function cloneCrossSectionValue(value) {
166
124
  });
167
125
  }
168
126
  /** Compares the serialized shape and editing intent rather than object identity. */
169
- export function crossSectionValuesEqual(previous, next) {
127
+ export function contourValuesEqual(previous, next) {
170
128
  if (Object.is(previous, next))
171
129
  return true;
172
- const previousData = readCrossSectionValue(previous);
173
- const nextData = readCrossSectionValue(next);
130
+ const previousData = readContourValue(previous);
131
+ const nextData = readContourValue(next);
174
132
  if (previousData === undefined || nextData === undefined)
175
133
  return false;
176
134
  const pointsEqual = (left, right) => Object.is(left.x, right.x) && Object.is(left.y, right.y);
@@ -189,4 +147,4 @@ export function crossSectionValuesEqual(previous, next) {
189
147
  pointsEqual(segment.control2, other.control2)));
190
148
  }));
191
149
  }
192
- //# sourceMappingURL=cross-sections.js.map
150
+ //# sourceMappingURL=contours.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contours.js","sourceRoot":"","sources":["../src/contours.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,23 @@
1
- import type { CrossSectionValue } from "./cross-sections.js";
1
+ import type { ContourValue } from "./contours.js";
2
2
  import type { FontSelection } from "./fonts.js";
3
3
  import type { GeneratorDefinition, ParameterDefinition } from "./parameter-contracts.js";
4
- import type { ProfileValue } from "./profiles.js";
5
- export type { ArrayParameterDefinition, BaseParameterDefinition, GeneratorDefinition, FontParameterDefinition, BooleanParameterDefinition, ChoiceSetParameterDefinition, ColorParameterDefinition, CrossSectionParameterDefinition, CrossSectionScaleReference, NumberArrayItemDefinition, NumberArrayParameterDefinition, NumberParameterDefinition, NumericParameterDefinition, ParameterDefinition, ParameterGroup, ProfileParameterDefinition, ProfileScaleReference, SelectOption, SelectParameterDefinition, StringArrayItemDefinition, StringArrayParameterDefinition, SvgParameterDefinition, SliderParameterDefinition, TextParameterDefinition, } from "./parameter-contracts.js";
4
+ import type { SideProfileValue } from "./side-profiles.js";
5
+ export type { ArrayParameterDefinition, BaseParameterDefinition, GeneratorDefinition, FontParameterDefinition, BooleanParameterDefinition, ChoiceSetParameterDefinition, ColorParameterDefinition, ContourParameterDefinition, ParameterScaleReference, NumberArrayItemDefinition, NumberArrayParameterDefinition, NumberParameterDefinition, ParameterDefinition, ParameterDefinitionDocument, ParameterUi, RowParameterUi, NumberParameterUi, SideProfileParameterUi, ContourParameterUi, ParameterGroup, SideProfileParameterDefinition, ChoiceOption, ChoiceParameterDefinition, StringArrayItemDefinition, StringArrayParameterDefinition, SvgParameterDefinition, TextParameterDefinition, } from "./parameter-contracts.js";
6
6
  export type ScalarParameterValue = number | boolean | string;
7
- export type ParameterValue = ScalarParameterValue | readonly number[] | readonly string[] | FontSelection | ProfileValue | CrossSectionValue;
7
+ export type ParameterValue = ScalarParameterValue | readonly number[] | readonly string[] | FontSelection | SideProfileValue | ContourValue;
8
8
  export type ParameterValues = Readonly<Record<string, ParameterValue>>;
9
9
  type ParameterValueFor<Parameter extends ParameterDefinition> = Parameter extends {
10
10
  readonly type: "font";
11
11
  } ? FontSelection : Parameter extends {
12
- readonly type: "profile";
13
- } ? ProfileValue : Parameter extends {
14
- readonly type: "cross-section";
15
- } ? CrossSectionValue : Parameter extends {
16
- readonly type: "number" | "slider";
12
+ readonly type: "side-profile";
13
+ } ? SideProfileValue : Parameter extends {
14
+ readonly type: "contour";
15
+ } ? ContourValue : Parameter extends {
16
+ readonly type: "number";
17
17
  } ? number : Parameter extends {
18
18
  readonly type: "boolean";
19
19
  } ? boolean : Parameter extends {
20
- readonly type: "select";
20
+ readonly type: "choice";
21
21
  readonly options: readonly {
22
22
  readonly value: infer Value extends string;
23
23
  }[];
@@ -89,13 +89,23 @@ export interface ModelTimings {
89
89
  readonly transferMs?: number | undefined;
90
90
  /** Viewport geometry and initially enabled inspection preparation, before rendering. */
91
91
  readonly viewportPrepareMs?: number | undefined;
92
- /** Elapsed time from preparation completion through every part's first draw submission. */
92
+ /**
93
+ * Elapsed time from viewport preparation completion through every part's first draw submission,
94
+ * including render scheduling and buffer upload. Does not measure GPU completion; absent until
95
+ * the host records first-draw completion.
96
+ */
93
97
  readonly firstDrawMs?: number | undefined;
94
98
  readonly totalMs: number;
95
99
  }
96
100
  /** Selects whether Studio preserves or locally improves final planar triangle connectivity. */
97
101
  export type MeshTopologyMode = "original" | "optimized";
98
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;
99
109
  readonly id: string;
100
110
  readonly positions: Float32Array;
101
111
  readonly indices: Uint32Array;
@@ -110,4 +120,13 @@ export interface GeneratedModel {
110
120
  readonly stats?: ModelStats | undefined;
111
121
  readonly warnings: readonly ParameterIssue[];
112
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
+ };
113
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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"}
@@ -0,0 +1,11 @@
1
+ import type { ParameterIssueCode } from "./contracts.js";
2
+ export interface CurveValueProblem {
3
+ readonly code: ParameterIssueCode;
4
+ readonly path: readonly (number | string)[];
5
+ }
6
+ export type ReportCurveProblem = (path: readonly (number | string)[], code: ParameterIssueCode) => undefined;
7
+ /** Reads only own enumerable data properties. The caller translates hostile proxy traps. */
8
+ export declare function curveDataObject(value: unknown, expectedKeys: readonly string[], path: readonly (number | string)[], fail: ReportCurveProblem): Readonly<Record<string, unknown>> | undefined;
9
+ /** Checks segment cardinality and dense own keys without reading indexed values or getters. */
10
+ export declare function curveSegmentCount(segments: readonly unknown[], minimum: number, maximum: number, fail: ReportCurveProblem): number | undefined;
11
+ //# sourceMappingURL=curve-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curve-data.d.ts","sourceRoot":"","sources":["../src/curve-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7C;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,IAAI,EAAE,kBAAkB,KACrB,SAAS,CAAC;AAEf,4FAA4F;AAC5F,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,IAAI,EAAE,kBAAkB,GACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAwB/C;AAED,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,MAAM,GAAG,SAAS,CAmCpB"}
@@ -0,0 +1,53 @@
1
+ /** Reads only own enumerable data properties. The caller translates hostile proxy traps. */
2
+ export function curveDataObject(value, expectedKeys, path, fail) {
3
+ if (typeof value !== "object" || value === null || Array.isArray(value))
4
+ return fail(path, "type");
5
+ const prototype = Object.getPrototypeOf(value);
6
+ if (prototype !== Object.prototype && prototype !== null)
7
+ return fail(path, "structure");
8
+ const keys = Reflect.ownKeys(value);
9
+ const unknown = keys.find((key) => typeof key !== "string" || !expectedKeys.includes(key));
10
+ if (unknown !== undefined) {
11
+ return fail(typeof unknown === "string" && unknown.length > 0 && unknown.length <= 120
12
+ ? [...path, unknown]
13
+ : path, "unknown");
14
+ }
15
+ const entries = [];
16
+ for (const key of expectedKeys) {
17
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
18
+ if (descriptor === undefined)
19
+ return fail([...path, key], "missing");
20
+ if (!("value" in descriptor) || !descriptor.enumerable)
21
+ return fail([...path, key], "structure");
22
+ entries.push([key, descriptor.value]);
23
+ }
24
+ return Object.fromEntries(entries);
25
+ }
26
+ /** Checks segment cardinality and dense own keys without reading indexed values or getters. */
27
+ export function curveSegmentCount(segments, minimum, maximum, fail) {
28
+ if (Object.getPrototypeOf(segments) !== Array.prototype)
29
+ return fail(["segments"], "structure");
30
+ const lengthDescriptor = Object.getOwnPropertyDescriptor(segments, "length");
31
+ if (lengthDescriptor === undefined || !("value" in lengthDescriptor))
32
+ return fail(["segments"], "structure");
33
+ const length = lengthDescriptor.value;
34
+ if (typeof length !== "number" ||
35
+ !Number.isInteger(length) ||
36
+ length < minimum ||
37
+ length > maximum)
38
+ return fail(["segments"], "length");
39
+ const keys = Reflect.ownKeys(segments);
40
+ if (keys.length !== length + 1 ||
41
+ !keys.every((key) => key === "length"
42
+ ? true
43
+ : typeof key === "string" &&
44
+ Number.isSafeInteger(Number(key)) &&
45
+ Number(key) >= 0 &&
46
+ Number(key) < length &&
47
+ String(Number(key)) === key)) {
48
+ const missingIndex = Array.from({ length }, (_, index) => index).find((index) => !Object.hasOwn(segments, String(index)));
49
+ return fail(missingIndex === undefined ? ["segments"] : ["segments", missingIndex], missingIndex === undefined ? "structure" : "missing");
50
+ }
51
+ return length;
52
+ }
53
+ //# sourceMappingURL=curve-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curve-data.js","sourceRoot":"","sources":["../src/curve-data.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"}