@metamesh/generator-sdk 0.16.0 → 0.18.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 (398) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/README.md +98 -69
  3. package/dist/authoring.d.ts +12 -5
  4. package/dist/authoring.d.ts.map +1 -1
  5. package/dist/authoring.js +7 -3
  6. package/dist/authoring.js.map +1 -1
  7. package/dist/docs/guides/authoring.md +8 -8
  8. package/dist/docs/guides/package.md +98 -69
  9. package/dist/docs/guides/parameters.md +29 -29
  10. package/dist/docs/manifest.json +188 -202
  11. package/dist/docs/reference/fonts/FontSelection.md +1 -1
  12. package/dist/docs/reference/fonts/isFontSelection.md +1 -1
  13. package/dist/docs/reference/index/ArrayParameterDefinition.md +1 -1
  14. package/dist/docs/reference/index/BaseParameterDefinition.md +1 -1
  15. package/dist/docs/reference/index/BooleanParameterDefinition.md +1 -1
  16. package/dist/docs/reference/index/ChoiceOption.md +1 -1
  17. package/dist/docs/reference/index/ChoiceParameterDefinition.md +1 -1
  18. package/dist/docs/reference/index/ChoiceSetParameterDefinition.md +1 -1
  19. package/dist/docs/reference/index/ColorParameterDefinition.md +1 -1
  20. package/dist/docs/reference/index/ConditionExpression.md +1 -1
  21. package/dist/docs/reference/index/ContourAnchor.md +1 -1
  22. package/dist/docs/reference/index/ContourParameterDefinition.md +1 -1
  23. package/dist/docs/reference/index/ContourParameterUi.md +1 -1
  24. package/dist/docs/reference/index/ContourPoint.md +1 -1
  25. package/dist/docs/reference/index/ContourSegment.md +1 -1
  26. package/dist/docs/reference/index/ContourValue.md +1 -1
  27. package/dist/docs/reference/index/FontParameterDefinition.md +1 -1
  28. package/dist/docs/reference/index/FontSelection.md +1 -1
  29. package/dist/docs/reference/index/GeneratorDefinition.md +1 -1
  30. package/dist/docs/reference/index/GeneratorIssue.md +1 -1
  31. package/dist/docs/reference/index/GeneratorModule.md +5 -6
  32. package/dist/docs/reference/index/GeneratorModuleOptions.md +2 -2
  33. package/dist/docs/reference/index/GeneratorParamId.md +1 -1
  34. package/dist/docs/reference/index/GeneratorParams.md +1 -1
  35. package/dist/docs/reference/index/GeneratorPreset.md +1 -1
  36. package/dist/docs/reference/index/GeneratorProgram.md +3 -3
  37. package/dist/docs/reference/index/GeneratorServices.md +1 -1
  38. package/dist/docs/reference/index/GeneratorTextArcBaseline.md +1 -1
  39. package/dist/docs/reference/index/GeneratorTextLayout.md +1 -1
  40. package/dist/docs/reference/index/GeneratorTextMetrics.md +1 -1
  41. package/dist/docs/reference/index/GeneratorTextOptions.md +1 -1
  42. package/dist/docs/reference/index/MAX_CONTOUR_SEGMENTS.md +1 -1
  43. package/dist/docs/reference/index/MAX_SIDE_PROFILE_SEGMENTS.md +1 -1
  44. package/dist/docs/reference/index/NumberArrayItemDefinition.md +1 -1
  45. package/dist/docs/reference/index/NumberArrayParameterDefinition.md +1 -1
  46. package/dist/docs/reference/index/NumberParameterDefinition.md +1 -1
  47. package/dist/docs/reference/index/NumberParameterUi.md +1 -1
  48. package/dist/docs/reference/index/ParameterDefinition.md +1 -1
  49. package/dist/docs/reference/index/ParameterDefinitionDocument.md +1 -1
  50. package/dist/docs/reference/index/ParameterGroup.md +1 -1
  51. package/dist/docs/reference/index/ParameterIssue.md +1 -1
  52. package/dist/docs/reference/index/ParameterIssueCode.md +1 -1
  53. package/dist/docs/reference/index/ParameterIssueSeverity.md +1 -1
  54. package/dist/docs/reference/index/ParameterScaleReference.md +1 -1
  55. package/dist/docs/reference/index/ParameterUi.md +1 -1
  56. package/dist/docs/reference/index/ParameterValidationResult.md +1 -1
  57. package/dist/docs/reference/index/ParameterValue.md +1 -1
  58. package/dist/docs/reference/index/ParameterValues.md +1 -1
  59. package/dist/docs/reference/index/RowParameterUi.md +1 -1
  60. package/dist/docs/reference/index/ScalarParameterValue.md +1 -1
  61. package/dist/docs/reference/index/SideProfileAnchor.md +1 -1
  62. package/dist/docs/reference/index/SideProfileParameterDefinition.md +1 -1
  63. package/dist/docs/reference/index/SideProfileParameterUi.md +1 -1
  64. package/dist/docs/reference/index/SideProfilePoint.md +1 -1
  65. package/dist/docs/reference/index/SideProfileSegment.md +1 -1
  66. package/dist/docs/reference/index/SideProfileValue.md +1 -1
  67. package/dist/docs/reference/index/SourceVisibility.md +1 -1
  68. package/dist/docs/reference/index/StringArrayItemDefinition.md +1 -1
  69. package/dist/docs/reference/index/StringArrayParameterDefinition.md +1 -1
  70. package/dist/docs/reference/index/SvgParameterDefinition.md +1 -1
  71. package/dist/docs/reference/index/TextParameterDefinition.md +1 -1
  72. package/dist/docs/reference/index/UNPREPARED_GENERATOR_SERVICES.md +1 -1
  73. package/dist/docs/reference/index/cloneContourValue.md +1 -1
  74. package/dist/docs/reference/index/cloneSideProfileValue.md +1 -1
  75. package/dist/docs/reference/index/contourValuesEqual.md +1 -1
  76. package/dist/docs/reference/index/defineGenerator.md +6 -4
  77. package/dist/docs/reference/index/defineGeneratorModule.md +2 -2
  78. package/dist/docs/reference/index/definePresets.md +4 -4
  79. package/dist/docs/reference/index/evaluateCondition.md +1 -1
  80. package/dist/docs/reference/index/isContourValue.md +1 -1
  81. package/dist/docs/reference/index/isFontSelection.md +1 -1
  82. package/dist/docs/reference/index/isSideProfileValue.md +1 -1
  83. package/dist/docs/reference/index/sideProfileValuesEqual.md +1 -1
  84. package/dist/docs/reference/modeling/GeneratorModel.md +10 -0
  85. package/dist/docs/reference/modeling/ModelDeliveryEncoder.md +22 -0
  86. package/dist/docs/reference/modeling/defineGeneratorModel.md +14 -0
  87. package/dist/docs/reference/modeling/parseGeneratorModel.md +15 -0
  88. package/dist/docs/reference/modeling/toWorldMeshes.md +10 -0
  89. package/dist/docs/reference/packages/GENERATOR_PACKAGE_FORMAT_VERSION.md +2 -2
  90. package/dist/docs/reference/packages/GeneratorAccess.md +1 -1
  91. package/dist/docs/reference/packages/GeneratorDefinitionIssue.md +1 -1
  92. package/dist/docs/reference/packages/GeneratorDefinitionParseResult.md +1 -1
  93. package/dist/docs/reference/packages/GeneratorDescriptor.md +1 -1
  94. package/dist/docs/reference/packages/GeneratorPackageManifest.md +1 -1
  95. package/dist/docs/reference/packages/GeneratorPackageSource.md +1 -1
  96. package/dist/docs/reference/packages/GeneratorPackageValidationError.md +1 -1
  97. package/dist/docs/reference/packages/GeneratorPreset.md +1 -1
  98. package/dist/docs/reference/packages/GeneratorRuntimeReference.md +1 -1
  99. package/dist/docs/reference/packages/InstalledGenerator.md +1 -1
  100. package/dist/docs/reference/packages/MAX_ARRAY_ITEMS.md +1 -1
  101. package/dist/docs/reference/packages/MAX_CONDITION_BRANCHES.md +1 -1
  102. package/dist/docs/reference/packages/MAX_CONDITION_DEPTH.md +1 -1
  103. package/dist/docs/reference/packages/MAX_DESCRIPTOR_LIST_ITEMS.md +1 -1
  104. package/dist/docs/reference/packages/MAX_GENERATOR_ID_LENGTH.md +2 -2
  105. package/dist/docs/reference/packages/MAX_GENERATOR_PACKAGE_BYTES.md +1 -1
  106. package/dist/docs/reference/packages/MAX_GENERATOR_PRESETS.md +1 -1
  107. package/dist/docs/reference/packages/MAX_METADATA_TEXT_LENGTH.md +2 -2
  108. package/dist/docs/reference/packages/MAX_PARAMETERS.md +1 -1
  109. package/dist/docs/reference/packages/MAX_PARAMETER_GROUPS.md +1 -1
  110. package/dist/docs/reference/packages/MAX_PARAMETER_OPTIONS.md +1 -1
  111. package/dist/docs/reference/packages/MAX_TEXT_PARAMETER_LENGTH.md +2 -2
  112. package/dist/docs/reference/packages/METAMESH_RUNTIME_VERSION.md +2 -2
  113. package/dist/docs/reference/packages/compareSemanticVersions.md +1 -1
  114. package/dist/docs/reference/packages/isRuntimeCompatible.md +1 -1
  115. package/dist/docs/reference/packages/parseGeneratorDefinition.md +1 -1
  116. package/dist/docs/reference/packages/parseGeneratorDescriptor.md +1 -1
  117. package/dist/docs/reference/packages/parseGeneratorPackageManifest.md +1 -1
  118. package/dist/docs/reference/packages/parseParameterDefinitionDocument.md +1 -1
  119. package/dist/docs/reference/packages/safeParseGeneratorDefinition.md +1 -1
  120. package/dist/docs/reference/packages/safeParseParameterDefinitionDocument.md +1 -1
  121. package/dist/docs/reference/packages/validateGeneratorPresets.md +1 -1
  122. package/dist/docs/reference/parameters/EMPTY_SVG_PARAMETER_DEFAULT.md +1 -1
  123. package/dist/docs/reference/parameters/MAX_PARAMETER_ISSUES.md +1 -1
  124. package/dist/docs/reference/parameters/MAX_PARAMETER_ISSUE_MESSAGE_LENGTH.md +1 -1
  125. package/dist/docs/reference/parameters/MAX_PROJECT_SVG_PARAMETER_BYTES.md +1 -1
  126. package/dist/docs/reference/parameters/MAX_SVG_PARAMETER_BYTES.md +1 -1
  127. package/dist/docs/reference/parameters/ParamCodec.md +1 -1
  128. package/dist/docs/reference/parameters/ParamDecodeCode.md +1 -1
  129. package/dist/docs/reference/parameters/ParamDecodeError.md +1 -1
  130. package/dist/docs/reference/parameters/ParamDecodeIssue.md +3 -3
  131. package/dist/docs/reference/parameters/ParamParseResult.md +1 -1
  132. package/dist/docs/reference/parameters/aggregateParameterIssues.md +1 -1
  133. package/dist/docs/reference/parameters/createParamCodec.md +1 -1
  134. package/dist/docs/reference/parameters/getDefaultParameters.md +1 -1
  135. package/dist/docs/reference/parameters/normalizeParameters.md +1 -1
  136. package/dist/docs/reference/parameters/parameterValueEquals.md +1 -1
  137. package/dist/docs/reference/parameters/parseParameterIssues.md +1 -1
  138. package/dist/docs/reference/parameters/svgParameterBytes.md +1 -1
  139. package/dist/docs/reference/runtime/ExecuteGeneratorOptions.md +2 -4
  140. package/dist/docs/reference/runtime/Export3mfRequest.md +2 -2
  141. package/dist/docs/reference/runtime/ExportError.md +1 -1
  142. package/dist/docs/reference/runtime/ExportSuccess.md +1 -1
  143. package/dist/docs/reference/runtime/ExportedFile.md +1 -1
  144. package/dist/docs/reference/runtime/GenerateRequest.md +1 -1
  145. package/dist/docs/reference/runtime/GenerationError.md +1 -1
  146. package/dist/docs/reference/runtime/GenerationInvalid.md +1 -1
  147. package/dist/docs/reference/runtime/GenerationSuccess.md +2 -2
  148. package/dist/docs/reference/runtime/GeneratorExecutionGenerated.md +1 -1
  149. package/dist/docs/reference/runtime/GeneratorExecutionInvalid.md +2 -3
  150. package/dist/docs/reference/runtime/GeneratorExecutionResult.md +2 -2
  151. package/dist/docs/reference/runtime/MeshResourceData.md +19 -0
  152. package/dist/docs/reference/runtime/MeshTopologyMode.md +1 -1
  153. package/dist/docs/reference/runtime/ModelBounds.md +1 -1
  154. package/dist/docs/reference/runtime/ModelData.md +17 -0
  155. package/dist/docs/reference/runtime/ModelDelivery.md +12 -0
  156. package/dist/docs/reference/runtime/ModelPartData.md +35 -0
  157. package/dist/docs/reference/runtime/ModelStats.md +6 -4
  158. package/dist/docs/reference/runtime/ModelTimings.md +10 -9
  159. package/dist/docs/reference/runtime/ParsedGeneratorModule.md +1 -1
  160. package/dist/docs/reference/runtime/PartDelivery.md +15 -0
  161. package/dist/docs/reference/runtime/{GeneratedPartsDecoder.md → PartDeliveryDecoder.md} +5 -5
  162. package/dist/docs/reference/runtime/{GeneratedPartsLimits.md → PartDeliveryLimits.md} +3 -3
  163. package/dist/docs/reference/runtime/RuntimeError.md +1 -1
  164. package/dist/docs/reference/runtime/ValidateRequest.md +1 -1
  165. package/dist/docs/reference/runtime/ValidationError.md +1 -1
  166. package/dist/docs/reference/runtime/ValidationSuccess.md +1 -1
  167. package/dist/docs/reference/runtime/WorkerRequest.md +1 -1
  168. package/dist/docs/reference/runtime/WorkerResponse.md +1 -1
  169. package/dist/docs/reference/runtime/canonicalizeParameters.md +10 -0
  170. package/dist/docs/reference/runtime/executeGenerator.md +3 -3
  171. package/dist/docs/reference/runtime/generationIssues.md +1 -1
  172. package/dist/docs/reference/runtime/parseGenerationSentAt.md +1 -1
  173. package/dist/docs/reference/runtime/parseGeneratorModule.md +3 -3
  174. package/dist/docs/reference/runtime/{parseGeneratedParts.md → parseModelParts.md} +3 -3
  175. package/dist/generator-module.d.ts +12 -9
  176. package/dist/generator-module.d.ts.map +1 -1
  177. package/dist/generator-module.js +3 -2
  178. package/dist/generator-module.js.map +1 -1
  179. package/dist/generator-package/constants.d.ts +3 -11
  180. package/dist/generator-package/constants.d.ts.map +1 -1
  181. package/dist/generator-package/constants.js +4 -12
  182. package/dist/generator-package/constants.js.map +1 -1
  183. package/dist/generator-package/contracts.d.ts +15 -0
  184. package/dist/generator-package/contracts.d.ts.map +1 -0
  185. package/dist/generator-package/contracts.js.map +1 -0
  186. package/dist/generator-package/index.d.ts +10 -30
  187. package/dist/generator-package/index.d.ts.map +1 -1
  188. package/dist/generator-package/index.js +7 -85
  189. package/dist/generator-package/index.js.map +1 -1
  190. package/dist/generator-package/parse-package.d.ts +5 -0
  191. package/dist/generator-package/parse-package.d.ts.map +1 -0
  192. package/dist/generator-package/parse-package.js +38 -0
  193. package/dist/generator-package/parse-package.js.map +1 -0
  194. package/dist/generator-package/schemas/descriptor.schema.d.ts +2 -2
  195. package/dist/generator-package/schemas/descriptor.schema.d.ts.map +1 -1
  196. package/dist/generator-package/schemas/descriptor.schema.js +2 -2
  197. package/dist/generator-package/schemas/descriptor.schema.js.map +1 -1
  198. package/dist/generator-package/schemas/manifest.schema.d.ts +16 -16
  199. package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -1
  200. package/dist/generator-package/schemas/manifest.schema.js +4 -4
  201. package/dist/generator-package/schemas/manifest.schema.js.map +1 -1
  202. package/dist/generator-package/validate-manifest.d.ts +2 -2
  203. package/dist/generator-package/validate-manifest.d.ts.map +1 -1
  204. package/dist/generator-package/validate-manifest.js +15 -20
  205. package/dist/generator-package/validate-manifest.js.map +1 -1
  206. package/dist/generator-package/versions.js +2 -2
  207. package/dist/generator-package/versions.js.map +1 -1
  208. package/dist/generator-package/versions.spec.js +5 -5
  209. package/dist/generator-package/versions.spec.js.map +1 -1
  210. package/dist/index.d.ts +8 -7
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +3 -3
  213. package/dist/index.js.map +1 -1
  214. package/dist/metadata-limits.d.ts +5 -0
  215. package/dist/metadata-limits.d.ts.map +1 -0
  216. package/dist/metadata-limits.js +5 -0
  217. package/dist/metadata-limits.js.map +1 -0
  218. package/dist/modeling-delivery.d.ts +20 -0
  219. package/dist/modeling-delivery.d.ts.map +1 -0
  220. package/dist/modeling-delivery.js +54 -0
  221. package/dist/modeling-delivery.js.map +1 -0
  222. package/dist/modeling.d.ts +22 -0
  223. package/dist/modeling.d.ts.map +1 -0
  224. package/dist/modeling.js +22 -0
  225. package/dist/modeling.js.map +1 -0
  226. package/dist/parameters/conditions.d.ts.map +1 -0
  227. package/dist/parameters/conditions.js.map +1 -0
  228. package/dist/parameters/contours.d.ts.map +1 -0
  229. package/dist/parameters/contours.js.map +1 -0
  230. package/dist/parameters/contracts.d.ts +69 -0
  231. package/dist/parameters/contracts.d.ts.map +1 -0
  232. package/dist/parameters/contracts.js +2 -0
  233. package/dist/{contracts.js.map → parameters/contracts.js.map} +1 -1
  234. package/dist/parameters/curve-data.d.ts.map +1 -0
  235. package/dist/parameters/curve-data.js.map +1 -0
  236. package/dist/{parameter-contracts.d.ts → parameters/definitions.d.ts} +2 -2
  237. package/dist/parameters/definitions.d.ts.map +1 -0
  238. package/dist/parameters/definitions.js +2 -0
  239. package/dist/parameters/definitions.js.map +1 -0
  240. package/dist/parameters/issues.d.ts +2 -1
  241. package/dist/parameters/issues.d.ts.map +1 -1
  242. package/dist/parameters/issues.js +4 -3
  243. package/dist/parameters/issues.js.map +1 -1
  244. package/dist/parameters/limits.d.ts +9 -0
  245. package/dist/parameters/limits.d.ts.map +1 -0
  246. package/dist/parameters/limits.js +9 -0
  247. package/dist/parameters/limits.js.map +1 -0
  248. package/dist/parameters/recovery.d.ts +2 -1
  249. package/dist/parameters/recovery.d.ts.map +1 -1
  250. package/dist/parameters/recovery.js +4 -3
  251. package/dist/parameters/recovery.js.map +1 -1
  252. package/dist/parameters/side-profiles.d.ts.map +1 -0
  253. package/dist/parameters/side-profiles.js.map +1 -0
  254. package/dist/parameters/strict.d.ts +4 -3
  255. package/dist/parameters/strict.d.ts.map +1 -1
  256. package/dist/parameters/strict.js +11 -7
  257. package/dist/parameters/strict.js.map +1 -1
  258. package/dist/parameters/values.d.ts +1 -1
  259. package/dist/parameters/values.d.ts.map +1 -1
  260. package/dist/parameters/values.js +2 -2
  261. package/dist/parameters/values.js.map +1 -1
  262. package/dist/parameters.d.ts +0 -2
  263. package/dist/parameters.d.ts.map +1 -1
  264. package/dist/parameters.js +0 -1
  265. package/dist/parameters.js.map +1 -1
  266. package/dist/runtime/execute-generator.d.ts +6 -9
  267. package/dist/runtime/execute-generator.d.ts.map +1 -1
  268. package/dist/runtime/execute-generator.js +11 -11
  269. package/dist/runtime/execute-generator.js.map +1 -1
  270. package/dist/runtime/model-contracts.d.ts +103 -0
  271. package/dist/runtime/model-contracts.d.ts.map +1 -0
  272. package/dist/runtime/model-contracts.js +2 -0
  273. package/dist/runtime/model-contracts.js.map +1 -0
  274. package/dist/runtime/parameter-identities.d.ts +4 -0
  275. package/dist/runtime/parameter-identities.d.ts.map +1 -0
  276. package/dist/runtime/parameter-identities.js +11 -0
  277. package/dist/runtime/parameter-identities.js.map +1 -0
  278. package/dist/runtime/parse-generator-module.d.ts +2 -3
  279. package/dist/runtime/parse-generator-module.d.ts.map +1 -1
  280. package/dist/runtime/parse-generator-module.js +7 -19
  281. package/dist/runtime/parse-generator-module.js.map +1 -1
  282. package/dist/runtime/{generated-parts.d.ts → part-delivery.d.ts} +11 -7
  283. package/dist/runtime/part-delivery.d.ts.map +1 -0
  284. package/dist/runtime/{generated-parts.js → part-delivery.js} +69 -44
  285. package/dist/runtime/part-delivery.js.map +1 -0
  286. package/dist/runtime/worker-contracts.d.ts +4 -3
  287. package/dist/runtime/worker-contracts.d.ts.map +1 -1
  288. package/dist/runtime/worker-contracts.js.map +1 -1
  289. package/dist/runtime.d.ts +6 -4
  290. package/dist/runtime.d.ts.map +1 -1
  291. package/dist/runtime.js +3 -2
  292. package/dist/runtime.js.map +1 -1
  293. package/dist/{generator-package → validation}/errors.d.ts +1 -1
  294. package/dist/validation/errors.d.ts.map +1 -0
  295. package/dist/validation/errors.js.map +1 -0
  296. package/dist/validation/parse-definition.d.ts +9 -0
  297. package/dist/validation/parse-definition.d.ts.map +1 -0
  298. package/dist/validation/parse-definition.js +49 -0
  299. package/dist/validation/parse-definition.js.map +1 -0
  300. package/dist/validation/portable-data.d.ts.map +1 -0
  301. package/dist/validation/portable-data.js.map +1 -0
  302. package/dist/{generator-package → validation}/schemas/common.schema.d.ts +1 -1
  303. package/dist/validation/schemas/common.schema.d.ts.map +1 -0
  304. package/dist/{generator-package → validation}/schemas/common.schema.js +3 -2
  305. package/dist/validation/schemas/common.schema.js.map +1 -0
  306. package/dist/{generator-package → validation}/schemas/condition.schema.d.ts +2 -2
  307. package/dist/validation/schemas/condition.schema.d.ts.map +1 -0
  308. package/dist/{generator-package → validation}/schemas/condition.schema.js +2 -2
  309. package/dist/validation/schemas/condition.schema.js.map +1 -0
  310. package/dist/{generator-package → validation}/schemas/definition.schema.d.ts +23 -23
  311. package/dist/validation/schemas/definition.schema.d.ts.map +1 -0
  312. package/dist/{generator-package → validation}/schemas/definition.schema.js +2 -2
  313. package/dist/validation/schemas/definition.schema.js.map +1 -0
  314. package/dist/{generator-package → validation}/schemas/parameter-document-json-schema.d.ts +1 -1
  315. package/dist/validation/schemas/parameter-document-json-schema.d.ts.map +1 -0
  316. package/dist/{generator-package → validation}/schemas/parameter-document-json-schema.js +1 -1
  317. package/dist/validation/schemas/parameter-document-json-schema.js.map +1 -0
  318. package/dist/{generator-package → validation}/schemas/parameter.schema.d.ts +12 -12
  319. package/dist/validation/schemas/parameter.schema.d.ts.map +1 -0
  320. package/dist/{generator-package → validation}/schemas/parameter.schema.js +4 -4
  321. package/dist/validation/schemas/parameter.schema.js.map +1 -0
  322. package/dist/validation/schemas/preset.schema.d.ts +5 -0
  323. package/dist/validation/schemas/preset.schema.d.ts.map +1 -0
  324. package/dist/{generator-package → validation}/schemas/preset.schema.js +4 -4
  325. package/dist/validation/schemas/preset.schema.js.map +1 -0
  326. package/dist/{generator-package → validation}/validate-definition.d.ts +1 -1
  327. package/dist/validation/validate-definition.d.ts.map +1 -0
  328. package/dist/{generator-package → validation}/validate-definition.js +2 -2
  329. package/dist/validation/validate-definition.js.map +1 -0
  330. package/dist/validation/version-format.d.ts.map +1 -0
  331. package/dist/validation/version-format.js.map +1 -0
  332. package/package.json +17 -1
  333. package/dist/conditions.d.ts.map +0 -1
  334. package/dist/conditions.js.map +0 -1
  335. package/dist/contours.d.ts.map +0 -1
  336. package/dist/contours.js.map +0 -1
  337. package/dist/contracts.d.ts +0 -139
  338. package/dist/contracts.d.ts.map +0 -1
  339. package/dist/curve-data.d.ts.map +0 -1
  340. package/dist/curve-data.js.map +0 -1
  341. package/dist/docs/reference/packages/definitionIssuesFromZod.md +0 -10
  342. package/dist/docs/reference/packages/validationErrorFromIssues.md +0 -9
  343. package/dist/docs/reference/packages/validationErrorFromZod.md +0 -9
  344. package/dist/docs/reference/parameters/PreparedParameters.md +0 -12
  345. package/dist/docs/reference/parameters/canonicalizeParameters.md +0 -10
  346. package/dist/docs/reference/parameters/prepareParameters.md +0 -13
  347. package/dist/docs/reference/parameters/validateParameters.md +0 -10
  348. package/dist/docs/reference/runtime/GeneratedModel.md +0 -17
  349. package/dist/docs/reference/runtime/GeneratedModelDelivery.md +0 -12
  350. package/dist/docs/reference/runtime/GeneratedPart.md +0 -20
  351. package/dist/docs/reference/runtime/GeneratedPartDelivery.md +0 -13
  352. package/dist/docs/reference/runtime/isGeneratorModule.md +0 -9
  353. package/dist/generator-package/errors.d.ts.map +0 -1
  354. package/dist/generator-package/errors.js.map +0 -1
  355. package/dist/generator-package/portable-data.d.ts.map +0 -1
  356. package/dist/generator-package/portable-data.js.map +0 -1
  357. package/dist/generator-package/schemas/common.schema.d.ts.map +0 -1
  358. package/dist/generator-package/schemas/common.schema.js.map +0 -1
  359. package/dist/generator-package/schemas/condition.schema.d.ts.map +0 -1
  360. package/dist/generator-package/schemas/condition.schema.js.map +0 -1
  361. package/dist/generator-package/schemas/definition.schema.d.ts.map +0 -1
  362. package/dist/generator-package/schemas/definition.schema.js.map +0 -1
  363. package/dist/generator-package/schemas/parameter-document-json-schema.d.ts.map +0 -1
  364. package/dist/generator-package/schemas/parameter-document-json-schema.js.map +0 -1
  365. package/dist/generator-package/schemas/parameter.schema.d.ts.map +0 -1
  366. package/dist/generator-package/schemas/parameter.schema.js.map +0 -1
  367. package/dist/generator-package/schemas/preset.schema.d.ts +0 -5
  368. package/dist/generator-package/schemas/preset.schema.d.ts.map +0 -1
  369. package/dist/generator-package/schemas/preset.schema.js.map +0 -1
  370. package/dist/generator-package/validate-definition.d.ts.map +0 -1
  371. package/dist/generator-package/validate-definition.js.map +0 -1
  372. package/dist/generator-package/version-format.d.ts.map +0 -1
  373. package/dist/generator-package/version-format.js.map +0 -1
  374. package/dist/parameter-contracts.d.ts.map +0 -1
  375. package/dist/parameter-contracts.js +0 -2
  376. package/dist/parameter-contracts.js.map +0 -1
  377. package/dist/parameters/preparation.d.ts +0 -15
  378. package/dist/parameters/preparation.d.ts.map +0 -1
  379. package/dist/parameters/preparation.js +0 -47
  380. package/dist/parameters/preparation.js.map +0 -1
  381. package/dist/runtime/generated-parts.d.ts.map +0 -1
  382. package/dist/runtime/generated-parts.js.map +0 -1
  383. package/dist/side-profiles.d.ts.map +0 -1
  384. package/dist/side-profiles.js.map +0 -1
  385. /package/dist/{contracts.js → generator-package/contracts.js} +0 -0
  386. /package/dist/{conditions.d.ts → parameters/conditions.d.ts} +0 -0
  387. /package/dist/{conditions.js → parameters/conditions.js} +0 -0
  388. /package/dist/{contours.d.ts → parameters/contours.d.ts} +0 -0
  389. /package/dist/{contours.js → parameters/contours.js} +0 -0
  390. /package/dist/{curve-data.d.ts → parameters/curve-data.d.ts} +0 -0
  391. /package/dist/{curve-data.js → parameters/curve-data.js} +0 -0
  392. /package/dist/{side-profiles.d.ts → parameters/side-profiles.d.ts} +0 -0
  393. /package/dist/{side-profiles.js → parameters/side-profiles.js} +0 -0
  394. /package/dist/{generator-package → validation}/errors.js +0 -0
  395. /package/dist/{generator-package → validation}/portable-data.d.ts +0 -0
  396. /package/dist/{generator-package → validation}/portable-data.js +0 -0
  397. /package/dist/{generator-package → validation}/version-format.d.ts +0 -0
  398. /package/dist/{generator-package → validation}/version-format.js +0 -0
