@hatiolab/figure-model 0.1.92 → 0.1.94

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 (320) hide show
  1. package/CHANGELOG.md +12 -12
  2. package/README.md +25 -25
  3. package/dist/{v3-asset-types.d.ts → asset-types.d.ts} +73 -67
  4. package/dist/asset-types.d.ts.map +1 -0
  5. package/dist/asset-types.js +2 -0
  6. package/dist/asset-types.js.map +1 -0
  7. package/dist/asset.d.ts +20 -0
  8. package/dist/asset.d.ts.map +1 -0
  9. package/dist/{v3-asset.js → asset.js} +49 -28
  10. package/dist/asset.js.map +1 -0
  11. package/dist/{v3-authoring-actions.d.ts → authoring-actions.d.ts} +77 -66
  12. package/dist/authoring-actions.d.ts.map +1 -0
  13. package/dist/{v3-authoring-actions.js → authoring-actions.js} +129 -104
  14. package/dist/authoring-actions.js.map +1 -0
  15. package/dist/{v3-authoring-session.d.ts → authoring-session.d.ts} +23 -21
  16. package/dist/authoring-session.d.ts.map +1 -0
  17. package/dist/{v3-authoring-session.js → authoring-session.js} +4 -4
  18. package/dist/authoring-session.js.map +1 -0
  19. package/dist/capabilities.d.ts +3 -0
  20. package/dist/capabilities.d.ts.map +1 -0
  21. package/dist/{v3-capabilities.js → capabilities.js} +8 -8
  22. package/dist/capabilities.js.map +1 -0
  23. package/dist/clip-keeping.d.ts +30 -0
  24. package/dist/clip-keeping.d.ts.map +1 -0
  25. package/dist/clip-keeping.js +77 -0
  26. package/dist/clip-keeping.js.map +1 -0
  27. package/dist/command-preview.d.ts +125 -0
  28. package/dist/command-preview.d.ts.map +1 -0
  29. package/dist/command-preview.js +246 -0
  30. package/dist/command-preview.js.map +1 -0
  31. package/dist/contract.d.ts +7 -0
  32. package/dist/contract.d.ts.map +1 -0
  33. package/dist/contract.js +12 -0
  34. package/dist/contract.js.map +1 -0
  35. package/dist/{v3-cost.d.ts → cost.d.ts} +5 -5
  36. package/dist/cost.d.ts.map +1 -0
  37. package/dist/{v3-cost.js → cost.js} +11 -11
  38. package/dist/cost.js.map +1 -0
  39. package/dist/{v3-create.d.ts → create.d.ts} +8 -8
  40. package/dist/{v3-create.d.ts.map → create.d.ts.map} +1 -1
  41. package/dist/{v3-create.js → create.js} +26 -26
  42. package/dist/create.js.map +1 -0
  43. package/dist/document.d.ts +5 -0
  44. package/dist/document.d.ts.map +1 -0
  45. package/dist/document.js +31 -0
  46. package/dist/document.js.map +1 -0
  47. package/dist/{v3-driver.d.ts → driver.d.ts} +10 -10
  48. package/dist/driver.d.ts.map +1 -0
  49. package/dist/{v3-driver.js → driver.js} +10 -10
  50. package/dist/driver.js.map +1 -0
  51. package/dist/{v3-editor-workspace.d.ts → editor-workspace.d.ts} +99 -73
  52. package/dist/editor-workspace.d.ts.map +1 -0
  53. package/dist/{v3-editor-workspace.js → editor-workspace.js} +48 -32
  54. package/dist/editor-workspace.js.map +1 -0
  55. package/dist/{v3-examples.d.ts → examples.d.ts} +5 -5
  56. package/dist/examples.d.ts.map +1 -0
  57. package/dist/{v3-examples.js → examples.js} +11 -11
  58. package/dist/examples.js.map +1 -0
  59. package/dist/{v3-follow.d.ts → follow.d.ts} +5 -5
  60. package/dist/follow.d.ts.map +1 -0
  61. package/dist/{v3-follow.js → follow.js} +2 -2
  62. package/dist/follow.js.map +1 -0
  63. package/dist/{v3-gate.d.ts → gate.d.ts} +36 -28
  64. package/dist/gate.d.ts.map +1 -0
  65. package/dist/{v3-gate.js → gate.js} +54 -48
  66. package/dist/gate.js.map +1 -0
  67. package/dist/{v3-graph-types.d.ts → graph-types.d.ts} +33 -33
  68. package/dist/graph-types.d.ts.map +1 -0
  69. package/dist/graph-types.js +2 -0
  70. package/dist/graph-types.js.map +1 -0
  71. package/dist/{v3-graph.d.ts → graph.d.ts} +14 -14
  72. package/dist/graph.d.ts.map +1 -0
  73. package/dist/{v3-graph.js → graph.js} +16 -16
  74. package/dist/graph.js.map +1 -0
  75. package/dist/index.d.ts +39 -33
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +39 -33
  78. package/dist/index.js.map +1 -1
  79. package/dist/{v3-instance-size.d.ts → instance-size.d.ts} +14 -14
  80. package/dist/instance-size.d.ts.map +1 -0
  81. package/dist/{v3-instance-size.js → instance-size.js} +13 -13
  82. package/dist/instance-size.js.map +1 -0
  83. package/dist/json.d.ts +12 -0
  84. package/dist/json.d.ts.map +1 -0
  85. package/dist/{v3-json.js → json.js} +13 -13
  86. package/dist/json.js.map +1 -0
  87. package/dist/kernel-version.d.ts +8 -0
  88. package/dist/kernel-version.d.ts.map +1 -0
  89. package/dist/{v3-kernel-version.js → kernel-version.js} +4 -4
  90. package/dist/kernel-version.js.map +1 -0
  91. package/dist/{v3-part-edit.d.ts → part-edit.d.ts} +12 -11
  92. package/dist/part-edit.d.ts.map +1 -0
  93. package/dist/{v3-part-edit.js → part-edit.js} +84 -68
  94. package/dist/part-edit.js.map +1 -0
  95. package/dist/proposal.d.ts +55 -0
  96. package/dist/proposal.d.ts.map +1 -0
  97. package/dist/{v3-proposal.js → proposal.js} +29 -21
  98. package/dist/proposal.js.map +1 -0
  99. package/dist/{v3-public-inputs.d.ts → public-inputs.d.ts} +4 -4
  100. package/dist/public-inputs.d.ts.map +1 -0
  101. package/dist/{v3-public-inputs.js → public-inputs.js} +3 -3
  102. package/dist/public-inputs.js.map +1 -0
  103. package/dist/recipe-build.d.ts +27 -0
  104. package/dist/recipe-build.d.ts.map +1 -0
  105. package/dist/{v3-recipe-build.js → recipe-build.js} +9 -9
  106. package/dist/recipe-build.js.map +1 -0
  107. package/dist/recipe-from-parts.d.ts +8 -0
  108. package/dist/recipe-from-parts.d.ts.map +1 -0
  109. package/dist/{v3-recipe-from-parts.js → recipe-from-parts.js} +9 -9
  110. package/dist/recipe-from-parts.js.map +1 -0
  111. package/dist/{v3-recipe.d.ts → recipe.d.ts} +25 -25
  112. package/dist/recipe.d.ts.map +1 -0
  113. package/dist/{v3-recipe.js → recipe.js} +30 -30
  114. package/dist/recipe.js.map +1 -0
  115. package/dist/release-contract.d.ts +19 -0
  116. package/dist/release-contract.d.ts.map +1 -0
  117. package/dist/{v3-release-contract.js → release-contract.js} +8 -7
  118. package/dist/release-contract.js.map +1 -0
  119. package/dist/{v3-render-batches.d.ts → render-batches.d.ts} +8 -8
  120. package/dist/render-batches.d.ts.map +1 -0
  121. package/dist/{v3-render-batches.js → render-batches.js} +4 -4
  122. package/dist/render-batches.js.map +1 -0
  123. package/dist/resize-plan.d.ts +61 -0
  124. package/dist/resize-plan.d.ts.map +1 -0
  125. package/dist/resize-plan.js +189 -0
  126. package/dist/resize-plan.js.map +1 -0
  127. package/dist/room.d.ts +53 -0
  128. package/dist/room.d.ts.map +1 -0
  129. package/dist/room.js +90 -0
  130. package/dist/room.js.map +1 -0
  131. package/dist/{v3-score.d.ts → score.d.ts} +19 -19
  132. package/dist/score.d.ts.map +1 -0
  133. package/dist/{v3-score.js → score.js} +32 -32
  134. package/dist/score.js.map +1 -0
  135. package/dist/shape-provider.d.ts +37 -0
  136. package/dist/shape-provider.d.ts.map +1 -0
  137. package/dist/shape-provider.js +69 -0
  138. package/dist/shape-provider.js.map +1 -0
  139. package/dist/{v3-shape-sampling.d.ts → shape-sampling.d.ts} +4 -4
  140. package/dist/shape-sampling.d.ts.map +1 -0
  141. package/dist/{v3-shape-sampling.js → shape-sampling.js} +3 -3
  142. package/dist/shape-sampling.js.map +1 -0
  143. package/dist/size-edit.d.ts +38 -0
  144. package/dist/size-edit.d.ts.map +1 -0
  145. package/dist/size-edit.js +178 -0
  146. package/dist/size-edit.js.map +1 -0
  147. package/dist/{v3-surface.d.ts → surface.d.ts} +5 -5
  148. package/dist/surface.d.ts.map +1 -0
  149. package/dist/{v3-surface.js → surface.js} +7 -7
  150. package/dist/surface.js.map +1 -0
  151. package/dist/{v3-words.d.ts → words.d.ts} +3 -3
  152. package/dist/words.d.ts.map +1 -0
  153. package/dist/{v3-words.js → words.js} +3 -3
  154. package/dist/words.js.map +1 -0
  155. package/docs/{assembly-constraints-v3.md → assembly-constraints.md} +1 -1
  156. package/docs/{v3-asset-persistence.md → asset-persistence.md} +8 -8
  157. package/docs/{v3-authoring-transactions.md → authoring-transactions.md} +2 -2
  158. package/docs/{v3-capability-bindings.md → capability-bindings.md} +8 -8
  159. package/docs/{v3-common-kernel-experiment.md → common-kernel-experiment.md} +4 -4
  160. package/docs/{v3-core-semantics.md → core-semantics.md} +5 -5
  161. package/docs/{v3-cutover.md → cutover.md} +4 -4
  162. package/docs/{v3-design.md → design.md} +11 -11
  163. package/docs/{v3-document-contract.md → document-contract.md} +9 -9
  164. package/docs/{v3-dryroom-profile-validation.md → dryroom-profile-validation.md} +4 -4
  165. package/docs/{v3-editor-integration.md → editor-integration.md} +6 -6
  166. package/docs/{v3-full-conveyor-validation.md → full-conveyor-validation.md} +4 -4
  167. package/docs/{v3-full-dryroom-validation.md → full-dryroom-validation.md} +4 -4
  168. package/docs/{v3-full-forklift-validation.md → full-forklift-validation.md} +5 -5
  169. package/docs/{v3-full-robot-validation.md → full-robot-validation.md} +4 -4
  170. package/docs/{v3-layout-system.md → layout-system.md} +4 -4
  171. package/docs/{v3-legacy-risk-audit-2026-09-23.md → legacy-risk-audit-2026-09-23.md} +5 -5
  172. package/docs/{v3-minimal-model.md → minimal-model.md} +6 -6
  173. package/docs/{v3-motion-contract.md → motion-contract.md} +3 -3
  174. package/docs/{v3-openusd-review.md → openusd-review.md} +8 -8
  175. package/docs/{v3-operator-contracts.md → operator-contracts.md} +6 -6
  176. package/docs/{v3-payload-collision-validation.md → payload-collision-validation.md} +4 -4
  177. package/docs/{v3-payload-contact-validation.md → payload-contact-validation.md} +5 -5
  178. package/docs/prototypes/README.md +10 -10
  179. package/docs/prototypes/{v3-asset-samples.mjs → asset-samples.mjs} +6 -6
  180. package/docs/prototypes/{v3-asset-store.mjs → asset-store.mjs} +3 -3
  181. package/docs/prototypes/{v3-asset-store.test.mjs → asset-store.test.mjs} +6 -6
  182. package/docs/prototypes/asset.mjs +1 -0
  183. package/docs/prototypes/{v3-asset.schema.json → asset.schema.json} +2 -2
  184. package/docs/prototypes/{v3-asset.test.mjs → asset.test.mjs} +10 -10
  185. package/docs/prototypes/authoring-session.mjs +1 -0
  186. package/docs/prototypes/{v3-authoring-session.test.mjs → authoring-session.test.mjs} +6 -6
  187. package/docs/prototypes/capability-plan.mjs +1 -0
  188. package/docs/prototypes/{v3-capability-plan.test.mjs → capability-plan.test.mjs} +5 -5
  189. package/docs/prototypes/{v3-capability-samples.mjs → capability-samples.mjs} +2 -2
  190. package/docs/prototypes/document.mjs +2 -0
  191. package/docs/prototypes/{v3-document.schema.json → document.schema.json} +1 -1
  192. package/docs/prototypes/{v3-document.test.mjs → document.test.mjs} +7 -7
  193. package/docs/prototypes/{v3-dryroom-mesh.mjs → dryroom-mesh.mjs} +1 -1
  194. package/docs/prototypes/{v3-dryroom-mesh.test.mjs → dryroom-mesh.test.mjs} +1 -1
  195. package/docs/prototypes/{v3-editor-browser.mjs → editor-browser.mjs} +13 -13
  196. package/docs/prototypes/editor-workspace.mjs +1 -0
  197. package/docs/prototypes/{v3-editor-workspace.test.mjs → editor-workspace.test.mjs} +3 -3
  198. package/docs/prototypes/{v3-feature-pattern.test.mjs → feature-pattern.test.mjs} +1 -1
  199. package/docs/prototypes/{v3-full-conveyor.mjs → full-conveyor.mjs} +2 -2
  200. package/docs/prototypes/{v3-full-conveyor.test.mjs → full-conveyor.test.mjs} +3 -3
  201. package/docs/prototypes/{v3-full-dryroom.mjs → full-dryroom.mjs} +2 -2
  202. package/docs/prototypes/{v3-full-dryroom.test.mjs → full-dryroom.test.mjs} +3 -3
  203. package/docs/prototypes/{v3-full-forklift.mjs → full-forklift.mjs} +2 -2
  204. package/docs/prototypes/{v3-full-forklift.test.mjs → full-forklift.test.mjs} +3 -3
  205. package/docs/prototypes/{v3-full-robot.mjs → full-robot.mjs} +2 -2
  206. package/docs/prototypes/{v3-full-robot.test.mjs → full-robot.test.mjs} +4 -4
  207. package/docs/prototypes/{v3-kernel.test.mjs → kernel.test.mjs} +1 -1
  208. package/docs/prototypes/{v3-layout.test.mjs → layout.test.mjs} +1 -1
  209. package/docs/prototypes/{v3-more-samples.test.mjs → more-samples.test.mjs} +2 -2
  210. package/docs/prototypes/{v3-payload-collision.mjs → payload-collision.mjs} +2 -2
  211. package/docs/prototypes/{v3-payload-collision.test.mjs → payload-collision.test.mjs} +3 -3
  212. package/docs/prototypes/{v3-payload-fit.mjs → payload-fit.mjs} +2 -2
  213. package/docs/prototypes/{v3-payload-fit.test.mjs → payload-fit.test.mjs} +4 -4
  214. package/docs/prototypes/render-full-dryroom.mjs +12 -12
  215. package/docs/prototypes/{v3-repeated-binding.mjs → repeated-binding.mjs} +1 -1
  216. package/docs/prototypes/{v3-repeated-binding.test.mjs → repeated-binding.test.mjs} +6 -6
  217. package/docs/prototypes/{v3-runtime-browser.mjs → runtime-browser.mjs} +26 -26
  218. package/docs/prototypes/{v3-samples.test.mjs → samples.test.mjs} +1 -1
  219. package/docs/prototypes/{v3-spatial-plan.test.mjs → spatial-plan.test.mjs} +1 -1
  220. package/docs/prototypes/typed-plan.mjs +3 -0
  221. package/docs/prototypes/{v3-typed-plan.test.mjs → typed-plan.test.mjs} +1 -1
  222. package/docs/prototypes/{v3-typed-repeat.test.mjs → typed-repeat.test.mjs} +2 -2
  223. package/docs/{v3-repeated-binding-validation.md → repeated-binding-validation.md} +4 -4
  224. package/docs/{v3-research-review.md → research-review.md} +2 -2
  225. package/docs/{v3-review-2026-09-22.md → review-2026-09-22.md} +10 -10
  226. package/docs/{v3-runtime-extraction.md → runtime-extraction.md} +16 -16
  227. package/docs/{v3-sample-validation-expanded.md → sample-validation-expanded.md} +5 -5
  228. package/docs/{v3-sample-validation.md → sample-validation.md} +3 -3
  229. package/docs/{v3-shape-dimension-contract.md → shape-dimension-contract.md} +12 -12
  230. package/docs/{v3-shapeassembly-reproduction.md → shapeassembly-reproduction.md} +4 -4
  231. package/docs/{v3-spatial-contracts.md → spatial-contracts.md} +5 -5
  232. package/docs/status.md +12 -0
  233. package/docs/{v3-storage-integration.md → storage-integration.md} +5 -5
  234. package/docs/{v3-typed-repeat-contracts.md → typed-repeat-contracts.md} +3 -3
  235. package/package.json +3 -3
  236. package/dist/v3-asset-types.d.ts.map +0 -1
  237. package/dist/v3-asset-types.js +0 -2
  238. package/dist/v3-asset-types.js.map +0 -1
  239. package/dist/v3-asset.d.ts +0 -8
  240. package/dist/v3-asset.d.ts.map +0 -1
  241. package/dist/v3-asset.js.map +0 -1
  242. package/dist/v3-authoring-actions.d.ts.map +0 -1
  243. package/dist/v3-authoring-actions.js.map +0 -1
  244. package/dist/v3-authoring-session.d.ts.map +0 -1
  245. package/dist/v3-authoring-session.js.map +0 -1
  246. package/dist/v3-capabilities.d.ts +0 -3
  247. package/dist/v3-capabilities.d.ts.map +0 -1
  248. package/dist/v3-capabilities.js.map +0 -1
  249. package/dist/v3-contract.d.ts +0 -7
  250. package/dist/v3-contract.d.ts.map +0 -1
  251. package/dist/v3-contract.js +0 -12
  252. package/dist/v3-contract.js.map +0 -1
  253. package/dist/v3-cost.d.ts.map +0 -1
  254. package/dist/v3-cost.js.map +0 -1
  255. package/dist/v3-create.js.map +0 -1
  256. package/dist/v3-document.d.ts +0 -5
  257. package/dist/v3-document.d.ts.map +0 -1
  258. package/dist/v3-document.js +0 -31
  259. package/dist/v3-document.js.map +0 -1
  260. package/dist/v3-driver.d.ts.map +0 -1
  261. package/dist/v3-driver.js.map +0 -1
  262. package/dist/v3-editor-workspace.d.ts.map +0 -1
  263. package/dist/v3-editor-workspace.js.map +0 -1
  264. package/dist/v3-examples.d.ts.map +0 -1
  265. package/dist/v3-examples.js.map +0 -1
  266. package/dist/v3-follow.d.ts.map +0 -1
  267. package/dist/v3-follow.js.map +0 -1
  268. package/dist/v3-gate.d.ts.map +0 -1
  269. package/dist/v3-gate.js.map +0 -1
  270. package/dist/v3-graph-types.d.ts.map +0 -1
  271. package/dist/v3-graph-types.js +0 -2
  272. package/dist/v3-graph-types.js.map +0 -1
  273. package/dist/v3-graph.d.ts.map +0 -1
  274. package/dist/v3-graph.js.map +0 -1
  275. package/dist/v3-instance-size.d.ts.map +0 -1
  276. package/dist/v3-instance-size.js.map +0 -1
  277. package/dist/v3-json.d.ts +0 -12
  278. package/dist/v3-json.d.ts.map +0 -1
  279. package/dist/v3-json.js.map +0 -1
  280. package/dist/v3-kernel-version.d.ts +0 -8
  281. package/dist/v3-kernel-version.d.ts.map +0 -1
  282. package/dist/v3-kernel-version.js.map +0 -1
  283. package/dist/v3-part-edit.d.ts.map +0 -1
  284. package/dist/v3-part-edit.js.map +0 -1
  285. package/dist/v3-proposal.d.ts +0 -42
  286. package/dist/v3-proposal.d.ts.map +0 -1
  287. package/dist/v3-proposal.js.map +0 -1
  288. package/dist/v3-public-inputs.d.ts.map +0 -1
  289. package/dist/v3-public-inputs.js.map +0 -1
  290. package/dist/v3-recipe-build.d.ts +0 -27
  291. package/dist/v3-recipe-build.d.ts.map +0 -1
  292. package/dist/v3-recipe-build.js.map +0 -1
  293. package/dist/v3-recipe-from-parts.d.ts +0 -8
  294. package/dist/v3-recipe-from-parts.d.ts.map +0 -1
  295. package/dist/v3-recipe-from-parts.js.map +0 -1
  296. package/dist/v3-recipe.d.ts.map +0 -1
  297. package/dist/v3-recipe.js.map +0 -1
  298. package/dist/v3-release-contract.d.ts +0 -19
  299. package/dist/v3-release-contract.d.ts.map +0 -1
  300. package/dist/v3-release-contract.js.map +0 -1
  301. package/dist/v3-render-batches.d.ts.map +0 -1
  302. package/dist/v3-render-batches.js.map +0 -1
  303. package/dist/v3-score.d.ts.map +0 -1
  304. package/dist/v3-score.js.map +0 -1
  305. package/dist/v3-shape-sampling.d.ts.map +0 -1
  306. package/dist/v3-shape-sampling.js.map +0 -1
  307. package/dist/v3-surface.d.ts.map +0 -1
  308. package/dist/v3-surface.js.map +0 -1
  309. package/dist/v3-words.d.ts.map +0 -1
  310. package/dist/v3-words.js.map +0 -1
  311. package/docs/prototypes/v3-asset.mjs +0 -1
  312. package/docs/prototypes/v3-authoring-session.mjs +0 -1
  313. package/docs/prototypes/v3-capability-plan.mjs +0 -1
  314. package/docs/prototypes/v3-document.mjs +0 -2
  315. package/docs/prototypes/v3-editor-workspace.mjs +0 -1
  316. package/docs/prototypes/v3-typed-plan.mjs +0 -3
  317. package/docs/v3-status.md +0 -50
  318. /package/docs/prototypes/{v3-kernel.mjs → kernel.mjs} +0 -0
  319. /package/docs/prototypes/{v3-linear-comparison.py → linear-comparison.py} +0 -0
  320. /package/docs/prototypes/{v3-semantics.test.mjs → semantics.test.mjs} +0 -0
