@hatiolab/figure-model 0.1.20 → 0.1.22

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/dist/types.d.ts CHANGED
@@ -23,6 +23,38 @@ export type MaterialSlot = (typeof MATERIAL_SLOTS)[number];
23
23
  /** 재질 프리셋. `threed/material-3d.ts:9` 의 preset 과 같은 집합. */
24
24
  export declare const MATERIAL_PRESETS: readonly ["default", "metal", "glass", "plastic", "wood", "ceramic", "rubber"];
25
25
  export type MaterialPreset = (typeof MATERIAL_PRESETS)[number];
26
+ /**
27
+ * 저작이 고를 수 있는 능력 — **씬이 실제로 조립할 수 있는 것만 있다.**
28
+ *
29
+ * `MATERIAL_PRESETS` 와 같은 갈래다. 형식이 목록을 선언하고 씬이 그것을 소비한다.
30
+ *
31
+ * ## 왜 목록이 형식에 있나
32
+ *
33
+ * 한동안 things-scene 에만 있었다. 그래서 `validate` 가 이름을 못 봤고, AI 가 낸
34
+ * `capabilities: ['hoist']` 가 **검증을 지나고 발행을 지나** 렌더링에서 죽었다. 게이트는
35
+ * 사실이 사는 곳에 있어야 한다 — 형식이 무엇이 성립하는 도형인지 판정하는 자리이므로
36
+ * 여기다(ADR-0051 ④).
37
+ *
38
+ * `PlacementSurface`·`CarrierLine` 같은 이름은 씬에 metadata 는 있어도 mixin factory 가
39
+ * 없다. 구현이 있어야 성립하는 계약이라, 이름만 적어 지게 하면 「선언은 있는데 동작이
40
+ * 없는」 것이 된다. **여기 있는 넷은 씬에 조립할 것이 있다.**
41
+ *
42
+ * ## 사다리
43
+ *
44
+ * Capacity 자리를 갖는다
45
+ * Holdable 담긴 것을 함께 들고 그린다
46
+ * Transferable 자리를 잡아 두고 넘겨받는다 — `Capacity` 가 있어야 자리를 찾는다
47
+ * FlowNode 흐름의 마디다. 위의 셋을 스스로 포함한다
48
+ */
49
+ export declare const FIGURE_CAPABILITIES: readonly ["Capacity", "Holdable", "Transferable", "FlowNode"];
50
+ export type FigureCapability = (typeof FIGURE_CAPABILITIES)[number];
51
+ /**
52
+ * 혼자 설 수 없는 능력 — 이름 → 그 중 **하나라도** 함께 있어야 하는 것들.
53
+ *
54
+ * `Transferable` 은 자리를 찾는 일을 `Capacity` 에게 맡긴다. 혼자 적으면 씬이 조립할 때
55
+ * 던지는데, 그때는 이미 발행된 뒤다. 모르는 이름과 같은 갈래라 같은 자리에서 본다.
56
+ */
57
+ export declare const CAPABILITY_NEEDS: Readonly<Record<string, readonly FigureCapability[]>>;
26
58
  /**
27
59
  * 크기 반응 규칙 — 인스턴스 크기가 바뀔 때 부품이 어떻게 변하는가.
28
60
  *
@@ -147,19 +179,6 @@ export type ChannelPath = (typeof CHANNEL_PATHS)[number];
147
179
  /** 키프레임 사이를 어떻게 잇나. glTF 의 `CUBICSPLINE` 은 없다 — 접선을 손으로 적을 형식이 아니다. */
148
180
  export declare const INTERPOLATIONS: readonly ["linear", "step"];
149
181
  export type Interpolation = (typeof INTERPOLATIONS)[number];
