@hatiolab/figure-model 0.6.7 → 0.7.1

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 (127) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +8 -4
  3. package/dist/asset-types.d.ts +8 -13
  4. package/dist/asset-types.d.ts.map +1 -1
  5. package/dist/asset-types.js.map +1 -1
  6. package/dist/asset.js +4 -4
  7. package/dist/asset.js.map +1 -1
  8. package/dist/authoring-actions.js +18 -5
  9. package/dist/authoring-actions.js.map +1 -1
  10. package/dist/authoring-types.d.ts +6 -11
  11. package/dist/authoring-types.d.ts.map +1 -1
  12. package/dist/authoring-types.js.map +1 -1
  13. package/dist/editor-workspace.d.ts +1 -1
  14. package/dist/editor-workspace.d.ts.map +1 -1
  15. package/dist/editor-workspace.js +13 -6
  16. package/dist/editor-workspace.js.map +1 -1
  17. package/dist/extensions.d.ts +15 -0
  18. package/dist/extensions.d.ts.map +1 -0
  19. package/dist/extensions.js +63 -0
  20. package/dist/extensions.js.map +1 -0
  21. package/dist/gate.d.ts +1 -1
  22. package/dist/gate.d.ts.map +1 -1
  23. package/dist/gate.js +28 -33
  24. package/dist/gate.js.map +1 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/input-preview.d.ts +48 -0
  30. package/dist/input-preview.d.ts.map +1 -0
  31. package/dist/{authoring-session.js → input-preview.js} +7 -63
  32. package/dist/input-preview.js.map +1 -0
  33. package/dist/kernel-version.d.ts +1 -1
  34. package/dist/kernel-version.js +1 -1
  35. package/dist/names.d.ts.map +1 -1
  36. package/dist/names.js +5 -1
  37. package/dist/names.js.map +1 -1
  38. package/dist/package.d.ts.map +1 -1
  39. package/dist/package.js +18 -15
  40. package/dist/package.js.map +1 -1
  41. package/dist/proposal.d.ts +5 -1
  42. package/dist/proposal.d.ts.map +1 -1
  43. package/dist/proposal.js +18 -5
  44. package/dist/proposal.js.map +1 -1
  45. package/dist/release-contract.d.ts +1 -1
  46. package/dist/release-contract.d.ts.map +1 -1
  47. package/dist/release-contract.js +13 -24
  48. package/dist/release-contract.js.map +1 -1
  49. package/dist/shape-edit.d.ts +1 -1
  50. package/dist/shape-edit.d.ts.map +1 -1
  51. package/dist/size-edit.d.ts +1 -1
  52. package/dist/size-edit.d.ts.map +1 -1
  53. package/docs/asset-persistence.md +6 -3
  54. package/docs/authoring-transactions.md +21 -19
  55. package/docs/capability-bindings.md +6 -3
  56. package/docs/common-kernel-experiment.md +3 -0
  57. package/docs/document-contract.md +6 -3
  58. package/docs/dryroom-profile-validation.md +3 -0
  59. package/docs/editor-integration.md +5 -2
  60. package/docs/full-conveyor-validation.md +5 -2
  61. package/docs/full-dryroom-validation.md +6 -3
  62. package/docs/full-forklift-validation.md +5 -2
  63. package/docs/full-robot-validation.md +5 -2
  64. package/docs/payload-collision-validation.md +5 -2
  65. package/docs/payload-contact-validation.md +5 -2
  66. package/docs/prototypes/README.md +27 -61
  67. package/docs/repeated-binding-validation.md +6 -3
  68. package/docs/review-2026-09-22.md +3 -0
  69. package/docs/runtime-extraction.md +9 -2
  70. package/docs/sample-validation-expanded.md +3 -0
  71. package/docs/sample-validation.md +3 -0
  72. package/docs/shape-contract.md +7 -5
  73. package/docs/spatial-contracts.md +3 -0
  74. package/docs/status.md +2 -1
  75. package/docs/storage-integration.md +6 -3
  76. package/docs/typed-repeat-contracts.md +3 -0
  77. package/package.json +9 -9
  78. package/dist/authoring-session.d.ts +0 -121
  79. package/dist/authoring-session.d.ts.map +0 -1
  80. package/dist/authoring-session.js.map +0 -1
  81. package/dist/carrier.d.ts +0 -23
  82. package/dist/carrier.d.ts.map +0 -1
  83. package/dist/carrier.js +0 -65
  84. package/dist/carrier.js.map +0 -1
  85. package/docs/prototypes/asset-samples.mjs +0 -15
  86. package/docs/prototypes/asset-store.mjs +0 -52
  87. package/docs/prototypes/asset-store.test.mjs +0 -59
  88. package/docs/prototypes/asset.mjs +0 -1
  89. package/docs/prototypes/asset.schema.json +0 -36
  90. package/docs/prototypes/asset.test.mjs +0 -68
  91. package/docs/prototypes/authoring-session.mjs +0 -1
  92. package/docs/prototypes/authoring-session.test.mjs +0 -65
  93. package/docs/prototypes/capability-plan.mjs +0 -1
  94. package/docs/prototypes/capability-plan.test.mjs +0 -56
  95. package/docs/prototypes/capability-samples.mjs +0 -23
  96. package/docs/prototypes/document.mjs +0 -2
  97. package/docs/prototypes/document.schema.json +0 -66
  98. package/docs/prototypes/document.test.mjs +0 -55
  99. package/docs/prototypes/dryroom-mesh.mjs +0 -60
  100. package/docs/prototypes/dryroom-mesh.test.mjs +0 -30
  101. package/docs/prototypes/editor-browser.mjs +0 -97
  102. package/docs/prototypes/editor-workspace.mjs +0 -1
  103. package/docs/prototypes/editor-workspace.test.mjs +0 -35
  104. package/docs/prototypes/feature-pattern.test.mjs +0 -131
  105. package/docs/prototypes/full-conveyor.mjs +0 -60
  106. package/docs/prototypes/full-conveyor.test.mjs +0 -61
  107. package/docs/prototypes/full-dryroom.mjs +0 -67
  108. package/docs/prototypes/full-dryroom.test.mjs +0 -54
  109. package/docs/prototypes/full-forklift.mjs +0 -40
  110. package/docs/prototypes/full-forklift.test.mjs +0 -37
  111. package/docs/prototypes/full-robot.mjs +0 -35
  112. package/docs/prototypes/full-robot.test.mjs +0 -68
  113. package/docs/prototypes/kernel.mjs +0 -147
  114. package/docs/prototypes/kernel.test.mjs +0 -144
  115. package/docs/prototypes/more-samples.test.mjs +0 -182
  116. package/docs/prototypes/payload-collision.mjs +0 -54
  117. package/docs/prototypes/payload-collision.test.mjs +0 -68
  118. package/docs/prototypes/payload-fit.mjs +0 -58
  119. package/docs/prototypes/payload-fit.test.mjs +0 -59
  120. package/docs/prototypes/render-dryroom.py +0 -60
  121. package/docs/prototypes/render-full-dryroom.mjs +0 -86
  122. package/docs/prototypes/repeated-binding.mjs +0 -13
  123. package/docs/prototypes/repeated-binding.test.mjs +0 -46
  124. package/docs/prototypes/runtime-browser.mjs +0 -76
  125. package/docs/prototypes/samples.test.mjs +0 -144
  126. package/docs/prototypes/spatial-plan.test.mjs +0 -102
  127. package/docs/prototypes/typed-repeat.test.mjs +0 -96