@@ -1,5 +1,5 @@
1
1
  /**
2
- * An AI proposal for a V3 figure: a list of the authoring commands a person gives in the modeller, applied in order.
2
+ * An AI proposal for a figure: a list of the authoring commands a person gives in the modeller, applied in order.
3
3
  *
4
4
  * The model does not write an asset. It writes the steps -- add a part, fasten it, let it follow a size, move it on a
5
5
  * joint -- and the kernel applies them exactly as it applies the modeller's buttons (r3 §3: the UI and the AI change
@@ -10,12 +10,14 @@
10
10
  * command types when this file compiles: a command the kernel gains and the grammar does not name is a type error,
11
11
  * not a prompt that quietly speaks an older language.
12
12
  */
13
- import { V3ContractError } from "./v3-contract.js";
14
- import { addV3Primitive } from "./v3-create.js";
15
- import { applyV3Authoring, proposeV3Occupancy, V3_FACES, V3_JOINT_TYPES } from "./v3-authoring-actions.js";
16
- import { editV3Part } from "./v3-part-edit.js";
17
- import { V3_PLACEMENTS } from "./v3-asset-types.js";
18
- import { AXES } from "./v3-words.js";
13
+ import { FigureClipsDroppedError } from "./clip-keeping.js";
14
+ import { upgradeFigurePlacement } from "./asset.js";
15
+ import { FigureContractError } from "./contract.js";
16
+ import { addFigurePrimitive } from "./create.js";
17
+ import { applyFigureAuthoring, proposeFigureOccupancy, FIGURE_FACES, FIGURE_JOINT_TYPES } from "./authoring-actions.js";
18
+ import { editFigurePart } from "./part-edit.js";
19
+ import { FIGURE_PLACEMENTS } from "./asset-types.js";
20
+ import { AXES } from "./words.js";
19
21
  /* The part edits, told apart from the authoring commands by kind -- one list, checked below to be the whole union. */
