@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,18 +1,27 @@
1
- import type { V3EditRequest, V3EditControl } from './v3-authoring-session.ts';
2
- import type { V3BoxCreation, V3PrimitiveCreation } from './v3-create.ts';
3
- import { type V3ProposalStep } from './v3-proposal.ts';
4
- import type { V3AuthoringAction } from './v3-authoring-actions.ts';
5
- import type { V3PartEdit } from './v3-part-edit.ts';
6
- export interface V3WorkspaceExport {
1
+ import type { FigureEditRequest, FigureEditControl } from './authoring-session.ts';
2
+ import type { FigureBoxCreation, FigurePrimitiveCreation } from './create.ts';
3
+ import { type FigureProposalStep } from './proposal.ts';
4
+ import type { FigureAuthoringAction } from './authoring-actions.ts';
5
+ import type { FigurePartEdit } from './part-edit.ts';
6
+ import type { FigureAsset } from './asset-types.ts';
7
+ export interface FigureWorkspaceExport {
7
8
  context: string;
8
9
  revision: number;
9
10
  text: string;
10
11
  }
11
- export interface V3LeaveOptions {
12
+ export interface FigureLeaveOptions {
12
13
  discardDesignChanges?: boolean;
13
14
  }
15
+ /**
16
+ * `baseline`: the saved text the opened one is measured against, when they differ -- an unsaved draft reopened from the
17
+ * browser (ADR-0098): the draft is what is edited, the saved text is what "unsaved" is measured from, so the figure
18
+ * opens dirty. Left out, the text opened is its own baseline. The undo history is not brought back.
19
+ */
20
+ export interface FigureOpenOptions extends FigureLeaveOptions {
21
+ baseline?: string;
22
+ }
14
23
  /** One history for structural and input edits. No persistence or authentication is implied. */
15
- export declare function createV3EditorWorkspace(): {
24
+ export declare function createFigureEditorWorkspace(): {
16
25
  read: () => {
17
26
  context: null;
18
27
  name: null;
@@ -34,16 +43,16 @@ export declare function createV3EditorWorkspace(): {
34
43
  fields: {
35
44
  value: number;
36
45
  id: string;
37
- unit: import("./v3-graph-types.ts").V3Unit;
46
+ unit: import("./graph-types.ts").FigureUnit;
38
47
  min: number;
39
48
  max: number;
40
49
  role?: "design" | "state";
41
50
  }[];
42
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
43
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
51
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
52
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
44
53
  palette: Record<string, string>;
45
54
  };
46
- open(text: string, { discardDesignChanges }?: V3LeaveOptions): {
55
+ open(text: string, { discardDesignChanges, baseline }?: FigureOpenOptions): {
47
56
  context: null;
48
57
  name: null;
49
58
  fields: never[];
@@ -64,16 +73,16 @@ export declare function createV3EditorWorkspace(): {
64
73
  fields: {
65
74
  value: number;
66
75
  id: string;
67
- unit: import("./v3-graph-types.ts").V3Unit;
76
+ unit: import("./graph-types.ts").FigureUnit;
68
77
  min: number;
69
78
  max: number;
70
79
  role?: "design" | "state";
71
80
  }[];
72
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
73
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
81
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
82
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
74
83
  palette: Record<string, string>;
75
84
  };
76
- close({ discardDesignChanges }?: V3LeaveOptions): {
85
+ close({ discardDesignChanges }?: FigureLeaveOptions): {
77
86
  context: null;
78
87
  name: null;
79
88
  fields: never[];
@@ -94,21 +103,21 @@ export declare function createV3EditorWorkspace(): {
94
103
  fields: {
95
104
  value: number;
96
105
  id: string;
97
- unit: import("./v3-graph-types.ts").V3Unit;
106
+ unit: import("./graph-types.ts").FigureUnit;
98
107
  min: number;
99
108
  max: number;
100
109
  role?: "design" | "state";
101
110
  }[];
102
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
103
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
111
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
112
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
104
113
  palette: Record<string, string>;
105
114
  };
106
- preview({ context, ...q }: V3EditRequest & {
115
+ preview({ context, ...q }: FigureEditRequest & {
107
116
  context: string;
108
117
  }): {
109
118
  candidate: {
110
119
  inputs: Record<string, number>;
111
- evaluation: import("./v3-asset-types.ts").V3CapabilityEvaluation;
120
+ evaluation: import("./asset-types.ts").FigureCapabilityEvaluation;
112
121
  };
113
122
  baseRevision: number;
114
123
  origin: "ui" | "ai";
@@ -116,7 +125,7 @@ export declare function createV3EditorWorkspace(): {
116
125
  before: number | undefined;
117
126
  kind: "set-design" | "set-state";
118
127
  input: string;
119
- unit: import("./v3-graph-types.ts").V3Unit;
128
+ unit: import("./graph-types.ts").FigureUnit;
120
129
  value: number;
121
130
  }[];
122
131
  effects: {
@@ -134,7 +143,7 @@ export declare function createV3EditorWorkspace(): {
134
143
  safety: string;
135
144
  };
136
145
  };
137
- apply({ context, ...q }: V3EditRequest & {
146
+ apply({ context, ...q }: FigureEditRequest & {
138
147
  context: string;
139
148
  }): {
140
149
  context: null;
@@ -157,18 +166,18 @@ export declare function createV3EditorWorkspace(): {
157
166
  fields: {
158
167
  value: number;
159
168
  id: string;
160
- unit: import("./v3-graph-types.ts").V3Unit;
169
+ unit: import("./graph-types.ts").FigureUnit;
161
170
  min: number;
162
171
  max: number;
163
172
  role?: "design" | "state";
164
173
  }[];
165
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
166
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
174
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
175
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
167
176
  palette: Record<string, string>;
168
177
  };
169
- addBox({ context, box, ...q }: V3EditControl & {
178
+ addBox({ context, box, ...q }: FigureEditControl & {
170
179
  context: string;
171
- box: V3BoxCreation;
180
+ box: FigureBoxCreation;
172
181
  }): {
173
182
  context: null;
174
183
  name: null;
@@ -190,18 +199,18 @@ export declare function createV3EditorWorkspace(): {
190
199
  fields: {
191
200
  value: number;
192
201
  id: string;
193
- unit: import("./v3-graph-types.ts").V3Unit;
202
+ unit: import("./graph-types.ts").FigureUnit;
194
203
  min: number;
195
204
  max: number;
196
205
  role?: "design" | "state";
197
206
  }[];
198
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
199
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
207
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
208
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
200
209
  palette: Record<string, string>;
201
210
  };
202
- addPrimitive({ context, part, ...q }: V3EditControl & {
211
+ addPrimitive({ context, part, ...q }: FigureEditControl & {
203
212
  context: string;
204
- part: V3PrimitiveCreation;
213
+ part: FigurePrimitiveCreation;
205
214
  }): {
206
215
  context: null;
207
216
  name: null;
@@ -223,19 +232,19 @@ export declare function createV3EditorWorkspace(): {
223
232
  fields: {
224
233
  value: number;
225
234
  id: string;
226
- unit: import("./v3-graph-types.ts").V3Unit;
235
+ unit: import("./graph-types.ts").FigureUnit;
227
236
  min: number;
228
237
  max: number;
229
238
  role?: "design" | "state";
230
239
  }[];
231
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
232
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
240
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
241
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
233
242
  palette: Record<string, string>;
234
243
  };
235
244
  /** A part edit, one step of the history. Removing a part also says what else that changed (`removal`). */
236
- editPart({ context, edit, ...q }: V3EditControl & {
245
+ editPart({ context, edit, ...q }: FigureEditControl & {
237
246
  context: string;
238
- edit: V3PartEdit;
247
+ edit: FigurePartEdit;
239
248
  }): {
240
249
  context: null;
241
250
  name: null;
@@ -257,16 +266,16 @@ export declare function createV3EditorWorkspace(): {
257
266
  fields: {
258
267
  value: number;
259
268
  id: string;
260
- unit: import("./v3-graph-types.ts").V3Unit;
269
+ unit: import("./graph-types.ts").FigureUnit;
261
270
  min: number;
262
271
  max: number;
263
272
  role?: "design" | "state";
264
273
  }[];
265
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
266
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
274
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
275
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
267
276
  palette: Record<string, string>;
268
277
  } | {
269
- removal: import("./v3-authoring-actions.ts").RemovalNotice;
278
+ removal: import("./authoring-actions.ts").RemovalNotice;
270
279
  context: null;
271
280
  name: null;
272
281
  fields: never[];
@@ -278,7 +287,7 @@ export declare function createV3EditorWorkspace(): {
278
287
  canRedo?: undefined;
279
288
  palette?: undefined;
280
289
  } | {
281
- removal: import("./v3-authoring-actions.ts").RemovalNotice;
290
+ removal: import("./authoring-actions.ts").RemovalNotice;
282
291
  context: string;
283
292
  name: string;
284
293
  revision: number;
@@ -288,13 +297,13 @@ export declare function createV3EditorWorkspace(): {
288
297
  fields: {
289
298
  value: number;
290
299
  id: string;
291
- unit: import("./v3-graph-types.ts").V3Unit;
300
+ unit: import("./graph-types.ts").FigureUnit;
292
301
  min: number;
293
302
  max: number;
294
303
  role?: "design" | "state";
295
304
  }[];
296
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
297
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
305
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
306
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
298
307
  palette: Record<string, string>;
299
308
  };
300
309
  /**
@@ -304,11 +313,11 @@ export declare function createV3EditorWorkspace(): {
304
313
  * The command sees the values the author is looking at: the live inputs are captured into the asset
305
314
  * first, so "fasten this to that" reads the part where it stands now, not where it stood when the model
306
315
  * was opened. A refused command leaves history, revision and the asset as they were, the same as an
307
- * input edit that fails validation (`applyV3Authoring` clones and throws before anything is written).
316
+ * input edit that fails validation (`applyFigureAuthoring` clones and throws before anything is written).
308
317
  */
309
- command({ context, action, ...q }: V3EditControl & {
318
+ command({ context, action, ...q }: FigureEditControl & {
310
319
  context: string;
311
- action: V3AuthoringAction;
320
+ action: FigureAuthoringAction;
312
321
  }): {
313
322
  context: null;
314
323
  name: null;
@@ -330,22 +339,39 @@ export declare function createV3EditorWorkspace(): {
330
339
  fields: {
331
340
  value: number;
332
341
  id: string;
333
- unit: import("./v3-graph-types.ts").V3Unit;
342
+ unit: import("./graph-types.ts").FigureUnit;
334
343
  min: number;
335
344
  max: number;
336
345
  role?: "design" | "state";
337
346
  }[];
338
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
339
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
347
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
348
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
340
349
  palette: Record<string, string>;
341
350
  };
351
+ /**
352
+ * What a command would do, seen before it is done (ADR-0097 §5.5): the same command on a copy, with the values the
353
+ * author is looking at. No revision, no history, no clip, no consent is touched; the answer names the figure and
354
+ * version it was worked out on, so the caller drops it once either has moved on.
355
+ */
356
+ previewCommand({ context, action }: {
357
+ context: string;
358
+ action: FigureAuthoringAction;
359
+ }): {
360
+ asset: FigureAsset;
361
+ geometry: unknown[];
362
+ moves: import("./command-preview.ts").FigureBodyMove[];
363
+ added: string[];
364
+ clipsWouldGo: import("./clip-keeping.ts").FigureClipLoss[];
365
+ context: string;
366
+ revision: number;
367
+ };
342
368
  /**
343
369
  * An AI proposal -- the modeller's own commands in a list (ADR-0094) -- as one step of the history: accepted, it is
344
370
  * undone whole. Refused at any step, nothing of it is kept, as a refused command keeps nothing.
345
371
  */
346
- applyProposal({ context, steps, ...q }: V3EditControl & {
372
+ applyProposal({ context, steps, ...q }: FigureEditControl & {
347
373
  context: string;
348
- steps: readonly V3ProposalStep[];
374
+ steps: readonly FigureProposalStep[];
349
375
  }): {
350
376
  context: null;
351
377
  name: null;
@@ -367,16 +393,16 @@ export declare function createV3EditorWorkspace(): {
367
393
  fields: {
368
394
  value: number;
369
395
  id: string;
370
- unit: import("./v3-graph-types.ts").V3Unit;
396
+ unit: import("./graph-types.ts").FigureUnit;
371
397
  min: number;
372
398
  max: number;
373
399
  role?: "design" | "state";
374
400
  }[];
375
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
376
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
401
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
402
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
377
403
  palette: Record<string, string>;
378
404
  };
379
- undo({ context, ...q }: V3EditControl & {
405
+ undo({ context, ...q }: FigureEditControl & {
380
406
  context: string;
381
407
  }): {
382
408
  context: null;
@@ -399,16 +425,16 @@ export declare function createV3EditorWorkspace(): {
399
425
  fields: {
400
426
  value: number;
401
427
  id: string;
402
- unit: import("./v3-graph-types.ts").V3Unit;
428
+ unit: import("./graph-types.ts").FigureUnit;
403
429
  min: number;
404
430
  max: number;
405
431
  role?: "design" | "state";
406
432
  }[];
407
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
408
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
433
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
434
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
409
435
  palette: Record<string, string>;
410
436
  };
411
- redo({ context, ...q }: V3EditControl & {
437
+ redo({ context, ...q }: FigureEditControl & {
412
438
  context: string;
413
439
  }): {
414
440
  context: null;
@@ -431,20 +457,20 @@ export declare function createV3EditorWorkspace(): {
431
457
  fields: {
432
458
  value: number;
433
459
  id: string;
434
- unit: import("./v3-graph-types.ts").V3Unit;
460
+ unit: import("./graph-types.ts").FigureUnit;
435
461
  min: number;
436
462
  max: number;
437
463
  role?: "design" | "state";
438
464
  }[];
439
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
440
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
465
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
466
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
441
467
  palette: Record<string, string>;
442
468
  };
443
469
  export({ context, captureStateDefaults }: {
444
470
  context: string;
445
471
  captureStateDefaults?: boolean;
446
- }): V3WorkspaceExport;
447
- acknowledgeSaved({ context, revision, text }: V3WorkspaceExport): {
472
+ }): FigureWorkspaceExport;
473
+ acknowledgeSaved({ context, revision, text }: FigureWorkspaceExport): {
448
474
  context: null;
449
475
  name: null;
450
476
  fields: never[];
@@ -465,16 +491,16 @@ export declare function createV3EditorWorkspace(): {
465
491
  fields: {
466
492
  value: number;
467
493
  id: string;
468
- unit: import("./v3-graph-types.ts").V3Unit;
494
+ unit: import("./graph-types.ts").FigureUnit;
469
495
  min: number;
470
496
  max: number;
471
497
  role?: "design" | "state";
472
498
  }[];
473
- geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
474
- bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
499
+ geometry: import("./asset-types.ts").FigureAssetGeometry[];
500
+ bindings: import("./asset-types.ts").FigureEvaluatedBinding[];
475
501
  palette: Record<string, string>;
476
502
  };
477
503
  };
478
- export type V3EditorWorkspace = ReturnType<typeof createV3EditorWorkspace>;
479
- export type V3WorkspaceView = ReturnType<V3EditorWorkspace['read']>;
480
- //# sourceMappingURL=v3-editor-workspace.d.ts.map
504
+ export type FigureEditorWorkspace = ReturnType<typeof createFigureEditorWorkspace>;
505
+ export type FigureWorkspaceView = ReturnType<FigureEditorWorkspace['read']>;
506
+ //# sourceMappingURL=editor-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-workspace.d.ts","sourceRoot":"","sources":["../src/editor-workspace.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAElF,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAG7E,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AACD,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AACD;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAeD,+FAA+F;AAC/F,wBAAgB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA8D5B,MAAM,uCAA8C,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAkBxC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAM/B,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAGzC,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAOjC,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,iBAAiB,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAQxD,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,uBAAuB,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ5G,0GAA0G;sCACxE,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgB/F;;;;;;;;OAQG;uCACgC,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,qBAAqB,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWzG;;;;OAIG;wCACiC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,qBAAqB,CAAA;KAAE;;;;;;;;;IAKtF;;;OAGG;4CACqC,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAW7F,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAavC,iBAAiB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAgB5D;QACD,OAAO,EAAE,MAAM,CAAA;QACf,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAC/B,GAAG,qBAAqB;kDAQqB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBtE;AACD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAClF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAA"}
@@ -1,15 +1,16 @@
1
- import { parseV3Asset, serializeV3Asset, compileV3Asset, captureV3AuthoredInputs } from "./v3-asset.js";
2
- import { createV3AuthoringSession } from "./v3-authoring-session.js";
3
- import { addV3Box, addV3Primitive } from "./v3-create.js";
4
- import { editV3Part, removePart } from "./v3-part-edit.js";
5
- import { applyV3Authoring } from "./v3-authoring-actions.js";
6
- import { applyV3Proposal } from "./v3-proposal.js";
7
- import { V3ContractError } from "./v3-contract.js";
1
+ import { previewFigureCommand } from "./command-preview.js";
2
+ import { parseFigureAsset, serializeFigureAsset, compileFigureAsset, captureFigureAuthoredInputs } from "./asset.js";
3
+ import { createFigureAuthoringSession } from "./authoring-session.js";
4
+ import { addFigureBox, addFigurePrimitive } from "./create.js";
5
+ import { editFigurePart, removePart } from "./part-edit.js";
6
+ import { applyFigureAuthoring } from "./authoring-actions.js";
7
+ import { applyFigureProposal } from "./proposal.js";
8
+ import { FigureContractError } from "./contract.js";
8
9
  function fail(code, message) {
9
- throw new V3ContractError(code, 'workspace', message);
10
+ throw new FigureContractError(code, 'workspace', message);
10
11
  }
11
12
  /** One history for structural and input edits. No persistence or authentication is implied. */
12
- export function createV3EditorWorkspace() {
13
+ export function createFigureEditorWorkspace() {
13
14
  let active = null, epoch = 0;
14
15
  function current(context) {
15
16
  if (!active || active.context !== context)
@@ -19,13 +20,16 @@ export function createV3EditorWorkspace() {
19
20
  function control(a, q) {
20
21
  if (!['ui', 'ai'].includes(q.origin))
21
22
  fail('EDIT_ORIGIN', 'ui or ai required');
23
+ /* Only the person may let a clip go: an AI request carrying a consent is refused whole, whatever it asks (designer 2026-09-27). */
24
+ if (q.origin === 'ai' && q.dropClips !== undefined)
25
+ fail('CONSENT_ORIGIN', 'an AI request cannot agree to let clips go');
22
26
  if (!Number.isSafeInteger(q.expectedRevision) || q.expectedRevision < 0)
23
27
  fail('EDIT_REVISION', 'nonnegative integer required');
24
28
  if (q.expectedRevision !== a.revision)
25
29
  fail('REVISION_CONFLICT', 'editor changed since request');
26
30
  }
27
31
  function dirty() {
28
- return !!active && serializeV3Asset(active.asset) !== serializeV3Asset(active.baseline);
32
+ return !!active && serializeFigureAsset(active.asset) !== serializeFigureAsset(active.baseline);
29
33
  }
30
34
  function leave(discard) {
31
35
  if (dirty() && !discard)
@@ -33,7 +37,7 @@ export function createV3EditorWorkspace() {
33
37
  }
34
38
  const snapshot = (a) => structuredClone({ asset: a.asset, inputs: a.inputs });
35
39
  function validate(s) {
36
- compileV3Asset(captureV3AuthoredInputs(s.asset, s.inputs, { captureStateDefaults: true })).evaluate();
40
+ compileFigureAsset(captureFigureAuthoredInputs(s.asset, s.inputs, { captureStateDefaults: true })).evaluate();
37
41
  }
38
42
  function install(a, next) {
39
43
  validate(next);
@@ -48,7 +52,7 @@ export function createV3EditorWorkspace() {
48
52
  function read() {
49
53
  if (!active)
50
54
  return { context: null, name: null, fields: [], geometry: [], bindings: [], dirty: false, revision: null };
51
- const a = active, rendered = compileV3Asset(captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true })).evaluate();
55
+ const a = active, rendered = compileFigureAsset(captureFigureAuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true })).evaluate();
52
56
  return {
53
57
  context: a.context,
54
58
  name: a.asset.name,
@@ -64,21 +68,23 @@ export function createV3EditorWorkspace() {
64
68
  }
65
69
  function candidate(a, q) {
66
70
  control(a, q);
67
- const session = createV3AuthoringSession(a.asset.document, a.inputs);
71
+ const session = createFigureAuthoringSession(a.asset.document, a.inputs);
68
72
  const report = session.preview({ ...q, expectedRevision: 0 });
69
73
  report.baseRevision = a.revision;
70
74
  return report;
71
75
  }
72
76
  return {
73
77
  read,
74
- open(text, { discardDesignChanges = false } = {}) {
78
+ open(text, { discardDesignChanges = false, baseline } = {}) {
75
79
  leave(discardDesignChanges);
76
- const asset = parseV3Asset(text), inputs = { ...asset.designInputs, ...asset.stateDefaults };
80
+ const asset = parseFigureAsset(text), inputs = { ...asset.designInputs, ...asset.stateDefaults };
77
81
  validate({ asset, inputs });
82
+ /* Parsed before anything is replaced: a baseline that is not a figure opens nothing. */
83
+ const saved = baseline === undefined ? structuredClone(asset) : parseFigureAsset(baseline);
78
84
  active = {
79
85
  asset,
80
86
  inputs,
81
- baseline: structuredClone(asset),
87
+ baseline: saved,
82
88
  revision: 0,
83
89
  context: `asset-context-${++epoch}`,
84
90
  undo: [],
@@ -98,20 +104,20 @@ export function createV3EditorWorkspace() {
98
104
  apply({ context, ...q }) {
99
105
  const a = current(context), c = candidate(a, q);
100
106
  if (c.changes.length)
101
- install(a, { asset: captureV3AuthoredInputs(a.asset, c.candidate.inputs), inputs: c.candidate.inputs });
107
+ install(a, { asset: captureFigureAuthoredInputs(a.asset, c.candidate.inputs), inputs: c.candidate.inputs });
102
108
  return read();
103
109
  },
104
110
  addBox({ context, box, ...q }) {
105
111
  const a = current(context);
106
112
  control(a, q);
107
- const asset = addV3Box(a.asset, box), inputs = { ...asset.designInputs, ...asset.stateDefaults, ...a.inputs };
113
+ const asset = addFigureBox(a.asset, box), inputs = { ...asset.designInputs, ...asset.stateDefaults, ...a.inputs };
108
114
  install(a, { asset, inputs });
109
115
  return read();
110
116
  },
111
117
  addPrimitive({ context, part, ...q }) {
112
118
  const a = current(context);
113
119
  control(a, q);
114
- const asset = addV3Primitive(a.asset, part), inputs = { ...asset.designInputs, ...asset.stateDefaults, ...a.inputs };
120
+ const asset = addFigurePrimitive(a.asset, part), inputs = { ...asset.designInputs, ...asset.stateDefaults, ...a.inputs };
115
121
  install(a, { asset, inputs });
116
122
  return read();
117
123
  },
@@ -119,9 +125,9 @@ export function createV3EditorWorkspace() {
119
125
  editPart({ context, edit, ...q }) {
120
126
  const a = current(context);
121
127
  control(a, q);
122
- const removed = edit.kind === 'remove-part' ? removePart(a.asset, edit) : undefined;
123
- const asset = removed ? removed.asset : editV3Part(a.asset, edit);
124
- if (serializeV3Asset(asset) !== serializeV3Asset(a.asset)) {
128
+ const removed = edit.kind === 'remove-part' ? removePart(a.asset, edit, q) : undefined;
129
+ const asset = removed ? removed.asset : editFigurePart(a.asset, edit, q);
130
+ if (serializeFigureAsset(asset) !== serializeFigureAsset(a.asset)) {
125
131
  const inputs = Object.fromEntries(asset.document.model.inputs.map(i => [
126
132
  i.id,
127
133
  a.inputs[i.id] ?? asset.designInputs[i.id] ?? asset.stateDefaults[i.id]
@@ -137,17 +143,27 @@ export function createV3EditorWorkspace() {
137
143
  * The command sees the values the author is looking at: the live inputs are captured into the asset
138
144
  * first, so "fasten this to that" reads the part where it stands now, not where it stood when the model
139
145
  * was opened. A refused command leaves history, revision and the asset as they were, the same as an
140
- * input edit that fails validation (`applyV3Authoring` clones and throws before anything is written).
146
+ * input edit that fails validation (`applyFigureAuthoring` clones and throws before anything is written).
141
147
  */
142
148
  command({ context, action, ...q }) {
143
149
  const a = current(context);
144
150
  control(a, q);
145
- const seen = captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
146
- const asset = applyV3Authoring(seen, action);
151
+ const seen = captureFigureAuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
152
+ const asset = applyFigureAuthoring(seen, action, q);
147
153
  const inputs = Object.fromEntries(asset.document.model.inputs.map(i => [i.id, asset.designInputs[i.id] ?? asset.stateDefaults[i.id]]));
148
154
  install(a, { asset, inputs });
149
155
  return read();
150
156
  },
157
+ /**
158
+ * What a command would do, seen before it is done (ADR-0097 §5.5): the same command on a copy, with the values the
159
+ * author is looking at. No revision, no history, no clip, no consent is touched; the answer names the figure and
160
+ * version it was worked out on, so the caller drops it once either has moved on.
161
+ */
162
+ previewCommand({ context, action }) {
163
+ const a = current(context);
164
+ const seen = captureFigureAuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
165
+ return { context, revision: a.revision, ...previewFigureCommand(seen, action, a.inputs) };
166
+ },
151
167
  /**
152
168
  * An AI proposal -- the modeller's own commands in a list (ADR-0094) -- as one step of the history: accepted, it is
153
169
  * undone whole. Refused at any step, nothing of it is kept, as a refused command keeps nothing.
@@ -155,8 +171,8 @@ export function createV3EditorWorkspace() {
155
171
  applyProposal({ context, steps, ...q }) {
156
172
  const a = current(context);
157
173
  control(a, q);
158
- const seen = captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
159
- const asset = applyV3Proposal(seen, steps);
174
+ const seen = captureFigureAuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
175
+ const asset = applyFigureProposal(seen, steps, q);
160
176
  const inputs = Object.fromEntries(asset.document.model.inputs.map(i => [i.id, asset.designInputs[i.id] ?? asset.stateDefaults[i.id]]));
161
177
  install(a, { asset, inputs });
162
178
  return read();
@@ -194,16 +210,16 @@ export function createV3EditorWorkspace() {
194
210
  return {
195
211
  context,
196
212
  revision: a.revision,
197
- text: serializeV3Asset(captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults }))
213
+ text: serializeFigureAsset(captureFigureAuthoredInputs(a.asset, a.inputs, { captureStateDefaults }))
198
214
  };
199
215
  },
200
216
  acknowledgeSaved({ context, revision, text }) {
201
217
  const a = current(context);
202
218
  if (revision !== a.revision)
203
219
  fail('REVISION_CONFLICT', 'edited since export');
204
- const saved = parseV3Asset(text), ordinary = captureV3AuthoredInputs(a.asset, a.inputs), withPose = captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
205
- if (serializeV3Asset(saved) !== serializeV3Asset(ordinary) &&
206
- serializeV3Asset(saved) !== serializeV3Asset(withPose))
220
+ const saved = parseFigureAsset(text), ordinary = captureFigureAuthoredInputs(a.asset, a.inputs), withPose = captureFigureAuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
221
+ if (serializeFigureAsset(saved) !== serializeFigureAsset(ordinary) &&
222
+ serializeFigureAsset(saved) !== serializeFigureAsset(withPose))
207
223
  fail('SAVE_MISMATCH', 'acknowledgement does not match current asset');
208
224
  a.asset = saved;
209
225
  a.baseline = structuredClone(saved);
@@ -211,4 +227,4 @@ export function createV3EditorWorkspace() {
211
227
  }
212
228
  };
213
229
  }
214
- //# sourceMappingURL=v3-editor-workspace.js.map
230
+ //# sourceMappingURL=editor-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-workspace.js","sourceRoot":"","sources":["../src/editor-workspace.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { type V3PrimitiveCreation } from './v3-create.ts';
2
- import type { V3Asset } from './v3-asset-types.ts';
3
- type Part = V3PrimitiveCreation;
1
+ import { type FigurePrimitiveCreation } from './create.ts';
2
+ import type { FigureAsset } from './asset-types.ts';
3
+ type Part = FigurePrimitiveCreation;
4
4
  /** The chain, from the floor up: each part's bottom on the top of the one before. */
5
5
  export declare const ROBOT_ARM_CHAIN: {
6
6
  part: Part;
@@ -16,6 +16,6 @@ export declare const ROBOT_ARM_CHAIN: {
16
16
  * A six-axis arm: each link joined to the one before at a joint, which is the one relation the arm needs; every size is
17
17
  * the part's own number. The room it takes is worked out.
18
18
  */
19
- export declare function robotArmV3(): V3Asset;
19
+ export declare function robotArmFigure(): FigureAsset;
20
20
  export {};
21
- //# sourceMappingURL=v3-examples.d.ts.map
21
+ //# sourceMappingURL=examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAKA,OAAO,EAAyC,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,KAAK,IAAI,GAAG,uBAAuB,CAAA;AAMnC,qFAAqF;AACrF,eAAO,MAAM,eAAe,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,IAAI,CAAA;KAAE,CAAA;CAAE,EAWjI,CAAA;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAqB5C"}