150
- /**
151
- * **옛 자리다. 저작하지 않는다.**
152
- *
153
- * `drive: 'hold'` 가 「값이 자세를 만든다」를 말하던 칸이었다. 그 판단은 맞았는데 자리가
154
- * 틀려서, 애니메이션 안에 숨은 채로 아무도 못 찾았다. 지금은 `FigureParameter` 가 제 칸으로
155
- * 있고 `animations` 에는 시각이 흐르는 것만 남는다 — 그러니 여기서 말할 것이 없다
156
- * (ADR-0051, `operato-twin/design/04-decisions.md`).
157
- *
158
- * 이름이 남아 있는 것은 **이미 저장된 것을 옮기기 위해서**다. `compile()` 이 옛 원본의
159
- * `drive: 'hold'` 를 읽어 `parameters` 로 옮긴다. 옮기는 쪽이 사라지면 이 이름도 사라진다.
160
- */
161
- export declare const CLIP_DRIVES: readonly ["loop", "hold"];
162
- export type ClipDrive = (typeof CLIP_DRIVES)[number];
163
182
  export declare const AXES: readonly ["x", "y", "z"];
164
183
  export type Axis = (typeof AXES)[number];
165
184
  /** 텍스트를 언제 보이나. 표현 수단(sprite·overlay)은 런타임이 고른다. */