20
22
  const PART_EDIT_KINDS = [
21
23
  'set-material',
@@ -36,37 +38,41 @@ const PART_EDIT_KINDS = [
36
38
  * The steps in order, on a copy of the asset. The first one the kernel refuses stops the proposal, with the step's
37
39
  * place in the list and the kernel's code and sentence; nothing is kept from it.
38
40
  */
39
- export function applyV3Proposal(source, steps) {
41
+ export function applyFigureProposal(source, steps, consent) {
42
+ source = upgradeFigurePlacement(source);
40
43
  if (!Array.isArray(steps) || !steps.length)
41
- throw new V3ContractError('PROPOSAL_EMPTY', 'steps', 'a proposal is a list of one or more steps');
44
+ throw new FigureContractError('PROPOSAL_EMPTY', 'steps', 'a proposal is a list of one or more steps');
42
45
  let asset = structuredClone(source);
43
46
  steps.forEach((step, i) => {
44
47
  const at = `steps[${i}]`;
45
48
  try {
46
49
  if (!step || typeof step !== 'object' || typeof step.kind !== 'string')
47
- throw new V3ContractError('SCHEMA', at, 'a step is an object with a kind');
50
+ throw new FigureContractError('SCHEMA', at, 'a step is an object with a kind');
48
51
  if (step.kind === 'add-part') {
49
52
  const part = { position: { x: 0, y: 0, z: 0 }, ...step.part };
50
- asset = addV3Primitive(asset, part);
53
+ asset = addFigurePrimitive(asset, part);
51
54
  }
52
55
  else if (step.kind === 'fit-room') {
53
- asset = applyV3Authoring(asset, { kind: 'declare-occupancy', proposal: proposeV3Occupancy(asset), placement: step.placement });
56
+ asset = applyFigureAuthoring(asset, { kind: 'declare-occupancy', proposal: proposeFigureOccupancy(asset), placement: step.placement }, consent);
54
57
  }
55
58
  else if (PART_EDIT_KINDS.includes(step.kind)) {
56
- asset = editV3Part(asset, step);
59
+ asset = editFigurePart(asset, step, consent);
57
60
  }
58
61
  else {
59
- asset = applyV3Authoring(asset, step);
62
+ asset = applyFigureAuthoring(asset, step, consent);
60
63
  }
61
64
  }
62
65
  catch (e) {
66
+ /* The clips it would stop are asked about as they are, so the same consent can be given to the whole proposal. */
67
+ if (e instanceof FigureClipsDroppedError)
68
+ throw e;
63
69
  const error = e;
64
- throw new V3ContractError(error.code ?? 'SCHEMA', at, `${step?.kind ?? '?'}: ${String(error.message ?? e).replace(/^[A-Z_]+: /, '')}`);
70
+ throw new FigureContractError(error.code ?? 'SCHEMA', at, `${step?.kind ?? '?'}: ${String(error.message ?? e).replace(/^[A-Z_]+: /, '')}`);
65
71
  }
66
72
  });
67
73
  return asset;
68
74
  }
69
- const faces = Object.keys(V3_FACES).join(' | ');
75
+ const faces = Object.keys(FIGURE_FACES).join(' | ');
70
76
  const axes = AXES.join(' | ');
71
77
  const upper = AXES.map(a => a.toUpperCase()).join(' | ');
72
78
  const measure = `number (mm) | { from: { of: 'instance', axis: ${axes} } | { of: 'part', part, axis }, times?, plus? }`;
@@ -75,7 +81,7 @@ const alignment = `'centre' | 'min' | 'max' | { mm: ${measure} }`;
75
81
  * The words, in the order a figure is usually made. Each shape is the command's own, written short; the means say
76
82
  * the relation, not the graph. Kept complete against the kernel's command types (`_GrammarComplete` below).
77
83
  */
78
- export const V3_PROPOSAL_GRAMMAR = [
84
+ export const FIGURE_PROPOSAL_GRAMMAR = [
79
85
  {
80
86
  kind: 'add-part',
81
87
  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 } } }`,
@@ -88,7 +94,7 @@ export const V3_PROPOSAL_GRAMMAR = [
88
94
  },
89
95
  {
90
96
  kind: 'set-joint',
91
- shape: `{ kind: 'set-joint', joint: { id, type: ${V3_JOINT_TYPES.map(t => `'${t}'`).join(' | ')}, body0, body1, origin, axis?: ${upper}, lowerLimit?, upperLimit?, state?: { id, label? }, mimic?: { joint, multiplier, offset? }, travel?: { source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus? } }, narrowRange?: true }`,
97
+ shape: `{ kind: 'set-joint', joint: { id, type: ${FIGURE_JOINT_TYPES.map(t => `'${t}'`).join(' | ')}, body0, body1, origin, axis?: ${upper}, lowerLimit?, upperLimit?, state?: { id, label? }, mimic?: { joint, multiplier, offset? }, travel?: { source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus? } }, narrowRange?: true }`,
92
98
  means: 'The fastening record, made to move: a revolute turns about axis (limits in degrees, none = turns without end), a prismatic slides along it (limits in mm, or a travel that is a share of a length with a ratio control 0..1). mimic follows another joint. Take body0, body1 and origin from the fastening as it is.'
93
99
  },
94
100
  {
@@ -135,7 +141,8 @@ export const V3_PROPOSAL_GRAMMAR = [
135
141
  means: 'A place things are held: a seat things rest on, a grip things are held in, on a face of a part; it follows the part. accepts names the types it takes.'
136
142
  },
137
143
  { kind: 'remove-binding', shape: `{ kind: 'remove-binding', id }`, means: 'The place goes.' },
138
- { kind: 'fit-room', shape: `{ kind: 'fit-room', placement: ${V3_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.' },
144
+ { 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.' },
145
+ { 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.' },
139
146
  { kind: 'set-mounting-face', shape: `{ kind: 'set-mounting-face', part, face: ${faces} }`, means: 'The face that lies on the mounting plane (after the room is declared).' },
140
147
  { kind: 'clear-mounting-face', shape: `{ kind: 'clear-mounting-face' }`, means: 'No face is named as lying on the mounting plane.' },
141
148
  { kind: 'set-detail-level', shape: `{ kind: 'set-detail-level', level: 'S' | 'M' | 'L' | null }`, means: 'How much detail the figure is authored to, and so its part limit.' },
@@ -154,8 +161,9 @@ export const V3_PROPOSAL_GRAMMAR = [
154
161
  { kind: 'remove-driver', shape: `{ kind: 'remove-driver', state }`, means: 'The control is not played any more.' },
155
162
  { kind: 'set-clip', shape: `{ kind: 'set-clip', clip, name?, duration? }`, means: 'A clip renamed, or its length changed.' }
156
163
  ];
157
- export const V3_PROPOSAL_KINDS = [
164
+ export const FIGURE_PROPOSAL_KINDS = [
158
165
  'add-part',
166
+ 'set-placement',
159
167
  'attach',
160
168
  'set-joint',
161
169
  'declare-instance-size',
@@ -197,4 +205,4 @@ export const V3_PROPOSAL_KINDS = [
197
205
  'remove-driver',
198
206
  'set-clip'
199
207
  ];
200
- //# sourceMappingURL=v3-proposal.js.map
208
+ //# sourceMappingURL=proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.js","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,uBAAuB,EAA0B,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAgC,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,YAAY,EAAE,kBAAkB,EAA8B,MAAM,wBAAwB,CAAA;AACnJ,OAAO,EAAE,cAAc,EAAuB,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAA0C,MAAM,kBAAkB,CAAA;AAC5F,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAcjC,sHAAsH;AACtH,MAAM,eAAe,GAAG;IACtB,cAAc;IACd,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,UAAU;IACV,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,gBAAgB;CACoC,CAAA;AAItD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB,EAAE,KAAoC,EAAE,OAA2B;IACxH,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,EAAE,2CAA2C,CAAC,CAAA;IACjJ,IAAI,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAA;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAA2B,CAAC,IAAI,KAAK,QAAQ;gBAC5F,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,iCAAiC,CAAC,CAAA;YAChF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAA6B,CAAA;gBACxF,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACzC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACpC,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;YACjJ,CAAC;iBAAM,IAAK,eAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtE,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,IAAsB,EAAE,OAAO,CAAC,CAAA;YAChE,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAA6B,EAAE,OAAO,CAAC,CAAA;YAC7E,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kHAAkH;YAClH,IAAI,CAAC,YAAY,uBAAuB;gBAAE,MAAM,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,CAAwC,CAAA;YACtD,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QAC5I,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC;AASD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACxD,MAAM,OAAO,GAAG,iDAAiD,IAAI,kDAAkD,CAAA;AACvH,MAAM,SAAS,GAAG,oCAAoC,OAAO,IAAI,CAAA;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAkC;IACpE;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,+hBAA+hB;QACtiB,KAAK,EAAE,yIAAyI;KACjJ;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,iCAAiC,KAAK,gEAAgE,KAAK,wCAAwC,OAAO,eAAe,IAAI,MAAM,SAAS,uCAAuC;QAC1O,KAAK,EACH,ugBAAugB;KAC1gB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,2CAA2C,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kCAAkC,KAAK,+MAA+M;QACzV,KAAK,EACH,sTAAsT;KACzT;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,sIAAsI;QAC7I,KAAK,EAAE,mKAAmK;KAC3K;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,yCAAyC,IAAI,sHAAsH;QAC1K,KAAK,EAAE,wLAAwL;KAChM;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,wCAAwC,IAAI,OAAO;QAC1D,KAAK,EAAE,mKAAmK;KAC3K;IACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,+CAA+C,EAAE;IAC3I,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,8EAA8E,EAAE;IACxJ,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,uCAAuC,EAAE,KAAK,EAAE,gGAAgG,EAAE;IAC9L,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,wCAAwC,EAAE,KAAK,EAAE,qEAAqE,EAAE;IACzJ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,sCAAsC,EAAE,KAAK,EAAE,0DAA0D,EAAE;IAC1I,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iGAAiG,EAAE,KAAK,EAAE,uEAAuE,EAAE;IAChN,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,0DAA0D,EAAE;IACxH,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,4DAA4D,EAAE;IACvI;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,sCAAsC,IAAI,qDAAqD,IAAI,8BAA8B;QACxI,KAAK,EAAE,yZAAyZ;KACja;IACD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,4EAA4E,EAAE,KAAK,EAAE,2FAA2F,EAAE;IAC/M;QACE,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,2FAA2F;QAClG,KAAK,EAAE,uHAAuH;KAC/H;IACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,wFAAwF,EAAE;IACnL,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,0IAA0I,EAAE;IACrO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,2CAA2C,EAAE;IAC5H,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,gCAAgC,EAAE;IAC5G;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,wEAAwE,KAAK,uEAAuE;QAC3J,KAAK,EAAE,wJAAwJ;KAChK;IACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC7F,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,uCAAuC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,0JAA0J,EAAE;IAChS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kCAAkC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,qIAAqI,EAAE;IACjQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,4CAA4C,KAAK,IAAI,EAAE,KAAK,EAAE,wEAAwE,EAAE;IAC5K,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,kDAAkD,EAAE;IACpI,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,6DAA6D,EAAE,KAAK,EAAE,mEAAmE,EAAE;IAC9K,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,2CAA2C,EAAE;IACzG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,6DAA6D,EAAE,KAAK,EAAE,qCAAqC,EAAE;IAC5I,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,yCAAyC,EAAE;IACrI,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,4DAA4D,EAAE;IAClJ,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,iGAAiG,EAAE,KAAK,EAAE,yHAAyH,EAAE;IACtQ,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,kFAAkF,EAAE;IACpL,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,yEAAyE,EAAE;IAC/J,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,2CAA2C,EAAE;IAC3H,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,+CAA+C,EAAE,KAAK,EAAE,mEAAmE,EAAE;IAChK,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,wEAAwE,EAAE,KAAK,EAAE,iGAAiG,EAAE;IACtN,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,+DAA+D,EAAE,KAAK,EAAE,gCAAgC,EAAE;IAC/I,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,qJAAqJ,EAAE,KAAK,EAAE,uCAAuC,EAAE;IACpO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,kCAAkC,EAAE,KAAK,EAAE,qCAAqC,EAAE;IAClH,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,wCAAwC,EAAE;CAC7H,CAAA;AASD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU;IACV,eAAe;IACf,QAAQ;IACR,WAAW;IACX,uBAAuB;IACvB,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,iBAAiB;IACjB,2BAA2B;IAC3B,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,cAAc;IACd,aAAa;IACb,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,UAAU;IACV,mBAAmB;IACnB,qBAAqB;IACrB,kBAAkB;IAClB,QAAQ;IACR,cAAc;IACd,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,UAAU;CACF,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { V3Asset } from './v3-asset-types.ts';
1
+ import type { FigureAsset } from './asset-types.ts';
2
2
  /**
3
3
  * Why a board may not be given this input to set, or null when it may: it must be a design input of the model, not the
4
4
  * size (a board sets that from the instance's bounds), with a range to hold a board's value to (ADR-0096). One rule for
@@ -21,7 +21,7 @@ export declare function checkPublicInput(inputs: ReadonlyArray<{
21
21
  role?: string;
22
22
  }>, id: string, path: string): void;
23
23
  /** The list after a part was renamed: an input the part owned (`<part>.…`) is followed to its new name. */
24
- export declare function renamePublicInputs(asset: V3Asset, from: string, to: string): void;
24
+ export declare function renamePublicInputs(asset: FigureAsset, from: string, to: string): void;
25
25
  /** The list without entries whose input is no longer a design input of the model. */
26
- export declare function keepPublicInputs(asset: V3Asset): void;
27
- //# sourceMappingURL=v3-public-inputs.d.ts.map
26
+ export declare function keepPublicInputs(asset: FigureAsset): void;
27
+ //# sourceMappingURL=public-inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-inputs.d.ts","sourceRoot":"","sources":["../src/public-inputs.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASvK;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAG/I;AAED,2GAA2G;AAC3G,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrF;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAKzD"}
@@ -6,7 +6,7 @@
6
6
  * renamed with them, and an entry whose input is gone dropped with it, as the joint records are kept with their parts
7
7
  * (chief architect's condition, 2026-09-26).
8
8
  */
9
- import { V3ContractError } from "./v3-contract.js";
9
+ import { FigureContractError } from "./contract.js";
10
10
  /**
11
11
  * Why a board may not be given this input to set, or null when it may: it must be a design input of the model, not the
12
12
  * size (a board sets that from the instance's bounds), with a range to hold a board's value to (ADR-0096). One rule for
@@ -30,7 +30,7 @@ export function publicInputRefusal(inputs, id) {
30
30
  export function checkPublicInput(inputs, id, path) {
31
31
  const refusal = publicInputRefusal(inputs, id);
32
32
  if (refusal)
33
- throw new V3ContractError(refusal.code, path, refusal.message);
33
+ throw new FigureContractError(refusal.code, path, refusal.message);
34
34
  }
35
35
  /** The list after a part was renamed: an input the part owned (`<part>.…`) is followed to its new name. */
36
36
  export function renamePublicInputs(asset, from, to) {
@@ -48,4 +48,4 @@ export function keepPublicInputs(asset) {
48
48
  if (!asset.publicInputs.length)
49
49
  delete asset.publicInputs;
50
50
  }
51
- //# sourceMappingURL=v3-public-inputs.js.map
51
+ //# sourceMappingURL=public-inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-inputs.js","sourceRoot":"","sources":["../src/public-inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type FigureRecipe, type FigureRecipeParam, type FigureRecipeValue } from './recipe.ts';
2
+ import type { FigureAsset } from './asset-types.ts';
3
+ /** Where a numeric parameter lands: the steps that match `step` (every key given, equal), at `path` (dot separated). */
4
+ export interface FigureRecipeBinding {
5
+ step: Record<string, unknown>;
6
+ path: string;
7
+ }
8
+ export interface FigureRecipeSpec {
9
+ name: string;
10
+ title: Record<string, string>;
11
+ description?: Record<string, string>;
12
+ category?: string;
13
+ tags?: string[];
14
+ params: Array<FigureRecipeParam & {
15
+ bind?: FigureRecipeBinding[];
16
+ }>;
17
+ }
18
+ export interface FigureRecipeModel {
19
+ /** The choices this model shows: a value for every choice and flag parameter. */
20
+ values: Record<string, FigureRecipeValue>;
21
+ asset: FigureAsset;
22
+ }
23
+ export declare function buildFigureRecipe(spec: FigureRecipeSpec, models: readonly FigureRecipeModel[], host?: string): FigureRecipe & {
24
+ category?: string;
25
+ tags?: string[];
26
+ };
27
+ //# sourceMappingURL=recipe-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-build.d.ts","sourceRoot":"","sources":["../src/recipe-build.ts"],"names":[],"mappings":"AAaA,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAClH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,wHAAwH;AACxH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG;QAAE,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC,CAAA;CACpE;AAED,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACzC,KAAK,EAAE,WAAW,CAAA;CACnB;AAaD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,iBAAiB,EAAE,EAAE,IAAI,SAAS,GAAG,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAuFpK"}
@@ -3,24 +3,24 @@
3
3
  *
4
4
  * A template is authored as figures -- a `host` box and the template's parts fastened to it -- one figure for each
5
5
  * combination of its choices (one leaf or two, a lamp or none). Each model is written as a command list
6
- * (`v3RecipeFromParts`, the host becoming `{target}`), and the lists are merged into one recipe: a command in every model
6
+ * (`figureRecipeFromParts`, the host becoming `{target}`), and the lists are merged into one recipe: a command in every model
7
7
  * stays as it is; a command in some is kept with the one `when` that says which. The numbers a person sets are then
8
8
  * bound: the spec names the command and the value, and the value becomes `{ param, times }` against its default.
9
9
  *
10
10
  * So what the recipe does is exactly what the models did -- the build refuses a model set it cannot say that way.
11
11
  */
12
- import { V3ContractError } from "./v3-contract.js";
13
- import { v3RecipeFromParts } from "./v3-recipe-from-parts.js";
14
- import { parseV3Recipe } from "./v3-recipe.js";
12
+ import { FigureContractError } from "./contract.js";
13
+ import { figureRecipeFromParts } from "./recipe-from-parts.js";
14
+ import { parseFigureRecipe } from "./recipe.js";
15
15
  const fail = (path, message) => {
16
- throw new V3ContractError('RECIPE_BUILD', path, message);
16
+ throw new FigureContractError('RECIPE_BUILD', path, message);
17
17
  };
18
18
  const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
19
19
  /** Whether a value carries every key the pattern gives, all the way down; anything else equal. */
20
20
  const matches = (value, pattern) => pattern && typeof pattern === 'object' && !Array.isArray(pattern)
21
21
  ? !!value && typeof value === 'object' && Object.entries(pattern).every(([k, v]) => matches(value[k], v))
22
22
  : same(value, pattern);
23
- export function buildV3Recipe(spec, models, host = 'host') {
23
+ export function buildFigureRecipe(spec, models, host = 'host') {
24
24
  if (!models.length)
25
25
  fail('models', 'one model or more');
26
26
  const choosers = spec.params.filter(p => p.kind === 'choice' || p.kind === 'flag');
@@ -45,7 +45,7 @@ export function buildV3Recipe(spec, models, host = 'host') {
45
45
  if (!m.asset.appearance.some(a => a.target === host))
46
46
  fail(`models.${key(values)}`, `the model has no ${host} part to stand for the part it is put onto`);
47
47
  const parts = m.asset.appearance.map(a => a.target).filter(t => t !== host);
48
- const recipe = v3RecipeFromParts(m.asset, parts, { name: spec.name, title: spec.title });
48
+ const recipe = figureRecipeFromParts(m.asset, parts, { name: spec.name, title: spec.title });
49
49
  if (recipe.target !== 'part')
50
50
  fail(`models.${key(values)}`, `the template's parts are not fastened to ${host}`);
51
51
  return { values, steps: recipe.steps };
@@ -119,7 +119,7 @@ export function buildV3Recipe(spec, models, host = 'host') {
119
119
  params,
120
120
  steps
121
121
  };
122
- parseV3Recipe(recipe);
122
+ parseFigureRecipe(recipe);
123
123
  return recipe;
124
124
  }
125
- //# sourceMappingURL=v3-recipe-build.js.map
125
+ //# sourceMappingURL=recipe-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-build.js","sourceRoot":"","sources":["../src/recipe-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { FigureAsset } from './asset-types.ts';
2
+ import type { FigureRecipe } from './recipe.ts';
3
+ export declare function figureRecipeFromParts(asset: FigureAsset, parts: readonly string[], meta: {
4
+ name: string;
5
+ title: Record<string, string>;
6
+ description?: Record<string, string>;
7
+ }): FigureRecipe;
8
+ //# sourceMappingURL=recipe-from-parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-from-parts.d.ts","sourceRoot":"","sources":["../src/recipe-from-parts.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AA0C/C,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC1F,YAAY,CA4Gd"}
@@ -3,16 +3,16 @@
3
3
  * them as a recipe -- no command list typed by hand.
4
4
  *
5
5
  * What is written is what the kernel already holds as canon: each part's shape at its measures now, its fastening and
6
- * motion as the joint record says (ADR-0093), each measure that follows something as the link it is (`v3FollowOf`), its
6
+ * motion as the joint record says (ADR-0093), each measure that follows something as the link it is (`figureFollowOf`), its
7
7
  * material and when it is shown. Names are the recipe's own: a chosen part becomes `{id}-<its name>`, the one part they
8
8
  * hang from outside the choice becomes `{target}`, and a control of theirs `{id}-<its name>`. The common beginning of
9
9
  * the chosen names (`sliding-door-1-`) is left off, so a recipe made of a recipe's parts does not stack names.
10
10
  *
11
11
  * It has no parameters: which numbers are left open is the person's to say afterwards, in the source.
12
12
  */
13
- import { V3ContractError } from "./v3-contract.js";
14
- import { compileV3Graph } from "./v3-graph.js";
15
- import { v3FollowOf } from "./v3-follow.js";
13
+ import { FigureContractError } from "./contract.js";
14
+ import { compileFigureGraph } from "./graph.js";
15
+ import { figureFollowOf } from "./follow.js";
16
16
  const AXES = ['x', 'y', 'z'];
17
17
  /**
18
18
  * A shape the recipe can make again: its create kind, its measures in order, and the axes they lie along. `linked` is
@@ -30,7 +30,7 @@ const SHAPES = {
30
30
  'frustum-shape@1': { kind: 'frustum', keys: ['radiusTop', 'radiusBottom', 'height'], along: [], linked: ['x', 'y', 'z'] }
31
31
  };
32
32
  const fail = (path, message) => {
33
- throw new V3ContractError('RECIPE_FROM_PARTS', path, message);
33
+ throw new FigureContractError('RECIPE_FROM_PARTS', path, message);
34
34
  };
35
35
  /** The keys whose value is a name: a part's, a joint's, a control's. A face or an axis is a word, never renamed. */
36
36
  const NAMED = new Set(['part', 'id', 'joint', 'input']);
@@ -50,7 +50,7 @@ function renamed(value, names) {
50
50
  };
51
51
  return walk(value);
52
52
  }
53
- export function v3RecipeFromParts(asset, parts, meta) {
53
+ export function figureRecipeFromParts(asset, parts, meta) {
54
54
  const chosen = new Set(parts);
55
55
  if (!chosen.size)
56
56
  fail('parts', 'choose the parts to keep as a recipe');
@@ -74,7 +74,7 @@ export function v3RecipeFromParts(asset, parts, meta) {
74
74
  fail('parts', `the parts hang from ${[...outside].join(' and ')}; a recipe is put onto one part -- choose parts that hang from one`);
75
75
  const target = [...outside][0];
76
76
  /* A chosen part's measure following a part outside the choice other than the target has nothing to follow when put in. */
77
- const values = compileV3Graph(asset.document.model).evaluate({ ...asset.designInputs, ...asset.stateDefaults }).values;
77
+ const values = compileFigureGraph(asset.document.model).evaluate({ ...asset.designInputs, ...asset.stateDefaults }).values;
78
78
  /* The names: the chosen parts' common beginning left off. */
79
79
  const list = [...chosen];
80
80
  let common = list.length > 1 ? list.reduce((a, b) => {
@@ -126,7 +126,7 @@ export function v3RecipeFromParts(asset, parts, meta) {
126
126
  for (const p of order) {
127
127
  const shape = model.nodes.find(n => n.id === `${p}.shape`);
128
128
  for (const axis of SHAPES[shape.op].linked ?? SHAPES[shape.op].along) {
129
- const f = v3FollowOf(asset, p, axis);
129
+ const f = figureFollowOf(asset, p, axis);
130
130
  if (f.of === 'own' || f.of === 'expression' || f.of === 'input')
131
131
  continue;
132
132
  const scale = { ...(f.times !== undefined && f.times !== 1 ? { times: f.times } : {}), ...(f.plus ? { plus: f.plus } : {}) };
@@ -180,4 +180,4 @@ export function v3RecipeFromParts(asset, parts, meta) {
180
180
  steps
181
181
  };
182
182
  }
183
- //# sourceMappingURL=v3-recipe-from-parts.js.map
183
+ //# sourceMappingURL=recipe-from-parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-from-parts.js","sourceRoot":"","sources":["../src/recipe-from-parts.ts"],"names":[],"mappings":"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"}
@@ -1,66 +1,66 @@
1
- import { type V3ProposalStep } from './v3-proposal.ts';
2
- import type { V3Asset } from './v3-asset-types.ts';
3
- export type V3RecipeParamKind = 'face' | 'ratio' | 'mm' | 'choice' | 'flag';
4
- export type V3RecipeValue = number | string | boolean;
5
- export interface V3RecipeParam {
1
+ import { type FigureProposalStep } from './proposal.ts';
2
+ import type { FigureAsset } from './asset-types.ts';
3
+ export type FigureRecipeParamKind = 'face' | 'ratio' | 'mm' | 'choice' | 'flag';
4
+ export type FigureRecipeValue = number | string | boolean;
5
+ export interface FigureRecipeParam {
6
6
  name: string;
7
- kind: V3RecipeParamKind;
8
- default: V3RecipeValue;
7
+ kind: FigureRecipeParamKind;
8
+ default: FigureRecipeValue;
9
9
  /** `ratio` and `mm`: the values it takes. */
10
10
  min?: number;
11
11
  max?: number;
12
12
  /** `face` and `choice`: the values it takes. */
13
- options?: V3RecipeValue[];
13
+ options?: FigureRecipeValue[];
14
14
  label?: Record<string, string>;
15
15
  /** What the value does, in a few words per language: shown beside the field and in the catalog. */
16
16
  hint?: Record<string, string>;
17
17
  }
18
- export interface V3Recipe {
18
+ export interface FigureRecipe {
19
19
  name: string;
20
20
  title: Record<string, string>;
21
21
  description?: Record<string, string>;
22
22
  /** `part`: inserted onto a part the person has chosen (`{target}`); `figure`: onto the figure as a whole. */
23
23
  target: 'part' | 'figure';
24
- params: V3RecipeParam[];
24
+ params: FigureRecipeParam[];
25
25
  /** Proposal steps, each with an optional `when`. */
26
26
  steps: Array<Record<string, unknown>>;
27
27
  }
28
28
  /** A recipe as stored, checked for its own form: its parameters, its steps' `when`, its placeholders' names. */
29
- export declare function parseV3Recipe(value: unknown): V3Recipe;
29
+ export declare function parseFigureRecipe(value: unknown): FigureRecipe;
30
30
  /** Whether a step's `when` holds for these values: its one value (`is`), or any of several (`in`). */
31
- export declare function holdsV3When(when: unknown, values: Record<string, V3RecipeValue>): boolean;
31
+ export declare function holdsFigureWhen(when: unknown, values: Record<string, FigureRecipeValue>): boolean;
32
32
  /** The name a recipe's parts take in this figure: the recipe's name and the first number no part or input uses. */
33
- export declare function v3RecipeIdFor(asset: V3Asset, recipe: Pick<V3Recipe, 'name'>): string;
33
+ export declare function figureRecipeIdFor(asset: FigureAsset, recipe: Pick<FigureRecipe, 'name'>): string;
34
34
  /**
35
35
  * The proposal a recipe makes with these values: the defaults filled in, the values checked (ADR-0095 condition 3),
36
36
  * the steps whose `when` does not hold left out, and the placeholders and linear forms resolved. A string that is only
37
37
  * `{<param>}` takes the value itself (a number stays a number); inside a longer string it is written in.
38
38
  */
39
- export declare function resolveV3Recipe(recipe: V3Recipe, use: {
39
+ export declare function resolveFigureRecipe(recipe: FigureRecipe, use: {
40
40
  id: string;
41
41
  target?: string;
42
- values?: Record<string, V3RecipeValue>;
43
- }): V3ProposalStep[];
42
+ values?: Record<string, FigureRecipeValue>;
43
+ }): FigureProposalStep[];
44
44
  /** A recipe put into a figure: resolved, then applied as one proposal (ADR-0094). The parts it made are named `id`. */
45
- export declare function applyV3Recipe(asset: V3Asset, recipe: V3Recipe, use?: {
45
+ export declare function applyFigureRecipe(asset: FigureAsset, recipe: FigureRecipe, use?: {
46
46
  target?: string;
47
- values?: Record<string, V3RecipeValue>;
47
+ values?: Record<string, FigureRecipeValue>;
48
48
  }): {
49
- asset: V3Asset;
49
+ asset: FigureAsset;
50
50
  id: string;
51
51
  };
52
52
  /** The room a recipe is tried in when it is saved: a 4 x 3 x 6 m box on the floor that follows the figure's size. */
53
- export declare function v3RecipeTestRoom(): {
54
- asset: V3Asset;
53
+ export declare function figureRecipeTestRoom(): {
54
+ asset: FigureAsset;
55
55
  target: string;
56
56
  };
57
57
  /**
58
58
  * A recipe's test (ADR-0095): parsed, put into the test room with its defaults, and the result, with its room declared,
59
59
  * passing the release gate. Throws the kernel's refusal, or `RECIPE_GATE` with the gate's findings.
60
60
  */
61
- export declare function checkV3Recipe(value: unknown): V3Recipe;
61
+ export declare function checkFigureRecipe(value: unknown): FigureRecipe;
62
62
  /** What a recipe adds, worked out from its steps: for a catalog, so what it says is what the recipe does. */
63
- export interface V3RecipeDescription {
63
+ export interface FigureRecipeDescription {
64
64
  /** How many parts it adds: fewest and most over its choices. */
65
65
  parts: {
66
66
  min: number;
@@ -79,5 +79,5 @@ export interface V3RecipeDescription {
79
79
  /** The parts laid as a row of copies. */
80
80
  rows: string[];
81
81
  }
82
- export declare function describeV3Recipe(recipe: V3Recipe): V3RecipeDescription;
83
- //# sourceMappingURL=v3-recipe.d.ts.map
82
+ export declare function describeFigureRecipe(recipe: FigureRecipe): FigureRecipeDescription;
83
+ //# sourceMappingURL=recipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../src/recipe.ts"],"names":[],"mappings":"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"}