@hatiolab/figure-model 0.1.35 → 0.1.37

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 (54) hide show
  1. package/dist/index.d.ts +4 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/v3-asset-types.d.ts +89 -16
  6. package/dist/v3-asset-types.d.ts.map +1 -1
  7. package/dist/v3-asset.d.ts.map +1 -1
  8. package/dist/v3-asset.js +34 -25
  9. package/dist/v3-asset.js.map +1 -1
  10. package/dist/v3-authoring-actions.d.ts +97 -0
  11. package/dist/v3-authoring-actions.d.ts.map +1 -0
  12. package/dist/v3-authoring-actions.js +384 -0
  13. package/dist/v3-authoring-actions.js.map +1 -0
  14. package/dist/v3-capabilities.d.ts.map +1 -1
  15. package/dist/v3-capabilities.js +4 -77
  16. package/dist/v3-capabilities.js.map +1 -1
  17. package/dist/v3-driver.d.ts +24 -1
  18. package/dist/v3-driver.d.ts.map +1 -1
  19. package/dist/v3-driver.js +68 -2
  20. package/dist/v3-driver.js.map +1 -1
  21. package/dist/v3-from-v2.d.ts +34 -1
  22. package/dist/v3-from-v2.d.ts.map +1 -1
  23. package/dist/v3-from-v2.js +676 -19
  24. package/dist/v3-from-v2.js.map +1 -1
  25. package/dist/v3-gate.d.ts +59 -6
  26. package/dist/v3-gate.d.ts.map +1 -1
  27. package/dist/v3-gate.js +310 -45
  28. package/dist/v3-gate.js.map +1 -1
  29. package/dist/v3-graph-types.d.ts +9 -1
  30. package/dist/v3-graph-types.d.ts.map +1 -1
  31. package/dist/v3-graph.d.ts +5 -3
  32. package/dist/v3-graph.d.ts.map +1 -1
  33. package/dist/v3-graph.js +93 -4
  34. package/dist/v3-graph.js.map +1 -1
  35. package/dist/v3-kernel-version.d.ts +1 -1
  36. package/dist/v3-kernel-version.js +1 -1
  37. package/dist/v3-mesh-compare.d.ts +2 -5
  38. package/dist/v3-mesh-compare.d.ts.map +1 -1
  39. package/dist/v3-mesh-compare.js +2 -145
  40. package/dist/v3-mesh-compare.js.map +1 -1
  41. package/dist/v3-shape-sampling.d.ts +14 -0
  42. package/dist/v3-shape-sampling.d.ts.map +1 -0
  43. package/dist/v3-shape-sampling.js +120 -0
  44. package/dist/v3-shape-sampling.js.map +1 -0
  45. package/dist/v3-surface.d.ts +15 -0
  46. package/dist/v3-surface.d.ts.map +1 -0
  47. package/dist/v3-surface.js +104 -0
  48. package/dist/v3-surface.js.map +1 -0
  49. package/docs/prototypes/v3-asset.schema.json +0 -8
  50. package/docs/v3-asset-persistence.md +1 -1
  51. package/docs/v3-legacy-risk-audit-2026-09-23.md +39 -0
  52. package/docs/v3-operator-contracts.md +2 -0
  53. package/docs/v3-shape-dimension-contract.md +111 -0
  54. package/package.json +1 -1