@@ -201,8 +220,12 @@ export interface Point2 {
201
220
  * ## 자리는 부품의 중심이다
202
221
  *
203
222
  * 여느 모델러와 같이 **원점은 부품의 중심**이고 `position` 은 그 원점의 자리다.
204
- * 기준은 `base` 상자의 중심(0, 0, 0)이므로 `position.y` 가 0 이면 부품의 허리가
205
- * 바닥 높이에 온다.
223
+ *
224
+ * The frame it is measured in has its origin at the bottom centre of the `base` box: `x` and `z` from
225
+ * the box centre, `y` up from the bottom face (source edition 2, ADR-0065). A part standing on the
226
+ * floor of the box has `position.y` equal to half its height, and changing `base.y` leaves every part's
227
+ * numbers where they were. Edition 1 measured `y` from the box centre as well; the compiled blueprint
228
+ * still does, and `origin.ts` is the one place a source is turned into that frame.
206
229
  *
207
230
  * 전에는 최소 모서리를 자리로 뒀다. 격자 스냅 때문이라고 적혀 있었는데, 모델러들은
208
231
  * 모두 원점을 격자에 붙이고 크기는 따로 스냅한다. 우리만 다르게 둘 이유가 없다.
@@ -411,9 +434,9 @@ export interface AnimationClip {
411
434
  *
412
435
  * ## 두 층으로 되어 있다 — 아래는 표준, 위는 우리 것
413
436
  *
414
- * `clip` 은 **glTF 애니메이션과 같은 모양**이다. 채널·키·TRS 경로 그대로이고 길이도 같은
415
- * 규칙으로 마지막 키의 시각이다. 내보내면 평범한 glTF 애니메이션이 나가고, 받아들일 때
416
- * 변환이 없다.
437
+ * `clip` has the shape of a glTF animation: channels, keys and TRS paths. The one difference is that
438
+ * a key's `at` is a position on the 0..1 value span rather than a time, and the two convert without
439
+ * loss. See `ParameterClip`.
417
440
  *
418
441
  * 그 위에 얹는 `range` 가 우리 것이다 — 「이 곡선은 재생되는 것이 아니라 값이 몬다」와
419
442
  * 「그 값은 mm 로 몇부터 몇까지다」. glTF 에 그것을 적을 자리가 없으므로, 못 받는 쪽은
@@ -426,15 +449,21 @@ export interface AnimationClip {
426
449
  * 맵한다. 「길이값을 변수로 노출한다」는 그 API 에서 성립하고, 형식의 곡선은 표준 모양으로
427
450
  * 남는다.
428
451
  *
429
- * ## 길이는 전이 시간이다
452
+ * ## The transition time is `clip.duration`
430
453
  *
431
- * `clip` 의 길이(마지막 키의 시각)가 **0 에서 1 까지 전 구간을 움직이는 데 걸리는 시간**이다.
432
- * 값이 v₁ 에서 v₂ 로 바뀌면 `|v₂ − v₁| × 길이` 동안 직선으로 간다 — 그것이 곧 기계의
433
- * 속도다. 호이스트가 초당 몇 mm 내려가는가는 그 도형의 사실이다.
454
+ * `clip.duration` is the number of seconds a full move from 0 to 1 takes. When the value changes from
455
+ * v₁ to v₂ the pose moves in a straight line over `|v₂ − v₁| × duration`, which is the machine's
456
+ * speed. How fast a hoist lowers is a fact about the figure; when one installation differs, the
457
+ * instance overrides it.
434
458
  *
435
459
  * **ease 는 없다.** 기계는 연출하지 않는다.
436
460
  *
437
- * 마지막 키가 `0` 이면 즉시다. 값을 주면 그 자세로 바로 간다.
461
+ * With no `duration`, or `0`, the move is instant: a new value goes straight to its pose.
462
+ *
463
+ * For a while the last key's time served as both the end of the value span and the transition time.
464
+ * A figure could then not declare several poses together with an instant move, since instant meant
465
+ * every key at 0, and legacy keys that happened to sit at 0 and 1 turned into a one-second move
466
+ * nobody chose. That is why the two facts have separate fields.
438
467
  */
439
468
  export interface FigureParameter {
440
469
  /** **저장되는 식별자다.** 인스턴스가 이 이름으로 값을 준다. */
@@ -465,10 +494,24 @@ export interface ParameterRange {
465
494
  * 이름은 파라미터가 갖는다. 클립에 또 두면 둘이 갈릴 수 있고, 갈리면 인스턴스가 어느 이름으로
466
495
  * 값을 주는지 알 수 없다.
467
496
  *
468
- * 키의 `at` 은 **초**다(glTF 와 같다). 값 0~1 이 `[0, 마지막 키의 시각]` 으로 맵되어
469
- * 그 시각의 자세가 된다.
497
+ * A key's `at` is a position on the value span, from `0` to `1`: `0` is the pose at `range.min` and
498
+ * `1` the pose at `range.max`. Keys need not cover the whole span; before the first key and after the
499
+ * last one the pose holds at the end key, the same clamping glTF applies outside a clip.
500
+ *
501
+ * Time lives in `duration`. Keys sit on the value axis and `duration` on the time axis, so the two
502
+ * cannot disagree.
503
+ *
504
+ * ## Converting to and from glTF loses nothing
505
+ *
506
+ * - Export: glTF key time = `at × (duration || 1)`. The curve goes out unchanged and its length is the
507
+ * transition time.
508
+ * - Import: divide every key time by the latest one to get `at`, and keep that latest time as `duration`.
509
+ *
510
+ * So `at` not being seconds does not break compatibility; the seconds are gathered into `duration`.
470
511
  */
471
512
  export interface ParameterClip {
513
+ /** Seconds for a full move from 0 to 1. Missing or `0` means instant. */
514
+ duration?: number;
472
515
  channels: AnimationChannel[];
473
516
  }
474
517
  /** 텍스트 표현 자리. 무엇을·언제만 정하고 수단은 런타임이 고른다. */
@@ -619,15 +662,22 @@ export interface PartCapability {
619
662
  */
620
663
  direction?: Vec3;
621
664
  }
622
- /** FigureSource 스키마 기본 판 번호. */
623
- export declare const FIGURE_SOURCE_VERSION = 1;
665
+ /**
666
+ * The source edition this format reads.
667
+ *
668
+ * - 1: `position.y` measured from the centre of the base box. Sources saved before the `version`
669
+ * field existed are edition 1 as well.
670
+ * - 2: `position.y` measured from the bottom face of the base box (ADR-0065).
671
+ *
672
+ * Only edition 2 is read. Older sources are refused with `source-version-unsupported` rather than
673
+ * read by the old rule, so a value never lives in two shapes at once.
674
+ */
675
+ export declare const FIGURE_SOURCE_VERSION = 2;
624
676
  /** 저작 결과. 편집 가능한 원본 데이터. */
625
677
  export interface FigureSource {
626
678
  /**
627
- * 형식 판 번호. 기본값 1.
628
- *
629
- * 원본 데이터(JSON)의 스키마 버전을 명시한다.
630
- * 형식이 변경될 때 마이그레이션 및 하위 호환 판정의 기준이 된다.
679
+ * Source edition. Must be `FIGURE_SOURCE_VERSION`; a missing value is refused, because every
680
+ * source saved without one was written in edition 1 coordinates.
631
681
  */
632
682
  version?: number;
633
683
  /** 컴포넌트 타입 이름. **저장되는 식별자다.** */
@@ -675,16 +725,18 @@ export interface FigureSource {
675
725
  * 그 답은 저작의 결과이므로 정본이 지고 다녀야 한다. 그리는 쪽이 타입 이름으로 짐작하면
676
726
  * 이름 규칙에 능력이 숨는다.
677
727
  *
678
- * ## 이름은 여기서 정하지 않는다
728
+ * ## 이름의 정본도 여기다 — 한동안 아니었다
679
729
  *
680
- * 이름의 주인은 **things-scene** 이다(`registerCapabilityMeta` · `getAllCapabilityMeta`).
681
- * 여기서 닫힌 목록을 또 적으면 계약이 두 벌이 되고, 씬에 능력이 하나 생길 때마다 형식을
682
- * 고쳐야 한다. 그래서 이 칸은 **문자열을 그대로 지고**, 얹을 수 있나는 씬이 판정한다
683
- * (`registerFigure` 가 모르는 이름을 거절한다).
730
+ * 「목록은 씬의 것이고 여기서는 문자열만 진다」였다. 의존 방향 때문이었는데, 그 대가가
731
+ * **게이트가 사실이 사는 곳에 없는 것**이었다. AI 가 낸 `capabilities: ['hoist']` 가
732
+ * 검증을 지나고 **발행까지 지난 뒤** 렌더링에서 죽었다 — 저작자는 자산을 내보내고 나서야
733
+ * 그것이 안 선다는 것을 알았다. `base` 상자 때와 같은 구멍이다(ADR-0044 · ADR-0051 ④).
684
734
  *
685
- * 형식이 보는 것은 모양뿐이다 — 빈 이름과 중복은 위반이다.
735
+ * 그래서 목록은 `FIGURE_CAPABILITIES` 로 여기 서고, 씬은 **그것을 소비해** mixin 을
736
+ * 붙인다. 계약이 두 벌이 되지 않게 씬 쪽에 양방향 시험이 있다 — 선언된 능력마다 mixin 이
737
+ * 있고, mixin 마다 선언이 있다.
686
738
  */
687
- capabilities?: readonly string[];
739
+ capabilities?: readonly FigureCapability[];
688
740
  }
689
741
  /** 청사진 스키마 버전. 형식이 바뀌면 올린다. */
690
742
  export declare const BLUEPRINT_VERSION = 1;
@@ -698,7 +750,23 @@ export declare const BLUEPRINT_VERSION = 1;
698
750
  * 이름을 따로 두는 뜻이 있다. 닻을 `BlueprintMember` 로 억지로 맞추려면 없는 `geometryKey` 와
699
751
  * `triangles` 를 지어내야 하고, 그 순간 그리는 목록에 섞여 들어갈 길이 생긴다.
700
752
  */
701
- export interface SizingSubject {
753
+ declare const CENTRED: unique symbol;
754
+ /**
755
+ * Marks a value whose positions are measured from the centre of the base box.
756
+ *
757
+ * A source measures y from the box bottom (edition 2); the blueprint, sizing, the release gate and the
758
+ * policy checks read box-centred positions. The brand exists only in the type system. Values get it in
759
+ * `origin.ts`, so a caller that hands a source part straight to a centred-only function fails to compile
760
+ * instead of reading every y half a box too high (ADR-0065).
761
+ */
762
+ export type Centred<T> = T & {
763
+ readonly [CENTRED]: true;
764
+ };
765
+ /** A source whose parts have been moved into box-centred coordinates by `centredSource`. */
766
+ export type CentredSource = Centred<Omit<FigureSource, 'parts'> & {
767
+ parts: Centred<FigurePart>[];
768
+ }>;
769
+ interface SizingSubjectShape {
702
770
  name: string;
703
771
  transform: PartTransform;
704
772
  sizing: SizingRule;
@@ -709,6 +777,8 @@ export interface SizingSubject {
709
777
  primitive?: PrimitiveKind;
710
778
  keepRound?: boolean;
711
779
  }
780
+ /** What the sizing rules read: a part in box-centred coordinates. */
781
+ export type SizingSubject = Centred<SizingSubjectShape>;
712
782
  export interface BlueprintMember extends SizingSubject {
713
783
  name: string;
714
784
  primitive: PrimitiveKind;
@@ -787,13 +857,13 @@ export interface Violation {
787
857
  * 처리를 정해야 하는데, 코드가 늘어난 것이 알려지지 않으면 그 대응이 빠진다. 뜻은
788
858
  * `docs/validation.md` 에 있고, 문서와 이 목록이 어긋나면 테스트가 실패한다.
789
859
  */
790
- export declare const ERROR_CODES: readonly ["not-object", "not-finite", "not-positive", "out-of-range", "not-integer", "not-boolean", "not-allowed", "missing-type", "missing-base", "missing-parts", "bad-style-kit", "missing-name", "duplicate-name", "missing-transform", "missing-position", "missing-size", "too-few-segments", "missing-shape-path", "bad-shape-point", "hollow-too-thick", "hollow-not-convex", "bad-aspect-axis", "missing-material", "material-unresolvable", "missing-repeat", "missing-channels", "unknown-channel-target", "too-few-keys", "keys-out-of-order", "missing-surface-ref", "missing-label-name", "missing-label-source", "bad-capability", "duplicate-capability", "bad-part-capability", "missing-range", "bad-range"];
860
+ export declare const ERROR_CODES: readonly ["not-object", "not-finite", "not-positive", "out-of-range", "not-integer", "not-boolean", "not-allowed", "missing-type", "source-version-unsupported", "missing-base", "missing-parts", "bad-style-kit", "missing-name", "duplicate-name", "missing-transform", "missing-position", "missing-size", "too-few-segments", "missing-shape-path", "bad-shape-point", "hollow-too-thick", "hollow-not-convex", "bad-aspect-axis", "missing-material", "material-unresolvable", "missing-repeat", "missing-channels", "unknown-channel-target", "too-few-keys", "keys-out-of-order", "missing-surface-ref", "missing-label-name", "missing-label-source", "bad-capability", "duplicate-capability", "bad-part-capability", "missing-range", "bad-range"];
791
861
  export type ErrorCode = (typeof ERROR_CODES)[number];
792
862
  /**
793
863
  * 위반 코드 전부. 위반은 컴파일을 막지 않는다 — 저작 화면이 알려 주는 데 쓴다.
794
864
  * 뜻과 한도는 `docs/validation.md` 에 있다.
795
865
  */
796
- export declare const VIOLATION_CODES: readonly ["segments-off-preset", "segments-ignored", "repeat-ignored", "keep-round-ignored", "hollow-ignored", "pivot-ignored", "detail-level-missing", "too-many-parts", "too-many-animated-parts", "too-many-material-groups", "too-many-transparent", "too-many-surface-textures", "capacity-with-repeat", "too-many-always-labels", "part-outside-base", "parts-off-placement-face"];
866
+ export declare const VIOLATION_CODES: readonly ["segments-off-preset", "segments-ignored", "repeat-ignored", "keep-round-ignored", "hollow-ignored", "pivot-ignored", "detail-level-missing", "too-many-parts", "too-many-animated-parts", "too-many-material-groups", "too-many-transparent", "too-many-surface-textures", "capacity-with-repeat", "too-many-always-labels", "part-outside-base", "parts-off-placement-face", "type-not-identifier", "type-is-placeholder"];
797
867
  export type ViolationCode = (typeof VIOLATION_CODES)[number];
798
868
  /**
799
869
  * 발행을 막는 위반 — ADR-0044 결정 ② (`operato-twin/design/04-decisions.md`).
@@ -806,8 +876,32 @@ export type ViolationCode = (typeof VIOLATION_CODES)[number];
806
876
  * 화면이 「이건 고쳐야 나간다」를 뜻으로 보여 줄 때. 서버가 제 목록을 들면 화면은 그것을
807
877
  * 알 길이 없어 전부 같은 「알림」으로 그리고, 저작자는 발행이 막힌 것을 **눌러 보고 나서야**
808
878
  * 안다. 코드를 소유한 자리가 등급도 소유한다.
879
+ *
880
+ * The two type-name codes belong here for the same reason: a drawing records the type, so a released
881
+ * name is a promise to consumers.
809
882
  */
810
883
  export declare const RELEASE_BLOCKING_VIOLATIONS: readonly ViolationCode[];
884
+ /**
885
+ * The shape of a `type`: `SCREAMING_SNAKE_CASE` starting with a capital, 3 to 32 characters.
886
+ *
887
+ * Capitals are the figure namespace. Built-in scene components use lower-case kebab names, so a figure
888
+ * that follows this shape cannot share a name with one.
889
+ */
890
+ export declare const TYPE_PATTERN: RegExp;
891
+ export declare const TYPE_LENGTH: {
892
+ readonly min: 3;
893
+ readonly max: 32;
894
+ };
895
+ /**
896
+ * The temporary type a figure carries before anyone names it. The format owns it so that the code
897
+ * making it and the code recognising it follow one rule: the authoring screen makes it, the release
898
+ * gate and the AI tools recognise it.
899
+ *
900
+ * It passes the identifier pattern (`FIGURE_MTU10FWR`), so the shape check alone would not catch it.
901
+ */
902
+ export declare function placeholderType(now?: number): string;
903
+ /** Whether a type is the temporary name given before anyone names the figure. */
904
+ export declare function isPlaceholderType(type: string): boolean;
811
905
  /** 이 위반이 발행을 막나. */
812
906
  export declare function blocksRelease(code: string): boolean;
813
907
  /** 형식·정합성 오류. 이것이 있으면 컴파일할 수 없다. */
@@ -859,8 +953,6 @@ export interface FigureBlueprint {
859
953
  animations: BlueprintClip[];
860
954
  /**
861
955
  * 값이 모는 자세. 인스턴스가 이름으로 값을 준다.
862
- *
863
- * 옛 원본의 `drive: 'hold'` clip 도 여기로 온다 — `compile()` 이 옮긴다.
864
956
  */
865
957
  parameters: BlueprintParameter[];
866
958
  labels: BlueprintLabel[];
@@ -954,4 +1046,5 @@ export declare const LIMITS: {
954
1046
  * 화면이 표현하지 못한다. 삼각형만 192 에서 256 으로 는다.
955
1047
  */
956
1048
  export declare const SEGMENT_PRESETS: readonly number[];
1049
+ export {};
957
1050
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -40,6 +40,39 @@ export const CURVED_PRIMITIVES = ['cylinder', 'sphere'];
40
40
  export const MATERIAL_SLOTS = ['cap', 'side'];
41
41
  /** 재질 프리셋. `threed/material-3d.ts:9` 의 preset 과 같은 집합. */
42
42
  export const MATERIAL_PRESETS = ['default', 'metal', 'glass', 'plastic', 'wood', 'ceramic', 'rubber'];
43
+ /**
44
+ * 저작이 고를 수 있는 능력 — **씬이 실제로 조립할 수 있는 것만 있다.**
45
+ *
46
+ * `MATERIAL_PRESETS` 와 같은 갈래다. 형식이 목록을 선언하고 씬이 그것을 소비한다.
47
+ *
48
+ * ## 왜 목록이 형식에 있나
49
+ *
50
+ * 한동안 things-scene 에만 있었다. 그래서 `validate` 가 이름을 못 봤고, AI 가 낸
51
+ * `capabilities: ['hoist']` 가 **검증을 지나고 발행을 지나** 렌더링에서 죽었다. 게이트는
52
+ * 사실이 사는 곳에 있어야 한다 — 형식이 무엇이 성립하는 도형인지 판정하는 자리이므로
53
+ * 여기다(ADR-0051 ④).
54
+ *
55
+ * `PlacementSurface`·`CarrierLine` 같은 이름은 씬에 metadata 는 있어도 mixin factory 가
56
+ * 없다. 구현이 있어야 성립하는 계약이라, 이름만 적어 지게 하면 「선언은 있는데 동작이
57
+ * 없는」 것이 된다. **여기 있는 넷은 씬에 조립할 것이 있다.**
58
+ *
59
+ * ## 사다리
60
+ *
61
+ * Capacity 자리를 갖는다
62
+ * Holdable 담긴 것을 함께 들고 그린다
63
+ * Transferable 자리를 잡아 두고 넘겨받는다 — `Capacity` 가 있어야 자리를 찾는다
64
+ * FlowNode 흐름의 마디다. 위의 셋을 스스로 포함한다
65
+ */
66
+ export const FIGURE_CAPABILITIES = ['Capacity', 'Holdable', 'Transferable', 'FlowNode'];
67
+ /**
68
+ * 혼자 설 수 없는 능력 — 이름 → 그 중 **하나라도** 함께 있어야 하는 것들.
69
+ *
70
+ * `Transferable` 은 자리를 찾는 일을 `Capacity` 에게 맡긴다. 혼자 적으면 씬이 조립할 때
71
+ * 던지는데, 그때는 이미 발행된 뒤다. 모르는 이름과 같은 갈래라 같은 자리에서 본다.
72
+ */
73
+ export const CAPABILITY_NEEDS = Object.freeze({
74
+ Transferable: ['Capacity', 'FlowNode']
75
+ });
43
76
  /**
44
77
  * 크기 반응 규칙 — 인스턴스 크기가 바뀔 때 부품이 어떻게 변하는가.
45
78
  *
@@ -164,18 +197,6 @@ export const PART_LIMIT = { S: 3, M: 8, L: 20 };
164
197
  export const CHANNEL_PATHS = ['translation', 'rotation', 'scale'];
165
198
  /** 키프레임 사이를 어떻게 잇나. glTF 의 `CUBICSPLINE` 은 없다 — 접선을 손으로 적을 형식이 아니다. */
166
199
  export const INTERPOLATIONS = ['linear', 'step'];
167
- /**
168
- * **옛 자리다. 저작하지 않는다.**
169
- *
170
- * `drive: 'hold'` 가 「값이 자세를 만든다」를 말하던 칸이었다. 그 판단은 맞았는데 자리가
171
- * 틀려서, 애니메이션 안에 숨은 채로 아무도 못 찾았다. 지금은 `FigureParameter` 가 제 칸으로
172
- * 있고 `animations` 에는 시각이 흐르는 것만 남는다 — 그러니 여기서 말할 것이 없다
173
- * (ADR-0051, `operato-twin/design/04-decisions.md`).
174
- *
175
- * 이름이 남아 있는 것은 **이미 저장된 것을 옮기기 위해서**다. `compile()` 이 옛 원본의
176
- * `drive: 'hold'` 를 읽어 `parameters` 로 옮긴다. 옮기는 쪽이 사라지면 이 이름도 사라진다.
177
- */
178
- export const CLIP_DRIVES = ['loop', 'hold'];
179
200
  export const AXES = ['x', 'y', 'z'];
180
201
  /** 텍스트를 언제 보이나. 표현 수단(sprite·overlay)은 런타임이 고른다. */
181
202
  export const LABEL_WHENS = ['always', 'zoomed', 'selected', 'abnormal'];
@@ -200,8 +221,17 @@ export const SURFACE_KINDS = ['gradient', 'pattern'];
200
221
  * port-out 흐름이 나가는 문 (`FlowNode.outboundPorts`)
201
222
  */
202
223
  export const PART_ROLES = ['slot', 'port-in', 'port-out'];
203
- /** FigureSource 스키마 기본 판 번호. */
204
- export const FIGURE_SOURCE_VERSION = 1;
224
+ /**
225
+ * The source edition this format reads.
226
+ *
227
+ * - 1: `position.y` measured from the centre of the base box. Sources saved before the `version`
228
+ * field existed are edition 1 as well.
229
+ * - 2: `position.y` measured from the bottom face of the base box (ADR-0065).
230
+ *
231
+ * Only edition 2 is read. Older sources are refused with `source-version-unsupported` rather than
232
+ * read by the old rule, so a value never lives in two shapes at once.
233
+ */
234
+ export const FIGURE_SOURCE_VERSION = 2;
205
235
  // ─── 청사진 ────────────────────────────────────────────────────────────────
206
236
  /** 청사진 스키마 버전. 형식이 바뀌면 올린다. */
207
237
  export const BLUEPRINT_VERSION = 1;
@@ -225,6 +255,8 @@ export const ERROR_CODES = [
225
255
  'not-allowed',
226
256
  // 원본의 필수 항목
227
257
  'missing-type',
258
+ /* The source was written in an edition this format no longer reads. See FIGURE_SOURCE_VERSION. */
259
+ 'source-version-unsupported',
228
260
  'missing-base',
229
261
  'missing-parts',
230
262
  'bad-style-kit',
@@ -307,7 +339,16 @@ export const VIOLATION_CODES = [
307
339
  것은 부품을 제자리로 옮기는 것인데.
308
340
  */
309
341
  'part-outside-base',
310
- 'parts-off-placement-face'
342
+ 'parts-off-placement-face',
343
+ /*
344
+ Type names. `type` is the stored identifier a drawing writes as `{ type, left, top, width, height }`,
345
+ so once released it cannot change. The rules hold back a release and leave draft saves alone:
346
+ trying something out before naming it is fine. These are two separate defects. One is a name of
347
+ the wrong shape; the other has the right shape but was never named by a person (chief architect
348
+ ruling, 2026-09-17).
349
+ */
350
+ 'type-not-identifier',
351
+ 'type-is-placeholder'
311
352
  ];
312
353
  /**
313
354
  * 발행을 막는 위반 — ADR-0044 결정 ② (`operato-twin/design/04-decisions.md`).
@@ -320,8 +361,39 @@ export const VIOLATION_CODES = [
320
361
  * 화면이 「이건 고쳐야 나간다」를 뜻으로 보여 줄 때. 서버가 제 목록을 들면 화면은 그것을
321
362
  * 알 길이 없어 전부 같은 「알림」으로 그리고, 저작자는 발행이 막힌 것을 **눌러 보고 나서야**
322
363
  * 안다. 코드를 소유한 자리가 등급도 소유한다.
364
+ *
365
+ * The two type-name codes belong here for the same reason: a drawing records the type, so a released
366
+ * name is a promise to consumers.
367
+ */
368
+ export const RELEASE_BLOCKING_VIOLATIONS = [
369
+ 'part-outside-base',
370
+ 'parts-off-placement-face',
371
+ 'type-not-identifier',
372
+ 'type-is-placeholder'
373
+ ];
374
+ /**
375
+ * The shape of a `type`: `SCREAMING_SNAKE_CASE` starting with a capital, 3 to 32 characters.
376
+ *
377
+ * Capitals are the figure namespace. Built-in scene components use lower-case kebab names, so a figure
378
+ * that follows this shape cannot share a name with one.
379
+ */
380
+ export const TYPE_PATTERN = /^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$/;
381
+ export const TYPE_LENGTH = { min: 3, max: 32 };
382
+ /**
383
+ * The temporary type a figure carries before anyone names it. The format owns it so that the code
384
+ * making it and the code recognising it follow one rule: the authoring screen makes it, the release
385
+ * gate and the AI tools recognise it.
386
+ *
387
+ * It passes the identifier pattern (`FIGURE_MTU10FWR`), so the shape check alone would not catch it.
323
388
  */
324
- export const RELEASE_BLOCKING_VIOLATIONS = ['part-outside-base', 'parts-off-placement-face'];
389
+ export function placeholderType(now = Date.now()) {
390
+ return `FIGURE_${now.toString(36).toUpperCase()}`;
391
+ }
392
+ const PLACEHOLDER_TYPE = /^FIGURE_[0-9A-Z]{8}$/;
393
+ /** Whether a type is the temporary name given before anyone names the figure. */
394
+ export function isPlaceholderType(type) {
395
+ return PLACEHOLDER_TYPE.test(type);
396
+ }
325
397
  /** 이 위반이 발행을 막나. */
326
398
  export function blocksRelease(code) {
327
399
  return RELEASE_BLOCKING_VIOLATIONS.includes(code);
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,5 @@ export interface ValidateResult {
3
3
  errors: FigureError[];
4
4
  violations: Violation[];
5
5
  }
6
- /**
7
- * 원본 데이터를 검증한다.
8
- *
9
- * 바깥에서 온 데이터(DB · API · 파일)를 받으므로 `unknown` 을 받는다.
10
- * `errors` 가 비어 있으면 `source` 는 `FigureSource` 로 다룰 수 있다.
11
- */
12
6
  export declare function validate(source: unknown): ValidateResult;
13
7
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAqBA,OAAO,EAwBL,KAAK,WAAW,EAGhB,KAAK,SAAS,EAEf,MAAM,YAAY,CAAA;AAQnB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB;AAg0BD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAqExD"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAqBA,OAAO,EAyBL,KAAK,WAAW,EAIhB,KAAK,SAAS,EAMf,MAAM,YAAY,CAAA;AASnB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB;AAy5BD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAgFxD"}