@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.
- package/CHANGELOG.md +12 -12
- package/README.md +25 -25
- package/dist/{v3-asset-types.d.ts → asset-types.d.ts} +73 -67
- package/dist/asset-types.d.ts.map +1 -0
- package/dist/asset-types.js +2 -0
- package/dist/asset-types.js.map +1 -0
- package/dist/asset.d.ts +20 -0
- package/dist/asset.d.ts.map +1 -0
- package/dist/{v3-asset.js → asset.js} +49 -28
- package/dist/asset.js.map +1 -0
- package/dist/{v3-authoring-actions.d.ts → authoring-actions.d.ts} +77 -66
- package/dist/authoring-actions.d.ts.map +1 -0
- package/dist/{v3-authoring-actions.js → authoring-actions.js} +129 -104
- package/dist/authoring-actions.js.map +1 -0
- package/dist/{v3-authoring-session.d.ts → authoring-session.d.ts} +23 -21
- package/dist/authoring-session.d.ts.map +1 -0
- package/dist/{v3-authoring-session.js → authoring-session.js} +4 -4
- package/dist/authoring-session.js.map +1 -0
- package/dist/capabilities.d.ts +3 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/{v3-capabilities.js → capabilities.js} +8 -8
- package/dist/capabilities.js.map +1 -0
- package/dist/clip-keeping.d.ts +30 -0
- package/dist/clip-keeping.d.ts.map +1 -0
- package/dist/clip-keeping.js +77 -0
- package/dist/clip-keeping.js.map +1 -0
- package/dist/command-preview.d.ts +125 -0
- package/dist/command-preview.d.ts.map +1 -0
- package/dist/command-preview.js +246 -0
- package/dist/command-preview.js.map +1 -0
- package/dist/contract.d.ts +7 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +12 -0
- package/dist/contract.js.map +1 -0
- package/dist/{v3-cost.d.ts → cost.d.ts} +5 -5
- package/dist/cost.d.ts.map +1 -0
- package/dist/{v3-cost.js → cost.js} +11 -11
- package/dist/cost.js.map +1 -0
- package/dist/{v3-create.d.ts → create.d.ts} +8 -8
- package/dist/{v3-create.d.ts.map → create.d.ts.map} +1 -1
- package/dist/{v3-create.js → create.js} +26 -26
- package/dist/create.js.map +1 -0
- package/dist/document.d.ts +5 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +31 -0
- package/dist/document.js.map +1 -0
- package/dist/{v3-driver.d.ts → driver.d.ts} +10 -10
- package/dist/driver.d.ts.map +1 -0
- package/dist/{v3-driver.js → driver.js} +10 -10
- package/dist/driver.js.map +1 -0
- package/dist/{v3-editor-workspace.d.ts → editor-workspace.d.ts} +99 -73
- package/dist/editor-workspace.d.ts.map +1 -0
- package/dist/{v3-editor-workspace.js → editor-workspace.js} +48 -32
- package/dist/editor-workspace.js.map +1 -0
- package/dist/{v3-examples.d.ts → examples.d.ts} +5 -5
- package/dist/examples.d.ts.map +1 -0
- package/dist/{v3-examples.js → examples.js} +11 -11
- package/dist/examples.js.map +1 -0
- package/dist/{v3-follow.d.ts → follow.d.ts} +5 -5
- package/dist/follow.d.ts.map +1 -0
- package/dist/{v3-follow.js → follow.js} +2 -2
- package/dist/follow.js.map +1 -0
- package/dist/{v3-gate.d.ts → gate.d.ts} +36 -28
- package/dist/gate.d.ts.map +1 -0
- package/dist/{v3-gate.js → gate.js} +54 -48
- package/dist/gate.js.map +1 -0
- package/dist/{v3-graph-types.d.ts → graph-types.d.ts} +33 -33
- package/dist/graph-types.d.ts.map +1 -0
- package/dist/graph-types.js +2 -0
- package/dist/graph-types.js.map +1 -0
- package/dist/{v3-graph.d.ts → graph.d.ts} +14 -14
- package/dist/graph.d.ts.map +1 -0
- package/dist/{v3-graph.js → graph.js} +16 -16
- package/dist/graph.js.map +1 -0
- package/dist/index.d.ts +39 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -33
- package/dist/index.js.map +1 -1
- package/dist/{v3-instance-size.d.ts → instance-size.d.ts} +14 -14
- package/dist/instance-size.d.ts.map +1 -0
- package/dist/{v3-instance-size.js → instance-size.js} +13 -13
- package/dist/instance-size.js.map +1 -0
- package/dist/json.d.ts +12 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/{v3-json.js → json.js} +13 -13
- package/dist/json.js.map +1 -0
- package/dist/kernel-version.d.ts +8 -0
- package/dist/kernel-version.d.ts.map +1 -0
- package/dist/{v3-kernel-version.js → kernel-version.js} +4 -4
- package/dist/kernel-version.js.map +1 -0
- package/dist/{v3-part-edit.d.ts → part-edit.d.ts} +12 -11
- package/dist/part-edit.d.ts.map +1 -0
- package/dist/{v3-part-edit.js → part-edit.js} +84 -68
- package/dist/part-edit.js.map +1 -0
- package/dist/proposal.d.ts +55 -0
- package/dist/proposal.d.ts.map +1 -0
- package/dist/{v3-proposal.js → proposal.js} +29 -21
- package/dist/proposal.js.map +1 -0
- package/dist/{v3-public-inputs.d.ts → public-inputs.d.ts} +4 -4
- package/dist/public-inputs.d.ts.map +1 -0
- package/dist/{v3-public-inputs.js → public-inputs.js} +3 -3
- package/dist/public-inputs.js.map +1 -0
- package/dist/recipe-build.d.ts +27 -0
- package/dist/recipe-build.d.ts.map +1 -0
- package/dist/{v3-recipe-build.js → recipe-build.js} +9 -9
- package/dist/recipe-build.js.map +1 -0
- package/dist/recipe-from-parts.d.ts +8 -0
- package/dist/recipe-from-parts.d.ts.map +1 -0
- package/dist/{v3-recipe-from-parts.js → recipe-from-parts.js} +9 -9
- package/dist/recipe-from-parts.js.map +1 -0
- package/dist/{v3-recipe.d.ts → recipe.d.ts} +25 -25
- package/dist/recipe.d.ts.map +1 -0
- package/dist/{v3-recipe.js → recipe.js} +30 -30
- package/dist/recipe.js.map +1 -0
- package/dist/release-contract.d.ts +19 -0
- package/dist/release-contract.d.ts.map +1 -0
- package/dist/{v3-release-contract.js → release-contract.js} +8 -7
- package/dist/release-contract.js.map +1 -0
- package/dist/{v3-render-batches.d.ts → render-batches.d.ts} +8 -8
- package/dist/render-batches.d.ts.map +1 -0
- package/dist/{v3-render-batches.js → render-batches.js} +4 -4
- package/dist/render-batches.js.map +1 -0
- package/dist/resize-plan.d.ts +61 -0
- package/dist/resize-plan.d.ts.map +1 -0
- package/dist/resize-plan.js +189 -0
- package/dist/resize-plan.js.map +1 -0
- package/dist/room.d.ts +53 -0
- package/dist/room.d.ts.map +1 -0
- package/dist/room.js +90 -0
- package/dist/room.js.map +1 -0
- package/dist/{v3-score.d.ts → score.d.ts} +19 -19
- package/dist/score.d.ts.map +1 -0
- package/dist/{v3-score.js → score.js} +32 -32
- package/dist/score.js.map +1 -0
- package/dist/shape-provider.d.ts +37 -0
- package/dist/shape-provider.d.ts.map +1 -0
- package/dist/shape-provider.js +69 -0
- package/dist/shape-provider.js.map +1 -0
- package/dist/{v3-shape-sampling.d.ts → shape-sampling.d.ts} +4 -4
- package/dist/shape-sampling.d.ts.map +1 -0
- package/dist/{v3-shape-sampling.js → shape-sampling.js} +3 -3
- package/dist/shape-sampling.js.map +1 -0
- package/dist/size-edit.d.ts +38 -0
- package/dist/size-edit.d.ts.map +1 -0
- package/dist/size-edit.js +178 -0
- package/dist/size-edit.js.map +1 -0
- package/dist/{v3-surface.d.ts → surface.d.ts} +5 -5
- package/dist/surface.d.ts.map +1 -0
- package/dist/{v3-surface.js → surface.js} +7 -7
- package/dist/surface.js.map +1 -0
- package/dist/{v3-words.d.ts → words.d.ts} +3 -3
- package/dist/words.d.ts.map +1 -0
- package/dist/{v3-words.js → words.js} +3 -3
- package/dist/words.js.map +1 -0
- package/docs/{assembly-constraints-v3.md → assembly-constraints.md} +1 -1
- package/docs/{v3-asset-persistence.md → asset-persistence.md} +8 -8
- package/docs/{v3-authoring-transactions.md → authoring-transactions.md} +2 -2
- package/docs/{v3-capability-bindings.md → capability-bindings.md} +8 -8
- package/docs/{v3-common-kernel-experiment.md → common-kernel-experiment.md} +4 -4
- package/docs/{v3-core-semantics.md → core-semantics.md} +5 -5
- package/docs/{v3-cutover.md → cutover.md} +4 -4
- package/docs/{v3-design.md → design.md} +11 -11
- package/docs/{v3-document-contract.md → document-contract.md} +9 -9
- package/docs/{v3-dryroom-profile-validation.md → dryroom-profile-validation.md} +4 -4
- package/docs/{v3-editor-integration.md → editor-integration.md} +6 -6
- package/docs/{v3-full-conveyor-validation.md → full-conveyor-validation.md} +4 -4
- package/docs/{v3-full-dryroom-validation.md → full-dryroom-validation.md} +4 -4
- package/docs/{v3-full-forklift-validation.md → full-forklift-validation.md} +5 -5
- package/docs/{v3-full-robot-validation.md → full-robot-validation.md} +4 -4
- package/docs/{v3-layout-system.md → layout-system.md} +4 -4
- package/docs/{v3-legacy-risk-audit-2026-09-23.md → legacy-risk-audit-2026-09-23.md} +5 -5
- package/docs/{v3-minimal-model.md → minimal-model.md} +6 -6
- package/docs/{v3-motion-contract.md → motion-contract.md} +3 -3
- package/docs/{v3-openusd-review.md → openusd-review.md} +8 -8
- package/docs/{v3-operator-contracts.md → operator-contracts.md} +6 -6
- package/docs/{v3-payload-collision-validation.md → payload-collision-validation.md} +4 -4
- package/docs/{v3-payload-contact-validation.md → payload-contact-validation.md} +5 -5
- package/docs/prototypes/README.md +10 -10
- package/docs/prototypes/{v3-asset-samples.mjs → asset-samples.mjs} +6 -6
- package/docs/prototypes/{v3-asset-store.mjs → asset-store.mjs} +3 -3
- package/docs/prototypes/{v3-asset-store.test.mjs → asset-store.test.mjs} +6 -6
- package/docs/prototypes/asset.mjs +1 -0
- package/docs/prototypes/{v3-asset.schema.json → asset.schema.json} +2 -2
- package/docs/prototypes/{v3-asset.test.mjs → asset.test.mjs} +10 -10
- package/docs/prototypes/authoring-session.mjs +1 -0
- package/docs/prototypes/{v3-authoring-session.test.mjs → authoring-session.test.mjs} +6 -6
- package/docs/prototypes/capability-plan.mjs +1 -0
- package/docs/prototypes/{v3-capability-plan.test.mjs → capability-plan.test.mjs} +5 -5
- package/docs/prototypes/{v3-capability-samples.mjs → capability-samples.mjs} +2 -2
- package/docs/prototypes/document.mjs +2 -0
- package/docs/prototypes/{v3-document.schema.json → document.schema.json} +1 -1
- package/docs/prototypes/{v3-document.test.mjs → document.test.mjs} +7 -7
- package/docs/prototypes/{v3-dryroom-mesh.mjs → dryroom-mesh.mjs} +1 -1
- package/docs/prototypes/{v3-dryroom-mesh.test.mjs → dryroom-mesh.test.mjs} +1 -1
- package/docs/prototypes/{v3-editor-browser.mjs → editor-browser.mjs} +13 -13
- package/docs/prototypes/editor-workspace.mjs +1 -0
- package/docs/prototypes/{v3-editor-workspace.test.mjs → editor-workspace.test.mjs} +3 -3
- package/docs/prototypes/{v3-feature-pattern.test.mjs → feature-pattern.test.mjs} +1 -1
- package/docs/prototypes/{v3-full-conveyor.mjs → full-conveyor.mjs} +2 -2
- package/docs/prototypes/{v3-full-conveyor.test.mjs → full-conveyor.test.mjs} +3 -3
- package/docs/prototypes/{v3-full-dryroom.mjs → full-dryroom.mjs} +2 -2
- package/docs/prototypes/{v3-full-dryroom.test.mjs → full-dryroom.test.mjs} +3 -3
- package/docs/prototypes/{v3-full-forklift.mjs → full-forklift.mjs} +2 -2
- package/docs/prototypes/{v3-full-forklift.test.mjs → full-forklift.test.mjs} +3 -3
- package/docs/prototypes/{v3-full-robot.mjs → full-robot.mjs} +2 -2
- package/docs/prototypes/{v3-full-robot.test.mjs → full-robot.test.mjs} +4 -4
- package/docs/prototypes/{v3-kernel.test.mjs → kernel.test.mjs} +1 -1
- package/docs/prototypes/{v3-layout.test.mjs → layout.test.mjs} +1 -1
- package/docs/prototypes/{v3-more-samples.test.mjs → more-samples.test.mjs} +2 -2
- package/docs/prototypes/{v3-payload-collision.mjs → payload-collision.mjs} +2 -2
- package/docs/prototypes/{v3-payload-collision.test.mjs → payload-collision.test.mjs} +3 -3
- package/docs/prototypes/{v3-payload-fit.mjs → payload-fit.mjs} +2 -2
- package/docs/prototypes/{v3-payload-fit.test.mjs → payload-fit.test.mjs} +4 -4
- package/docs/prototypes/render-full-dryroom.mjs +12 -12
- package/docs/prototypes/{v3-repeated-binding.mjs → repeated-binding.mjs} +1 -1
- package/docs/prototypes/{v3-repeated-binding.test.mjs → repeated-binding.test.mjs} +6 -6
- package/docs/prototypes/{v3-runtime-browser.mjs → runtime-browser.mjs} +26 -26
- package/docs/prototypes/{v3-samples.test.mjs → samples.test.mjs} +1 -1
- package/docs/prototypes/{v3-spatial-plan.test.mjs → spatial-plan.test.mjs} +1 -1
- package/docs/prototypes/typed-plan.mjs +3 -0
- package/docs/prototypes/{v3-typed-plan.test.mjs → typed-plan.test.mjs} +1 -1
- package/docs/prototypes/{v3-typed-repeat.test.mjs → typed-repeat.test.mjs} +2 -2
- package/docs/{v3-repeated-binding-validation.md → repeated-binding-validation.md} +4 -4
- package/docs/{v3-research-review.md → research-review.md} +2 -2
- package/docs/{v3-review-2026-09-22.md → review-2026-09-22.md} +10 -10
- package/docs/{v3-runtime-extraction.md → runtime-extraction.md} +16 -16
- package/docs/{v3-sample-validation-expanded.md → sample-validation-expanded.md} +5 -5
- package/docs/{v3-sample-validation.md → sample-validation.md} +3 -3
- package/docs/{v3-shape-dimension-contract.md → shape-dimension-contract.md} +12 -12
- package/docs/{v3-shapeassembly-reproduction.md → shapeassembly-reproduction.md} +4 -4
- package/docs/{v3-spatial-contracts.md → spatial-contracts.md} +5 -5
- package/docs/status.md +12 -0
- package/docs/{v3-storage-integration.md → storage-integration.md} +5 -5
- package/docs/{v3-typed-repeat-contracts.md → typed-repeat-contracts.md} +3 -3
- package/package.json +3 -3
- package/dist/v3-asset-types.d.ts.map +0 -1
- package/dist/v3-asset-types.js +0 -2
- package/dist/v3-asset-types.js.map +0 -1
- package/dist/v3-asset.d.ts +0 -8
- package/dist/v3-asset.d.ts.map +0 -1
- package/dist/v3-asset.js.map +0 -1
- package/dist/v3-authoring-actions.d.ts.map +0 -1
- package/dist/v3-authoring-actions.js.map +0 -1
- package/dist/v3-authoring-session.d.ts.map +0 -1
- package/dist/v3-authoring-session.js.map +0 -1
- package/dist/v3-capabilities.d.ts +0 -3
- package/dist/v3-capabilities.d.ts.map +0 -1
- package/dist/v3-capabilities.js.map +0 -1
- package/dist/v3-contract.d.ts +0 -7
- package/dist/v3-contract.d.ts.map +0 -1
- package/dist/v3-contract.js +0 -12
- package/dist/v3-contract.js.map +0 -1
- package/dist/v3-cost.d.ts.map +0 -1
- package/dist/v3-cost.js.map +0 -1
- package/dist/v3-create.js.map +0 -1
- package/dist/v3-document.d.ts +0 -5
- package/dist/v3-document.d.ts.map +0 -1
- package/dist/v3-document.js +0 -31
- package/dist/v3-document.js.map +0 -1
- package/dist/v3-driver.d.ts.map +0 -1
- package/dist/v3-driver.js.map +0 -1
- package/dist/v3-editor-workspace.d.ts.map +0 -1
- package/dist/v3-editor-workspace.js.map +0 -1
- package/dist/v3-examples.d.ts.map +0 -1
- package/dist/v3-examples.js.map +0 -1
- package/dist/v3-follow.d.ts.map +0 -1
- package/dist/v3-follow.js.map +0 -1
- package/dist/v3-gate.d.ts.map +0 -1
- package/dist/v3-gate.js.map +0 -1
- package/dist/v3-graph-types.d.ts.map +0 -1
- package/dist/v3-graph-types.js +0 -2
- package/dist/v3-graph-types.js.map +0 -1
- package/dist/v3-graph.d.ts.map +0 -1
- package/dist/v3-graph.js.map +0 -1
- package/dist/v3-instance-size.d.ts.map +0 -1
- package/dist/v3-instance-size.js.map +0 -1
- package/dist/v3-json.d.ts +0 -12
- package/dist/v3-json.d.ts.map +0 -1
- package/dist/v3-json.js.map +0 -1
- package/dist/v3-kernel-version.d.ts +0 -8
- package/dist/v3-kernel-version.d.ts.map +0 -1
- package/dist/v3-kernel-version.js.map +0 -1
- package/dist/v3-part-edit.d.ts.map +0 -1
- package/dist/v3-part-edit.js.map +0 -1
- package/dist/v3-proposal.d.ts +0 -42
- package/dist/v3-proposal.d.ts.map +0 -1
- package/dist/v3-proposal.js.map +0 -1
- package/dist/v3-public-inputs.d.ts.map +0 -1
- package/dist/v3-public-inputs.js.map +0 -1
- package/dist/v3-recipe-build.d.ts +0 -27
- package/dist/v3-recipe-build.d.ts.map +0 -1
- package/dist/v3-recipe-build.js.map +0 -1
- package/dist/v3-recipe-from-parts.d.ts +0 -8
- package/dist/v3-recipe-from-parts.d.ts.map +0 -1
- package/dist/v3-recipe-from-parts.js.map +0 -1
- package/dist/v3-recipe.d.ts.map +0 -1
- package/dist/v3-recipe.js.map +0 -1
- package/dist/v3-release-contract.d.ts +0 -19
- package/dist/v3-release-contract.d.ts.map +0 -1
- package/dist/v3-release-contract.js.map +0 -1
- package/dist/v3-render-batches.d.ts.map +0 -1
- package/dist/v3-render-batches.js.map +0 -1
- package/dist/v3-score.d.ts.map +0 -1
- package/dist/v3-score.js.map +0 -1
- package/dist/v3-shape-sampling.d.ts.map +0 -1
- package/dist/v3-shape-sampling.js.map +0 -1
- package/dist/v3-surface.d.ts.map +0 -1
- package/dist/v3-surface.js.map +0 -1
- package/dist/v3-words.d.ts.map +0 -1
- package/dist/v3-words.js.map +0 -1
- package/docs/prototypes/v3-asset.mjs +0 -1
- package/docs/prototypes/v3-authoring-session.mjs +0 -1
- package/docs/prototypes/v3-capability-plan.mjs +0 -1
- package/docs/prototypes/v3-document.mjs +0 -2
- package/docs/prototypes/v3-editor-workspace.mjs +0 -1
- package/docs/prototypes/v3-typed-plan.mjs +0 -3
- package/docs/v3-status.md +0 -50
- /package/docs/prototypes/{v3-kernel.mjs → kernel.mjs} +0 -0
- /package/docs/prototypes/{v3-linear-comparison.py → linear-comparison.py} +0 -0
- /package/docs/prototypes/{v3-semantics.test.mjs → semantics.test.mjs} +0 -0
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import { type
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
|
|
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
|
|
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
|
|
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("./
|
|
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("./
|
|
43
|
-
bindings: import("./
|
|
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 }?:
|
|
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("./
|
|
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("./
|
|
73
|
-
bindings: import("./
|
|
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 }?:
|
|
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("./
|
|
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("./
|
|
103
|
-
bindings: import("./
|
|
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 }:
|
|
115
|
+
preview({ context, ...q }: FigureEditRequest & {
|
|
107
116
|
context: string;
|
|
108
117
|
}): {
|
|
109
118
|
candidate: {
|
|
110
119
|
inputs: Record<string, number>;
|
|
111
|
-
evaluation: import("./
|
|
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("./
|
|
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 }:
|
|
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("./
|
|
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("./
|
|
166
|
-
bindings: import("./
|
|
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 }:
|
|
178
|
+
addBox({ context, box, ...q }: FigureEditControl & {
|
|
170
179
|
context: string;
|
|
171
|
-
box:
|
|
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("./
|
|
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("./
|
|
199
|
-
bindings: import("./
|
|
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 }:
|
|
211
|
+
addPrimitive({ context, part, ...q }: FigureEditControl & {
|
|
203
212
|
context: string;
|
|
204
|
-
part:
|
|
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("./
|
|
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("./
|
|
232
|
-
bindings: import("./
|
|
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 }:
|
|
245
|
+
editPart({ context, edit, ...q }: FigureEditControl & {
|
|
237
246
|
context: string;
|
|
238
|
-
edit:
|
|
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("./
|
|
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("./
|
|
266
|
-
bindings: import("./
|
|
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("./
|
|
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("./
|
|
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("./
|
|
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("./
|
|
297
|
-
bindings: import("./
|
|
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 (`
|
|
316
|
+
* input edit that fails validation (`applyFigureAuthoring` clones and throws before anything is written).
|
|
308
317
|
*/
|
|
309
|
-
command({ context, action, ...q }:
|
|
318
|
+
command({ context, action, ...q }: FigureEditControl & {
|
|
310
319
|
context: string;
|
|
311
|
-
action:
|
|
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("./
|
|
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("./
|
|
339
|
-
bindings: import("./
|
|
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 }:
|
|
372
|
+
applyProposal({ context, steps, ...q }: FigureEditControl & {
|
|
347
373
|
context: string;
|
|
348
|
-
steps: readonly
|
|
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("./
|
|
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("./
|
|
376
|
-
bindings: import("./
|
|
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 }:
|
|
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("./
|
|
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("./
|
|
408
|
-
bindings: import("./
|
|
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 }:
|
|
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("./
|
|
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("./
|
|
440
|
-
bindings: import("./
|
|
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
|
-
}):
|
|
447
|
-
acknowledgeSaved({ context, revision, text }:
|
|
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("./
|
|
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("./
|
|
474
|
-
bindings: import("./
|
|
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
|
|
479
|
-
export type
|
|
480
|
-
//# sourceMappingURL=
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
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
|
|
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
|
|
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 &&
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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:
|
|
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:
|
|
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 =
|
|
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 =
|
|
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 :
|
|
124
|
-
if (
|
|
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 (`
|
|
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 =
|
|
146
|
-
const asset =
|
|
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 =
|
|
159
|
-
const asset =
|
|
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:
|
|
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 =
|
|
205
|
-
if (
|
|
206
|
-
|
|
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=
|
|
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
|
|
2
|
-
import type {
|
|
3
|
-
type Part =
|
|
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
|
|
19
|
+
export declare function robotArmFigure(): FigureAsset;
|
|
20
20
|
export {};
|
|
21
|
-
//# sourceMappingURL=
|
|
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"}
|