@metamesh/generator-sdk 0.14.0 → 0.16.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.
- package/CHANGELOG.md +61 -0
- package/dist/contracts.d.ts +9 -2
- package/dist/contracts.d.ts.map +1 -1
- package/dist/docs/guides/authoring.md +12 -16
- package/dist/docs/guides/parameters.md +47 -52
- package/dist/docs/manifest.json +25 -6
- package/dist/docs/reference/fonts/FontSelection.md +1 -1
- package/dist/docs/reference/fonts/isFontSelection.md +1 -1
- package/dist/docs/reference/index/ArrayParameterDefinition.md +1 -1
- package/dist/docs/reference/index/BaseParameterDefinition.md +1 -1
- package/dist/docs/reference/index/BooleanParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ChoiceOption.md +1 -1
- package/dist/docs/reference/index/ChoiceParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ChoiceSetParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ColorParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ConditionExpression.md +1 -1
- package/dist/docs/reference/index/ContourAnchor.md +1 -1
- package/dist/docs/reference/index/ContourParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ContourParameterUi.md +1 -1
- package/dist/docs/reference/index/ContourPoint.md +1 -1
- package/dist/docs/reference/index/ContourSegment.md +1 -1
- package/dist/docs/reference/index/ContourValue.md +1 -1
- package/dist/docs/reference/index/FontParameterDefinition.md +1 -1
- package/dist/docs/reference/index/FontSelection.md +1 -1
- package/dist/docs/reference/index/GeneratorDefinition.md +1 -1
- package/dist/docs/reference/index/GeneratorIssue.md +1 -1
- package/dist/docs/reference/index/GeneratorModule.md +1 -1
- package/dist/docs/reference/index/GeneratorModuleOptions.md +1 -1
- package/dist/docs/reference/index/GeneratorParamId.md +1 -1
- package/dist/docs/reference/index/GeneratorParams.md +1 -1
- package/dist/docs/reference/index/GeneratorPreset.md +1 -1
- package/dist/docs/reference/index/GeneratorProgram.md +1 -1
- package/dist/docs/reference/index/GeneratorServices.md +1 -1
- package/dist/docs/reference/index/GeneratorTextArcBaseline.md +2 -2
- package/dist/docs/reference/index/GeneratorTextLayout.md +1 -1
- package/dist/docs/reference/index/GeneratorTextMetrics.md +1 -1
- package/dist/docs/reference/index/GeneratorTextOptions.md +1 -1
- package/dist/docs/reference/index/MAX_CONTOUR_SEGMENTS.md +1 -1
- package/dist/docs/reference/index/MAX_SIDE_PROFILE_SEGMENTS.md +1 -1
- package/dist/docs/reference/index/NumberArrayItemDefinition.md +1 -1
- package/dist/docs/reference/index/NumberArrayParameterDefinition.md +1 -1
- package/dist/docs/reference/index/NumberParameterDefinition.md +1 -1
- package/dist/docs/reference/index/NumberParameterUi.md +1 -1
- package/dist/docs/reference/index/ParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ParameterDefinitionDocument.md +1 -1
- package/dist/docs/reference/index/ParameterGroup.md +1 -1
- package/dist/docs/reference/index/ParameterIssue.md +1 -1
- package/dist/docs/reference/index/ParameterIssueCode.md +1 -1
- package/dist/docs/reference/index/ParameterIssueSeverity.md +1 -1
- package/dist/docs/reference/index/ParameterScaleReference.md +1 -1
- package/dist/docs/reference/index/ParameterUi.md +1 -1
- package/dist/docs/reference/index/ParameterValidationResult.md +1 -1
- package/dist/docs/reference/index/ParameterValue.md +1 -1
- package/dist/docs/reference/index/ParameterValues.md +1 -1
- package/dist/docs/reference/index/RowParameterUi.md +1 -1
- package/dist/docs/reference/index/ScalarParameterValue.md +1 -1
- package/dist/docs/reference/index/SideProfileAnchor.md +1 -1
- package/dist/docs/reference/index/SideProfileParameterDefinition.md +1 -1
- package/dist/docs/reference/index/SideProfileParameterUi.md +1 -1
- package/dist/docs/reference/index/SideProfilePoint.md +1 -1
- package/dist/docs/reference/index/SideProfileSegment.md +1 -1
- package/dist/docs/reference/index/SideProfileValue.md +1 -1
- package/dist/docs/reference/index/SourceVisibility.md +1 -1
- package/dist/docs/reference/index/StringArrayItemDefinition.md +1 -1
- package/dist/docs/reference/index/StringArrayParameterDefinition.md +1 -1
- package/dist/docs/reference/index/SvgParameterDefinition.md +1 -1
- package/dist/docs/reference/index/TextParameterDefinition.md +1 -1
- package/dist/docs/reference/index/UNPREPARED_GENERATOR_SERVICES.md +1 -1
- package/dist/docs/reference/index/cloneContourValue.md +1 -1
- package/dist/docs/reference/index/cloneSideProfileValue.md +1 -1
- package/dist/docs/reference/index/contourValuesEqual.md +1 -1
- package/dist/docs/reference/index/defineGenerator.md +1 -1
- package/dist/docs/reference/index/defineGeneratorModule.md +1 -1
- package/dist/docs/reference/index/definePresets.md +1 -1
- package/dist/docs/reference/index/evaluateCondition.md +1 -1
- package/dist/docs/reference/index/isContourValue.md +1 -1
- package/dist/docs/reference/index/isFontSelection.md +1 -1
- package/dist/docs/reference/index/isSideProfileValue.md +1 -1
- package/dist/docs/reference/index/sideProfileValuesEqual.md +1 -1
- package/dist/docs/reference/packages/GENERATOR_PACKAGE_FORMAT_VERSION.md +1 -1
- package/dist/docs/reference/packages/GeneratorAccess.md +1 -1
- package/dist/docs/reference/packages/GeneratorDefinitionIssue.md +1 -1
- package/dist/docs/reference/packages/GeneratorDefinitionParseResult.md +1 -1
- package/dist/docs/reference/packages/GeneratorDescriptor.md +1 -1
- package/dist/docs/reference/packages/GeneratorPackageManifest.md +1 -1
- package/dist/docs/reference/packages/GeneratorPackageSource.md +1 -1
- package/dist/docs/reference/packages/GeneratorPackageValidationError.md +1 -1
- package/dist/docs/reference/packages/GeneratorPreset.md +1 -1
- package/dist/docs/reference/packages/GeneratorRuntimeReference.md +1 -1
- package/dist/docs/reference/packages/InstalledGenerator.md +1 -1
- package/dist/docs/reference/packages/MAX_ARRAY_ITEMS.md +1 -1
- package/dist/docs/reference/packages/MAX_CONDITION_BRANCHES.md +1 -1
- package/dist/docs/reference/packages/MAX_CONDITION_DEPTH.md +1 -1
- package/dist/docs/reference/packages/MAX_DESCRIPTOR_LIST_ITEMS.md +1 -1
- package/dist/docs/reference/packages/MAX_GENERATOR_ID_LENGTH.md +1 -1
- package/dist/docs/reference/packages/MAX_GENERATOR_PACKAGE_BYTES.md +1 -1
- package/dist/docs/reference/packages/MAX_GENERATOR_PRESETS.md +1 -1
- package/dist/docs/reference/packages/MAX_METADATA_TEXT_LENGTH.md +1 -1
- package/dist/docs/reference/packages/MAX_PARAMETERS.md +1 -1
- package/dist/docs/reference/packages/MAX_PARAMETER_GROUPS.md +1 -1
- package/dist/docs/reference/packages/MAX_PARAMETER_OPTIONS.md +1 -1
- package/dist/docs/reference/packages/MAX_TEXT_PARAMETER_LENGTH.md +1 -1
- package/dist/docs/reference/packages/METAMESH_RUNTIME_VERSION.md +2 -2
- package/dist/docs/reference/packages/compareSemanticVersions.md +1 -1
- package/dist/docs/reference/packages/definitionIssuesFromZod.md +1 -1
- package/dist/docs/reference/packages/isRuntimeCompatible.md +1 -1
- package/dist/docs/reference/packages/parseGeneratorDefinition.md +1 -1
- package/dist/docs/reference/packages/parseGeneratorDescriptor.md +1 -1
- package/dist/docs/reference/packages/parseGeneratorPackageManifest.md +1 -1
- package/dist/docs/reference/packages/parseParameterDefinitionDocument.md +1 -1
- package/dist/docs/reference/packages/safeParseGeneratorDefinition.md +1 -1
- package/dist/docs/reference/packages/safeParseParameterDefinitionDocument.md +1 -1
- package/dist/docs/reference/packages/validateGeneratorPresets.md +1 -1
- package/dist/docs/reference/packages/validationErrorFromIssues.md +1 -1
- package/dist/docs/reference/packages/validationErrorFromZod.md +1 -1
- package/dist/docs/reference/parameters/EMPTY_SVG_PARAMETER_DEFAULT.md +1 -1
- package/dist/docs/reference/parameters/MAX_PARAMETER_ISSUES.md +1 -1
- package/dist/docs/reference/parameters/MAX_PARAMETER_ISSUE_MESSAGE_LENGTH.md +1 -1
- package/dist/docs/reference/parameters/MAX_PROJECT_SVG_PARAMETER_BYTES.md +1 -1
- package/dist/docs/reference/parameters/MAX_SVG_PARAMETER_BYTES.md +1 -1
- package/dist/docs/reference/parameters/ParamCodec.md +1 -1
- package/dist/docs/reference/parameters/ParamDecodeCode.md +1 -1
- package/dist/docs/reference/parameters/ParamDecodeError.md +1 -1
- package/dist/docs/reference/parameters/ParamDecodeIssue.md +1 -1
- package/dist/docs/reference/parameters/ParamParseResult.md +1 -1
- package/dist/docs/reference/parameters/PreparedParameters.md +1 -1
- package/dist/docs/reference/parameters/aggregateParameterIssues.md +1 -1
- package/dist/docs/reference/parameters/canonicalizeParameters.md +1 -1
- package/dist/docs/reference/parameters/createParamCodec.md +1 -1
- package/dist/docs/reference/parameters/getDefaultParameters.md +1 -1
- package/dist/docs/reference/parameters/normalizeParameters.md +1 -1
- package/dist/docs/reference/parameters/parameterValueEquals.md +1 -1
- package/dist/docs/reference/parameters/parseParameterIssues.md +1 -1
- package/dist/docs/reference/parameters/prepareParameters.md +1 -1
- package/dist/docs/reference/parameters/svgParameterBytes.md +1 -1
- package/dist/docs/reference/parameters/validateParameters.md +1 -1
- package/dist/docs/reference/runtime/ExecuteGeneratorOptions.md +1 -1
- package/dist/docs/reference/runtime/Export3mfRequest.md +1 -1
- package/dist/docs/reference/runtime/ExportError.md +1 -1
- package/dist/docs/reference/runtime/ExportSuccess.md +1 -1
- package/dist/docs/reference/runtime/ExportedFile.md +1 -1
- package/dist/docs/reference/runtime/GenerateRequest.md +1 -1
- package/dist/docs/reference/runtime/GeneratedModel.md +1 -1
- package/dist/docs/reference/runtime/GeneratedModelDelivery.md +1 -1
- package/dist/docs/reference/runtime/GeneratedPart.md +1 -1
- package/dist/docs/reference/runtime/GeneratedPartDelivery.md +1 -1
- package/dist/docs/reference/runtime/GeneratedPartsDecoder.md +1 -1
- package/dist/docs/reference/runtime/GeneratedPartsLimits.md +1 -1
- package/dist/docs/reference/runtime/GenerationError.md +1 -1
- package/dist/docs/reference/runtime/GenerationInvalid.md +1 -1
- package/dist/docs/reference/runtime/GenerationSuccess.md +1 -1
- package/dist/docs/reference/runtime/GeneratorExecutionGenerated.md +1 -1
- package/dist/docs/reference/runtime/GeneratorExecutionInvalid.md +1 -1
- package/dist/docs/reference/runtime/GeneratorExecutionResult.md +1 -1
- package/dist/docs/reference/runtime/MeshTopologyMode.md +1 -1
- package/dist/docs/reference/runtime/ModelBounds.md +1 -1
- package/dist/docs/reference/runtime/ModelStats.md +11 -4
- package/dist/docs/reference/runtime/ModelTimings.md +1 -1
- package/dist/docs/reference/runtime/ParsedGeneratorModule.md +1 -1
- package/dist/docs/reference/runtime/RuntimeError.md +1 -1
- package/dist/docs/reference/runtime/ValidateRequest.md +1 -1
- package/dist/docs/reference/runtime/ValidationError.md +1 -1
- package/dist/docs/reference/runtime/ValidationSuccess.md +1 -1
- package/dist/docs/reference/runtime/WorkerRequest.md +1 -1
- package/dist/docs/reference/runtime/WorkerResponse.md +1 -1
- package/dist/docs/reference/runtime/executeGenerator.md +1 -1
- package/dist/docs/reference/runtime/generationIssues.md +1 -1
- package/dist/docs/reference/runtime/isGeneratorModule.md +1 -1
- package/dist/docs/reference/runtime/parseGeneratedParts.md +1 -1
- package/dist/docs/reference/runtime/parseGenerationSentAt.md +1 -1
- package/dist/docs/reference/runtime/parseGeneratorModule.md +1 -1
- package/dist/generator-package/constants.d.ts +1 -1
- package/dist/generator-package/constants.d.ts.map +1 -1
- package/dist/generator-package/constants.js +2 -1
- package/dist/generator-package/constants.js.map +1 -1
- package/dist/generator-package/validate-manifest.d.ts.map +1 -1
- package/dist/generator-package/validate-manifest.js +4 -3
- package/dist/generator-package/validate-manifest.js.map +1 -1
- package/dist/generator-package/versions.spec.d.ts +2 -0
- package/dist/generator-package/versions.spec.d.ts.map +1 -0
- package/dist/generator-package/versions.spec.js +12 -0
- package/dist/generator-package/versions.spec.js.map +1 -0
- package/dist/generator-services.d.ts +1 -1
- package/dist/generator-services.d.ts.map +1 -1
- package/dist/parameters/recovery.d.ts +1 -2
- package/dist/parameters/recovery.d.ts.map +1 -1
- package/dist/parameters/recovery.js +39 -45
- package/dist/parameters/recovery.js.map +1 -1
- package/dist/parameters/strict.js +3 -3
- package/dist/parameters/strict.js.map +1 -1
- package/dist/parameters/values.d.ts.map +1 -1
- package/dist/parameters/values.js +2 -10
- package/dist/parameters/values.js.map +1 -1
- package/dist/runtime/generated-parts.d.ts.map +1 -1
- package/dist/runtime/generated-parts.js +9 -2
- package/dist/runtime/generated-parts.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,66 @@
|
|
|
1
1
|
# @metamesh/generator-sdk
|
|
2
2
|
|
|
3
|
+
## 0.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- fbd7276: Standardize immutable value interchange on domain names, Data representations, Input construction
|
|
8
|
+
forms, and toData(). Rename vector tuples and transform matrices to Vector2Data/Vector3Data and
|
|
9
|
+
Transform2Data/Transform3Data. Path2Data and Path3Data now preserve dimension, points, and closure;
|
|
10
|
+
path factories accept complete data records as well as coordinate collections. Advance the host
|
|
11
|
+
runtime to major 8 for the new value protocol, and update consumers, examples, and references.
|
|
12
|
+
- 1585391: Add immutable `bounds2()` and `bounds3()` values with fluent measurements, positioned containment,
|
|
13
|
+
and plain-data conversion. Path bounds now return these values. Rename plain bounds records to
|
|
14
|
+
`Bounds2Data` and `Bounds3Data` across geometry, model snapshots, CLI captures, and Testkit contracts.
|
|
15
|
+
Bounds values in recipe inputs and computed data use the runtime 8 value interchange protocol.
|
|
16
|
+
- 29e19a5: Add portable knuckle hinge joint recipes and a pure layout resolver, with captive, inserted-pin,
|
|
17
|
+
and lift-off construction, independent per-half mounting webs, and shared bounded physical sampling.
|
|
18
|
+
Per-half `barrelChamfer` sets the 45-degree outer-rim setback at both ends of every barrel;
|
|
19
|
+
web `zMin` places the lower face in the pin-centered frame, both in millimetres.
|
|
20
|
+
The operation uses the runtime 8 modeling contract.
|
|
21
|
+
|
|
22
|
+
## 0.15.0
|
|
23
|
+
|
|
24
|
+
### Minor Changes
|
|
25
|
+
|
|
26
|
+
- 25561f6: Consolidate sampled paths into immutable `path2` and `path3` values with explicit closure,
|
|
27
|
+
transformation, resampling, measurements, and closest-point queries. Geometry accepts paths and
|
|
28
|
+
fluent vector collections directly; tuple path data is named `Path2Data` and `Path3Data`.
|
|
29
|
+
Remove redundant public path query and transform helpers and move mesh observation to
|
|
30
|
+
`solid.toTriangleMesh()`. Runtime protocol 7 rejects incompatible older compiled generators.
|
|
31
|
+
|
|
32
|
+
Complete dimensional XY patterning and fluent geometry interoperability. Consolidate degree-based
|
|
33
|
+
attachment options under `AttachOptions` and primitive `attachment`, rename immutable tolerance
|
|
34
|
+
changes to `withTolerance`, and use `analyzeTriangleMesh` as the single mesh measurement operation.
|
|
35
|
+
Geometry and text validation report structured errors; host lifecycle and copying contracts are explicit.
|
|
36
|
+
|
|
37
|
+
Use concise value factories and semantic degree options, including `anchor3`, `threadProfile`,
|
|
38
|
+
attachment `spin`, full thread `includedAngle`, and revolution `degrees`. Segment intersections use
|
|
39
|
+
`castSegment`; stroke APIs share `StrokeOptions`, `StrokeCap`, and `StrokeJoin`. Engines accept a
|
|
40
|
+
fixed `wasmUrl`. Remove superseded public names and update included consumers.
|
|
41
|
+
|
|
42
|
+
Make `components()` return disconnected material with holes and enclosed cavities intact.
|
|
43
|
+
Inspection uses `componentCount`; snapshots use `partCount`, `vertexCount`, `triangleCount`, and
|
|
44
|
+
`byteCount`, preserving instance counts and shared-storage accounting.
|
|
45
|
+
|
|
46
|
+
Inspect zero-volume Boolean contacts without treating their native boundary remnants as
|
|
47
|
+
material components. Retain thin material pieces and inward cavity boundaries without a volume
|
|
48
|
+
tolerance cutoff.
|
|
49
|
+
|
|
50
|
+
Keep ordinary component inspection on a certified native fast path, reserving exact arithmetic
|
|
51
|
+
for ambiguous contact boundaries. Reuse captured generation-data metadata during cache retention,
|
|
52
|
+
and include retention, commit, and cleanup in total generation timing.
|
|
53
|
+
|
|
54
|
+
Preserve shared snapshot buffers and rigid placements in Testkit part assertions. Validate CLI
|
|
55
|
+
capture bounds by coordinates, independently of JSON property order.
|
|
56
|
+
|
|
57
|
+
Use concise input bounds such as `maxTriangles`, `maxVertices`, `minSegments`, and `maxSegments`,
|
|
58
|
+
including mesh-optimization work budgets. Remove the superseded long option spellings.
|
|
59
|
+
|
|
60
|
+
Refresh Testkit sessions when prepared services change, validate CLI callback results against the
|
|
61
|
+
installed Modeling contract, and reject conflicting buffers for one generated geometry identity
|
|
62
|
+
and revision. Correct closest-point projection when finite path edges have overflowing squared lengths.
|
|
63
|
+
|
|
3
64
|
## 0.14.0
|
|
4
65
|
|
|
5
66
|
### Minor Changes
|
package/dist/contracts.d.ts
CHANGED
|
@@ -71,9 +71,16 @@ export interface ModelBounds {
|
|
|
71
71
|
readonly min: Vector3;
|
|
72
72
|
readonly max: Vector3;
|
|
73
73
|
}
|
|
74
|
+
/** Aggregate model facts and execution timings supplied by the host. */
|
|
74
75
|
export interface ModelStats {
|
|
75
|
-
|
|
76
|
-
readonly
|
|
76
|
+
/** Declared output parts, including repeated geometry instances. */
|
|
77
|
+
readonly partCount?: number | undefined;
|
|
78
|
+
/** Aggregate indexed triangles across output parts. */
|
|
79
|
+
readonly triangleCount?: number | undefined;
|
|
80
|
+
/** Aggregate position-buffer vertices across output parts. */
|
|
81
|
+
readonly vertexCount?: number | undefined;
|
|
82
|
+
/** Unique transferable backing-buffer bytes, counted once across output parts. */
|
|
83
|
+
readonly byteCount?: number | undefined;
|
|
77
84
|
readonly generationMs?: number | undefined;
|
|
78
85
|
readonly volumeMm3?: number | undefined;
|
|
79
86
|
readonly timings?: ModelTimings | undefined;
|
package/dist/contracts.d.ts.map
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,EAC3B,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,8BAA8B,EAC9B,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7D,MAAM,MAAM,cAAc,GACtB,oBAAoB,GACpB,SAAS,MAAM,EAAE,GACjB,SAAS,MAAM,EAAE,GACjB,aAAa,GACb,gBAAgB,GAChB,YAAY,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvE,KAAK,iBAAiB,CAAC,SAAS,SAAS,mBAAmB,IAAI,SAAS,SAAS;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACG,aAAa,GACb,SAAS,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GACjD,gBAAgB,GAChB,SAAS,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5C,YAAY,GACZ,SAAS,SAAS;IACd,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB,GACD,MAAM,GACN,SAAS,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5C,OAAO,GACP,SAAS,SAAS;IACd,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7E,GACD,KAAK,GACL,SAAS,SAAS;IACd,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7E,GACD,SAAS,KAAK,EAAE,GAChB,SAAS,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,CAAA;CAAE,GACvE,KAAK,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACvC,SAAS,MAAM,EAAE,GACjB,SAAS,MAAM,EAAE,GACnB,MAAM,CAAC;AAEzB,6EAA6E;AAC7E,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,mBAAmB,IAAI;IAC3D,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC;CACjG,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,mBAAmB,IAAI,OAAO,CACnE,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAC7B,MAAM,CACP,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,0FAA0F;AAC1F,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC/C,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;CAC1D;AAED,gFAAgF;AAChF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IAAI,IAAI,CACpF,cAAc,EACd,aAAa,CACd,GAAG;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACxD,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAClF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,kFAAkF;IAClF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CAC7C;AAED,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,+FAA+F;AAC/F,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,yFAAyF;AACzF,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;CAC1B,CAAC,CAAC;AAEP,4FAA4F;AAC5F,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAClD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Design reusable controls
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Design clear controls, useful defaults, and recoverable validation for a reusable code Project.
|
|
4
4
|
|
|
5
5
|
Turn a working authored Project into a model someone can adjust without reading its source.
|
|
6
6
|
If you need a working model first, follow [Build your first code Project](https://metamesh.studio/docs/develop/code-projects).
|
|
@@ -37,7 +37,7 @@ for supported control types and their configuration.
|
|
|
37
37
|
|
|
38
38
|
## Make labels and units unambiguous
|
|
39
39
|
|
|
40
|
-
Use labels that describe the finished model, such as **Outer
|
|
40
|
+
Use labels that describe the finished model, such as **Outer diameter**, rather than a variable
|
|
41
41
|
name like `d2`. Add a short description when a measurement could have more than one interpretation:
|
|
42
42
|
for example, whether Length includes an end cap.
|
|
43
43
|
|
|
@@ -50,8 +50,8 @@ messages; a clearer label should not require a different identifier.
|
|
|
50
50
|
|
|
51
51
|
## Choose defaults that demonstrate the model
|
|
52
52
|
|
|
53
|
-
Choose
|
|
54
|
-
|
|
53
|
+
Choose defaults that produce a useful, recognizable model without errors and show its important
|
|
54
|
+
features immediately.
|
|
55
55
|
|
|
56
56
|
Try the model from the parameter panel with the code editor closed. Confirm that:
|
|
57
57
|
|
|
@@ -70,13 +70,11 @@ range depends on another control, such as a hole that must fit inside a plate.
|
|
|
70
70
|
|
|
71
71
|
A helpful message identifies the problem and gives a next action: "Reduce Hole diameter or increase
|
|
72
72
|
Width" is more useful than "Invalid parameters." Associate the message with the relevant control.
|
|
73
|
-
Use
|
|
74
|
-
accept. The [validation guide](parameters.md#add-cross-field-validation-in-typescript)
|
|
73
|
+
Use errors for unsupported combinations and warnings for trade-offs the reader can accept. The [validation guide](parameters.md#add-cross-field-validation-in-typescript)
|
|
75
74
|
explains the implementation with examples.
|
|
76
75
|
|
|
77
|
-
Test
|
|
78
|
-
|
|
79
|
-
correction produces a current model again.
|
|
76
|
+
Test the smallest and largest supported dimensions, optional features, and choice or list
|
|
77
|
+
combinations. After an error, confirm that the suggested correction generates a new model.
|
|
80
78
|
|
|
81
79
|
For the plate above, test these decisions separately:
|
|
82
80
|
|
|
@@ -90,9 +88,8 @@ For the plate above, test these decisions separately:
|
|
|
90
88
|
|
|
91
89
|
## Keep related parts understandable
|
|
92
90
|
|
|
93
|
-
Use
|
|
94
|
-
|
|
95
|
-
change. The [part contract](https://metamesh.studio/docs/develop/code-project-contract#parts-and-placement) describes the
|
|
91
|
+
Use stable, descriptive part IDs for related outputs, such as a lid and container, so readers can
|
|
92
|
+
identify them during inspection and export as dimensions change. The [part contract](https://metamesh.studio/docs/develop/code-project-contract#parts-and-placement) describes the
|
|
96
93
|
supported output shape.
|
|
97
94
|
|
|
98
95
|
Inspect each output and check the exported model in its intended downstream tool. A valid solid
|
|
@@ -114,10 +111,9 @@ test runner; the CLI owns compilation and capture tools.
|
|
|
114
111
|
|
|
115
112
|
## Keep a portable copy
|
|
116
113
|
|
|
117
|
-
Save
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
and profile.
|
|
114
|
+
Save a `.metamesh.json` file, then [import it](https://metamesh.studio/docs/use/projects-and-offline#save-and-import-an-authored-project)
|
|
115
|
+
to check its source, controls, and values. Keep the file in storage you control; browser storage
|
|
116
|
+
belongs to one device and profile.
|
|
121
117
|
|
|
122
118
|
A saved Project is not a published catalog Generator. Check
|
|
123
119
|
[publishing availability](https://metamesh.studio/docs/create/publishing-status) if you intend to distribute through
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Define parameters and validation
|
|
2
2
|
|
|
3
|
-
Define
|
|
3
|
+
Define typed controls, editable profiles, conditional visibility, and validation for an authored Studio Project.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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`.
|
|
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
|
|
@@ -13,11 +13,10 @@ Number and Slider both use `type: "number"`; a Slider also declares `ui.control:
|
|
|
13
13
|
Options use `type: "choice"`, Side profile uses `type: "side-profile"`, and a closed outline uses
|
|
14
14
|
`type: "contour"`. Changing a numeric widget does not change its saved value or valid range.
|
|
15
15
|
|
|
16
|
-
JSON editing
|
|
17
|
-
|
|
18
|
-
Visual
|
|
19
|
-
|
|
20
|
-
also checks cross-field rules that JSON Schema cannot express.
|
|
16
|
+
JSON editing offers field completion, help, and inline validation, including references to declared
|
|
17
|
+
groups, parameters, and choice values. Fix or discard invalid JSON before applying it or returning
|
|
18
|
+
to Visual. For other editors, use `@metamesh/generator-sdk/parameters.schema.json`; the SDK parser
|
|
19
|
+
also checks rules that JSON Schema cannot express.
|
|
21
20
|
|
|
22
21
|
## Open the control editor
|
|
23
22
|
|
|
@@ -34,19 +33,19 @@ The Model controls editor's **Visual** and **JSON** views edit the same draft. C
|
|
|
34
33
|
|
|
35
34
|
Preview values are temporary; they do not change the default or the Project's current values.
|
|
36
35
|
|
|
37
|
-
Use labels to name the decision and descriptions for
|
|
38
|
-
minimum and maximum values
|
|
39
|
-
|
|
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.
|
|
40
39
|
|
|
41
40
|
## Separate help from essential instructions
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
hovering
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
Use `description` for explanations, terminology, and examples. Studio shows it when the reader
|
|
43
|
+
hovers, focuses, or taps the question-mark help button. Clicking the label focuses the input;
|
|
44
|
+
hovering the label does not open help.
|
|
45
|
+
|
|
46
|
+
Use optional `ui.hint` for one short, essential instruction beside the control. Omit it when the
|
|
47
|
+
label is enough. Hints are static and appear whenever the control is visible; put guidance for
|
|
48
|
+
multiple modes in `description`. Errors, warnings, and reasons a control is unavailable stay visible.
|
|
50
49
|
|
|
51
50
|
In **Visual**, edit **Hint (optional)** as ordinary text. **Visual**, **JSON**, and the live preview
|
|
52
51
|
use the same string field. Clearing it omits the hint when applying the definition. For example,
|
|
@@ -81,9 +80,9 @@ avoid repeating labels, units, or descriptions. A declared hint must be non-empt
|
|
|
81
80
|
| Cross section | One closed XY outline for extrusion or a swept section |
|
|
82
81
|
| Number List or Text List | An ordered sequence the user may add, remove, edit, and reorder |
|
|
83
82
|
|
|
84
|
-
A Slider requires `min`, `max`, and a positive `ui.step`. Multiple choice
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
A Slider requires `min`, `max`, and a positive `ui.step`. Multiple choice can limit the number of
|
|
84
|
+
selections. Lists can limit their item count; number-list items can also declare units, limits,
|
|
85
|
+
and `items.ui.step`.
|
|
87
86
|
|
|
88
87
|
A Font value is a structured selection, not a family-name string. Pass the whole value in
|
|
89
88
|
`services.text.layout(text, { font, fontSize })` inside generation, then pass its layout to
|
|
@@ -124,15 +123,14 @@ In **JSON**, give the controls the same `ui.row` identifier:
|
|
|
124
123
|
]
|
|
125
124
|
```
|
|
126
125
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
Add these entries to the definition's `parameters` array. Row IDs are local to each section, and
|
|
127
|
+
shared controls must stay adjacent. Omit `ui.row` for full width. Shared rows support number
|
|
128
|
+
inputs, `choice`, and `text`; sliders and other controls use their own rows. Prefer full width
|
|
129
|
+
for long option names or text.
|
|
131
130
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
separate numbers.
|
|
131
|
+
Fields share equal widths and stack in narrow panels. If one is hidden, the other fills the row.
|
|
132
|
+
Each retains its own value, units, validation, and history; `params.width` and `params.height`
|
|
133
|
+
remain separate numbers.
|
|
136
134
|
|
|
137
135
|
## Define an editable side profile
|
|
138
136
|
|
|
@@ -310,20 +308,17 @@ In **JSON**, add `"role": "curve-resolution"` to a Number or Slider control to g
|
|
|
310
308
|
}
|
|
311
309
|
```
|
|
312
310
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
For example, declare separate **Coil path** and **Wire cross-section** values and pass each to the
|
|
325
|
-
appropriate sampler. Your Generator decides which curves or parts each value affects; Studio saves
|
|
326
|
-
the values without assigning them to parts automatically.
|
|
311
|
+
Your source must apply the saved parameter to geometry, for example by passing
|
|
312
|
+
`resolution: { maxChordError: params.curveResolution }` to each affected primitive or Section
|
|
313
|
+
operation. Share the options value when several curves use the same policy. The declaration alone
|
|
314
|
+
does not change sampling; keep supported limits and feature-specific sampling in your model.
|
|
315
|
+
|
|
316
|
+
Studio groups these controls under **Curve resolution** in definition order, including in the
|
|
317
|
+
mobile sheet. Visual editing preserves the role; duplicating a control creates an ordinary numeric
|
|
318
|
+
control. Each value saves with the Project and affects preview and export through generation.
|
|
319
|
+
|
|
320
|
+
You can declare separate values for **Coil path** and **Wire cross-section**, then pass each to its
|
|
321
|
+
sampler. Your source decides which curves or parts it affects; Studio does not assign it to parts.
|
|
327
322
|
|
|
328
323
|
## Reveal a control only when it applies
|
|
329
324
|
|
|
@@ -350,9 +345,9 @@ array; this example shows Hole diameter only while Add hole is enabled:
|
|
|
350
345
|
}
|
|
351
346
|
```
|
|
352
347
|
|
|
353
|
-
Use `eq` or `ne` for scalar comparisons
|
|
354
|
-
for Multiple choice membership. Combine conditions with `all`, `any`, or `not`.
|
|
355
|
-
|
|
348
|
+
Use `eq` or `ne` for scalar comparisons; `gt`, `gte`, `lt`, or `lte` for numbers; and `contains`
|
|
349
|
+
for Multiple choice membership. Combine conditions with `all`, `any`, or `not`. Conditions cannot
|
|
350
|
+
reference Font, Side profile, Cross section, Number List, or Text List values.
|
|
356
351
|
|
|
357
352
|
The JSON root accepts only `groups` and `parameters`. Project identity, title, and version are
|
|
358
353
|
managed separately by Studio.
|
|
@@ -387,11 +382,11 @@ than your model's recommended minimum. A zero wall stops generation; a 0.5 mm wa
|
|
|
387
382
|
with a warning. Choose that minimum for the model and manufacturing process. A failed edit leaves
|
|
388
383
|
the last valid preview and its export available. Warnings allow a current model to generate and export.
|
|
389
384
|
|
|
390
|
-
Checks
|
|
391
|
-
geometry
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
385
|
+
Checks follow JavaScript order: reading a computed value evaluates it when needed, and observing
|
|
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`
|
|
388
|
+
values to reuse expensive layouts or shared calculations across unrelated edits. There is no
|
|
389
|
+
separate preparation callback.
|
|
395
390
|
|
|
396
391
|
## Test the definition as a contract
|
|
397
392
|
|
package/dist/docs/manifest.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"formatVersion": 1,
|
|
3
3
|
"packageName": "@metamesh/generator-sdk",
|
|
4
|
-
"packageVersion": "0.
|
|
4
|
+
"packageVersion": "0.16.0",
|
|
5
5
|
"documents": [
|
|
6
6
|
{
|
|
7
7
|
"id": "sdk/guide/authoring",
|
|
8
8
|
"title": "Design reusable controls",
|
|
9
|
-
"summary": "
|
|
9
|
+
"summary": "Design clear controls, useful defaults, and recoverable validation for a reusable code Project.",
|
|
10
10
|
"path": "guides/authoring.md",
|
|
11
11
|
"importPath": "@metamesh/generator-sdk",
|
|
12
12
|
"availability": "Reusable controls in Studio code Projects",
|
|
@@ -15,7 +15,15 @@
|
|
|
15
15
|
"guide",
|
|
16
16
|
"authoring",
|
|
17
17
|
"studio",
|
|
18
|
-
"how-to"
|
|
18
|
+
"how-to",
|
|
19
|
+
"design-reusable-controls",
|
|
20
|
+
"choose-the-decisions-to-expose",
|
|
21
|
+
"make-labels-and-units-unambiguous",
|
|
22
|
+
"choose-defaults-that-demonstrate-the-model",
|
|
23
|
+
"explain-constraints-where-they-matter",
|
|
24
|
+
"keep-related-parts-understandable",
|
|
25
|
+
"use-the-same-design-in-a-local-module",
|
|
26
|
+
"keep-a-portable-copy"
|
|
19
27
|
]
|
|
20
28
|
},
|
|
21
29
|
{
|
|
@@ -35,7 +43,7 @@
|
|
|
35
43
|
{
|
|
36
44
|
"id": "sdk/guide/parameters",
|
|
37
45
|
"title": "Define parameters and validation",
|
|
38
|
-
"summary": "Define
|
|
46
|
+
"summary": "Define typed controls, editable profiles, conditional visibility, and validation for an authored Studio Project.",
|
|
39
47
|
"path": "guides/parameters.md",
|
|
40
48
|
"importPath": "@metamesh/generator-sdk/parameters",
|
|
41
49
|
"availability": "Shared parameter contracts; control editing examples use Studio",
|
|
@@ -44,7 +52,18 @@
|
|
|
44
52
|
"guide",
|
|
45
53
|
"parameters",
|
|
46
54
|
"studio",
|
|
47
|
-
"how-to"
|
|
55
|
+
"how-to",
|
|
56
|
+
"define-parameters-and-validation",
|
|
57
|
+
"open-the-control-editor",
|
|
58
|
+
"separate-help-from-essential-instructions",
|
|
59
|
+
"choose-the-right-control",
|
|
60
|
+
"show-controls-side-by-side",
|
|
61
|
+
"define-an-editable-side-profile",
|
|
62
|
+
"define-an-editable-cross-section",
|
|
63
|
+
"expose-curve-resolution-in-parameters",
|
|
64
|
+
"reveal-a-control-only-when-it-applies",
|
|
65
|
+
"add-cross-field-validation-in-typescript",
|
|
66
|
+
"test-the-definition-as-a-contract"
|
|
48
67
|
]
|
|
49
68
|
},
|
|
50
69
|
{
|
|
@@ -2192,7 +2211,7 @@
|
|
|
2192
2211
|
{
|
|
2193
2212
|
"id": "sdk/reference/runtime/ModelStats",
|
|
2194
2213
|
"title": "ModelStats",
|
|
2195
|
-
"summary": "
|
|
2214
|
+
"summary": "Aggregate model facts and execution timings supplied by the host.",
|
|
2196
2215
|
"path": "reference/runtime/ModelStats.md",
|
|
2197
2216
|
"importPath": "@metamesh/generator-sdk/runtime",
|
|
2198
2217
|
"availability": "Portable Generator contracts",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
An immutable catalog face; revision is the SHA-256 digest of the complete font file.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk/fonts` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk/fonts` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
/** An immutable catalog face; revision is the SHA-256 digest of the complete font file. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Checks only the portable value, without consulting a catalog or substituting fonts.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk/fonts` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk/fonts` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
/** Checks only the portable value, without consulting a catalog or substituting fonts. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
ArrayParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface ArrayParameterDefinition extends ArrayParameterBase {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
BaseParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface BaseParameterDefinition {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
BooleanParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface BooleanParameterDefinition extends BaseParameterDefinition {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
ChoiceParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface ChoiceParameterDefinition extends BaseParameterDefinition {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
ChoiceSetParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface ChoiceSetParameterDefinition extends BaseParameterDefinition {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
ColorParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface ColorParameterDefinition extends BaseParameterDefinition {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Editing intent accompanies the explicit curve controls; no tangent is inferred at runtime.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
/** Editing intent accompanies the explicit curve controls; no tangent is inferred at runtime. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
ContourParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface ContourParameterDefinition extends BaseParameterDefinition {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
ContourParameterUi exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface ContourParameterUi extends ParameterUi {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Normalized planar coordinates, with X rightward and Y upward, in the unit square.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
/** Normalized planar coordinates, with X rightward and Y upward, in the unit square. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
One explicitly closed planar contour. Generators own physical scaling and topology checks.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
/** One explicitly closed planar contour. Generators own physical scaling and topology checks. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
FontParameterDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface FontParameterDefinition extends BaseParameterDefinition {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
An immutable catalog face; revision is the SHA-256 digest of the complete font file.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
/** An immutable catalog face; revision is the SHA-256 digest of the complete font file. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
GeneratorDefinition exported from @metamesh/generator-sdk.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
export interface GeneratorDefinition extends ParameterDefinitionDocument {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A validation issue whose optional parameter ID is tied to one definition.
|
|
4
4
|
|
|
5
|
-
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.
|
|
5
|
+
Import from `@metamesh/generator-sdk` (@metamesh/generator-sdk@0.16.0).
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
/** A validation issue whose optional parameter ID is tied to one definition. */
|