@@ -1,4 +1,3 @@
1
- // Shared UI/AI transaction experiment. In-memory, input edits only; not product persistence.
2
1
  import { compileFigureDocument as compileDocument } from "./document.js";
3
2
  import { FigureContractError as ContractError } from "./contract.js";
4
3
  function fail(code, path, message) {
@@ -25,23 +24,11 @@ function diff(before, after) {
25
24
  bindingsChanged: after.bindings.filter(b => !same(previous.get(b.id), b)).map(b => b.id)
26
25
  };
27
26
  }
28
- export function createFigureAuthoringSession(document, initialInputs) {
29
- const compiled = compileDocument(document), definitions = new Map(document.model.inputs.map(i => [i.id, structuredClone(i)]));
30
- let inputs = structuredClone(initialInputs), evaluation = compiled.evaluate(inputs), revision = 0;
31
- const undo = [], redo = [];
32
- const historyLimit = 50;
33
- function control(q) {
34
- if (!['ui', 'ai'].includes(q.origin))
35
- fail('EDIT_ORIGIN', 'origin', 'ui or ai required; metadata, not authentication');
36
- if (!Number.isSafeInteger(q.expectedRevision) || q.expectedRevision < 0)
37
- fail('EDIT_REVISION', 'expectedRevision', 'nonnegative integer required');
38
- if (q.expectedRevision !== revision)
39
- fail('REVISION_CONFLICT', 'expectedRevision', `expected ${q.expectedRevision}; current ${revision}`);
40
- }
41
- const snapshot = () => structuredClone({ revision, inputs, evaluation, canUndo: undo.length > 0, canRedo: redo.length > 0 });
27
+ /** Input preview only. Context, revision and history belong to the editor workspace. */
28
+ export function previewFigureInputs(document, initialInputs, request) {
29
+ const compiled = compileDocument(document), definitions = new Map(document.model.inputs.map(i => [i.id, structuredClone(i)])), inputs = structuredClone(initialInputs), evaluation = compiled.evaluate(inputs);
42
30
  function candidate(q) {
43
31
  fields(q, ['origin', 'expectedRevision', 'changes'], 'edit');
44
- control(q);
45
32
  if (!Array.isArray(q.changes) || !q.changes.length || q.changes.length > 100)
46
33
  fail('EDIT_LIMIT', 'changes', '1..100 changes required');
47
34
  const next = structuredClone(inputs), seen = new Set(), changes = [];
@@ -70,7 +57,7 @@ export function createFigureAuthoringSession(document, initialInputs) {
70
57
  next,
71
58
  resolved,
72
59
  report: {
73
- baseRevision: revision,
60
+ baseRevision: q.expectedRevision,
74
61
  origin: q.origin,
75
62
  changes,
76
63
  effects: diff(evaluation, resolved),
@@ -83,50 +70,7 @@ export function createFigureAuthoringSession(document, initialInputs) {
83
70
  }
84
71
  };
85
72
  }
86
- function install(next, resolved) {
87
- inputs = next;
88
- evaluation = resolved;
89
- revision++;
90
- }
91
- return {
92
- read: snapshot,
93
- preview(q) {
94
- const c = candidate(q);
95
- return structuredClone({ ...c.report, candidate: { inputs: c.next, evaluation: c.resolved } });
96
- },
97
- apply(q) {
98
- const c = candidate(q);
99
- if (c.report.changes.length) {
100
- undo.push(structuredClone(inputs));
101
- if (undo.length > historyLimit)
102
- undo.shift();
103
- redo.length = 0;
104
- install(c.next, c.resolved);
105
- }
106
- return structuredClone({ report: c.report, ...snapshot() });
107
- },
108
- undo(q) {
109
- fields(q, ['origin', 'expectedRevision'], 'undo');
110
- control(q);
111
- if (!undo.length)
112
- fail('NOTHING_TO_UNDO', 'history', 'no undo entry');
113
- const next = undo.at(-1), resolved = compiled.evaluate(next), effects = diff(evaluation, resolved);
114
- undo.pop();
115
- redo.push(structuredClone(inputs));
116
- install(next, resolved);
117
- return { origin: q.origin, effects, ...snapshot() };
118
- },
119
- redo(q) {
120
- fields(q, ['origin', 'expectedRevision'], 'redo');
121
- control(q);
122
- if (!redo.length)
123
- fail('NOTHING_TO_REDO', 'history', 'no redo entry');
124
- const next = redo.at(-1), resolved = compiled.evaluate(next), effects = diff(evaluation, resolved);
125
- redo.pop();
126
- undo.push(structuredClone(inputs));
127
- install(next, resolved);
128
- return { origin: q.origin, effects, ...snapshot() };
129
- }
130
- };
73
+ const c = candidate(request);
74
+ return structuredClone({ ...c.report, candidate: { inputs: c.next, evaluation: c.resolved } });
131
75
  }
132
- //# sourceMappingURL=authoring-session.js.map
76
+ //# sourceMappingURL=input-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-preview.js","sourceRoot":"","sources":["../src/input-preview.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@
4
4
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
5
5
  * and by `kernel-version.test.ts`.
6
6
  */
7
- export declare const FIGURE_KERNEL_VERSION = "0.6.7";
7
+ export declare const FIGURE_KERNEL_VERSION = "0.7.1";
8
8
  //# sourceMappingURL=kernel-version.d.ts.map
@@ -7,5 +7,5 @@
7
7
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
8
8
  * and by `kernel-version.test.ts`.
9
9
  */
10
- export const FIGURE_KERNEL_VERSION = '0.6.7';
10
+ export const FIGURE_KERNEL_VERSION = '0.7.1';
11
11
  //# sourceMappingURL=kernel-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../src/names.ts"],"names":[],"mappings":"AAaA,sGAAsG;AACtG,eAAO,MAAM,iBAAiB,QAAyC,CAAA;AACvE,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAM/D;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAO7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAEtD"}
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../src/names.ts"],"names":[],"mappings":"AAaA,sGAAsG;AACtG,eAAO,MAAM,iBAAiB,QAAyC,CAAA;AACvE,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAM/D;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAU7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAEtD"}
package/dist/names.js CHANGED
@@ -35,8 +35,12 @@ export function parseFigureRef(text) {
35
35
  const digits = text.slice(at + 1);
36
36
  if (!/^[1-9][0-9]*$/.test(digits))
37
37
  return null;
38
+ /* Reject versions outside the safe integer range: distinct strings can round to the same number or overflow to Infinity. */
39
+ const version = Number(digits);
40
+ if (!Number.isSafeInteger(version))
41
+ return null;
38
42
  const name = parseFigureName(text.slice(0, at));
39
- return name ? { ...name, version: Number(digits) } : null;
43
+ return name ? { ...name, version } : null;
40
44
  }
41
45
  export function formatFigureName(name) {
42
46
  return `${name.namespace}/${name.type}`;
package/dist/names.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"names.js","sourceRoot":"","sources":["../src/names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,KAAK,GAAG,+BAA+B,CAAA;AAE7C,sGAAsG;AACtG,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,KAAK,KAAK,CAAC,CAAA;AACvE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAWtC,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,MAAM,IAAI,oBAAoB,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpG,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAClC,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACxF,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/C,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAc;IAC5C,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAA;AAClD,CAAC"}
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../src/names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,KAAK,GAAG,+BAA+B,CAAA;AAE7C,sGAAsG;AACtG,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,KAAK,KAAK,CAAC,CAAA;AACvE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAWtC,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,MAAM,IAAI,oBAAoB,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpG,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAClC,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACxF,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9C,4HAA4H;IAC5H,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/C,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAc;IAC5C,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAA;AAClD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
package/dist/package.js CHANGED
@@ -35,15 +35,21 @@ export function figureBlobPath(hash) {
35
35
  export function figureContentHash(source, sha256) {
36
36
  return sha256(encoder.encode(source));
37
37
  }
38
- /** The format a source declares (`version` at its top), or null when the source is not a JSON object. */
39
- function assetFormatOf(source) {
38
+ /**
39
+ * Parse the source once to read its top-level version and referenced mesh hashes.
40
+ * Return null for invalid JSON; format is null when version is absent or is not a string.
41
+ * This helper does not validate the asset schema or graph.
42
+ */
43
+ function sourceRecordOf(source) {
44
+ let parsed;
40
45
  try {
41
- const parsed = JSON.parse(source);
42
- return parsed && typeof parsed === 'object' && typeof parsed.version === 'string' ? parsed.version : null;
46
+ parsed = JSON.parse(source);
43
47
  }
44
48
  catch {
45
49
  return null;
46
50
  }
51
+ const version = parsed && typeof parsed === 'object' ? parsed.version : undefined;
52
+ return { format: typeof version === 'string' ? version : null, files: figureFilesOf(parsed) };
47
53
  }
48
54
  /**
49
55
  * The files a figure's source names by hash, each once, in order: its mesh parts' files (`mesh@1`, contract §13). Reads
@@ -62,14 +68,6 @@ export function figureFilesOf(asset) {
62
68
  }
63
69
  return [...hashes].sort();
64
70
  }
65
- function filesOfSource(source) {
66
- try {
67
- return figureFilesOf(JSON.parse(source));
68
- }
69
- catch {
70
- return [];
71
- }
72
- }
73
71
  /** The package as files, ready to zip. */
74
72
  export function writeFigurePackage(input, sha256) {
75
73
  const files = new Map();
@@ -85,7 +83,7 @@ export function writeFigurePackage(input, sha256) {
85
83
  used.add(release.thumbnail);
86
84
  }
87
85
  /* Every file the source draws from goes with it: a board cannot draw the figure without them. */
88
- for (const hash of filesOfSource(release.source)) {
86
+ for (const hash of sourceRecordOf(release.source)?.files ?? []) {
89
87
  const file = input.blobs.get(hash);
90
88
  if (!file)
91
89
  throw new Error(`mesh file ${hash} of ${release.ref} was not given`);
@@ -206,7 +204,12 @@ export function readFigurePackage(files, sha256) {
206
204
  refused.push({ code: 'content-hash-mismatch', ref, path });
207
205
  continue;
208
206
  }
209
- if (assetFormatOf(release.source) !== release.assetFormat || entry.assetFormat !== release.assetFormat) {
207
+ /*
208
+ Require a nonempty source version matching both the release and manifest declarations.
209
+ Invalid JSON or matching null declarations must not pass this check.
210
+ */
211
+ const record = sourceRecordOf(release.source);
212
+ if (!record?.format || record.format !== release.assetFormat || entry.assetFormat !== release.assetFormat) {
210
213
  refused.push({ code: 'asset-format-mismatch', ref, path });
211
214
  continue;
212
215
  }
@@ -220,7 +223,7 @@ export function readFigurePackage(files, sha256) {
220
223
  continue;
221
224
  }
222
225
  /* A file the source draws from and the package does not carry: the release cannot be drawn where it lands. */
223
- if (filesOfSource(release.source).some(hash => !listed.some(blob => blob.hash === hash && blob.role === 'mesh'))) {
226
+ if (record.files.some(hash => !listed.some(blob => blob.hash === hash && blob.role === 'mesh'))) {
224
227
  refused.push({ code: 'mesh-unlisted', ref });
225
228
  continue;
226
229
  }
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,10 @@ export type FigureProposalStep = FigureProposalAddPart | FigureProposalFitRoom |
31
31
  declare const PART_EDIT_KINDS: readonly ["set-material", "set-segments", "remove-part", "set-capabilities", "set-state-input", "set-state-defaults", "set-driver", "remove-driver", "set-clip", "set-motion-group", "remove-motion-group", "set-data-schema", "rename-data-field", "set-data-binding", "remove-data-binding", "set-status-port", "remove-status-port", "duplicate-part", "move-part", "rename-part", "set-visibility"];
32
32
  type Exhaustive<T extends never> = T;
33
33
  export type _PartEditKindsComplete = Exhaustive<Exclude<FigurePartEdit['kind'], (typeof PART_EDIT_KINDS)[number]>>;
34
+ /** A mesh part names a file uploaded in the modeller by its hash: a model cannot know one, and an invented one draws nothing. */
35
+ type PartKindLeftOut = 'mesh';
36
+ export declare const FIGURE_PROPOSAL_PART_KINDS: readonly ["box", "cylinder", "rounded-box", "sphere", "frustum", "portal", "hollow-box", "polygon", "pyramid"];
37
+ export type _PartKindsComplete = Exhaustive<Exclude<FigurePrimitiveCreation['kind'], PartKindLeftOut | (typeof FIGURE_PROPOSAL_PART_KINDS)[number]>>;
34
38
  /**
35
39
  * The steps in order, on a copy of the asset. The first one the kernel refuses stops the proposal, with the step's
36
40
  * place in the list and the kernel's code and sentence; nothing is kept from it.
@@ -50,6 +54,6 @@ export declare const FIGURE_PROPOSAL_GRAMMAR: readonly FigureProposalWord[];
50
54
  /** Taken only through a word of its own (`fit-room` asks the kernel for the proposal it confirms). */
51
55
  type LeftOut = 'declare-occupancy';
52
56
  export type _GrammarComplete = Exhaustive<Exclude<FigureAuthoringAction['kind'] | FigurePartEdit['kind'], LeftOut | (typeof FIGURE_PROPOSAL_KINDS)[number]>>;
53
- export declare const FIGURE_PROPOSAL_KINDS: readonly ["add-part", "set-section-corner", "set-cavity", "set-section", "set-placement", "attach", "set-joint", "declare-instance-size", "link-dimension", "follow-size", "unlink-dimension", "scale-uniformly", "follow-size-in-proportion", "scale-position", "fix-position", "nudge-part", "detach", "remove-joint", "make-repeat", "set-repeat", "add-design-input", "set-input-range", "publish-input", "unpublish-input", "remove-repeat", "add-binding", "remove-binding", "set-slot-layout", "remove-slot-layout", "set-carrier", "fit-room", "set-mounting-face", "clear-mounting-face", "set-detail-level", "rename", "set-material", "set-segments", "rename-part", "set-visibility", "remove-part", "duplicate-part", "move-part", "set-capabilities", "set-state-input", "set-state-defaults", "set-driver", "remove-driver", "set-clip", "set-motion-group", "remove-motion-group", "set-data-schema", "rename-data-field", "set-data-binding", "remove-data-binding", "set-status-port", "remove-status-port"];
57
+ export declare const FIGURE_PROPOSAL_KINDS: readonly ["add-part", "set-section-corner", "set-cavity", "set-section", "set-placement", "attach", "set-joint", "declare-instance-size", "link-dimension", "follow-size", "unlink-dimension", "scale-uniformly", "follow-size-in-proportion", "scale-position", "fix-position", "nudge-part", "detach", "remove-joint", "make-repeat", "set-repeat", "add-design-input", "set-input-range", "publish-input", "unpublish-input", "remove-repeat", "add-binding", "remove-binding", "set-slot-layout", "remove-slot-layout", "set-extension", "fit-room", "set-mounting-face", "clear-mounting-face", "set-detail-level", "rename", "set-material", "set-segments", "rename-part", "set-visibility", "remove-part", "duplicate-part", "move-part", "set-capabilities", "set-state-input", "set-state-defaults", "set-driver", "remove-driver", "set-clip", "set-motion-group", "remove-motion-group", "set-data-schema", "rename-data-field", "set-data-binding", "remove-data-binding", "set-status-port", "remove-status-port"];
54
58
  export {};
55
59
  //# sourceMappingURL=proposal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAG9E,OAAO,EAAoC,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACnG,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG5F,qGAAqG;AACrG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;KAAE,CAAA;CACrG;AACD,iGAAiG;AACjG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,eAAe,CAAA;CAC3B;AACD,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,cAAc,CAAA;AAGvH,QAAA,MAAM,eAAe,yYAsBiC,CAAA;AACtD,KAAK,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAA;AACpC,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAElH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,WAAW,CA4BvI;AAED,mGAAmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AASD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAiIhE,CAAA;AAMD,sGAAsG;AACtG,KAAK,OAAO,GAAG,mBAAmB,CAAA;AAClC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5J,eAAO,MAAM,qBAAqB,g+BAyDxB,CAAA"}
1
+ {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAG9E,OAAO,EAAoC,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACnG,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG5F,qGAAqG;AACrG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;KAAE,CAAA;CACrG;AACD,iGAAiG;AACjG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,eAAe,CAAA;CAC3B;AACD,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,cAAc,CAAA;AAGvH,QAAA,MAAM,eAAe,yYAsBiC,CAAA;AACtD,KAAK,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAA;AACpC,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAMlH,iIAAiI;AACjI,KAAK,eAAe,GAAG,MAAM,CAAA;AAC7B,eAAO,MAAM,0BAA0B,gHAUkD,CAAA;AACzF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAEpJ;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,WAAW,CA8BvI;AAED,mGAAmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AASD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAiIhE,CAAA;AAMD,sGAAsG;AACtG,KAAK,OAAO,GAAG,mBAAmB,CAAA;AAClC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5J,eAAO,MAAM,qBAAqB,k+BAyDxB,CAAA"}
package/dist/proposal.js CHANGED
@@ -44,6 +44,17 @@ const PART_EDIT_KINDS = [
44
44
  'rename-part',
45
45
  'set-visibility'
46
46
  ];
47
+ export const FIGURE_PROPOSAL_PART_KINDS = [
48
+ 'box',
49
+ 'cylinder',
50
+ 'rounded-box',
51
+ 'sphere',
52
+ 'frustum',
53
+ 'portal',
54
+ 'hollow-box',
55
+ 'polygon',
56
+ 'pyramid'
57
+ ];
47
58
  /**
48
59
  * The steps in order, on a copy of the asset. The first one the kernel refuses stops the proposal, with the step's
49
60
  * place in the list and the kernel's code and sentence; nothing is kept from it.
@@ -59,6 +70,8 @@ export function applyFigureProposal(source, steps, consent) {
59
70
  if (!step || typeof step !== 'object' || typeof step.kind !== 'string')
60
71
  throw new FigureContractError('SCHEMA', at, 'a step is an object with a kind');
61
72
  if (step.kind === 'add-part') {
73
+ if (step.part?.kind === 'mesh')
74
+ throw new FigureContractError('PROPOSAL_MESH_PART', at, 'a mesh part comes from a file uploaded in the modeller; a proposal cannot add one');
62
75
  const part = { position: { x: 0, y: 0, z: 0 }, ...step.part };
63
76
  asset = addFigurePrimitive(asset, part);
64
77
  }
@@ -97,7 +110,7 @@ export const FIGURE_PROPOSAL_GRAMMAR = [
97
110
  {
98
111
  kind: 'add-part',
99
112
  shape: `{ kind: 'add-part', part: { id, kind: 'box', dimensions: { width, height, depth } } | { id, kind: 'cylinder', dimensions: { radius, length } } | { id, kind: 'rounded-box', dimensions: { width, height, depth, round } } | { id, kind: 'sphere', dimensions: { radiusX, radiusY, radiusZ } } | { id, kind: 'frustum', dimensions: { radiusTop, radiusBottom, height } } | { id, kind: 'portal', dimensions: { width, height, depth, jamb, head } } | { id, kind: 'hollow-box', dimensions: { width, height, depth, roundX, roundZ, wallX, wallZ, floor } } | { id, kind: 'polygon', dimensions: { height }, points: [{ x, z }, …] } | { id, kind: 'pyramid', dimensions: { height }, points: [{ x, z }, …], apex: { x, z } } }`,
100
- means: 'A new part, its measures in mm. A cylinder and a frustum stand along their local Y; a sphere is round about Y (radiusX = radiusZ). A polygon is a section of three points or more in X-Z, pushed up by its height; its sides must not cross. A pyramid is such a section drawn up by its height to one apex point (three points make a tetrahedron); only its base is a face to fasten to. Fasten it next; it stands at the origin until then.'
113
+ means: 'A new part, its measures in mm. A cylinder and a frustum stand along their local Y; a sphere is round about Y (radiusX = radiusZ). A polygon is a section of three points or more in X-Z, pushed up by its height; its sides must not cross. A pyramid is such a section drawn up by its height to one apex point (three points make a tetrahedron); only its base is a face to fasten to. Fasten it next; it stands at the origin until then. A mesh part is not one of these: it comes from a file the person uploads in the modeller, and a proposal cannot add one.'
101
114
  },
102
115
  {
103
116
  kind: 'set-section-corner',
@@ -175,9 +188,9 @@ export const FIGURE_PROPOSAL_GRAMMAR = [
175
188
  },
176
189
  { kind: 'remove-slot-layout', shape: `{ kind: 'remove-slot-layout' }`, means: 'The slot layout and its slots go.' },
177
190
  {
178
- kind: 'set-carrier',
179
- shape: `{ kind: 'set-carrier', carrier: { type, dimensions: { width, length, height } } | null }`,
180
- means: 'The figure is a carrier the material handling system calls by this CARRIERTYPE code, this big in mm; null declares no carrier.'
191
+ kind: 'set-extension',
192
+ shape: `{ kind: 'set-extension', key: '{owner}/{name}', value: JSON | null }`,
193
+ means: 'A value another product gives meaning to, under its key (fmsim/carrier); the figure does not read it. null takes the key away.'
181
194
  },
182
195
  { kind: 'set-placement', shape: `{ kind: 'set-placement', placement: ${FIGURE_PLACEMENTS.map(p => `'${p}'`).join(' | ')} }`, means: 'Say what the figure is authored from -- the floor, the ceiling, a wall, or its centre. It needs no part; do it first when the figure is not a floor one.' },
183
196
  { kind: 'fit-room', shape: `{ kind: 'fit-room', placement: ${FIGURE_PLACEMENTS.map(p => `'${p}'`).join(' | ')} }`, means: 'Declare the room the figure takes up, fitted to its parts, and what it is placed on. Do it last, after the parts and their motions.' },
@@ -249,7 +262,7 @@ export const FIGURE_PROPOSAL_KINDS = [
249
262
  'remove-binding',
250
263
  'set-slot-layout',
251
264
  'remove-slot-layout',
252
- 'set-carrier',
265
+ 'set-extension',
253
266
  'fit-room',
254
267
  'set-mounting-face',
255
268
  'clear-mounting-face',
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.js","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proposal.js","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { FigureAsset } from './asset-types.ts';
2
- export type FigureContractChangeCode = 'placement-changed' | 'size-inputs-gone' | 'size-inputs-added' | 'size-range-narrowed' | 'authored-size-changed' | 'state-input-gone' | 'state-unit-changed' | 'state-range-narrowed' | 'state-input-added' | 'clip-gone' | 'clip-added' | 'binding-gone' | 'binding-role-changed' | 'binding-capacity-reduced' | 'binding-accepts-narrowed' | 'binding-added' | 'slot-moved' | 'slot-anchor-gone' | 'slot-anchor-moved' | 'capability-gone' | 'capability-added' | 'occupancy-changed' | 'contact-face-changed' | 'public-input-gone' | 'public-input-range-narrowed' | 'public-input-added' | 'state-input-joints-changed' | 'joint-axis-changed' | 'joint-child-changed' | 'joint-motion-unit-changed' | 'joint-list-unread' | 'carrier-gone' | 'carrier-added' | 'carrier-type-changed' | 'carrier-dimensions-changed' | 'data-field-gone' | 'data-field-kind-changed' | 'data-field-narrowed' | 'data-field-added' | 'data-field-label-changed' | 'data-field-default-changed' | 'data-bindings-changed' | 'motion-group-gone' | 'motion-group-clip-removed' | 'motion-clip-group-changed' | 'motion-group-added' | 'motion-group-clip-added' | 'motion-group-default-changed' | 'motion-group-transition-changed';
2
+ export type FigureContractChangeCode = 'placement-changed' | 'size-inputs-gone' | 'size-inputs-added' | 'size-range-narrowed' | 'authored-size-changed' | 'state-input-gone' | 'state-unit-changed' | 'state-range-narrowed' | 'state-input-added' | 'clip-gone' | 'clip-added' | 'binding-gone' | 'binding-role-changed' | 'binding-capacity-reduced' | 'binding-accepts-narrowed' | 'binding-added' | 'slot-moved' | 'slot-anchor-gone' | 'slot-anchor-moved' | 'capability-gone' | 'capability-added' | 'occupancy-changed' | 'contact-face-changed' | 'public-input-gone' | 'public-input-range-narrowed' | 'public-input-added' | 'state-input-joints-changed' | 'joint-axis-changed' | 'joint-child-changed' | 'joint-motion-unit-changed' | 'joint-list-unread' | 'extension-gone' | 'extension-changed' | 'extension-added' | 'data-field-gone' | 'data-field-kind-changed' | 'data-field-narrowed' | 'data-field-added' | 'data-field-label-changed' | 'data-field-default-changed' | 'data-bindings-changed' | 'motion-group-gone' | 'motion-group-clip-removed' | 'motion-clip-group-changed' | 'motion-group-added' | 'motion-group-clip-added' | 'motion-group-default-changed' | 'motion-group-transition-changed';
3
3
  export interface FigureContractChange {
4
4
  code: FigureContractChangeCode;
5
5
  /** True refuses the release. */
@@ -1 +1 @@
1
- {"version":3,"file":"release-contract.d.ts","sourceRoot":"","sources":["../src/release-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAgDnE,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,GACvB,kBAAkB,GAClB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,WAAW,GACX,YAAY,GACZ,cAAc,GACd,sBAAsB,GACtB,0BAA0B,GAC1B,0BAA0B,GAC1B,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,GACnB,6BAA6B,GAC7B,oBAAoB,GACpB,4BAA4B,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,2BAA2B,GAC3B,mBAAmB,GACnB,cAAc,GACd,eAAe,GACf,sBAAsB,GACtB,4BAA4B,GAC5B,iBAAiB,GACjB,yBAAyB,GACzB,qBAAqB,GACrB,kBAAkB,GAClB,0BAA0B,GAC1B,4BAA4B,GAC5B,uBAAuB,GACvB,mBAAmB,GACnB,2BAA2B,GAC3B,2BAA2B,GAC3B,oBAAoB,GACpB,yBAAyB,GACzB,8BAA8B,GAC9B,iCAAiC,CAAA;AAErC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,wBAAwB,CAAA;IAC9B,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAA;IACjB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACvC,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;CACf;AAyGD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,oBAAoB,EAAE,CA8PrG"}
1
+ {"version":3,"file":"release-contract.d.ts","sourceRoot":"","sources":["../src/release-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAkDnE,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,GACvB,kBAAkB,GAClB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,WAAW,GACX,YAAY,GACZ,cAAc,GACd,sBAAsB,GACtB,0BAA0B,GAC1B,0BAA0B,GAC1B,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,GACnB,6BAA6B,GAC7B,oBAAoB,GACpB,4BAA4B,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,2BAA2B,GAC3B,mBAAmB,GACnB,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,qBAAqB,GACrB,kBAAkB,GAClB,0BAA0B,GAC1B,4BAA4B,GAC5B,uBAAuB,GACvB,mBAAmB,GACnB,2BAA2B,GAC3B,2BAA2B,GAC3B,oBAAoB,GACpB,yBAAyB,GACzB,8BAA8B,GAC9B,iCAAiC,CAAA;AAErC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,wBAAwB,CAAA;IAC9B,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAA;IACjB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACvC,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;CACf;AAyGD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,oBAAoB,EAAE,CAgPrG"}
@@ -1,6 +1,7 @@
1
1
  import { figureDataRows } from "./data-interface.js";
2
2
  import { figureSlotPlacesOf } from "./slot-places.js";
3
3
  import { FIGURE_SIZE_INPUTS } from "./words.js";
4
+ import { figureExtensionValueText } from "./extensions.js";
4
5
  import { figurePlacementOf } from "./asset.js";
5
6
  import { compileFigureGraph } from "./graph.js";
6
7
  import { figureJointsOf } from "./joint-list.js";
@@ -308,31 +309,19 @@ export function figureContractChanges(before, after) {
308
309
  if (!wasPublic.has(id))
309
310
  push({ code: 'public-input-added', blocking: false, subject: id, values: { id }, detail: `public input ${id} is new` });
310
311
  }
311
- /* ── carrier ───────────────────────────────────────────────────────────── */
312
- /* Live data names a carrier by its code (ADR-0123): a code gone or changed leaves those carriers without a figure. */
313
- const wasCarrier = before.carrier;
314
- const nowCarrier = after.carrier;
315
- if (wasCarrier && !nowCarrier)
316
- push({ code: 'carrier-gone', blocking: true, values: { type: wasCarrier.type }, detail: `the figure is no longer carrier type ${wasCarrier.type}` });
317
- else if (!wasCarrier && nowCarrier)
318
- push({ code: 'carrier-added', blocking: false, values: { type: nowCarrier.type }, detail: `the figure is now carrier type ${nowCarrier.type}` });
319
- else if (wasCarrier && nowCarrier) {
320
- if (wasCarrier.type !== nowCarrier.type)
321
- push({
322
- code: 'carrier-type-changed',
323
- blocking: true,
324
- values: { before: wasCarrier.type, after: nowCarrier.type },
325
- detail: `carrier type changed: ${wasCarrier.type} → ${nowCarrier.type}`
326
- });
327
- const size = (c) => `${c.dimensions.width}×${c.dimensions.length}×${c.dimensions.height}`;
328
- if (size(wasCarrier) !== size(nowCarrier))
329
- push({
330
- code: 'carrier-dimensions-changed',
331
- blocking: false,
332
- values: { before: size(wasCarrier), after: size(nowCarrier) },
333
- detail: `carrier dimensions changed: ${size(wasCarrier)} → ${size(nowCarrier)} mm`
334
- });
312
+ /* ── extensions ──────────────────────────────────────────────────────── */
313
+ const wasExtensions = before.extensions ?? {};
314
+ const nowExtensions = after.extensions ?? {};
315
+ for (const [key, was] of Object.entries(wasExtensions)) {
316
+ const now = nowExtensions[key];
317
+ if (now === undefined)
318
+ push({ code: 'extension-gone', blocking: true, subject: key, values: { key }, detail: `extension ${key} is gone` });
319
+ else if (figureExtensionValueText(was) !== figureExtensionValueText(now))
320
+ push({ code: 'extension-changed', blocking: false, subject: key, values: { key }, detail: `extension ${key} changed` });
335
321
  }
322
+ for (const key of Object.keys(nowExtensions))
323
+ if (!(key in wasExtensions))
324
+ push({ code: 'extension-added', blocking: false, subject: key, values: { key }, detail: `extension ${key} is new` });
336
325
  dataChanges(before, after, push);
337
326
  motionGroupChanges(before, after, push);
338
327
  /* ── joints ────────────────────────────────────────────────────────────── */