@@ -1,28 +1,35 @@
1
1
  # `@metamesh/generator-sdk`
2
2
 
3
- Turn a parametric model into a MetaMesh Generator. Define controls once, infer their TypeScript
4
- types, and use the same parameter contract for forms, saved values, and execution.
3
+ Define typed controls, presets, and portable contracts for MetaMesh Generators. Use one definition
4
+ for the editing interface, saved parameter values, and model execution.
5
5
 
6
6
  > **Preview:** `0.x` minor releases may break compatibility. Patches remain compatible within the
7
7
  > same minor line.
8
8
 
9
9
  ## Installation
10
10
 
11
+ For the modeling example below, install matching SDK and Modeling releases:
12
+
11
13
  ```bash
12
- pnpm add @metamesh/generator-sdk
14
+ pnpm add @metamesh/generator-sdk @metamesh/modeling
13
15
  ```
14
16
 
15
- The SDK is renderer-neutral. To build geometry in the example below, also install
16
- [`@metamesh/modeling`](https://github.com/JasonKoolman/metamesh/blob/main/packages/modeling/README.md).
17
- Keep installed MetaMesh packages on the same exact release.
17
+ The package publishes ES modules only. Use Node.js 24 or newer. TypeScript consumers need
18
+ TypeScript 6.0 or newer, `strict` checking, and `NodeNext` or `Bundler` module resolution.
19
+ Browser hosts need an ES2023-compatible runtime; the SDK's data contracts require no WebAssembly.
20
+
21
+ The SDK can also be used alone for definitions, parameter handling, and package validation.
22
+ Only its optional `/modeling` adapter imports the Modeling runtime.
18
23
 
19
24
  ## Define controls
20
25
 
21
- A definition describes the Generator and its editable parameters. Literal IDs and options give
22
- you exact parameter types:
26
+ A Generator combines serializable metadata with a synchronous model program. This module defines
27
+ a sleeve, infers its parameter types, and checks the relationship between its diameters:
23
28
 
24
29
  ```ts
25
- import { defineGenerator, type GeneratorParams } from "@metamesh/generator-sdk";
30
+ import { defineGenerator } from "@metamesh/generator-sdk";
31
+ import { defineGeneratorModel } from "@metamesh/generator-sdk/modeling";
32
+ import { tube } from "@metamesh/modeling";
26
33
 
27
34
  export const definition = defineGenerator({
28
35
  id: "sleeve",
@@ -34,30 +41,11 @@ export const definition = defineGenerator({
34
41
  { id: "boreDiameter", label: "Bore diameter", type: "number", default: 10, min: 1 },
35
42
  ],
36
43
  });
37
- type Parameters = GeneratorParams<typeof definition>;
38
- ```
39
-
40
- Definitions are serializable. Optional `ui` metadata describes grouping, visibility, hints, and
41
- editing increments. Number inputs and sliders share `type: "number"`; sliders add
42
- `ui.control: "slider"`, bounds, and `ui.step`. See the
43
- [parameter guide](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/develop/parameters-and-validation.mdx)
44
- for the full set of controls.
45
44
 
46
- ## Generate a model
47
-
48
- Add a synchronous generation program to the same module. Assertions describe relationships
49
- between controls; the module helper binds the program to its definition:
50
-
51
- ```ts
52
- import { defineGeneratorModule } from "@metamesh/generator-sdk";
53
- import { generate, tube } from "@metamesh/modeling";
54
-
55
- const model = generate<Parameters>(({ params, assert, part }) => {
56
- assert(
57
- params.boreDiameter < params.outerDiameter,
58
- "The bore must be smaller than the outside diameter.",
59
- { parameterId: "boreDiameter" }
60
- );
45
+ export default defineGeneratorModel(definition, ({ params, assert, part }) => {
46
+ assert(params.boreDiameter < params.outerDiameter, "The bore must fit inside the sleeve.", {
47
+ parameterId: "boreDiameter",
48
+ });
61
49
  return part(
62
50
  "body",
63
51
  tube({
@@ -67,54 +55,95 @@ const model = generate<Parameters>(({ params, assert, part }) => {
67
55
  })
68
56
  );
69
57
  });
70
- export default defineGeneratorModule({ definition, generate: model });
71
58
  ```
72
59
 
73
- Return a single `part(...)` or a readonly array of parts. The host normalizes parameters and prepares
74
- assets before generation. Modeling manages geometry, sessions, and snapshots; the SDK provides
75
- portable definitions, module envelopes, and validated runtime messages. Unsupported package formats
76
- reject before executable bytes are evaluated.
77
-
78
- ## Work with saved values
79
-
80
- Use `normalizeParameters` from `/parameters` to recover saved values: it drops unknown keys,
81
- restores missing or invalid values from defaults, and clamps numbers. At a trust boundary, use
82
- `createParamCodec(definition)` to reject incomplete, unknown, invalid, or noncanonical values.
83
- Both return fresh frozen parameter maps.
84
-
85
- For definition editors, `/packages` provides `safeParseParameterDefinitionDocument` and structured
86
- issue paths. The included `@metamesh/generator-sdk/parameters.schema.json` supports offline
87
- completion; SDK validation also checks references, defaults, and cross-field rules.
60
+ The adapter binds the definition to the model and produces a Generator module. Use
61
+ `defineGeneratorModule({ definition, program })` to bind an existing program. A Generator runtime
62
+ is itself a Modeling program: engines and direct model tests execute `runtime`.
63
+ Format 5 carries the callback and identity in one object; nested
64
+ format-4 runtimes are unsupported. Hosts normalize parameters, prepare assets,
65
+ and execute the model; they own the forms, viewing, persistence, and export.
66
+ Add named, complete starting values with `definePresets(definition, presets)`.
67
+
68
+ `defineGenerator` validates structural and semantic metadata immediately; `definePresets` validates
69
+ preset metadata and complete canonical parameter values. Invalid input throws
70
+ `GeneratorPackageValidationError` at declaration. Both helpers retain the supplied object or array
71
+ and its inferred literal types. Inline parameter, editor, choice, and preset objects receive
72
+ TypeScript excess-property checks. Structural typing can hide extra fields in variables or generic
73
+ factories; runtime validation checks those fields too. These helpers validate metadata and values,
74
+ not model geometry or cross-parameter assertions.
75
+
76
+ ## Generator capabilities
77
+
78
+ | Area | Capabilities |
79
+ | ---------------------- | ---------------------------------------------------------------------------------------------------------------- |
80
+ | Parameter values | Numbers, booleans, choices and choice sets, text, colors, arrays, fonts, SVG, side profiles, and cross-sections. |
81
+ | Editing metadata | Labels, units, groups, descriptions, inline hints, sliders, paired controls, and conditional visibility. |
82
+ | Parameters and presets | Inferred TypeScript types, defaults, recovering normalization, strict codecs, and complete serializable presets. |
83
+ | Host integration | Validated package manifests, module execution, Worker messages, and incremental mesh delivery. |
84
+
85
+ Definitions and presets contain data, not callbacks. Conditional visibility changes the editing
86
+ interface; hidden values remain saved and still require validation. Cross-parameter constraints
87
+ belong in the model's assertions.
88
+
89
+ Use `normalizeParameters` to recover saved values: it drops unknown keys, restores defaults, and
90
+ clamps numbers. At strict boundaries, `createParamCodec(definition)` rejects incomplete, unknown, invalid, or
91
+ noncanonical values. The [parameter guide](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/develop/parameters-and-validation.mdx)
92
+ covers controls, conditions, and validation.
93
+
94
+ Use the codec's `parse()` to throw on invalid input, or `safeParse()` for a discriminated result.
95
+ Failure produces issues without substitute parameters. Codec issues use the shared `ParameterIssue`
96
+ shape: `parameterId` names the control, and an optional `path` is relative to that control's value.
97
+ Hosts can pass the issues directly to `aggregateParameterIssues`.
98
+
99
+ `executeGenerator` always validates its single `parameters` map against the current definition.
100
+ Hosts may validate before loading assets, but execution does not accept a prior parse result as a
101
+ validation bypass. Modeling hosts use `parseGeneratorModel(value, definition)` from `/modeling`
102
+ to validate an unknown module and infer its executable `GeneratorModel<typeof definition>` type.
103
+ Pass the default export itself for local entries that also export their definition; packaged
104
+ namespaces contain only the default export. The runtime-neutral `parseGeneratorModule` remains
105
+ available from `/runtime`. Invalid envelopes throw `TypeError`. Package validation exposes MetaMesh
106
+ issues and errors, keeping its schema-library adapters private.
107
+
108
+ Worker model statistics use `signedVolume` in mm³. `generateMs` measures the engine run;
109
+ `timings.totalMs` measures the host workflow and includes stages outside the engine.
110
+ `byteCount` counts finalized world-space position and index buffer bytes, counting shared buffers
111
+ once; it does not measure the local buffers transferred by a Worker.
112
+ Timing stages are optional; hosts report the phases they actually measure. The parameter-processing
113
+ stage is `paramsMs` and finalization is `finalizeMs`.
114
+
115
+ For Worker hosts, `/modeling` supplies `ModelDeliveryEncoder` and `toWorldMeshes`; `/runtime`
116
+ supplies `PartDeliveryDecoder`. Transfers carry local buffers under `geometry`, with placement
117
+ beside them. Decode resource references before application use and convert to world meshes before
118
+ export. Receiving hosts own the buffers and keep them immutable and attached.
88
119
 
89
120
  ## API entry points
90
121
 
91
- | Import | Use it for |
92
- | ------------------------------------ | ------------------------------------------------ |
93
- | `@metamesh/generator-sdk` | Definitions, presets, and module authoring |
94
- | `@metamesh/generator-sdk/parameters` | Defaults, saved values, and strict codecs |
95
- | `@metamesh/generator-sdk/runtime` | Module execution, mesh data, and Worker messages |
96
- | `@metamesh/generator-sdk/packages` | Package, catalog, and installation parsing |
97
- | `@metamesh/generator-sdk/fonts` | Immutable font selection values |
122
+ | Import | Responsibility |
123
+ | ------------------------------------ | ------------------------------------------------------------------- |
124
+ | `@metamesh/generator-sdk` | Definitions, presets, inferred types, and module authoring. |
125
+ | `@metamesh/generator-sdk/modeling` | Definition-inferred Modeling programs. |
126
+ | `@metamesh/generator-sdk/parameters` | Defaults, saved values, normalization, and strict codecs. |
127
+ | `@metamesh/generator-sdk/runtime` | Execution, generated geometry, and Worker protocols. |
128
+ | `@metamesh/generator-sdk/packages` | Package, catalog, installation, and definition-document validation. |
129
+ | `@metamesh/generator-sdk/fonts` | Immutable font selection values. |
98
130
 
99
- Incremental Worker hosts can use `GeneratedPartsDecoder` from `/runtime` to hydrate validated
100
- geometry resources while checking part metadata and aggregate limits on every delivery. Keep
101
- admitted buffers immutable and attached; call `clear()` when replacing the delivery source.
131
+ `@metamesh/generator-sdk/parameters.schema.json` supports offline definition editing. The SDK
132
+ validates references, defaults, and cross-field rules in addition to the structural schema.
102
133
 
103
134
  ## Documentation
104
135
 
105
- Resolve `@metamesh/generator-sdk/docs/manifest.json` from your project for exact-version Markdown
106
- guides and annotated declaration references. Document paths are relative to that manifest.
107
- With [`@metamesh/cli`](https://github.com/JasonKoolman/metamesh/blob/main/packages/cli/README.md)
108
- installed, `pnpm exec metamesh docs search "parameters"` searches the local index;
109
- `pnpm exec metamesh docs show sdk/guide/generator-modules` reads this package's authoring guide.
136
+ Resolve `@metamesh/generator-sdk/docs/manifest.json` for exact-version Markdown guides and annotated
137
+ API references. With [CLI](https://github.com/JasonKoolman/metamesh/blob/main/packages/cli/README.md) installed:
110
138
 
111
- - [Parameters and validation](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/develop/parameters-and-validation.mdx) — controls, defaults, and diagnostics.
112
- - [Local authoring](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/create/author-locally.mdx) — the current Generator workflow.
113
- - [API source](https://github.com/JasonKoolman/metamesh/blob/main/packages/generator-sdk/src/index.ts) — exports, types, and implementation references.
139
+ ```bash
140
+ pnpm exec metamesh docs search "parameters"
141
+ pnpm exec metamesh docs show sdk/guide/generator-modules
142
+ ```
114
143
 
115
- Until the public documentation site launches, use these repository guides or
116
- [run the docs locally](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/README.md#local-use).
117
- For package development, see [Contributing](https://github.com/JasonKoolman/metamesh/blob/main/CONTRIBUTING.md).
144
+ See [local authoring](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/create/author-locally.mdx)
145
+ for the complete workflow and [Contributing](https://github.com/JasonKoolman/metamesh/blob/main/CONTRIBUTING.md)
146
+ for package development.
118
147
 
119
148
  ## License
120
149
 
@@ -2,16 +2,16 @@
2
2
 
3
3
  Define typed controls, editable profiles, conditional visibility, and validation for an authored Studio Project.
4
4
 
5
- Define controls so readers can adjust a model without editing its source. Studio stores the
6
- definition as JSON-safe Project data, infers `params` through `generate`, and runs cross-field
7
- validation in `model.ts`.
5
+ Give someone a useful set of controls, and they can adjust your model without editing its source.
6
+ Studio saves the definition as JSON-safe Project data and infers the type of `params` through
7
+ `generate`. You check relationships between controls in `model.ts`.
8
8
 
9
9
  The JSON document contains required `groups` and `parameters` arrays. A parameter's `type`,
10
10
  default, units, bounds, and choices describe its value. Its optional `ui` object describes
11
11
  presentation: group, shared row, hint, visibility, editing increment, and physical editor bindings.
12
12
  Number and Slider both use `type: "number"`; a Slider also declares `ui.control: "slider"`.
13
13
  Options use `type: "choice"`, Side profile uses `type: "side-profile"`, and a closed outline uses
14
- `type: "contour"`. Changing a numeric widget does not change its saved value or valid range.
14
+ `type: "contour"`. Switching between Number and Slider doesn't change the saved value or valid range.
15
15
 
16
16
  JSON editing offers field completion, help, and inline validation, including references to declared
17
17
  groups, parameters, and choice values. Fix or discard invalid JSON before applying it or returning
@@ -23,19 +23,19 @@ also checks rules that JSON Schema cannot express.
23
23
  In an authored Project, open the parameter panel's **Parameter actions** menu and choose
24
24
  **Edit controls**. The same action is available in the **MetaMesh menu → Current project** group.
25
25
  The Model controls editor's **Visual** and **JSON** views edit the same draft. Choose
26
- **Apply & return** to commit it and return to the model.
26
+ **Apply & return** to save the definition and return to the model.
27
27
 
28
28
  1. Add a section for one coherent decision, such as **Size** or **Outputs**.
29
29
  2. Add a control, give it a stable ID, a plain-language label, and a useful default.
30
- 3. Add units and field limits where they carry real meaning.
30
+ 3. Add units and limits that reflect what the model supports.
31
31
  4. Try the selected control in its preview, then apply the draft and check the generated
32
32
  `params` completion in `model.ts`.
33
33
 
34
34
  Preview values are temporary; they do not change the default or the Project's current values.
35
35
 
36
36
  Use labels to name the decision and descriptions for more detail. Defaults should produce a useful
37
- model immediately. Use minimum and maximum values for supported field ranges and cross-field
38
- rules for constraints between controls.
37
+ model immediately. Set minimum and maximum values for each field's supported range, then check
38
+ relationships between controls in your source.
39
39
 
40
40
  ## Separate help from essential instructions
41
41
 
@@ -48,7 +48,7 @@ label is enough. Hints are static and appear whenever the control is visible; pu
48
48
  multiple modes in `description`. Errors, warnings, and reasons a control is unavailable stay visible.
49
49
 
50
50
  In **Visual**, edit **Hint (optional)** as ordinary text. **Visual**, **JSON**, and the live preview
51
- use the same string field. Clearing it omits the hint when applying the definition. For example,
51
+ use the same string field. Clear it to remove the hint when you apply the definition. For example,
52
52
  a socket-only Diameter control can include:
53
53
 
54
54
  ```json
@@ -84,8 +84,8 @@ A Slider requires `min`, `max`, and a positive `ui.step`. Multiple choice can li
84
84
  selections. Lists can limit their item count; number-list items can also declare units, limits,
85
85
  and `items.ui.step`.
86
86
 
87
- A Font value is a structured selection, not a family-name string. Pass the whole value in
88
- `services.text.layout(text, { font, fontSize })` inside generation, then pass its layout to
87
+ A Font value contains the selected face and weight. Pass the whole value, rather than a family-name
88
+ string, in `services.text.layout(text, { font, fontSize })` inside generation, then pass its layout to
89
89
  `textSection(layout)`. Studio loads declared fonts before generation. See the
90
90
  [text recipe](https://metamesh.studio/docs/develop/geometry-recipes#text-from-a-font-parameter) for the setup and offline
91
91
  limits.
@@ -138,8 +138,8 @@ Add a **Side profile** control when the model needs an outer silhouette. Its **E
138
138
  opens guided points with automatic smoothing, Bézier handles, straight/curved segments,
139
139
  and numeric editing. Select a segment directly; double-click it to insert a point at that location.
140
140
  Choosing **Curve** reveals handles while retaining the existing shape until a handle moves.
141
- The Model controls editor uses the same editor for the default outline.
142
- **Apply profile** changes only the draft being edited; choose **Apply & return** to commit the
141
+ You'll use the same editor to set the default outline in Model controls.
142
+ **Apply profile** changes only the draft being edited; choose **Apply & return** to save the
143
143
  control definition.
144
144
 
145
145
  The value on `params` is a readonly `SideProfileValue`, with a start anchor and line or cubic
@@ -189,8 +189,8 @@ In **Physical dimensions (optional)**, link the radius and height to existing Nu
189
189
  controls with unit `mm`, a positive default, and a positive minimum. A radius factor of `0.5` uses
190
190
  half a diameter control. The corresponding JSON fields are `ui.radiusScale` and `ui.heightScale`, each
191
191
  with `parameterId` and a positive `factor`. These bindings set editor measurements; your source
192
- still applies the same physical scales when modeling. The envelope describes the available size:
193
- an outline reaching half the radius envelope produces half its diameter. The editor also shows
192
+ still applies the same physical scales when modeling. They describe the available size:
193
+ an outline reaching half the available radius produces half the diameter. The editor also shows
194
194
  the actual maximum diameter.
195
195
 
196
196
  Use [`sampleSideProfile()`](https://metamesh.studio/docs/reference/geometry/sampleSideProfile) to convert
@@ -276,14 +276,14 @@ XY `Contour` without a duplicated seam, rejecting invalid sampled topology and e
276
276
  Reuse that contour in generation, create a filled Section with
277
277
  [`polygon(contour)`](https://metamesh.studio/docs/reference/model/polygon), and use
278
278
  [`section.extrude()`](https://metamesh.studio/docs/reference/model/Section#extrude) or [`section.sweep()`](https://metamesh.studio/docs/reference/model/Section#sweep) for the solid.
279
- The Generator owns extrusion depth, the sweep path, fit, walls, and manufacturing rules.
280
- Data validation checks the bounded structure and closure; it does not establish those geometric
279
+ Your Generator decides extrusion depth, the sweep path, fit, walls, and manufacturing rules.
280
+ Data validation checks the bounded structure and closure; it doesn't establish those geometric
281
281
  requirements. This control contains one contour without holes or multiple loops.
282
282
 
283
283
  Side-profile and cross-section edits stay local until **Apply**. Workspace editors check the
284
- current draft with Generator declaration and reached assertions before applying it; errors block Apply and warnings
285
- remain visible. Failed checks offer **Retry draft check**. Editing a control default changes its
286
- definition draft, so check the current model after **Apply & return**.
284
+ current draft by running the Generator declaration and any assertions it reaches; errors block Apply
285
+ and warnings remain visible. Failed checks offer **Retry draft check**. Editing a control default
286
+ changes its definition draft, so check the current model after **Apply & return**.
287
287
 
288
288
  <a id="expose-curve-resolution-in-the-viewport"></a>
289
289
 
@@ -352,13 +352,13 @@ reference Font, Side profile, Cross section, Number List, or Text List values.
352
352
  The JSON root accepts only `groups` and `parameters`. Project identity, title, and version are
353
353
  managed separately by Studio.
354
354
 
355
- Visibility is presentation, not data deletion. Source still receives the control's normalized value.
356
- Generation decides whether it matters in the current mode; assertions and geometry follow that choice.
355
+ Hiding a control keeps its saved value, and source still receives the normalized value. Your
356
+ generation code decides whether to use it in the current mode, including in assertions and geometry.
357
357
 
358
358
  ## Add cross-field validation in TypeScript
359
359
 
360
- The generation callback receives normalized readonly parameters. Put a cheap assertion before
361
- geometry when a combination cannot produce a supported model:
360
+ The generation callback receives normalized readonly parameters. If a combination can't produce a
361
+ supported model, put a cheap assertion before geometry to stop the work early:
362
362
 
363
363
 
364
364
 
@@ -382,9 +382,9 @@ than your model's recommended minimum. A zero wall stops generation; a 0.5 mm wa
382
382
  with a warning. Choose that minimum for the model and manufacturing process. A failed edit leaves
383
383
  the last valid preview and its export available. Warnings allow a current model to generate and export.
384
384
 
385
- Checks follow JavaScript order: reading a computed value evaluates it when needed, and observing
385
+ Checks follow JavaScript order: reading a computed value evaluates it when needed, and measuring
386
386
  geometry evaluates its input first. Draft validation checks declarations and reached assertions
387
- without finalizing parts; it does not prove full geometric validity. Use optional `computed`
387
+ without finalizing parts; it doesn't prove full geometric validity. Use optional `computed`
388
388
  values to reuse expensive layouts or shared calculations across unrelated edits. There is no
389
389
  separate preparation callback.
390
390
 
@@ -404,9 +404,9 @@ Before relying on a Project, check:
404
404
  - resetting controls returns to the documented defaults.
405
405
 
406
406
  The Model controls editor checks the definition when you apply it and keeps invalid drafts open
407
- with errors to correct. After **Apply & return**, Studio uses the updated definition for controls,
408
- normalization, persistence, and the typed generation context. It then validates the current values
409
- with `model.ts`; check the workspace for source or cross-field errors before exporting.
407
+ so you can fix the errors. After **Apply & return**, Studio uses the updated definition to build
408
+ controls, normalize and save values, and type the generation context. It then validates the current
409
+ values with `model.ts`; check the workspace for source or cross-field errors before exporting.
410
410
 
411
411
 
412
412