package/dist/v3-driver.js CHANGED
@@ -30,16 +30,19 @@ export function validateV3Drivers(asset) {
30
30
  const states = stateUnits(asset);
31
31
  const seenIds = new Set();
32
32
  const seenStates = new Set();
33
+ const clipDurations = new Map();
33
34
  for (const d of drivers) {
34
35
  const path = `drivers.${String(d?.id ?? '?')}`;
35
36
  const keysOf = (o) => (o && typeof o === 'object' ? Object.keys(o).sort() : null);
36
- if (JSON.stringify(keysOf(d)) !== JSON.stringify(['accumulates', 'id', 'interpolation', 'keys', 'loop', 'state', 'time']))
37
- fail('DRIVER', path, 'exactly id, state, time, keys, interpolation, loop, accumulates required');
37
+ if (JSON.stringify(keysOf(d)) !== JSON.stringify(['accumulates', 'clip', 'id', 'interpolation', 'keys', 'loop', 'state', 'time']))
38
+ fail('DRIVER', path, 'exactly id, clip, state, time, keys, interpolation, loop, accumulates required');
38
39
  if (typeof d.id !== 'string' || !d.id.trim())
39
40
  fail('DRIVER', path, 'id required');
40
41
  if (seenIds.has(d.id))
41
42
  fail('DRIVER', path, 'duplicate driver id');
42
43
  seenIds.add(d.id);
44
+ if (typeof d.clip !== 'string' || !d.clip.trim())
45
+ fail('DRIVER', path, 'clip required; the playback group is declared, not read out of the id');
43
46
  if (!states.has(d.state))
44
47
  fail('DRIVER_STATE', path, `${String(d.state)} is not a state input of this asset`);
45
48
  if (seenStates.has(d.state))
@@ -49,6 +52,11 @@ export function validateV3Drivers(asset) {
49
52
  fail('DRIVER_TIME', path, 'time must be { unit: "s", duration }');
50
53
  if (!(Number.isFinite(d.time.duration) && d.time.duration > 0))
51
54
  fail('DRIVER_TIME', path, 'positive duration in seconds required');
55
+ const shared = clipDurations.get(d.clip);
56
+ if (shared === undefined)
57
+ clipDurations.set(d.clip, d.time.duration);
58
+ else if (shared !== d.time.duration)
59
+ fail('DRIVER_TIME', path, `clip "${d.clip}" already runs for ${shared} s; one clip is one clock, so every driver in it shares a duration`);
52
60
  if (!Array.isArray(d.keys) || d.keys.length < 2)
53
61
  fail('DRIVER_KEYS', path, 'at least two keys required');
54
62
  let last = -Infinity;
@@ -142,4 +150,62 @@ export function driverStates(asset, timeSeconds) {
142
150
  }
143
151
  return out;
144
152
  }
153
+ /** Refuses a `stateInputs` map the contract does not allow. Called by `compileV3Asset`. */
154
+ export function validateV3StateInputs(asset) {
155
+ const policies = asset.stateInputs;
156
+ if (policies === undefined)
157
+ return;
158
+ if (!policies || typeof policies !== 'object' || Array.isArray(policies))
159
+ fail('STATE_INPUT', 'stateInputs', 'object required');
160
+ const states = stateUnits(asset);
161
+ for (const [id, p] of Object.entries(policies)) {
162
+ const path = `stateInputs.${id}`;
163
+ if (!states.has(id))
164
+ fail('STATE_INPUT', path, `${id} is not a state input of this asset`);
165
+ if (!p || typeof p !== 'object' || Array.isArray(p))
166
+ fail('STATE_INPUT', path, 'object required');
167
+ for (const k of Object.keys(p))
168
+ if (k !== 'label' && k !== 'sweep')
169
+ fail('STATE_INPUT', path, `unknown ${k}`);
170
+ if (p.label !== undefined && (typeof p.label !== 'string' || !p.label.trim()))
171
+ fail('STATE_INPUT', path, 'label must be a nonempty string');
172
+ if (p.sweep !== undefined && !(Number.isFinite(p.sweep) && p.sweep >= 0))
173
+ fail('STATE_INPUT', path, 'sweep must be a number of seconds, zero or more');
174
+ }
175
+ }
176
+ /**
177
+ * One step of a state value toward a target (V3 designer's ruling 2026-09-22).
178
+ *
179
+ * The rule lives here, not in each consumer: the renderer, a thumbnail and a test all call this. Straight
180
+ * line, no easing — the whole range of the input takes `sweep` seconds, so a half-range move takes half
181
+ * that. A machine moves at its own speed; it does not perform.
182
+ *
183
+ * **A new target part-way through continues from where the value is now.** That is why this takes the current
184
+ * value rather than a start and a progress: setting a new target can never make the figure jump.
185
+ *
186
+ * `sweep` of 0, or none, arrives at once. A state read from real equipment is a measurement, not a command,
187
+ * so the consumer applies it directly instead of calling this — a measured value must not be smoothed into
188
+ * something the machine never did.
189
+ */
190
+ export function advanceStateValue(current, target, input, dtSeconds) {
191
+ if (!Number.isFinite(current) || !Number.isFinite(target))
192
+ fail('STATE_INPUT', 'advanceStateValue', 'finite values required');
193
+ if (!Number.isFinite(dtSeconds) || dtSeconds < 0)
194
+ fail('STATE_INPUT', 'advanceStateValue', 'a non-negative step in seconds required');
195
+ const sweep = input.sweep;
196
+ const span = input.max - input.min;
197
+ if (!sweep || !(span > 0))
198
+ return target;
199
+ const step = (span / sweep) * dtSeconds;
200
+ if (!(step > 0))
201
+ return current;
202
+ const gap = target - current;
203
+ if (Math.abs(gap) <= step)
204
+ return target;
205
+ return current + Math.sign(gap) * step;
206
+ }
207
+ /** The policy for one state input, or an empty one. */
208
+ export function stateInputPolicy(asset, id) {
209
+ return asset.stateInputs?.[id] ?? {};
210
+ }
145
211
  //# sourceMappingURL=v3-driver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"v3-driver.js","sourceRoot":"","sources":["../src/v3-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-driver.js","sourceRoot":"","sources":["../src/v3-driver.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,40 @@ export interface V3ConversionOptions {
67
67
  paletteId?: string;
68
68
  /** Asset name. Defaults to the V2 `type`. */
69
69
  name?: string;
70
+ /**
71
+ * Re-authoring the converter may do for a person (ADR-0087 ruling 1, V3 designer's approval 2026-09-22 for
72
+ * candidates). `rotatedFollows: 'nearest-axis'`: a part rotated off the axes whose size follows the instance is
73
+ * given rigid dimensions that follow the world axis each local axis lies nearest to, instead of V2's shear. The
74
+ * result is marked `re-authored`, matches V2 where the in-plane factors agree, and differs elsewhere by design.
75
+ */
76
+ reauthor?: {
77
+ rotatedFollows?: 'nearest-axis';
78
+ /**
79
+ * Re-authoring a tilted part as rigid and fastened to what it is mounted on (designer's ruling
80
+ * 2026-09-22: keep the shape and the tilt, connect it to its mounting).
81
+ *
82
+ * V2 makes such a part follow the instance, and a rotation that mixes two axes scaling differently shears
83
+ * it. V2 has no rule for "the position follows but the size does not", so this cannot be said in a V2
84
+ * source; it is said here. The part keeps its authored dimensions and tilt, and its centre rides the named
85
+ * part's face, so the gap between them is the gap the author drew at every instance size.
86
+ */
87
+ attach?: Array<{
88
+ part: string;
89
+ to: string;
90
+ }>;
91
+ };
92
+ /**
93
+ * What the figure declares it occupies (V3 designer's ruling 2026-09-22).
94
+ *
95
+ * `'authored'` (the default) keeps V2's box: the declared volume is the authored size, so a part that
96
+ * reaches past it is still reported by the gate. Conversion stays faithful and the existing debt stays
97
+ * visible.
98
+ *
99
+ * `'measured'` declares the volume the parts actually need, as an expression in the size. This changes what
100
+ * the figure tells a scene it fills, so it is a deliberate act per asset, not something conversion does on
101
+ * its own.
102
+ */
103
+ occupancy?: 'authored' | 'measured';
70
104
  }
71
105
  /** A short stable fingerprint of the palette, so a report can say which colours it snapshotted. */
72
106
  export declare function paletteHash(palette: Record<string, string>): string;
@@ -142,7 +176,6 @@ export interface V3SameReport {
142
176
  };
143
177
  differences: V3SameDifference[];
144
178
  }
145
- /** ADR-0087 decision 2 tolerances. */
146
179
  export declare const SAME_TOLERANCE_MM = 1;
147
180
  export declare const SAME_TOLERANCE_DEG = 0.1;
148
181
  export interface V3CompareOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"v3-from-v2.d.ts","sourceRoot":"","sources":["../src/v3-from-v2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-from-v2.d.ts","sourceRoot":"","sources":["../src/v3-from-v2.ts"],"names":[],"mappings":"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"}